From 00d236d0e483f59a38d659f333412efec76837af Mon Sep 17 00:00:00 2001 From: "Jenks, Rob A [Engineering]" Date: Tue, 23 Sep 2025 21:54:24 +0000 Subject: [PATCH 01/10] Update 2 files - /.gs-project.yml - /.gitlab-ci.yml --- .gitlab-ci.yml | 4 ++++ .gs-project.yml | 1 + 2 files changed, 5 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 .gs-project.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..7bfe22c --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,4 @@ +include: + - project: 'fp/open-source/os-ci' + file: + - '.gitlab-ci.yml' diff --git a/.gs-project.yml b/.gs-project.yml new file mode 100644 index 0000000..520a9bf --- /dev/null +++ b/.gs-project.yml @@ -0,0 +1 @@ +productGuid: "product::823826" From de33e0ac5932ca94d0c434946e51b14cd8702538 Mon Sep 17 00:00:00 2001 From: "Liput, Milosz [Engineering]" Date: Sun, 5 Oct 2025 13:31:13 +0000 Subject: [PATCH 02/10] Add BPMN global variable library, extra customisation steps, and high level intermediate model --- .../library/BpmnGlobalVariable.java | 61 +++++++++++ .../library/BpmnGlobalVariableLibrary.java | 80 ++++++++++++++ .../BpmnModelComponentNodeInputType.java | 12 +++ ...nModelComponentNodeScriptVariableType.java | 12 +++ .../model/BpmnHighLevelIntermediateModel.java | 25 +++++ .../intrep/model/ElementHighLevelNode.java | 101 ++++++++++++++++++ .../model/ElementHighLevelNodeInput.java | 45 ++++++++ .../ElementHighLevelNodeInputSourceType.java | 12 +++ ...etailLevelIntermediateModelSanitizer.java} | 72 ++++++------- ...mnHighLevelIntermediateModelSanitizer.java | 30 ++++++ .../base/context/BpmnPromptPlaceholders.java | 7 ++ .../SubmitBpmnGenerationRequestToLlm.java | 4 +- .../common/BpmnAdditionalModelStates.java | 2 + .../BpmnMultiLevelGenerationModel.java | 44 ++++++-- .../BpmnMultiLevelGenerationModelOptions.java | 14 +++ .../multilevel/states/InitializeBpmnData.java | 42 ++++++++ ...mnMLDetailLevelModelGenerationRequest.java | 5 +- ...BpmnMLHighLevelModelGenerationRequest.java | 5 +- .../PrepareBpmnMLModelGenerationRequest.java | 14 ++- ...evelModelDataForDetailLevelGeneration.java | 50 +++++++++ ...mDetailLevelIntermediateModelResponse.java | 7 +- .../validation/ValidateBpmnModel.java | 5 +- .../bpmn-global-variable-library.json | 3 + .../MultiLevelModelStandardPayloadData.java | 4 +- 24 files changed, 598 insertions(+), 58 deletions(-) create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariable.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariableLibrary.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeInputType.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeScriptVariableType.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/BpmnHighLevelIntermediateModel.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNode.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java rename codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/validation/{BpmnIntermediateModelSanitizer.java => BpmnDetailLevelIntermediateModelSanitizer.java} (84%) create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/validation/BpmnHighLevelIntermediateModelSanitizer.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/InitializeBpmnData.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ProcessHighLevelModelDataForDetailLevelGeneration.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-global-variable-library.json diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariable.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariable.java new file mode 100644 index 0000000..cf58e4b --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariable.java @@ -0,0 +1,61 @@ +package org.rj.modelgen.bpmn.component.globalvars.library; + +import org.apache.commons.lang3.StringUtils; +import org.rj.modelgen.llm.component.Component; + +import java.util.Objects; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class BpmnGlobalVariable extends Component { + private String name; + private boolean available; + private String description; + private String type; + + public BpmnGlobalVariable() { } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isAvailable() { + return available; + } + + public void setAvailable(boolean available) { + this.available = available; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + @Override + public String defaultSerialize() { + if (name == null) return ""; + + final String typeString = (type == null ? null : "type: " + type); + final String additionalInfo = Stream.of(description, typeString) + .filter(Objects::nonNull) + .collect(Collectors.joining("; ")); + + return name + (StringUtils.isEmpty(additionalInfo) ? "" : " (" + additionalInfo + ")"); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariableLibrary.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariableLibrary.java new file mode 100644 index 0000000..c354236 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariableLibrary.java @@ -0,0 +1,80 @@ +package org.rj.modelgen.bpmn.component.globalvars.library; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.json.JSONObject; +import org.rj.modelgen.llm.component.ComponentLibrary; +import org.rj.modelgen.llm.util.Util; + +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +public class BpmnGlobalVariableLibrary extends ComponentLibrary { + + private List variables; + private Boolean returnFilteredVars = false; + + public BpmnGlobalVariableLibrary() { + this(List.of()); + } + + public BpmnGlobalVariableLibrary(List variables) { + super(variables); + } + + public static BpmnGlobalVariableLibrary fromResource(String resource) { + final var content = Util.loadStringResource(resource); + return Util.deserializeOrThrow(content, BpmnGlobalVariableLibrary.class); + } + + public static BpmnGlobalVariableLibrary defaultLibrary() { + return fromResource("content/components/bpmn-global-variable-library.json"); + } + + public static BpmnGlobalVariableLibrary empty() { + return new BpmnGlobalVariableLibrary(); + } + + @Override + public ComponentLibrary constructEmpty() { + return empty(); + } + + @Override + public List getComponents() { + return variables; + } + + @Override + public void setComponents(List variables) { + this.variables = variables; + } + + + @JsonIgnore + public Optional getVariableByName(String name) { + return variables.stream() + .filter(variable -> variable.getName().equals(name)) + .findFirst(); + } + + @JsonIgnore + public String defaultSerialize() { + return variables.stream() + .filter(BpmnGlobalVariable::isAvailable) + .map(BpmnGlobalVariable::defaultSerialize) + .collect(Collectors.joining("\n")); + } + + @JsonIgnore + public BpmnGlobalVariableLibrary getFilteredBasedOnPrompt(String prompt) { + if (prompt == null) return BpmnGlobalVariableLibrary.empty(); + return (BpmnGlobalVariableLibrary) getFilteredLibrary(var -> prompt.contains(var.getName())); + } + + @JsonIgnore + public JSONObject toJson() { + return new JSONObject(Util.serializeOrThrow(this, + e -> new RuntimeException("Unable to serialize global variable library: " + e.getMessage(), e))); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeInputType.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeInputType.java new file mode 100644 index 0000000..ef1d5ef --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeInputType.java @@ -0,0 +1,12 @@ +package org.rj.modelgen.bpmn.generation; + +public enum BpmnModelComponentNodeInputType { + CONSTANT, + COMPONENT, + GLOBAL; + + @Override + public String toString() { + return name(); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeScriptVariableType.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeScriptVariableType.java new file mode 100644 index 0000000..b0ab545 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeScriptVariableType.java @@ -0,0 +1,12 @@ +package org.rj.modelgen.bpmn.generation; + +public enum BpmnModelComponentNodeScriptVariableType { + NODE, + GLOBAL, + OUTPUT; + + @Override + public String toString() { + return name(); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/BpmnHighLevelIntermediateModel.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/BpmnHighLevelIntermediateModel.java new file mode 100644 index 0000000..eb3e7ee --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/BpmnHighLevelIntermediateModel.java @@ -0,0 +1,25 @@ +package org.rj.modelgen.bpmn.intrep.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import org.json.JSONObject; +import org.rj.modelgen.llm.intrep.graph.IntermediateGraphModel; + +import java.util.stream.Collectors; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class BpmnHighLevelIntermediateModel extends IntermediateGraphModel { + + public BpmnHighLevelIntermediateModel() { + super(); + } + + public JSONObject toJson() { + return new JSONObject(serialize()); + } + + public String generateSummary() { + return getNodes().stream() + .map(ElementHighLevelNode::generateSummary) + .collect(Collectors.joining("\n")); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNode.java new file mode 100644 index 0000000..28cf88d --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNode.java @@ -0,0 +1,101 @@ +package org.rj.modelgen.bpmn.intrep.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import org.rj.modelgen.llm.intrep.graph.GraphNode; + +import java.util.*; +import java.util.stream.Collectors; + +public class ElementHighLevelNode implements GraphNode { + private String id; + private String name; + private String elementType; + private String description; + private List connectedTo; + private Map properties; + private List inputs; + + public ElementHighLevelNode() { + } + + @Override + public String getId() { + return id; + } + + @Override + public void setId(String id) { + this.id = id; + } + + @Override + public String getName() { + return name; + } + + @Override + public void setName(String name) { + this.name = name; + } + + public String getElementType() { + return elementType; + } + + public void setElementType(String elementType) { + this.elementType = elementType; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @Override + public Collection getConnectedTo() { + return connectedTo; + } + + @Override + public void setConnectedTo(Collection connections) { + this.connectedTo = Optional.ofNullable(connections).map(ArrayList::new).orElse(null); + } + + @JsonInclude(JsonInclude.Include.NON_NULL) + public Map getProperties() { + return properties; + } + + @JsonInclude(JsonInclude.Include.NON_NULL) + public void setProperties(Map properties) { + this.properties = properties; + } + + public List getInputs() { + return inputs; + } + + public void setInputs(List inputs) { + this.inputs = inputs; + } + + public String generateSummary() { + final var sb = new StringBuilder(); + + sb.append(String.format("- Element \"%s\" has type \"%s\"", name, elementType)); + sb.append(String.format("- The element's purpose can be described as the following: \"%s\"", description)); + + if (inputs != null && !inputs.isEmpty()) { + sb.append(inputs.stream() + .map(ElementHighLevelNodeInput::generateSummary) + .map(x -> " " + x) + .collect(Collectors.joining("\n", "\n", "\n"))); + } + + return sb.toString(); + } + +} \ No newline at end of file diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java new file mode 100644 index 0000000..4f73fd3 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java @@ -0,0 +1,45 @@ +package org.rj.modelgen.bpmn.intrep.model; + +public class ElementHighLevelNodeInput { + private String name; + private String source; + private ElementHighLevelNodeInputSourceType sourceType; + + public ElementHighLevelNodeInput() { } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public ElementHighLevelNodeInputSourceType getSourceType() { + return sourceType; + } + + public void setSourceType(ElementHighLevelNodeInputSourceType sourceType) { + this.sourceType = sourceType; + } + + /* + Serialization methods + */ + + public String generateSummary() { + return switch (sourceType) { + case Node -> String.format("Input \"%s\" will be provided by node \"%s\"", name, source); + case Constant -> String.format("Input \"%s\" will be assigned constant value \"%s\"", name, source); + case Global -> String.format("Input \"%s\" will be assigned global value \"%s\"", name, source); + }; + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java new file mode 100644 index 0000000..bc09ec2 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java @@ -0,0 +1,12 @@ +package org.rj.modelgen.bpmn.intrep.model; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public enum ElementHighLevelNodeInputSourceType { + @JsonProperty("node") + Node, + @JsonProperty("constant") + Constant, + @JsonProperty("global") + Global +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/validation/BpmnIntermediateModelSanitizer.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/validation/BpmnDetailLevelIntermediateModelSanitizer.java similarity index 84% rename from codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/validation/BpmnIntermediateModelSanitizer.java rename to codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/validation/BpmnDetailLevelIntermediateModelSanitizer.java index a44096f..9a383c1 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/validation/BpmnIntermediateModelSanitizer.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/validation/BpmnDetailLevelIntermediateModelSanitizer.java @@ -1,36 +1,36 @@ -package org.rj.modelgen.bpmn.intrep.validation; - -import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; -import org.rj.modelgen.llm.validation.impl.IntermediateModelSanitizer; - -import java.util.ArrayList; -import java.util.Optional; - -public class BpmnIntermediateModelSanitizer extends IntermediateModelSanitizer { - public BpmnIntermediateModelSanitizer() { - super(BpmnIntermediateModel.class); - } - - @Override - protected String performCustomSanitization(String content) { - return content; - } - - @Override - protected BpmnIntermediateModel performCustomModelSanitization(BpmnIntermediateModel model) { - return Optional.ofNullable(model) - .map(this::normalizeConnections) - .orElse(null); - } - - private BpmnIntermediateModel normalizeConnections(BpmnIntermediateModel model) { - // Normalize any null connection sets to an empty array, to simplify schema presented to the model - for (final var node : model.getNodes()) { - if (node.getConnectedTo() == null) { - node.setConnectedTo(new ArrayList<>()); - } - } - - return model; - } -} +package org.rj.modelgen.bpmn.intrep.validation; + +import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; +import org.rj.modelgen.llm.validation.impl.IntermediateModelSanitizer; + +import java.util.ArrayList; +import java.util.Optional; + +public class BpmnDetailLevelIntermediateModelSanitizer extends IntermediateModelSanitizer { + public BpmnDetailLevelIntermediateModelSanitizer() { + super(BpmnIntermediateModel.class); + } + + @Override + protected String performCustomSanitization(String content) { + return content; + } + + @Override + protected BpmnIntermediateModel performCustomModelSanitization(BpmnIntermediateModel model) { + return Optional.ofNullable(model) + .map(this::normalizeConnections) + .orElse(null); + } + + private BpmnIntermediateModel normalizeConnections(BpmnIntermediateModel model) { + // Normalize any null connection sets to an empty array, to simplify schema presented to the model + for (final var node : model.getNodes()) { + if (node.getConnectedTo() == null) { + node.setConnectedTo(new ArrayList<>()); + } + } + + return model; + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/validation/BpmnHighLevelIntermediateModelSanitizer.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/validation/BpmnHighLevelIntermediateModelSanitizer.java new file mode 100644 index 0000000..11f5c2b --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/validation/BpmnHighLevelIntermediateModelSanitizer.java @@ -0,0 +1,30 @@ +package org.rj.modelgen.bpmn.intrep.validation; + +import org.rj.modelgen.bpmn.intrep.model.BpmnHighLevelIntermediateModel; +import org.rj.modelgen.llm.validation.impl.IntermediateModelSanitizer; + +import java.util.ArrayList; + +public class BpmnHighLevelIntermediateModelSanitizer extends IntermediateModelSanitizer { + public BpmnHighLevelIntermediateModelSanitizer() { + super(BpmnHighLevelIntermediateModel.class); + } + + @Override + protected String performCustomSanitization(String content) { + return content; + } + + @Override + protected BpmnHighLevelIntermediateModel performCustomModelSanitization(BpmnHighLevelIntermediateModel model) { + model.getNodes().forEach(node -> { + if (node.getInputs() == null) { + node.setInputs(new ArrayList<>()); + } + if (node.getConnectedTo() == null) { + node.setConnectedTo(new ArrayList<>()); + } + }); + return model; + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/context/BpmnPromptPlaceholders.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/context/BpmnPromptPlaceholders.java index 81c32a4..15dcfff 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/context/BpmnPromptPlaceholders.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/context/BpmnPromptPlaceholders.java @@ -5,9 +5,16 @@ public interface BpmnPromptPlaceholders extends StandardPromptPlaceholders { PromptPlaceholder COMPONENT_LIBRARY = new PromptPlaceholder("COMPONENT_LIBRARY"); + PromptPlaceholder GLOBAL_VARIABLE_LIBRARY = new PromptPlaceholder("GLOBAL_VARIABLE_LIBRARY"); PromptPlaceholder HIGH_LEVEL_MODEL_SUMMARY = new PromptPlaceholder("HIGH_LEVEL_MODEL_SUMMARY"); + // Set of global variables filtered to only those detected in the initial prompt + PromptPlaceholder PROMPT_RELEVANT_GLOBAL_VARIABLES = new PromptPlaceholder("PROMPT_RELEVANT_GLOBAL_VARIABLES"); + + // Set of global variables filtered to only those used in the generated high-level model + PromptPlaceholder GLOBAL_VARIABLES_USED_IN_HL_MODEL = new PromptPlaceholder("GLOBAL_VARIABLES_USED_IN_HL_MODEL"); + // Set of validation fixes to apply to detail-level generation on retry of model generation PromptPlaceholder DETAIL_MODEL_VALIDATION_ISSUES = new PromptPlaceholder("DETAIL_MODEL_VALIDATION_ISSUES"); } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/states/SubmitBpmnGenerationRequestToLlm.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/states/SubmitBpmnGenerationRequestToLlm.java index 5108fd8..0070ff6 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/states/SubmitBpmnGenerationRequestToLlm.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/states/SubmitBpmnGenerationRequestToLlm.java @@ -1,13 +1,13 @@ package org.rj.modelgen.bpmn.models.generation.base.states; -import org.rj.modelgen.bpmn.intrep.validation.BpmnIntermediateModelSanitizer; +import org.rj.modelgen.bpmn.intrep.validation.BpmnDetailLevelIntermediateModelSanitizer; import org.rj.modelgen.bpmn.models.generation.base.signals.BpmnGenerationSignals; import org.rj.modelgen.llm.statemodel.states.common.SubmitGenerationRequestToLlm; public class SubmitBpmnGenerationRequestToLlm extends SubmitGenerationRequestToLlm { public SubmitBpmnGenerationRequestToLlm() { - super(SubmitBpmnGenerationRequestToLlm.class, new BpmnIntermediateModelSanitizer()); + super(SubmitBpmnGenerationRequestToLlm.class, new BpmnDetailLevelIntermediateModelSanitizer()); } @Override diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/common/BpmnAdditionalModelStates.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/common/BpmnAdditionalModelStates.java index 12788ce..99d57fb 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/common/BpmnAdditionalModelStates.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/common/BpmnAdditionalModelStates.java @@ -3,7 +3,9 @@ import org.rj.modelgen.llm.util.StringSerializable; public enum BpmnAdditionalModelStates implements StringSerializable { + InitializeBpmnData, InsertSyntheticComponents, + ProcessHighLevelModelDataForDetailLevelGeneration, DetailLevelBpmnIRModelValidation, ResolveSyntheticComponents, PrepareForRendering, diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java index dc57829..1397956 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java @@ -3,10 +3,13 @@ import org.camunda.bpm.model.bpmn.Bpmn; import org.camunda.bpm.model.bpmn.BpmnModelInstance; import org.rj.modelgen.bpmn.component.*; +import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; import org.rj.modelgen.bpmn.component.synthetic.types.BpmnSyntheticUnknownElementNode; import org.rj.modelgen.bpmn.generation.BpmnModelGenerationFunction; +import org.rj.modelgen.bpmn.intrep.model.BpmnHighLevelIntermediateModel; import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; -import org.rj.modelgen.bpmn.intrep.validation.BpmnIntermediateModelSanitizer; +import org.rj.modelgen.bpmn.intrep.validation.BpmnDetailLevelIntermediateModelSanitizer; +import org.rj.modelgen.bpmn.intrep.validation.BpmnHighLevelIntermediateModelSanitizer; import org.rj.modelgen.bpmn.models.generation.BpmnGenerationResult; import org.rj.modelgen.bpmn.models.generation.base.data.BpmnGenerationModelInputPayload; import org.rj.modelgen.bpmn.models.generation.base.states.BpmnGenerationComplete; @@ -44,7 +47,7 @@ import java.util.function.BiFunction; import java.util.function.Function; -public class BpmnMultiLevelGenerationModel extends MultiLevelGenerationModel { @@ -60,17 +63,17 @@ public static BpmnMultiLevelGenerationModel create(ModelInterface modelInterface new BpmnComponentLibraryPreprocessingLevelSerializer()); final var highLevelConfig = new MultiLevelModelPhaseConfig<>( - BpmnIntermediateModel.class, new BpmnGenerationMultiLevelSchemaHighLevel(), - new BpmnIntermediateModelSanitizer(), new DefaultComponentLibrarySelector<>(), + BpmnHighLevelIntermediateModel.class, new BpmnGenerationMultiLevelSchemaHighLevel(), + new BpmnHighLevelIntermediateModelSanitizer(), new DefaultComponentLibrarySelector<>(), new BpmnComponentLibraryHighLevelSerializer(), - PrepareBpmnMLHighLevelModelGenerationRequest::new, + params -> new PrepareBpmnMLHighLevelModelGenerationRequest<>(params, getGlobalVariableLibrary()), null); final var detailLevelConfig = new MultiLevelModelDetailPhaseConfig<>( // TODO BpmnIntermediateModel.class, new BpmnGenerationMultiLevelSchemaDetailLevel(), - new BpmnIntermediateModelSanitizer(), new BpmnComponentLibraryDetailLevelSelector(), + new BpmnDetailLevelIntermediateModelSanitizer(), new BpmnComponentLibraryDetailLevelSelector(), new BpmnComponentLibraryDetailLevelSerializer(), - PrepareBpmnMLDetailLevelModelGenerationRequest::new, + params -> new PrepareBpmnMLDetailLevelModelGenerationRequest<>(params, getGlobalVariableLibrary()), null); final var modelGenerationFunction = new BpmnModelGenerationFunction(); @@ -91,7 +94,7 @@ protected BpmnMultiLevelGenerationModel(Class preprocessingConfig, - MultiLevelModelPhaseConfig highLevelPhaseConfig, + MultiLevelModelPhaseConfig highLevelPhaseConfig, MultiLevelModelDetailPhaseConfig detailLevelPhaseConfig, ModelGenerationFunction modelGenerationFunction, Function renderedModelSerializer, @@ -118,7 +121,9 @@ public Mono executeModel(String sessionId, String request, private static ModelInterfaceStateMachineCustomization addBpmnModelCustomization(ModelCustomizationData modelData, BpmnMultiLevelGenerationModelOptions options) { final List> customizations = List.of( + (customization, data) -> initializeBpmnData(customization, data, options), (customization, data) -> preProcessingInsertSyntheticComponents(customization, data, options), + BpmnMultiLevelGenerationModel::processHighLevelModelDataForDetailLevelGeneration, BpmnMultiLevelGenerationModel::validateDetailLevelModel, BpmnMultiLevelGenerationModel::postProcessingResolveSyntheticComponents, BpmnMultiLevelGenerationModel::postProcessingPrepareForRendering, @@ -132,6 +137,15 @@ private static ModelInterfaceStateMachineCustomization addBpmnModelCustomization (a, b) -> a); } + private static ModelInterfaceStateMachineCustomization initializeBpmnData(ModelInterfaceStateMachineCustomization customization, ModelCustomizationData modelData, + BpmnMultiLevelGenerationModelOptions options) { + final var initializeData = new InitializeBpmnData(getGlobalVariableLibrary(), options) + .withOverriddenId(BpmnAdditionalModelStates.InitializeBpmnData); + + return customization + .withNewStateInsertedAfter(initializeData, MultiLevelGenerationModelStates.StartMultiLevelGeneration.toString()); + } + private static ModelInterfaceStateMachineCustomization preProcessingInsertSyntheticComponents(ModelInterfaceStateMachineCustomization customization, ModelCustomizationData modelData, BpmnMultiLevelGenerationModelOptions options) { final var syntheticComponents = BpmnComponentLibrary.defaultSyntheticComponentsLibrary(); @@ -149,9 +163,17 @@ private static ModelInterfaceStateMachineCustomization preProcessingInsertSynthe .withNewStateInsertedAfter(insertSyntheticComponents, MultiLevelGenerationModelStates.SanitizingPrePass.toString()); } + private static ModelInterfaceStateMachineCustomization processHighLevelModelDataForDetailLevelGeneration(ModelInterfaceStateMachineCustomization customization, ModelCustomizationData modelData) { + final var processHighLevelData = new ProcessHighLevelModelDataForDetailLevelGeneration(getGlobalVariableLibrary()) + .withOverriddenId(BpmnAdditionalModelStates.ProcessHighLevelModelDataForDetailLevelGeneration); + + return customization + .withNewStateInsertedAfter(processHighLevelData, MultiLevelGenerationModelStates.ValidateHighLevel.toString()); + } + private static ModelInterfaceStateMachineCustomization validateDetailLevelModel(ModelInterfaceStateMachineCustomization customization, ModelCustomizationData modelData) { - final var validateBpmnDetailLevelIntermediateModel = new ValidateBpmnLlmDetailLevelIntermediateModelResponse() + final var validateBpmnDetailLevelIntermediateModel = new ValidateBpmnLlmDetailLevelIntermediateModelResponse(getGlobalVariableLibrary()) .withOverriddenId(BpmnAdditionalModelStates.DetailLevelBpmnIRModelValidation); validateBpmnDetailLevelIntermediateModel.setInvokeLimit(3); @@ -198,6 +220,10 @@ public static BpmnMultiLevelGenerationModelOptions defaultOptions() { ; } + private static BpmnGlobalVariableLibrary getGlobalVariableLibrary() { + return BpmnGlobalVariableLibrary.defaultLibrary(); + } + public BpmnComponentLibrary getComponentLibrary() { return componentLibrary; } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/options/BpmnMultiLevelGenerationModelOptions.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/options/BpmnMultiLevelGenerationModelOptions.java index dbc6642..86ae128 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/options/BpmnMultiLevelGenerationModelOptions.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/options/BpmnMultiLevelGenerationModelOptions.java @@ -4,6 +4,7 @@ public class BpmnMultiLevelGenerationModelOptions extends MultiLevelGenerationModelOptions { private boolean addPlaceholderForUnknownComponents = false; + private boolean addPromptSpecificGlobalVariables = false; protected BpmnMultiLevelGenerationModelOptions() { super(); @@ -25,4 +26,17 @@ public BpmnMultiLevelGenerationModelOptions withAddPlaceholderForUnknownComponen setAddPlaceholderForUnknownComponent(addPlaceholderForUnknownComponents); return this; } + + public boolean shouldAddPromptSpecificGlobalVariables() { + return addPromptSpecificGlobalVariables; + } + + public void setAddPromptSpecificGlobalVariables(boolean addPromptSpecificGlobalVariables) { + this.addPromptSpecificGlobalVariables = addPromptSpecificGlobalVariables; + } + + public BpmnMultiLevelGenerationModelOptions withAddPromptSpecificGlobalVariables(boolean addPromptSpecificGlobalVariables) { + setAddPromptSpecificGlobalVariables(addPromptSpecificGlobalVariables); + return this; + } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/InitializeBpmnData.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/InitializeBpmnData.java new file mode 100644 index 0000000..ef671ef --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/InitializeBpmnData.java @@ -0,0 +1,42 @@ +package org.rj.modelgen.bpmn.models.generation.multilevel.states; + +import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; +import org.rj.modelgen.bpmn.models.generation.multilevel.options.BpmnMultiLevelGenerationModelOptions; +import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; +import org.rj.modelgen.llm.statemodel.states.common.ExecuteLogic; +import org.rj.modelgen.llm.util.Result; +import reactor.core.publisher.Mono; + +import static org.rj.modelgen.bpmn.models.generation.base.context.BpmnPromptPlaceholders.GLOBAL_VARIABLE_LIBRARY; +import static org.rj.modelgen.bpmn.models.generation.base.context.BpmnPromptPlaceholders.PROMPT_RELEVANT_GLOBAL_VARIABLES; + +public class InitializeBpmnData extends ExecuteLogic { + private final BpmnGlobalVariableLibrary globalVariableLibrary; + private final BpmnMultiLevelGenerationModelOptions options; + + public InitializeBpmnData(BpmnGlobalVariableLibrary globalVariableLibrary, BpmnMultiLevelGenerationModelOptions options) { + super(InitializeBpmnData.class); + this.globalVariableLibrary = globalVariableLibrary; + this.options = options; + } + + @Override + protected Mono> executeLogic() { + // Insert additional BPMN data into the model payload + getPayload().put(GLOBAL_VARIABLE_LIBRARY.getValue(), globalVariableLibrary.defaultSerialize()); + + if (options.shouldAddPromptSpecificGlobalVariables()) { + // Insert filtered set of variables detected in the initial prompt, for use in preprocessing phases + final var prompt = getPayload().getOrElse(MultiLevelModelStandardPayloadData.Request, ""); + final var promptRelevantGlobalVariables = globalVariableLibrary.getFilteredBasedOnPrompt(prompt); + getPayload().put(PROMPT_RELEVANT_GLOBAL_VARIABLES.getValue(), promptRelevantGlobalVariables.defaultSerialize()); + } + + // Enable use of placeholders for unknown action types if required + if (options.shouldAddPlaceholderForUnknownComponents()) { + getPayload().put(MultiLevelModelStandardPayloadData.AddPlaceholdersForUnknownActions, true); + } + + return Mono.just(Result.Ok()); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLDetailLevelModelGenerationRequest.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLDetailLevelModelGenerationRequest.java index 35ad6d0..1f42479 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLDetailLevelModelGenerationRequest.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLDetailLevelModelGenerationRequest.java @@ -1,12 +1,13 @@ package org.rj.modelgen.bpmn.models.generation.multilevel.states; +import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; import org.rj.modelgen.llm.component.ComponentLibrary; import org.rj.modelgen.llm.models.generation.multilevel.states.PrepareAndSubmitMLRequestForLevelParams; public class PrepareBpmnMLDetailLevelModelGenerationRequest> extends PrepareBpmnMLModelGenerationRequest { - public PrepareBpmnMLDetailLevelModelGenerationRequest(PrepareAndSubmitMLRequestForLevelParams params) { - super(params); + public PrepareBpmnMLDetailLevelModelGenerationRequest(PrepareAndSubmitMLRequestForLevelParams params, BpmnGlobalVariableLibrary globalVariableLibrary) { + super(params, globalVariableLibrary); } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLHighLevelModelGenerationRequest.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLHighLevelModelGenerationRequest.java index 405ddaa..9deaa5b 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLHighLevelModelGenerationRequest.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLHighLevelModelGenerationRequest.java @@ -1,12 +1,13 @@ package org.rj.modelgen.bpmn.models.generation.multilevel.states; +import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; import org.rj.modelgen.llm.component.ComponentLibrary; import org.rj.modelgen.llm.models.generation.multilevel.states.PrepareAndSubmitMLRequestForLevelParams; public class PrepareBpmnMLHighLevelModelGenerationRequest> extends PrepareBpmnMLModelGenerationRequest { - public PrepareBpmnMLHighLevelModelGenerationRequest(PrepareAndSubmitMLRequestForLevelParams params) { - super(params); + public PrepareBpmnMLHighLevelModelGenerationRequest(PrepareAndSubmitMLRequestForLevelParams params, BpmnGlobalVariableLibrary globalVariableLibrary) { + super(params, globalVariableLibrary); } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLModelGenerationRequest.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLModelGenerationRequest.java index a0cd82e..7109526 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLModelGenerationRequest.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLModelGenerationRequest.java @@ -1,5 +1,6 @@ package org.rj.modelgen.bpmn.models.generation.multilevel.states; +import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; import org.rj.modelgen.llm.component.ComponentLibrary; import org.rj.modelgen.llm.component.ComponentLibrarySelector; import org.rj.modelgen.llm.component.ComponentLibrarySerializer; @@ -18,16 +19,19 @@ public class PrepareBpmnMLModelGenerationRequest> extends PrepareSpecificModelGenerationRequestPromptWithComponents { - public PrepareBpmnMLModelGenerationRequest(PrepareAndSubmitMLRequestForLevelParams params) { + private BpmnGlobalVariableLibrary globalVariableLibrary; + + public PrepareBpmnMLModelGenerationRequest(PrepareAndSubmitMLRequestForLevelParams params, BpmnGlobalVariableLibrary globalVariableLibrary) { this(params.getConfig().getModelSchema(), params.getContextProvider(), params.getComponentLibrary(), params.getConfig().getComponentLibrarySelector(), params.getConfig().getComponentLibrarySerializer(), - params.getPromptGenerator(), params.getSelectedPrompt()); + params.getPromptGenerator(), params.getSelectedPrompt(), globalVariableLibrary); } protected PrepareBpmnMLModelGenerationRequest(ModelSchema modelSchema, ContextProvider contextProvider, TComponentLibrary componentLibrary, ComponentLibrarySelector componentLibrarySelector, ComponentLibrarySerializer componentLibrarySerializer, - PromptGenerator promptGenerator, StringSerializable selectedPrompt) { + PromptGenerator promptGenerator, StringSerializable selectedPrompt, BpmnGlobalVariableLibrary globalVariableLibrary) { super(modelSchema, contextProvider, componentLibrary, componentLibrarySelector, componentLibrarySerializer, promptGenerator, selectedPrompt); + this.globalVariableLibrary = globalVariableLibrary; } @Override @@ -40,4 +44,8 @@ protected List generateAdditionalPromptSubstitutions(ModelSc return substitutions; } + protected BpmnGlobalVariableLibrary getGlobalVariableLibrary() { + return globalVariableLibrary; + } + } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ProcessHighLevelModelDataForDetailLevelGeneration.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ProcessHighLevelModelDataForDetailLevelGeneration.java new file mode 100644 index 0000000..e805153 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ProcessHighLevelModelDataForDetailLevelGeneration.java @@ -0,0 +1,50 @@ +package org.rj.modelgen.bpmn.models.generation.multilevel.states; + +import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; +import org.rj.modelgen.bpmn.intrep.model.BpmnHighLevelIntermediateModel; +import org.rj.modelgen.bpmn.intrep.model.ElementHighLevelNodeInput; +import org.rj.modelgen.bpmn.intrep.model.ElementHighLevelNodeInputSourceType; +import org.rj.modelgen.bpmn.models.generation.base.context.BpmnPromptPlaceholders; +import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; +import org.rj.modelgen.llm.statemodel.states.common.ExecuteLogic; +import org.rj.modelgen.llm.util.Result; +import org.rj.modelgen.llm.util.Util; +import reactor.core.publisher.Mono; + +import java.util.stream.Collectors; + +public class ProcessHighLevelModelDataForDetailLevelGeneration extends ExecuteLogic { + private BpmnGlobalVariableLibrary globalVariableLibrary; + + public ProcessHighLevelModelDataForDetailLevelGeneration(BpmnGlobalVariableLibrary globalVariableLibrary) { + super(ProcessHighLevelModelDataForDetailLevelGeneration.class); + this.globalVariableLibrary = globalVariableLibrary; + } + + @Override + protected Mono> executeLogic() { + final String serializedModel = getPayload().get(MultiLevelModelStandardPayloadData.HighLevelModel); + final var model = Util.deserializeOrThrow(serializedModel, BpmnHighLevelIntermediateModel.class); + if (model == null) { + return Mono.just(Result.Err("Cannot process high-level model data; no valid model was generated")); + } + + // Analyze high-level model data and add derived data to the payload ready for detail-level generation + determineGlobalVariablesInUse(model); + + return Mono.just(Result.Ok()); + } + + private void determineGlobalVariablesInUse(BpmnHighLevelIntermediateModel model) { + final var globalVariablesInUse = model.getNodes().stream() + .flatMap(node -> node.getInputs().stream()) + .filter(input -> input.getSourceType() == ElementHighLevelNodeInputSourceType.Global) + .map(ElementHighLevelNodeInput::getSource) + .collect(Collectors.toSet()); + + final var filteredLibrary = globalVariableLibrary.getFilteredLibrary( + var -> globalVariablesInUse.contains(var.getName())); + + getPayload().put(BpmnPromptPlaceholders.GLOBAL_VARIABLES_USED_IN_HL_MODEL.getValue(), filteredLibrary.defaultSerialize()); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java index ef91815..83212c0 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java @@ -1,6 +1,7 @@ package org.rj.modelgen.bpmn.models.generation.multilevel.states; import org.rj.modelgen.bpmn.component.BpmnComponentLibrary; +import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; import org.rj.modelgen.bpmn.models.generation.base.signals.BpmnGenerationSignals; import org.rj.modelgen.bpmn.models.generation.multilevel.BpmnMultiLevelGenerationModel; @@ -26,9 +27,11 @@ public class ValidateBpmnLlmDetailLevelIntermediateModelResponse extends ModelInterfaceState implements CommonStateInterface { private static final Logger LOG = LoggerFactory.getLogger(ValidateBpmnLlmDetailLevelIntermediateModelResponse.class); + private final BpmnGlobalVariableLibrary globalVariableLibrary; - public ValidateBpmnLlmDetailLevelIntermediateModelResponse() { + public ValidateBpmnLlmDetailLevelIntermediateModelResponse(BpmnGlobalVariableLibrary globalVariableLibrary) { super(ValidateBpmnLlmDetailLevelIntermediateModelResponse.class); + this.globalVariableLibrary = globalVariableLibrary; } @Override @@ -46,7 +49,7 @@ protected Mono invokeAction(ModelInterfaceSignal modelInte final var componentLibrary = getComponentLibrary(); - List validations = new ValidateBpmnModel(model, componentLibrary).validate(); + List validations = new ValidateBpmnModel(model, globalVariableLibrary, componentLibrary).validate(); List validationMessages = new ArrayList<>(); validations.stream().collect(Collectors.groupingBy(IntermediateModelValidationError::getLocation)) .forEach((nodeName, nodeValidations) -> { diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java index c1a708c..1826413 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java @@ -2,6 +2,7 @@ import org.apache.commons.lang3.StringUtils; import org.rj.modelgen.bpmn.component.BpmnComponentLibrary; +import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; import org.rj.modelgen.bpmn.intrep.model.ElementNode; import org.rj.modelgen.llm.validation.beans.IntermediateModelValidationError; @@ -15,12 +16,14 @@ public class ValidateBpmnModel { private static final String FULL_PROCESS = "full_process"; private BpmnIntermediateModel model; + private BpmnGlobalVariableLibrary globalVariableLibrary; private BpmnComponentLibrary componentLibrary; private List invalidMessages = new ArrayList<>(); - public ValidateBpmnModel(BpmnIntermediateModel model, BpmnComponentLibrary componentLibrary) { + public ValidateBpmnModel(BpmnIntermediateModel model, BpmnGlobalVariableLibrary globalVariableLibrary, BpmnComponentLibrary componentLibrary) { this.model = model; + this.globalVariableLibrary = globalVariableLibrary; this.componentLibrary = componentLibrary; } diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-global-variable-library.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-global-variable-library.json new file mode 100644 index 0000000..e324524 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-global-variable-library.json @@ -0,0 +1,3 @@ +{ + "components": [] +} \ No newline at end of file diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/data/MultiLevelModelStandardPayloadData.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/data/MultiLevelModelStandardPayloadData.java index bec60b3..5d36cd3 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/data/MultiLevelModelStandardPayloadData.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/data/MultiLevelModelStandardPayloadData.java @@ -1,9 +1,11 @@ package org.rj.modelgen.llm.models.generation.multilevel.data; public enum MultiLevelModelStandardPayloadData { + Request, HighLevelModel, DetailLevelModel, - LlmDirectedRetryReason; + LlmDirectedRetryReason, + AddPlaceholdersForUnknownActions; @Override public String toString() { From e2c6ecc78e9c3a4217818bf4a8e5932da654b4d1 Mon Sep 17 00:00:00 2001 From: "Liput, Milosz [Engineering]" Date: Thu, 9 Oct 2025 16:18:47 +0000 Subject: [PATCH 03/10] Added list of inputs to HL model schema --- .../model/ElementHighLevelNodeInput.java | 6 +-- .../ElementHighLevelNodeInputSourceType.java | 12 +++--- ...evelModelDataForDetailLevelGeneration.java | 2 +- ...ilevel-detail-level-generation-schema.json | 7 ---- ...ltilevel-high-level-generation-schema.json | 41 +++++++++++++++---- 5 files changed, 44 insertions(+), 24 deletions(-) diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java index 4f73fd3..8e9aabe 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java @@ -37,9 +37,9 @@ public void setSourceType(ElementHighLevelNodeInputSourceType sourceType) { public String generateSummary() { return switch (sourceType) { - case Node -> String.format("Input \"%s\" will be provided by node \"%s\"", name, source); - case Constant -> String.format("Input \"%s\" will be assigned constant value \"%s\"", name, source); - case Global -> String.format("Input \"%s\" will be assigned global value \"%s\"", name, source); + case NODE -> String.format("Input \"%s\" will be provided by node \"%s\"", name, source); + case CONSTANT -> String.format("Input \"%s\" will be assigned constant value \"%s\"", name, source); + case GLOBAL -> String.format("Input \"%s\" will be assigned global value \"%s\"", name, source); }; } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java index bc09ec2..a7e3c07 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java @@ -3,10 +3,10 @@ import com.fasterxml.jackson.annotation.JsonProperty; public enum ElementHighLevelNodeInputSourceType { - @JsonProperty("node") - Node, - @JsonProperty("constant") - Constant, - @JsonProperty("global") - Global + @JsonProperty("NODE") + NODE, + @JsonProperty("CONSTANT") + CONSTANT, + @JsonProperty("GLOBAL") + GLOBAL } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ProcessHighLevelModelDataForDetailLevelGeneration.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ProcessHighLevelModelDataForDetailLevelGeneration.java index e805153..dbc362a 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ProcessHighLevelModelDataForDetailLevelGeneration.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ProcessHighLevelModelDataForDetailLevelGeneration.java @@ -38,7 +38,7 @@ protected Mono> executeLogic() { private void determineGlobalVariablesInUse(BpmnHighLevelIntermediateModel model) { final var globalVariablesInUse = model.getNodes().stream() .flatMap(node -> node.getInputs().stream()) - .filter(input -> input.getSourceType() == ElementHighLevelNodeInputSourceType.Global) + .filter(input -> input.getSourceType() == ElementHighLevelNodeInputSourceType.GLOBAL) .map(ElementHighLevelNodeInput::getSource) .collect(Collectors.toSet()); diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json index 0ac723a..ee9875d 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json @@ -36,13 +36,6 @@ ], "description": "A short summary of this step in the process" }, - "properties": { - "type": [ - "object", - "null" - ], - "description": "Additional properties which can be provided as required" - }, "connectedTo": { "type": "array", "items": { diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-schema.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-schema.json index 0ac723a..8df3f56 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-schema.json +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-schema.json @@ -36,19 +36,22 @@ ], "description": "A short summary of this step in the process" }, - "properties": { - "type": [ - "object", - "null" - ], - "description": "Additional properties which can be provided as required" - }, "connectedTo": { "type": "array", "items": { "$ref": "#/$defs/nodeConnection", "description": "The IDs of nodes which this node connects to. Outbound connections only. Only a single outbound connection is allowed unless this is an exclusiveGateway node" } + }, + "inputs": { + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/$defs/elementInput" + }, + "description": "The source of data for each input required by this component." } }, "required": [ @@ -61,6 +64,30 @@ "type": "string", "description": "A unique identifier for a node" }, + "elementInput" : { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elementInput", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the input required for this component" + }, + "source": { + "type": "string", + "description": "Source of data for the input; either the name of another node which can provide it, a constant value, or one of the explicitly-defined global variables" + }, + "sourceType": { + "enum": ["CONSTANT", "NODE", "GLOBAL"], + "description": "\"CONSTANT\" if `source` is constant value or \"NODE\" if it is the name of a node which provides the value, or \"GLOBAL\" if it is a global variable" + } + }, + "required": [ + "name", + "source", + "sourceType" + ] + }, "nodeConnection": { "type": "object", "properties": { From aa1719b37eb488e9a0cf502eaef78c70a5a82d34 Mon Sep 17 00:00:00 2001 From: "Liput, Milosz [Engineering]" Date: Tue, 11 Nov 2025 01:38:00 +0000 Subject: [PATCH 04/10] Enhanced BPMN component library and enabled detail level generation --- .gitlab-ci.yml | 2 +- .gs-project.yml | 2 +- .../bpmn/component/BpmnComponent.java | 283 +++++++++--- .../bpmn/component/BpmnComponentLibrary.java | 16 +- ...mnComponentLibraryDetailLevelSelector.java | 18 +- ...ComponentLibraryDetailLevelSerializer.java | 16 +- ...mnComponentLibraryHighLevelSerializer.java | 38 +- ...ntLibraryPreprocessingLevelSerializer.java | 7 +- ...nComponentLibrarySerializationOptions.java | 49 +- .../common/BpmnComponentVariableType.java | 25 ++ .../library/BpmnGlobalVariableLibrary.java | 1 - .../generation/BasicBpmnModelGenerator.java | 350 +++++++-------- .../bpmn/generation/BpmnConstants.java | 93 ++-- .../BpmnModelComponentNodeInputType.java | 3 +- ...nModelComponentNodeScriptVariableType.java | 3 +- .../model/BpmnHighLevelIntermediateModel.java | 2 +- .../intrep/model/ElementHighLevelNode.java | 2 +- .../model/ElementHighLevelNodeInput.java | 1 + .../ElementHighLevelNodeInputSourceType.java | 4 +- .../bpmn/intrep/model/ElementNode.java | 67 ++- .../bpmn/intrep/model/ElementNodeInput.java | 77 ++++ .../bpmn/intrep/model/ElementNodeOutput.java | 49 ++ .../SubmitBpmnGenerationRequestToLlm.java | 6 + .../states/PrepareBpmnModelForRendering.java | 6 +- .../validation/ValidateBpmnModel.java | 153 ++++++- .../subproblem/BpmnGenerateSubproblems.java | 4 +- .../components/bpmn-component-library.json | 423 +++++++++++++++--- ...-multilevel-detail-level-generation-prompt | 170 +++++-- ...ilevel-detail-level-generation-schema.json | 211 ++++++--- ...mn-multilevel-high-level-generation-prompt | 103 +++-- ...ltilevel-high-level-generation-schema.json | 215 ++++----- .../states/PrepareModelForRendering.java | 144 ++++++ .../states/common/ExecuteLogic.java | 117 +---- .../rj/modelgen/llm/util/ValidationUtils.java | 16 +- 34 files changed, 1886 insertions(+), 790 deletions(-) create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/common/BpmnComponentVariableType.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeOutput.java create mode 100644 codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareModelForRendering.java diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7bfe22c..ad842ce 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ include: - project: 'fp/open-source/os-ci' file: - - '.gitlab-ci.yml' + - '.gitlab-ci.yml' \ No newline at end of file diff --git a/.gs-project.yml b/.gs-project.yml index 520a9bf..e15190b 100644 --- a/.gs-project.yml +++ b/.gs-project.yml @@ -1 +1 @@ -productGuid: "product::823826" +productGuid: "product::823826" \ No newline at end of file diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java index be0f9cd..c131e8d 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java @@ -1,56 +1,227 @@ -package org.rj.modelgen.bpmn.component; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import org.rj.modelgen.llm.component.Component; - -public class BpmnComponent extends Component { - private String name; - private String description; - private String usage; - - public BpmnComponent() { } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public String getUsage() { - return usage; - } - - public void setUsage(String usage) { - this.usage = usage; - } - - @JsonIgnore - public String serializeHighLevel() { - return String.format("Name: %s\nDescription: %s\nUsage: %s", name, description, usage); - } - - @JsonIgnore - public String serializeHighLevel(BpmnComponentLibrarySerializationOptions options) { - return String.format("Name: %s\nDescription: %s\nUsage: %s", name, description, usage); - } - - @JsonIgnore - public String serializeDetailLevel() { - return String.format("Name: %s\nDescription: %s\nUsage: %s", name, description, usage); // TODO - } - - @Override - public String defaultSerialize() { - return serializeDetailLevel(); - } -} +package org.rj.modelgen.bpmn.component; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import org.rj.modelgen.bpmn.component.common.BpmnComponentVariableType; +import org.rj.modelgen.llm.component.Component; + +import java.util.List; +import java.util.ArrayList; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; + +public class BpmnComponent extends Component { + private String name; + private String description; + private String usage; + private List requiredInputs; + private List generatedOutputs; + + public BpmnComponent() { } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUsage() { + return usage; + } + + public void setUsage(String usage) { + this.usage = usage; + } + + public List getRequiredInputs() { + return requiredInputs; + } + + public void setRequiredInputs(List requiredInputs) { + this.requiredInputs = requiredInputs; + } + + public List getGeneratedOutputs() { + return generatedOutputs; + } + + public void setGeneratedOutputs(List generatedOutputs) { + this.generatedOutputs = generatedOutputs; + } + + @JsonIgnore + public String generateSerializedPromptData(BpmnComponentLibrarySerializationOptions options) { + final var result = new StringBuilder(String.format("Name: %s\nDescription: %s\nUsage: %s\n", name, description, usage)); + + if (options.shouldIncludeInputs()) { + final Map> inputs = requiredInputs.stream() + .collect(Collectors.partitioningBy(i -> (i.isMandatory() || i.isKeyValue()))); + final var mandatory = inputs.get(Boolean.TRUE); + final var optional = inputs.get(Boolean.FALSE); + + if (!mandatory.isEmpty()) { + result.append("Mandatory inputs: \n").append(mandatory.stream() + .map(InputVariable::getVariableSummary) + .collect(Collectors.joining(",\n"))) + .append('\n'); + } + + if (!options.isMandatoryInputsOnly() && !optional.isEmpty()) { + result.append("Optional inputs: \n").append(optional.stream() + .map(InputVariable::getVariableSummary) + .collect(Collectors.joining(",\n "))) + .append('\n'); + } + } + + if (options.shouldIncludeOutputs()) { + if (!generatedOutputs.isEmpty()) { + result.append("Automatically-generated outputs: \n").append(generatedOutputs.stream() + .map(Variable::getVariableSummary) + .collect(Collectors.joining(",\n"))) + .append('\n'); + } + } + + return result.toString().trim(); + } + + @Override + public String defaultSerialize() { + return generateSerializedPromptData(BpmnComponentLibrarySerializationOptions.defaultOptions()); + } + + public static class Variable { + private String name; + private String description; + private BpmnComponentVariableType type; + private boolean keyValue; + + public Variable() { + this(null, null); + } + + public Variable(String name, String description) { + this(name, description, BpmnComponentVariableType.String); + } + + public Variable(String name, String description, BpmnComponentVariableType type) { + this.name = name; + this.description = description; + this.type = Optional.ofNullable(type).orElse(BpmnComponentVariableType.String); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @JsonInclude() + public BpmnComponentVariableType getType() { + return type; + } + + public void setType(BpmnComponentVariableType type) { + this.type = type; + } + + public boolean isKeyValue() { + return keyValue; + } + + public void setKeyValue(boolean keyValue) { + this.keyValue = keyValue; + } + + protected List buildSummaryComponents() { + final List components = new ArrayList<>(); + if (type != null && type != BpmnComponentVariableType.String) { + components.add(type.name()); + } + if (description != null) { + components.add(description); + } + return components; + } + + @JsonIgnore + public String getVariableSummary() { + final var components = buildSummaryComponents(); + if (components.isEmpty()) { + return name; + } + return String.format(" - %s (%s)", name, String.join("; ", components)); + } + } + + public static class InputVariable extends Variable { + private boolean mandatory; + private List allowedValues; + + public InputVariable() { + this(null, null); + } + + public InputVariable(String name, String description) { + this(name, description, BpmnComponentVariableType.String, false, List.of()); + } + + public InputVariable(String name, String description, BpmnComponentVariableType type, boolean mandatory, List allowedValues) { + super(name, description, type); + this.mandatory = mandatory; + this.allowedValues = allowedValues; + } + + public boolean isMandatory() { + return mandatory; + } + + public void setMandatory(boolean mandatory) { + this.mandatory = mandatory; + } + + public List getAllowedValues() { + return allowedValues; + } + + public void setAllowedValues(List allowedValues) { + this.allowedValues = allowedValues; + } + + @Override + protected List buildSummaryComponents() { + final List components = super.buildSummaryComponents(); + if (allowedValues != null && !allowedValues.isEmpty()) { + components.add("Allowed values: " + String.join(", ", allowedValues)); + } + return components; + } + + @JsonIgnore + public String getVariableSummary() { + return super.getVariableSummary(); + } + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrary.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrary.java index f40d8e7..e1bcdc2 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrary.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrary.java @@ -54,17 +54,23 @@ public Optional getComponentByName(String name) { } @JsonIgnore - public String serializeHighLevel() { - return serializeHighLevel(BpmnComponentLibrarySerializationOptions.defaultOptions()); + public String generateSerializedPromptData() { + return generateSerializedPromptData(BpmnComponentLibrarySerializationOptions.defaultOptions()); } @JsonIgnore - public String serializeHighLevel(BpmnComponentLibrarySerializationOptions options) { - return getComponents().stream() - .map(component -> component.serializeHighLevel(options)) + public String generateSerializedPromptData(BpmnComponentLibrarySerializationOptions options) { + return components.stream() + .map(component -> component.generateSerializedPromptData(options)) .collect(Collectors.joining("\n---\n")); } + @Override + @JsonIgnore + public String defaultSerialize() { + return generateSerializedPromptData(BpmnComponentLibrarySerializationOptions.defaultOptions()); + } + public static BpmnComponentLibrary defaultLibrary() { return fromResource("content/components/bpmn-component-library.json"); } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryDetailLevelSelector.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryDetailLevelSelector.java index c05bb0a..b77c3e8 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryDetailLevelSelector.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryDetailLevelSelector.java @@ -1,33 +1,33 @@ package org.rj.modelgen.bpmn.component; -import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; -import org.rj.modelgen.bpmn.intrep.model.ElementNode; +import org.rj.modelgen.bpmn.intrep.model.BpmnHighLevelIntermediateModel; +import org.rj.modelgen.bpmn.intrep.model.ElementHighLevelNode; import org.rj.modelgen.llm.component.ComponentLibrarySelector; import org.rj.modelgen.llm.exception.LlmGenerationModelException; import org.rj.modelgen.llm.intrep.IntermediateModelParser; +import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; import org.rj.modelgen.llm.state.ModelInterfacePayload; -import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; import java.util.stream.Collectors; public class BpmnComponentLibraryDetailLevelSelector implements ComponentLibrarySelector { @Override public BpmnComponentLibrary getFilteredLibrary(BpmnComponentLibrary baseLibrary, ModelInterfacePayload payload) { - final var model = getLatestIntermediateModel(payload); + final var model = getLatestHighLevelModel(payload); // Filter down to only the types in use in the high level model final var typesInUse = model.getNodes().stream() - .map(ElementNode::getElementType) + .map(ElementHighLevelNode::getElementType) .collect(Collectors.toSet()); return new BpmnComponentLibrary(baseLibrary.getFilteredLibrary(comp -> typesInUse.contains(comp.getName())).getComponents()); } - private BpmnIntermediateModel getLatestIntermediateModel(ModelInterfacePayload payload) { - final String content = payload.get(StandardModelData.ResponseContent); - final var parser = new IntermediateModelParser<>(BpmnIntermediateModel.class); + private BpmnHighLevelIntermediateModel getLatestHighLevelModel(ModelInterfacePayload payload) { + final String content = payload.get(MultiLevelModelStandardPayloadData.HighLevelModel); + final var parser = new IntermediateModelParser<>(BpmnHighLevelIntermediateModel.class); return parser.parse(content).orElseThrow(e -> new LlmGenerationModelException(String.format( - "Component library selector could not parse intermediate model: %s (content: %s)", e, content))); + "Component library selector could not parse high level intermediate model: %s (content: %s)", e, content))); } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryDetailLevelSerializer.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryDetailLevelSerializer.java index 88dc859..0b609bc 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryDetailLevelSerializer.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryDetailLevelSerializer.java @@ -2,19 +2,17 @@ import org.rj.modelgen.llm.component.ComponentLibrarySerializer; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - public class BpmnComponentLibraryDetailLevelSerializer implements ComponentLibrarySerializer { + + private final BpmnComponentLibrarySerializationOptions options = BpmnComponentLibrarySerializationOptions.defaultOptions() + .withIncludeInputs(true) + .withIncludeOutputs(true) + .withMandatoryInputsOnly(false); + @Override public String serialize(BpmnComponentLibrary library) { if (library == null) return "(Error: no component library available)"; - return Optional.ofNullable(library.getComponents()) - .orElseGet(List::of) - .stream() - .map(BpmnComponent::serializeDetailLevel) - .collect(Collectors.joining("\n---\n")); + return library.generateSerializedPromptData(options); } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryHighLevelSerializer.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryHighLevelSerializer.java index a882b83..5267902 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryHighLevelSerializer.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryHighLevelSerializer.java @@ -1,20 +1,18 @@ -package org.rj.modelgen.bpmn.component; - -import org.rj.modelgen.llm.component.ComponentLibrarySerializer; - -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -public class BpmnComponentLibraryHighLevelSerializer implements ComponentLibrarySerializer { - @Override - public String serialize(BpmnComponentLibrary library) { - if (library == null) return "(Error: no component library available)"; - - return Optional.ofNullable(library.getComponents()) - .orElseGet(List::of) - .stream() - .map(BpmnComponent::serializeHighLevel) - .collect(Collectors.joining("\n---\n")); - } -} +package org.rj.modelgen.bpmn.component; + +import org.rj.modelgen.llm.component.ComponentLibrarySerializer; + +public class BpmnComponentLibraryHighLevelSerializer implements ComponentLibrarySerializer { + + private final BpmnComponentLibrarySerializationOptions options = BpmnComponentLibrarySerializationOptions.defaultOptions() + .withIncludeInputs(true) + .withIncludeOutputs(true) + .withMandatoryInputsOnly(false); + + @Override + public String serialize(BpmnComponentLibrary library) { + if (library == null) return "(Error: no component library available)"; + + return library.generateSerializedPromptData(options); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryPreprocessingLevelSerializer.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryPreprocessingLevelSerializer.java index 7552333..490760e 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryPreprocessingLevelSerializer.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryPreprocessingLevelSerializer.java @@ -4,12 +4,15 @@ public class BpmnComponentLibraryPreprocessingLevelSerializer implements ComponentLibrarySerializer { - private final BpmnComponentLibrarySerializationOptions options = BpmnComponentLibrarySerializationOptions.defaultOptions(); + private final BpmnComponentLibrarySerializationOptions options = BpmnComponentLibrarySerializationOptions.defaultOptions() + .withIncludeInputs(true) + .withIncludeOutputs(true) + .withMandatoryInputsOnly(true); @Override public String serialize(BpmnComponentLibrary library) { if (library == null) return "(Error: no component library available)"; - return library.serializeHighLevel(options); + return library.generateSerializedPromptData(options); } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrarySerializationOptions.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrarySerializationOptions.java index 8900eb4..9e164dd 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrarySerializationOptions.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrarySerializationOptions.java @@ -2,25 +2,52 @@ public class BpmnComponentLibrarySerializationOptions { - // TODO: add BPMN serialization options - private boolean placeholderOption = true; + private boolean mandatoryInputsOnly = false; + private boolean includeInputs = true; + private boolean includeOutputs = true; public BpmnComponentLibrarySerializationOptions() { } public static BpmnComponentLibrarySerializationOptions defaultOptions() { return new BpmnComponentLibrarySerializationOptions(); } - - public boolean isPlaceholderOption() { - return placeholderOption; + + public boolean isMandatoryInputsOnly() { + return mandatoryInputsOnly; + } + + public void setMandatoryInputsOnly(boolean mandatoryInputsOnly) { + this.mandatoryInputsOnly = mandatoryInputsOnly; } - - public void setPlaceholderOption(boolean placeholderOption) { - this.placeholderOption = placeholderOption; + + public BpmnComponentLibrarySerializationOptions withMandatoryInputsOnly(boolean mandatoryInputsOnly) { + setMandatoryInputsOnly(mandatoryInputsOnly); + return this; + } + + public boolean shouldIncludeInputs() { + return includeInputs; + } + + public void setIncludeInputs(boolean includeInputs) { + this.includeInputs = includeInputs; } - - public BpmnComponentLibrarySerializationOptions withPlaceholderOption(boolean placeholderOption) { - this.placeholderOption = placeholderOption; + + public BpmnComponentLibrarySerializationOptions withIncludeInputs(boolean includeInputs) { + setIncludeInputs(includeInputs); + return this; + } + + public boolean shouldIncludeOutputs() { + return includeOutputs; + } + + public void setIncludeOutputs(boolean includeOutputs) { + this.includeOutputs = includeOutputs; + } + + public BpmnComponentLibrarySerializationOptions withIncludeOutputs(boolean includeOutputs) { + setIncludeOutputs(includeOutputs); return this; } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/common/BpmnComponentVariableType.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/common/BpmnComponentVariableType.java new file mode 100644 index 0000000..0026ec5 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/common/BpmnComponentVariableType.java @@ -0,0 +1,25 @@ +package org.rj.modelgen.bpmn.component.common; + +import com.fasterxml.jackson.annotation.JsonValue; + +import java.util.Arrays; +import java.util.Optional; + +public enum BpmnComponentVariableType { + String, + Integer, + Float, + Boolean; + + public static Optional parse(String name) { + return Arrays.stream(values()) + .filter(v -> v.name().equalsIgnoreCase(name)) + .findFirst(); + } + + @JsonValue + @Override + public java.lang.String toString() { + return name().toLowerCase(); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariableLibrary.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariableLibrary.java index c354236..c24f163 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariableLibrary.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariableLibrary.java @@ -12,7 +12,6 @@ public class BpmnGlobalVariableLibrary extends ComponentLibrary { private List variables; - private Boolean returnFilteredVars = false; public BpmnGlobalVariableLibrary() { this(List.of()); diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BasicBpmnModelGenerator.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BasicBpmnModelGenerator.java index de017b3..3fd2a27 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BasicBpmnModelGenerator.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BasicBpmnModelGenerator.java @@ -1,175 +1,175 @@ -package org.rj.modelgen.bpmn.generation; - -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.tuple.Pair; -import org.camunda.bpm.model.bpmn.Bpmn; -import org.camunda.bpm.model.bpmn.BpmnModelInstance; -import org.camunda.bpm.model.bpmn.builder.*; -import org.camunda.bpm.model.bpmn.instance.*; -import org.camunda.bpm.model.bpmn.instance.Process; -import org.camunda.bpm.model.xml.instance.ModelElementInstance; -import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; -import org.rj.modelgen.bpmn.intrep.model.ElementConnection; -import org.rj.modelgen.bpmn.intrep.model.ElementNode; -import org.rj.modelgen.llm.util.Result; -import org.rj.modelgen.llm.util.Util; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.*; -import java.util.function.Function; -import java.util.stream.Collectors; - -public class BasicBpmnModelGenerator { - private static final Logger LOG = LoggerFactory.getLogger(BasicBpmnModelGenerator.class); - - public BasicBpmnModelGenerator() { - } - - public Result generateModel(BpmnIntermediateModel intermediateModel) { - if (intermediateModel == null) return Result.Err("Cannot generate model without valid intermediate model"); - - LOG.info("Generating BPMN model data for graph: {}", Util.serializeOrThrow(intermediateModel)); - - // Map of node IDs to node data - final var nodesById = intermediateModel.getNodes().stream() - .collect(Collectors.toMap(ElementNode::getId, Function.identity())); - - final var start = intermediateModel.getNodes().stream() - .filter(node -> BpmnConstants.NodeTypes.START_EVENT.equalsIgnoreCase(node.getElementType())) - .findFirst(); - - if (start.isEmpty()) return Result.Err("No start event in node data"); - final var startNode = start.get(); - - // Iteratively build based on required connections; begin from a single start event - final var nodes = new LinkedList(); - final var builder = Bpmn.createExecutableProcess("process") - .startEvent(startNode.getId()) - .name(startNode.getName()) - .done(); - - int sequenceId = 0; - nodes.add(startNode.getId()); - - while (!nodes.isEmpty()) { - final var nodeId = nodes.removeFirst(); - final var node = nodesById.get(nodeId); - - final ModelElementInstance nodeInstance = builder.getModelElementById(nodeId); - if (nodeInstance == null) throw new RuntimeException("Cannot retrieve generated node: " + nodeId); - - if (!(nodeInstance instanceof FlowNode flowNode)) continue; - - final var targets = Optional.ofNullable(node.getConnectedTo()).orElseGet(List::of); - if (targets.isEmpty()) continue; // Nothing downstream of this node - - for (var target : targets) { - var targetElement = nodesById.get(target.getTargetNode()); - if (targetElement == null) - throw new RuntimeException("Target element does not exist: " + target.getTargetNode()); - - final var connectionId = "seq-" + (sequenceId++); - final var outboundConnection = addOutboundConnection(flowNode.builder(), node, target, connectionId); - - final ModelElementInstance existingTarget = builder.getModelElementById(target.getTargetNode()); - if (existingTarget == null) { - addNode(outboundConnection, targetElement); - nodes.add(targetElement.getId()); - } else { - outboundConnection.connectTo(target.getTargetNode()); - } - } - } - - return Result.Ok(builder); - } - - private , E extends FlowNode> - void addNode(AbstractFlowNodeBuilder builder, ElementNode element) { - if (element == null) throw new RuntimeException("Cannot generate definition for null BPMN element"); - - final var id = element.getId(); - final var name = element.getName(); - - // Not differentiating between all element types for now - final var type = element.getElementType(); - switch (type) { - case BpmnConstants.NodeTypes.TASK_USER, BpmnConstants.NodeTypes.TASK_USER_TASK -> builder.userTask(id).name(name).done(); - case BpmnConstants.NodeTypes.TASK_SERVICE, BpmnConstants.NodeTypes.TASK_SERVICE_TASK -> builder.serviceTask(id).name(name).done(); - case BpmnConstants.NodeTypes.TASK_SCRIPT, BpmnConstants.NodeTypes.TASK_SCRIPT_TASK -> builder.scriptTask(id).name(name).done(); - case BpmnConstants.NodeTypes.TASK_MANUAL, BpmnConstants.NodeTypes.TASK_MANUAL_TASK -> builder.manualTask(id).name(name).done(); - case BpmnConstants.NodeTypes.TASK_SEND, BpmnConstants.NodeTypes.TASK_SEND_TASK -> builder.sendTask(id).name(name).done(); - case BpmnConstants.NodeTypes.TASK_RECEIVE, BpmnConstants.NodeTypes.TASK_RECEIVE_TASK -> builder.receiveTask(id).name(name).done(); - case BpmnConstants.NodeTypes.TASK_BUSINESS_RULE, BpmnConstants.NodeTypes.TASK_BUSINESS_RULE_TASK -> builder.businessRuleTask(id).name(name).done(); - case BpmnConstants.NodeTypes.END_EVENT -> builder.endEvent(id).name(name).done(); - case BpmnConstants.NodeTypes.GATEWAY_EXCLUSIVE -> builder.exclusiveGateway(id).name(name).done(); - case BpmnConstants.NodeTypes.GATEWAY_INCLUSIVE -> builder.inclusiveGateway(id).name(name).done(); - case BpmnConstants.NodeTypes.GATEWAY_PARALLEL -> builder.parallelGateway(id).name(name).done(); - - default -> builder.manualTask(id).name(name).done(); // TODO - } - } - - private , E extends FlowNode> - AbstractFlowNodeBuilder addOutboundConnection(AbstractFlowNodeBuilder builder, ElementNode sourceElement, - ElementConnection connection, String id) { - if (builder == null || sourceElement == null || connection == null || StringUtils.isBlank(id)) - throw new RuntimeException("Cannot make connection with invalid null data"); - - final var elementConnection = builder.sequenceFlowId(id); - - if (BpmnConstants.NodeTypes.GATEWAY_EXCLUSIVE.equals(sourceElement.getElementType())) { - elementConnection.condition(connection.getDescription(), null); - } - - return elementConnection; - } - - private FlowNode addElement(ElementNode element, Process process) { - if (element == null) throw new RuntimeException("Cannot generate definition for null BPMN element"); - - // Not differentiating between all element types for now - final var type = element.getElementType(); - final var generatedElement = switch (type) - { - case BpmnConstants.NodeTypes.START_EVENT -> createElement(process, element.getId(), StartEvent.class); - case BpmnConstants.NodeTypes.END_EVENT -> createElement(process, element.getId(), EndEvent.class); - default -> createElement(process, element.getId(), Task.class); - }; - - if (generatedElement == null) throw new RuntimeException(String.format("Failed to generate valid BPMN element for '%s'", element.getName())); - - return generatedElement; - } - - private Pair createModel() { - BpmnModelInstance modelInstance = Bpmn.createEmptyModel(); - - final var definitions = modelInstance.newInstance(Definitions.class); - definitions.setTargetNamespace("http://camunda.org/examples"); - modelInstance.setDefinitions(definitions); - - final var process = createElement(definitions, "process", Process.class); - - return Pair.of(modelInstance, process); - } - - protected T createElement(BpmnModelElementInstance parentElement, String id, Class elementClass) { - T element = parentElement.getModelInstance().newInstance(elementClass); - element.setAttributeValue("id", id, true); - parentElement.addChildElement(element); - return element; - } - - private SequenceFlow createSequenceFlow(Process process, FlowNode from, FlowNode to) { - String identifier = from.getId() + "-" + to.getId(); - SequenceFlow sequenceFlow = createElement(process, identifier, SequenceFlow.class); - process.addChildElement(sequenceFlow); - sequenceFlow.setSource(from); - from.getOutgoing().add(sequenceFlow); - sequenceFlow.setTarget(to); - to.getIncoming().add(sequenceFlow); - return sequenceFlow; - } -} +package org.rj.modelgen.bpmn.generation; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.tuple.Pair; +import org.camunda.bpm.model.bpmn.Bpmn; +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.camunda.bpm.model.bpmn.builder.*; +import org.camunda.bpm.model.bpmn.instance.*; +import org.camunda.bpm.model.bpmn.instance.Process; +import org.camunda.bpm.model.xml.instance.ModelElementInstance; +import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; +import org.rj.modelgen.bpmn.intrep.model.ElementConnection; +import org.rj.modelgen.bpmn.intrep.model.ElementNode; +import org.rj.modelgen.llm.util.Result; +import org.rj.modelgen.llm.util.Util; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +public class BasicBpmnModelGenerator { + private static final Logger LOG = LoggerFactory.getLogger(BasicBpmnModelGenerator.class); + + public BasicBpmnModelGenerator() { + } + + public Result generateModel(BpmnIntermediateModel intermediateModel) { + if (intermediateModel == null) return Result.Err("Cannot generate model without valid intermediate model"); + + LOG.info("Generating BPMN model data for graph: {}", Util.serializeOrThrow(intermediateModel)); + + // Map of node IDs to node data + final var nodesById = intermediateModel.getNodes().stream() + .collect(Collectors.toMap(ElementNode::getId, Function.identity())); + + final var start = intermediateModel.getNodes().stream() + .filter(node -> BpmnConstants.NodeTypes.START_EVENT.equalsIgnoreCase(node.getElementType())) + .findFirst(); + + if (start.isEmpty()) return Result.Err("No start event in node data"); + final var startNode = start.get(); + + // Iteratively build based on required connections; begin from a single start event + final var nodes = new LinkedList(); + final var builder = Bpmn.createExecutableProcess("process") + .startEvent(startNode.getId()) + .name(startNode.getName()) + .done(); + + int sequenceId = 0; + nodes.add(startNode.getId()); + + while (!nodes.isEmpty()) { + final var nodeId = nodes.removeFirst(); + final var node = nodesById.get(nodeId); + + final ModelElementInstance nodeInstance = builder.getModelElementById(nodeId); + if (nodeInstance == null) throw new RuntimeException("Cannot retrieve generated node: " + nodeId); + + if (!(nodeInstance instanceof FlowNode flowNode)) continue; + + final var targets = Optional.ofNullable(node.getConnectedTo()).orElseGet(List::of); + if (targets.isEmpty()) continue; // Nothing downstream of this node + + for (var target : targets) { + var targetElement = nodesById.get(target.getTargetNode()); + if (targetElement == null) + throw new RuntimeException("Target element does not exist: " + target.getTargetNode()); + + final var connectionId = "seq-" + (sequenceId++); + final var outboundConnection = addOutboundConnection(flowNode.builder(), node, target, connectionId); + + final ModelElementInstance existingTarget = builder.getModelElementById(target.getTargetNode()); + if (existingTarget == null) { + addNode(outboundConnection, targetElement); + nodes.add(targetElement.getId()); + } else { + outboundConnection.connectTo(target.getTargetNode()); + } + } + } + + return Result.Ok(builder); + } + + private , E extends FlowNode> + void addNode(AbstractFlowNodeBuilder builder, ElementNode element) { + if (element == null) throw new RuntimeException("Cannot generate definition for null BPMN element"); + + final var id = element.getId(); + final var name = element.getName(); + + // Not differentiating between all element types for now + final var type = element.getElementType(); + switch (type) { + case BpmnConstants.NodeTypes.TASK_USER, BpmnConstants.NodeTypes.TASK_USER_TASK -> builder.userTask(id).name(name).done(); + case BpmnConstants.NodeTypes.TASK_SERVICE, BpmnConstants.NodeTypes.TASK_SERVICE_TASK -> builder.serviceTask(id).name(name).done(); + case BpmnConstants.NodeTypes.TASK_SCRIPT, BpmnConstants.NodeTypes.TASK_SCRIPT_TASK -> builder.scriptTask(id).name(name).done(); + case BpmnConstants.NodeTypes.TASK_MANUAL, BpmnConstants.NodeTypes.TASK_MANUAL_TASK -> builder.manualTask(id).name(name).done(); + case BpmnConstants.NodeTypes.TASK_SEND, BpmnConstants.NodeTypes.TASK_SEND_TASK -> builder.sendTask(id).name(name).done(); + case BpmnConstants.NodeTypes.TASK_RECEIVE, BpmnConstants.NodeTypes.TASK_RECEIVE_TASK -> builder.receiveTask(id).name(name).done(); + case BpmnConstants.NodeTypes.TASK_BUSINESS_RULE, BpmnConstants.NodeTypes.TASK_BUSINESS_RULE_TASK -> builder.businessRuleTask(id).name(name).done(); + case BpmnConstants.NodeTypes.END_EVENT -> builder.endEvent(id).name(name).done(); + case BpmnConstants.NodeTypes.GATEWAY_EXCLUSIVE -> builder.exclusiveGateway(id).name(name).done(); + case BpmnConstants.NodeTypes.GATEWAY_INCLUSIVE -> builder.inclusiveGateway(id).name(name).done(); + case BpmnConstants.NodeTypes.GATEWAY_PARALLEL -> builder.parallelGateway(id).name(name).done(); + + default -> builder.manualTask(id).name(name).done(); // TODO + } + } + + private , E extends FlowNode> + AbstractFlowNodeBuilder addOutboundConnection(AbstractFlowNodeBuilder builder, ElementNode sourceElement, + ElementConnection connection, String id) { + if (builder == null || sourceElement == null || connection == null || StringUtils.isBlank(id)) + throw new RuntimeException("Cannot make connection with invalid null data"); + + final var elementConnection = builder.sequenceFlowId(id); + + if (BpmnConstants.NodeTypes.GATEWAY_EXCLUSIVE.equals(sourceElement.getElementType())) { + elementConnection.condition(connection.getDescription(), null); + } + + return elementConnection; + } + + private FlowNode addElement(ElementNode element, Process process) { + if (element == null) throw new RuntimeException("Cannot generate definition for null BPMN element"); + + // Not differentiating between all element types for now + final var type = element.getElementType(); + final var generatedElement = switch (type) + { + case BpmnConstants.NodeTypes.START_EVENT -> createElement(process, element.getId(), StartEvent.class); + case BpmnConstants.NodeTypes.END_EVENT -> createElement(process, element.getId(), EndEvent.class); + default -> createElement(process, element.getId(), Task.class); + }; + + if (generatedElement == null) throw new RuntimeException(String.format("Failed to generate valid BPMN element for '%s'", element.getName())); + + return generatedElement; + } + + private Pair createModel() { + BpmnModelInstance modelInstance = Bpmn.createEmptyModel(); + + final var definitions = modelInstance.newInstance(Definitions.class); + definitions.setTargetNamespace("http://camunda.org/examples"); + modelInstance.setDefinitions(definitions); + + final var process = createElement(definitions, "process", Process.class); + + return Pair.of(modelInstance, process); + } + + protected T createElement(BpmnModelElementInstance parentElement, String id, Class elementClass) { + T element = parentElement.getModelInstance().newInstance(elementClass); + element.setAttributeValue("id", id, true); + parentElement.addChildElement(element); + return element; + } + + private SequenceFlow createSequenceFlow(Process process, FlowNode from, FlowNode to) { + String identifier = from.getId() + "-" + to.getId(); + SequenceFlow sequenceFlow = createElement(process, identifier, SequenceFlow.class); + process.addChildElement(sequenceFlow); + sequenceFlow.setSource(from); + from.getOutgoing().add(sequenceFlow); + sequenceFlow.setTarget(to); + to.getIncoming().add(sequenceFlow); + return sequenceFlow; + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnConstants.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnConstants.java index f4e3696..95732f5 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnConstants.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnConstants.java @@ -1,46 +1,47 @@ -package org.rj.modelgen.bpmn.generation; - -import reactor.netty.udp.UdpServer; - -public class BpmnConstants { - public static class NodeTypes { - public static class Comparable { - public static final String TASK = "task"; - public static final String USER_TASK = "usertask"; - public static final String SERVICE_TASK = "servicetask"; - public static final String SCRIPT_TASK = "scripttask"; - public static final String BUSINESS_RULE_TASK = "businessruletask"; - } - - public static final String TASK = "task"; - public static final String TASK_USER = "user"; - public static final String TASK_USER_TASK = "userTask"; - public static final String TASK_SERVICE = "service"; - public static final String TASK_SERVICE_TASK = "serviceTask"; - public static final String TASK_SCRIPT = "script"; - public static final String TASK_SCRIPT_TASK = "scriptTask"; - public static final String TASK_BUSINESS_RULE = "businessRule"; - public static final String TASK_BUSINESS_RULE_TASK = "businessRuleTask"; - public static final String TASK_MANUAL = "manual"; - public static final String TASK_MANUAL_TASK = "manualTask"; - public static final String TASK_RECEIVE = "receive"; - public static final String TASK_RECEIVE_TASK = "receiveTask"; - public static final String TASK_SEND = "send"; - public static final String TASK_SEND_TASK = "sendTask"; - public static final String TASK_CALL = "call"; - public static final String TASK_CALL_TASK = "callTask"; - - public static final String GATEWAY_EXCLUSIVE = "exclusiveGateway"; - public static final String GATEWAY_INCLUSIVE = "inclusiveGateway"; - public static final String GATEWAY_PARALLEL = "parallelGateway"; - - public static final String START_EVENT = "startEvent"; - public static final String END_EVENT = "endEvent"; - - public static final String SEQUENCE_FLOW = "sequenceFlow"; - - - - } - -} +package org.rj.modelgen.bpmn.generation; + +import reactor.netty.udp.UdpServer; + +public class BpmnConstants { + public static class NodeTypes { + public static class Comparable { + public static final String TASK = "task"; + public static final String USER_TASK = "usertask"; + public static final String SERVICE_TASK = "servicetask"; + public static final String SCRIPT_TASK = "scripttask"; + public static final String BUSINESS_RULE_TASK = "businessruletask"; + } + + public static final String TASK = "task"; + public static final String TASK_USER = "user"; + public static final String TASK_USER_TASK = "userTask"; + public static final String TASK_SERVICE = "service"; + public static final String TASK_SERVICE_TASK = "serviceTask"; + public static final String TASK_SCRIPT = "script"; + public static final String TASK_SCRIPT_TASK = "scriptTask"; + public static final String TASK_BUSINESS_RULE = "businessRule"; + public static final String TASK_BUSINESS_RULE_TASK = "businessRuleTask"; + public static final String TASK_MANUAL = "manual"; + public static final String TASK_MANUAL_TASK = "manualTask"; + public static final String TASK_RECEIVE = "receive"; + public static final String TASK_RECEIVE_TASK = "receiveTask"; + public static final String TASK_SEND = "send"; + public static final String TASK_SEND_TASK = "sendTask"; + public static final String TASK_CALL = "call"; + public static final String TASK_CALL_TASK = "callTask"; + + public static final String GATEWAY_EXCLUSIVE = "exclusiveGateway"; + public static final String GATEWAY_INCLUSIVE = "inclusiveGateway"; + public static final String GATEWAY_PARALLEL = "parallelGateway"; + public static final String GATEWAY_SUFFIX = "Gateway"; + + public static final String START_EVENT = "startEvent"; + public static final String END_EVENT = "endEvent"; + + public static final String SEQUENCE_FLOW = "sequenceFlow"; + + + + } + +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeInputType.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeInputType.java index ef1d5ef..1d85c2e 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeInputType.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeInputType.java @@ -2,7 +2,8 @@ public enum BpmnModelComponentNodeInputType { CONSTANT, - COMPONENT, + SCRIPT, + NODE, GLOBAL; @Override diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeScriptVariableType.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeScriptVariableType.java index b0ab545..160098f 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeScriptVariableType.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeScriptVariableType.java @@ -3,7 +3,8 @@ public enum BpmnModelComponentNodeScriptVariableType { NODE, GLOBAL, - OUTPUT; + OUTPUT, + SCRIPT; @Override public String toString() { diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/BpmnHighLevelIntermediateModel.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/BpmnHighLevelIntermediateModel.java index eb3e7ee..6933da3 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/BpmnHighLevelIntermediateModel.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/BpmnHighLevelIntermediateModel.java @@ -7,7 +7,7 @@ import java.util.stream.Collectors; @JsonIgnoreProperties(ignoreUnknown = true) -public class BpmnHighLevelIntermediateModel extends IntermediateGraphModel { +public class BpmnHighLevelIntermediateModel extends IntermediateGraphModel { public BpmnHighLevelIntermediateModel() { super(); diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNode.java index 28cf88d..f4b009a 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNode.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNode.java @@ -85,7 +85,7 @@ public void setInputs(List inputs) { public String generateSummary() { final var sb = new StringBuilder(); - sb.append(String.format("- Element \"%s\" has type \"%s\"", name, elementType)); + sb.append(String.format("- Element \"%s\" has type \"%s\"", id, elementType)); sb.append(String.format("- The element's purpose can be described as the following: \"%s\"", description)); if (inputs != null && !inputs.isEmpty()) { diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java index 8e9aabe..710b8ae 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java @@ -40,6 +40,7 @@ public String generateSummary() { case NODE -> String.format("Input \"%s\" will be provided by node \"%s\"", name, source); case CONSTANT -> String.format("Input \"%s\" will be assigned constant value \"%s\"", name, source); case GLOBAL -> String.format("Input \"%s\" will be assigned global value \"%s\"", name, source); + case SCRIPT -> String.format("Input \"%s\" will be a Groovy script value \"%s\"", name, source); }; } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java index a7e3c07..afc05ea 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java @@ -8,5 +8,7 @@ public enum ElementHighLevelNodeInputSourceType { @JsonProperty("CONSTANT") CONSTANT, @JsonProperty("GLOBAL") - GLOBAL + GLOBAL, + @JsonProperty("SCRIPT") + SCRIPT } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java index b4edbc9..030af04 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java @@ -15,6 +15,8 @@ public class ElementNode implements GraphNode private String description; private List connectedTo; private Map properties; + private List inputs; + private List outputs; public ElementNode() { } @@ -81,6 +83,65 @@ public void setProperties(Map properties) { this.properties = properties; } + public List getInputs() { + if (inputs == null) { + return Collections.emptyList(); + } + return inputs; + } + + public void setInputs(List inputs) { + this.inputs = inputs; + } + + public List getOutputs() { + if (outputs == null) { + return Collections.emptyList(); + } + return outputs; + } + + @JsonIgnore + public ElementNodeOutput getOutputAt(int index) { + if (outputs == null || index < 0 || index >= outputs.size()) { + return null; + } + + return outputs.get(index); + } + + public void setOutputs(List outputs) { + this.outputs = outputs; + } + + @JsonIgnore + public boolean setOutputAt(int index, ElementNodeOutput output) { + if (outputs == null || index < 0 || index >= outputs.size()) { + return false; + } + + outputs.set(index, output); + return true; + } + + /* Convenience methods */ + + @JsonIgnore + public Optional findInput(String name) { + if (name == null) return Optional.empty(); + return getInputs().stream() + .filter(input -> name.equals(input.getName())) + .findFirst(); + } + + @JsonIgnore + public Optional findOutput(String name) { + if (name == null) return Optional.empty(); + return getOutputs().stream() + .filter(outputs -> name.equals(outputs.getName())) + .findFirst(); + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -91,11 +152,13 @@ public boolean equals(Object o) { Objects.equals(elementType, that.elementType) && Objects.equals(description, that.description) && Objects.equals(connectedTo, that.connectedTo) && - Objects.equals(properties, that.properties); + Objects.equals(properties, that.properties) && + Objects.equals(inputs, that.inputs) && + Objects.equals(outputs, that.outputs); } @Override public int hashCode() { - return Objects.hash(id, name, elementType, description, connectedTo, properties); + return Objects.hash(id, name, elementType, description, connectedTo, properties, inputs, outputs); } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java new file mode 100644 index 0000000..2bfe1f9 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java @@ -0,0 +1,77 @@ +package org.rj.modelgen.bpmn.intrep.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import org.rj.modelgen.bpmn.generation.BpmnModelComponentNodeInputType; + +@JsonPropertyOrder({ "name", "value", "variableSource" }) +public class ElementNodeInput { + private String name; + private String value; + private String variableSource; + + public ElementNodeInput() { + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + @JsonInclude(JsonInclude.Include.NON_NULL) + public String getVariableSource() { + return variableSource; + } + + public void setVariableSource(String variableSource) { + this.variableSource = variableSource; + } + + @JsonIgnore + public static ElementNodeInput createConstant(String name, String value) { + ElementNodeInput input = new ElementNodeInput(); + input.setName(name); + input.setVariableSource(BpmnModelComponentNodeInputType.CONSTANT.toString()); + input.setValue(value); + return input; + } + + @JsonIgnore + public static ElementNodeInput createScript(String name, String value) { + ElementNodeInput input = new ElementNodeInput(); + input.setName(name); + input.setVariableSource(BpmnModelComponentNodeInputType.SCRIPT.toString()); + input.setValue(value); + return input; + } + + @JsonIgnore + public static ElementNodeInput createGlobal(String name, String globalVariable) { + ElementNodeInput input = new ElementNodeInput(); + input.setName(name); + input.setVariableSource(BpmnModelComponentNodeInputType.GLOBAL.toString()); + input.setValue(globalVariable); + return input; + } + + @JsonIgnore + public static ElementNodeInput createNodeSourced(String name, String sourceNodeName, String sourceNodeOutputName) { + ElementNodeInput input = new ElementNodeInput(); + input.setName(name); + input.setVariableSource(sourceNodeName); + input.setValue(sourceNodeOutputName); + return input; + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeOutput.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeOutput.java new file mode 100644 index 0000000..33cc5be --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeOutput.java @@ -0,0 +1,49 @@ +package org.rj.modelgen.bpmn.intrep.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonPropertyOrder({ "name", "value", "type" }) +public class ElementNodeOutput { + public enum Type { global, constant, code } + + private String name; + private Type type; + private String value; + + public ElementNodeOutput() { + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + @JsonIgnore + public static ElementNodeOutput createConstant(String name, String value) { + ElementNodeOutput output = new ElementNodeOutput(); + output.setName(name); + output.setType(Type.constant); + output.setValue(value); + return output; + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/states/SubmitBpmnGenerationRequestToLlm.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/states/SubmitBpmnGenerationRequestToLlm.java index 0070ff6..e36b90f 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/states/SubmitBpmnGenerationRequestToLlm.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/states/SubmitBpmnGenerationRequestToLlm.java @@ -2,7 +2,9 @@ import org.rj.modelgen.bpmn.intrep.validation.BpmnDetailLevelIntermediateModelSanitizer; import org.rj.modelgen.bpmn.models.generation.base.signals.BpmnGenerationSignals; +import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; import org.rj.modelgen.llm.statemodel.states.common.SubmitGenerationRequestToLlm; +import org.rj.modelgen.llm.validation.impl.IntermediateModelSanitizer; public class SubmitBpmnGenerationRequestToLlm extends SubmitGenerationRequestToLlm { @@ -10,6 +12,10 @@ public SubmitBpmnGenerationRequestToLlm() { super(SubmitBpmnGenerationRequestToLlm.class, new BpmnDetailLevelIntermediateModelSanitizer()); } + public SubmitBpmnGenerationRequestToLlm(IntermediateModelSanitizer modelSanitizer) { + super(SubmitBpmnGenerationRequestToLlm.class, modelSanitizer); + } + @Override public String getDescription() { return "Submit new BPMN generation request to LLM"; diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java index 5741ccf..ac0aa0d 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java @@ -4,7 +4,7 @@ import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; import org.rj.modelgen.bpmn.models.generation.multilevel.BpmnMultiLevelGenerationModel; import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; -import org.rj.modelgen.llm.statemodel.states.common.ExecuteLogic; +import org.rj.modelgen.llm.models.generation.multilevel.states.PrepareModelForRendering; import org.rj.modelgen.llm.util.Result; import org.rj.modelgen.llm.util.Util; import org.slf4j.Logger; @@ -13,7 +13,7 @@ import java.util.*; -public class PrepareBpmnModelForRendering extends ExecuteLogic { +public class PrepareBpmnModelForRendering extends PrepareModelForRendering { private static final Logger LOG = LoggerFactory.getLogger(PrepareBpmnModelForRendering.class); @@ -21,7 +21,7 @@ public PrepareBpmnModelForRendering() { this(PrepareBpmnModelForRendering.class); } - public PrepareBpmnModelForRendering(Class cls) { + public PrepareBpmnModelForRendering(Class cls) { super(cls); } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java index 1826413..ad5a437 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java @@ -1,26 +1,29 @@ package org.rj.modelgen.bpmn.models.generation.validation; import org.apache.commons.lang3.StringUtils; +import org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.*; +import org.rj.modelgen.bpmn.component.BpmnComponent; import org.rj.modelgen.bpmn.component.BpmnComponentLibrary; import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; -import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; -import org.rj.modelgen.bpmn.intrep.model.ElementNode; +import org.rj.modelgen.bpmn.intrep.model.*; import org.rj.modelgen.llm.validation.beans.IntermediateModelValidationError; -import java.util.ArrayList; -import java.util.List; +import java.util.*; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.*; +import static org.rj.modelgen.bpmn.generation.BpmnModelComponentNodeScriptVariableType.*; import static org.rj.modelgen.llm.util.ValidationUtils.identifyNumberOfRoots; +import static org.rj.modelgen.llm.util.ValidationUtils.convertStringToMap; public class ValidateBpmnModel { private static final String FULL_PROCESS = "full_process"; + private BpmnIntermediateModel model; private BpmnGlobalVariableLibrary globalVariableLibrary; private BpmnComponentLibrary componentLibrary; private List invalidMessages = new ArrayList<>(); - public ValidateBpmnModel(BpmnIntermediateModel model, BpmnGlobalVariableLibrary globalVariableLibrary, BpmnComponentLibrary componentLibrary) { this.model = model; this.globalVariableLibrary = globalVariableLibrary; @@ -30,10 +33,13 @@ public ValidateBpmnModel(BpmnIntermediateModel model, BpmnGlobalVariableLibrary public List validate() { for (ElementNode node : model.getNodes()) { validateNodeNames(node); + validateRequiredInputs(node); + validateOutputNames(node); validateNodeConnections(node); + validateNodeConnectionsRules(node); } identifyOrphanedNodes(); - validateNodeConnectionsRules(); + return invalidMessages; } @@ -43,23 +49,98 @@ private void validateNodeNames(ElementNode node) { } if (StringUtils.isBlank(node.getId())) { invalidMessages.add(new IntermediateModelValidationError("Node id cannot be null or blank", FULL_PROCESS)); + } else { + if (StringUtils.isBlank(node.getElementType())) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node type cannot be null or blank for node '%s' ", node.getId()), node.getId())); + } + var component = componentLibrary.getComponentByName(node.getElementType()); + if (component.isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Component '%s' is not found in library for node %s. Select a valid component.", node.getElementType(), node.getId()), node.getId())); + } } - if (StringUtils.isBlank(node.getElementType())) { - invalidMessages.add(new IntermediateModelValidationError(String.format("Node type cannot be null or blank for node '%s' ", node.getName()), node.getName())); + } + + private void validateRequiredInputs(ElementNode node) { + final Collection invalidInputMessages = new ArrayList<>(); + final var component = componentLibrary.getComponentByName(node.getElementType()); + if (component.isEmpty()) return; // Unknown action type, should probably never happen by the time we reach this point + + node.getInputs().forEach(nodeInput -> { + if (StringUtils.isBlank(nodeInput.getName())) { + invalidInputMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has input with null or empty name", node.getId()), node.getId())); + } else { + if (StringUtils.isBlank(nodeInput.getValue())) { + invalidInputMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has '%s' input with null or empty value", node.getId(), nodeInput.getName()), node.getId())); + } + if (StringUtils.isBlank(nodeInput.getVariableSource())) { + invalidInputMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has '%s' input with null or empty variableSource. It should be CONSTANT, SCRIPT, NODE or GLOBAL.", node.getId(), nodeInput.getName()), node.getId())); + } + } + }); + + if (!invalidInputMessages.isEmpty()) { + // All inputs must have valid values before proceeding with further validation + invalidMessages.addAll(invalidInputMessages); + return; } - var component = componentLibrary.getComponentByName(node.getElementType()); - if (component.isEmpty()) { - invalidMessages.add(new IntermediateModelValidationError(String.format("Component '%s' is not found in library for node %s. Select a valid component.", node.getElementType(), node.getName()), node.getName())); + + component.get().getRequiredInputs().forEach(requiredInput -> { + var inputs = node.getInputs().stream() + .filter(nodeInput -> nodeInput.getName().equals(requiredInput.getName())) + .toList(); + + // If the input is mandatory, it must be present + if (requiredInput.isMandatory() && inputs.isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' is missing mandatory input '%s'", node.getId(), requiredInput.getName()), node.getId())); + } + // Input must not be defined multiple times + if (inputs.size() > 1) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has multiple definitions of input '%s'", node.getId(), requiredInput.getName()), node.getId())); + } + // If the input is enum, it must have a valid value + if (requiredInput.getAllowedValues() != null && !requiredInput.getAllowedValues().isEmpty() && !requiredInput.getAllowedValues().contains(inputs.get(0).getValue())) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an invalid value for input '%s'. Allowed values are: %s", node.getId(), requiredInput.getName(), String.join(", ", requiredInput.getAllowedValues())), node.getId())); + } + if (!inputs.isEmpty() && inputs.get(0).getVariableSource().equals(GLOBAL.toString()) && globalVariableLibrary.getVariableByName(inputs.get(0).getValue()).isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an input '%s' which tries to use a global variable '%s' that does not exist in the global variable library", node.getId(), requiredInput.getName(), inputs.get(0).getValue()), node.getId())); + } + }); + } + + private void validateOutputNames(ElementNode node) { + final var component = componentLibrary.getComponentByName(node.getElementType()); + if (component.isEmpty()) return; // Unknown component type, should probably never happen by the time we reach this point + + node.getOutputs().stream() + .flatMap(x -> validateOutputName(x.getName(), component.get()).stream()) + .forEach(msg -> invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an invalid output: %s", node.getId(), msg), node.getId()))); + } + + private Optional validateOutputName(String name, BpmnComponent component) { + if (StringUtils.isBlank(name)) return Optional.of("Name cannot be null or blank"); + + // No possible conflict if the node does not generate fixed outputs + if (component.getGeneratedOutputs() == null) return Optional.empty(); + + final String outputName = name.trim(); + final var conflict = component.getGeneratedOutputs().stream() + .anyMatch(x -> outputName.equals(x.getName())); + + if (conflict) { + return Optional.of(("Cannot add a custom output with name '%s' since the node already generates this output automatically. " + + "Either change the output name to something else and adjust other nodes which may use it accordingly or just reference the automatically generated output in other nodes").formatted(name)); } + + return Optional.empty(); } private void validateNodeConnections(ElementNode node) { if (node.getConnectedTo() != null) { node.getConnectedTo().forEach(connection -> { if (StringUtils.isBlank(connection.getTargetNode())) { - invalidMessages.add(new IntermediateModelValidationError(String.format("Connection for node '%s' has no target node defined", node.getName()), node.getName())); + invalidMessages.add(new IntermediateModelValidationError(String.format("Connection for node '%s' has no target node defined", node.getId()), node.getId())); } else if (model.getNodes().stream().noneMatch(n -> n.getId().equals(connection.getTargetNode()))) { - invalidMessages.add(new IntermediateModelValidationError(String.format("Target node '%s' does not exist in the model, but the connection of node '%s' tries to point to this non-existent node", connection.getTargetNode(), node.getName()), node.getName())); + invalidMessages.add(new IntermediateModelValidationError(String.format("Target node '%s' does not exist in the model, but the connection of node '%s' tries to point to this non-existent node", connection.getTargetNode(), node.getId()), node.getId())); } }); } @@ -78,9 +159,47 @@ private void identifyOrphanedNodes() { } } - private void validateNodeConnectionsRules() { - // TODO: Check connection between node types e.g. most node types can have only one connection between them, gateways can have multiple connections, etc. + private void validateNodeConnectionsRules(ElementNode node) { + var incomingConnections = model.getNodes().stream() + .filter(n -> n.getConnectedTo() != null) + .filter(n -> n.getConnectedTo().stream().anyMatch(c -> c.getTargetNode().equals(node.getId()))) + .toList(); + if (node.getElementType().equals(START_EVENT)) { + if (!incomingConnections.isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Start event node '%s' has incoming connections. A start event can only have outgoing connections.", node.getId()), node.getId())); + } + if (node.getConnectedTo() == null || node.getConnectedTo().isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Start event node '%s' has no outgoing connections. A start event must have at least one outgoing connection.", node.getId()), node.getId())); + } + } else if (node.getElementType().equals(END_EVENT)) { + if (node.getConnectedTo() != null && !node.getConnectedTo().isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("End event node '%s' has outgoing connections. An end event can only have incoming connections.", node.getId()), node.getId())); + } + if (incomingConnections.isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("End event node '%s' has no incoming connections. An end event must have at least one incoming connection.", node.getId()), node.getId())); + } + } else if (node.getElementType().endsWith(GATEWAY_SUFFIX)) { + // Gateway can either be a split (one incoming, multiple outgoing) or a merge (multiple incoming, one outgoing), but not both at the same time + if (incomingConnections.size() > 1 && node.getConnectedTo().size() > 1) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' has multiple incoming connections (%d) and multiple outgoing connections (%d). A gateway node can either be a split (one incoming, multiple outgoing) or a merge (multiple incoming, one outgoing), but not both at the same time. Create a separate gateway node for split and merge functionality.", node.getId(), incomingConnections.size(), node.getConnectedTo().size()), node.getId())); + } + // Validate that default node and conditions are mapped to existing nodes + String defaultTargetNodeName = node.findInput("default").map(ElementNodeInput::getValue).orElse(null); + if(StringUtils.isBlank(defaultTargetNodeName)) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' is missing a default target node in its inputs. A default target node must be specified.", node.getId()), node.getId())); + } else if(node.getConnectedTo().stream().noneMatch(c -> c.getTargetNode().equals(defaultTargetNodeName))) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' has a default target node '%s' which is not among its outgoing connections. The default target node must be one of the outgoing connections.", node.getId(), defaultTargetNodeName), node.getId())); + } + var conditions = convertStringToMap(node.findInput("conditions").map(ElementNodeInput::getValue).orElse("{}")); + for (String conditionTargetNode : conditions.keySet()) { + if (node.getConnectedTo().stream().noneMatch(c -> c.getTargetNode().equals(conditionTargetNode))) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' has a condition target node '%s' which is not among its outgoing connections. All condition target nodes must be one of the outgoing connections.", node.getId(), conditionTargetNode), node.getId())); + } + } + } else { + if (incomingConnections.size() != 1 && node.getConnectedTo().size() != 1) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' of type '%s' has %d incoming connections and %d outgoing connections. This type of node must have exactly one incoming and one outgoing connection.", node.getId(), node.getElementType(), incomingConnections.size(), node.getConnectedTo().size()), node.getId())); + } + } } - - } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/subproblem/BpmnGenerateSubproblems.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/subproblem/BpmnGenerateSubproblems.java index 2b64a20..9faa953 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/subproblem/BpmnGenerateSubproblems.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/subproblem/BpmnGenerateSubproblems.java @@ -1,5 +1,6 @@ package org.rj.modelgen.bpmn.subproblem; +import org.rj.modelgen.bpmn.models.generation.base.context.BpmnPromptPlaceholders; import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; import org.rj.modelgen.llm.subproblem.states.GenerateSubproblems; @@ -31,7 +32,8 @@ protected void onStartingNewSubproblem(int subproblemId, int subproblemCount) { StandardModelData.ModelResponse.toString(), StandardModelData.ValidationMessages.toString(), MultiLevelModelStandardPayloadData.HighLevelModel.toString(), - MultiLevelModelStandardPayloadData.DetailLevelModel.toString() + MultiLevelModelStandardPayloadData.DetailLevelModel.toString(), + BpmnPromptPlaceholders.GLOBAL_VARIABLES_USED_IN_HL_MODEL.getValue() )); } } diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json index 71abedd..d4f51c5 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json @@ -1,59 +1,364 @@ -{ - "components": [ - { - "name": "userTask", - "description": "A task that requires human intervention. Users interact with 'user tasks' via a task management system named eTask.", - "usage": "Use this task type when a task in the process flow requires manual action by a user. It typically involves human interaction, such as reviewing a document, approving a request, or entering data." - }, - { - "name": "serviceTask", - "description": "A task performed by an external software service. Typically a REST call to GET/PUT/POST/DELETE", - "usage": "Use service tasks when a task in the process flow can be automated and executed by a software service or application without direct human involvement. It often involves invoking external systems, performing calculations, or executing predefined functions." - }, - { - "name": "scriptTask", - "description": "A task that is performed based on scripted logic within the process.", - "usage": "Use script tasks when a task in the process flow requires custom logic or algorithmic processing. It is suitable when the logic can be localized within the process (i.e. does not require external data or systems, which is where a service task is more appropriate). It allows you to define Groovyscript scripts to perform specific actions or calculations within the process." - }, - { - "name": "businessRuleTask", - "description": "A task that executes a business rule or decision logic.", - "usage": "Use business rule tasks when a task in the process flow involves executing business rules or decision logic. It allows you to define and execute business rules or decision tables to determine the flow of the process based on certain conditions or criteria." - }, - { - "name": "sendTask", - "description": "A task that sends a message or signal to another process participant.", - "usage": "Use send tasks when a task in the process flow involves sending a message or signal to another process participant or external system. It initiates communication or triggers actions in other parts of the process or external systems." - }, - { - "name": "receiveTask", - "description": "A task that waits to receive a message or signal from another process participant.", - "usage": "Use receive tasks when a task in the process flow waits to receive a message or signal from another process participant or external system. It typically represents a waiting state until the expected message or signal is received." - }, - { - "name": "startEvent", - "description": "Represents the beginning of a process flow.", - "usage": "Place at the start of the process flow to indicate where it begins. Can have triggers like message, timer, or signal. Only one per process." - }, - { - "name": "endEvent", - "description": "Denotes the completion of a process flow.", - "usage": "Place at the end of the process flow to indicate where it ends. Can have outcomes like message, error, or termination. At least one required per process." - }, - { - "name": "exclusiveGateway", - "description": "Allows branching based on a condition", - "usage": "Use when the process flow can branch to multiple nodes, but ONLY ONE of the paths can be followed. Each outgoing connection flow has a condition which must be met for the process to take that path." - }, - { - "name": "inclusiveGateway", - "description": "Allows branching based on a condition", - "usage": "Use when the process flow can branch to multiple nodes, and MULTIPLE paths can be followed simultaneously. Each outgoing connection flow has a condition which must be met for the process to take that path." - }, - { - "name": "parallelGateway", - "description": "Allows diverging into, or converging from, multiple parallel paths.", - "usage": "Use when the process flow should split into multiple parallel paths or merge from multiple parallel paths simultaneously. All outgoing sequence flows are followed in parallel, and all incoming sequence flows must complete before proceeding." - } - ] -} +{ + "components": [ + { + "name": "userTask", + "description": "A task that requires human intervention. Users interact with 'user tasks' via a task management system named eTask.", + "usage": "Use this task type when a task in the process flow requires manual action by a user. It typically involves human interaction, such as reviewing a document, approving a request, or entering data.", + "requiredInputs": [ + { + "name": "taskName", + "description": "Name of the eTask for identification and display purposes", + "type": "string", + "mandatory": true, + "keyValue": true + }, + { + "name": "taskDescription", + "description": "Detailed description of what the user needs to do in this task", + "type": "string", + "mandatory": true, + "keyValue": true + }, + { + "name": "taskTypeName", + "description": "Identifier for the type of task being created in the eTask system", + "type": "string", + "mandatory": true, + "keyValue": true + }, + { + "name": "sourceSystemName", + "description": "Source system or process that generated this task", + "type": "string", + "mandatory": true, + "keyValue": true + }, + { + "name": "taskPriority", + "description": "Priority level of the task.", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedValues": ["CRITICAL", "HIGH", "MEDIUM", "LOW"] + }, + { + "name": "taskDeadline", + "description": "Expected completion date and time for the task in date format (e.g. YYYY-MM-DDTHH:MM:SS) or duration (e.g. P{days}DT{hours}H{minutes}M)", + "type": "string", + "mandatory": true, + "keyValue": true + }, + { + "name": "routingStrategy", + "description": "Strategy for routing the task to appropriate users or groups", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedValues": ["RESPONSIBILITY", "PRIVATE", "KERBEROS_LIST", "ADVANCED"] + }, + { + "name": "maximumActiveTasks", + "description": "Maximum number of active user tasks allowed before throttling", + "type": "integer", + "mandatory": true, + "keyValue": false + } + ], + "generatedOutputs": [ + { + "name": "reasonCode", + "description": "Reason code indicating how the task was completed. Useful for determining approval outcomes (e.g., 'APPROVED' vs 'REJECTED') or other completion reasons.", + "type": "string", + "keyValue": false + }, + { + "name": "comment", + "description": "The comment entered by the user who completed the task.", + "type": "string", + "keyValue": false + }, + { + "name": "completionPayload", + "description": "Optional payload data containing additional information submitted when the task was completed. Use this to access custom data or form fields submitted by the user", + "type": "string", + "keyValue": false + }, + { + "name": "taskIdentifier", + "description": "Unique reference identifier from taskCompletionPayload for the completed task instance. Useful for tracking, auditing, or correlating this specific task execution with external systems", + "type": "string", + "keyValue": false + } + ] + }, + { + "name": "serviceTask", + "description": "A task performed by an external software service. Typically a REST call to GET/PUT/POST/DELETE", + "usage": "Use service tasks when a task in the process flow can be automated and executed by a software service or application without direct human involvement. It often involves invoking external systems, performing calculations, or executing predefined functions", + "requiredInputs": [ + { + "name": "location", + "description": "Identification for the target service, e.g a hardcoded URL or GS Discover path in example format /{domain}/.../{service}/location or variable containing such a value", + "type": "string", + "mandatory": true, + "keyValue": true + }, + { + "name": "uriPath", + "description": "Specific URI path to append to the location identifier", + "type": "string", + "mandatory": true, + "keyValue": true + }, + { + "name": "httpMethod", + "description": "HTTP Method of the request to be invoked on the REST service called by this task", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedValues": ["GET", "POST", "PUT", "DELETE"] + }, + { + "name": "headers", + "description": "HTTP headers to include in the request. It's a stringified map where keys are header names and values are the corresponding header values", + "type": "string", + "mandatory": false, + "keyValue": false + }, + { + "name": "queryParams", + "description": "Query parameters for the request URL. It's a stringified map where keys are parameter names and values are the corresponding parameter values", + "type": "string", + "mandatory": false, + "keyValue": false + }, + { + "name": "inputExpression", + "description": "Provide an expression or a Groovy script to be used to resolve the body of the HTTP request. Not required for GET requests", + "type": "string", + "mandatory": false, + "keyValue": false + }, + { + "name": "outputScript", + "description": "Groovy script to process the response from the server (e.g handle status code and throw exceptions). The response object will be available in a `response` variable", + "type": "string", + "mandatory": false, + "keyValue": true + } + ], + "generatedOutputs": [ + { + "name": "statusCode", + "description": "HTTP status code returned by the service", + "type": "string", + "keyValue": false + } + ] + }, + { + "name": "scriptTask", + "description": "A task that is performed based on scripted logic within the process.", + "usage": "Use script tasks when a task in the process flow requires custom logic or algorithmic processing. It is suitable when the logic can be localized within the process (i.e. does not require external data or systems, which is where a service task is more appropriate). It allows you to define Groovy script scripts to perform specific actions or calculations within the process.", + "requiredInputs": [ + { + "name": "script", + "description": "Groovy script code to execute", + "type": "string", + "mandatory": true, + "keyValue": true + } + ], + "generatedOutputs": [ + { + "name": "result", + "description": "Name of the variable that stores the output of the script execution", + "type": "string", + "keyValue": false + } + ] + }, + { + "name": "businessRuleTask", + "description": "A task that executes a business rule or decision logic.", + "usage": "Use business rule tasks when a task in the process flow involves executing business rules or decision logic. It allows you to define and execute business rules or decision tables to determine the flow of the process based on certain conditions or criteria.", + "requiredInputs": [ + { + "name": "executionEngine", + "description": "Execution engine for rule evaluation.", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedValues": ["Sapiens", "Signavio", "DMN", "Droit", "Decision Tables"] + }, + { + "name": "applicationId", + "description": "ID of the Application within Decision Services Platform", + "type": "string", + "mandatory": true, + "keyValue": true + }, + { + "name": "ruleName", + "description": "Rule Name of the rule to be executed in Decision Services Platform", + "type": "string", + "mandatory": false, + "keyValue": false + }, + { + "name": "ruleVersion", + "description": "Rule Version of the rule to be executed in Decision Services Platform", + "type": "string", + "mandatory": false, + "keyValue": false + } + ], + "generatedOutputs": [] + }, + { + "name": "sendTask", + "description": "A task that sends a message or signal to another process participant.", + "usage": "Use send tasks when a task in the process flow involves sending a message or signal to another process participant or external system. It initiates communication or triggers actions in other parts of the process or external systems.", + "requiredInputs": [ + { + "name": "location", + "description": "Identification for the target service", + "type": "string", + "mandatory": true, + "keyValue": true + }, + { + "name": "httpPath", + "description": "Specific URI path to append to the location identifier", + "type": "string", + "mandatory": true, + "keyValue": true + }, + { + "name": "httpMethod", + "description": "HTTP Method of the request to be invoked on the REST service called by this task", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedValues": ["GET", "POST", "PUT", "DELETE"] + }, + { + "name": "headers", + "description": "HTTP headers to include in the request. It's a stringified map where keys are header names and values are the corresponding header values", + "type": "string", + "mandatory": false, + "keyValue": false + }, + { + "name": "queryParams", + "description": "Query parameters for the request URL. It's a stringified map where keys are parameter names and values are the corresponding parameter values", + "type": "string", + "mandatory": false, + "keyValue": false + }, + { + "name": "inputExpression", + "description": "Provide an expression or a Groovy script to be used to resolve the body of the HTTP request. Not required for GET requests", + "type": "string", + "mandatory": false, + "keyValue": false + }, + { + "name": "outputScript", + "description": "Groovy script to process the response from the server (e.g handle status code and throw exceptions). The response object will be available as a `response` variable", + "type": "string", + "mandatory": false, + "keyValue": true + } + ], + "generatedOutputs": [] + }, + { + "name": "receiveTask", + "description": "A task that waits to receive a message or signal from another process participant.", + "usage": "Use receive tasks when a task in the process flow waits to receive a message or signal from another process participant or external system. It typically represents a waiting state until the expected message or signal is received.", + "requiredInputs": [ + { + "name": "messageId", + "description": "ID of a message to listen for", + "type": "string", + "mandatory": true, + "keyValue": false + }, + { + "name": "availabilityRuleScript", + "description": "A Groovy script that specifies control of who can call this Receive Task", + "type": "string", + "mandatory": false, + "keyValue": false + } + ], + "generatedOutputs": [] + }, + { + "name": "startEvent", + "description": "Represents the beginning of a process flow.", + "usage": "Place at the start of the process flow to indicate where it begins. Can have triggers like message, timer, or signal. Only one per process", + "requiredInputs": [], + "generatedOutputs": [] + }, + { + "name": "endEvent", + "description": "Denotes the completion of a process flow.", + "usage": "Place at the end of the process flow to indicate where it ends. Can have outcomes like message, error, or termination. At least one required per process", + "requiredInputs": [], + "generatedOutputs": [] + }, + { + "name": "exclusiveGateway", + "description": "Allows branching based on a condition", + "usage": "Use when the process flow can branch to multiple nodes, but ONLY ONE of the paths can be followed. Each outgoing connection flow has a condition which must be met for the process to take that path", + "requiredInputs": [ + { + "name": "default", + "description": "Identifier of a default target node if no conditions are met.", + "type": "string", + "mandatory": false, + "keyValue": true + }, + { + "name": "conditions", + "description": "Data used for condition evaluation. It's a stringified map where keys are target node identifiers and values are the corresponding conditions", + "type": "string", + "mandatory": true, + "keyValue": false + } + ], + "generatedOutputs": [] + }, + { + "name": "inclusiveGateway", + "description": "Allows branching based on a condition", + "usage": "Use when the process flow can branch to multiple nodes, and MULTIPLE paths can be followed simultaneously. Each outgoing connection flow has a condition which must be met for the process to take that path.", + "requiredInputs": [ + { + "name": "default", + "description": "Identifier of a default target node if no conditions are met", + "type": "string", + "mandatory": false, + "keyValue": true + }, + { + "name": "conditions", + "description": "Data used for condition evaluation. It's a stringified map where keys are target node identifiers and values are the corresponding conditions", + "type": "string", + "mandatory": true, + "keyValue": false + } + ], + "generatedOutputs": [] + }, + { + "name": "parallelGateway", + "description": "Allows diverging into, or converging from, multiple parallel paths.", + "usage": "Use when the process flow should split into multiple parallel paths or merge from multiple parallel paths simultaneously. All outgoing sequence flows are followed in parallel, and all incoming sequence flows must complete before proceeding", + "requiredInputs": [], + "generatedOutputs": [] + } + ] +} diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt index e9b418a..9b82acc 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt @@ -1,28 +1,142 @@ -You are designing a business process model following the BPMN 2.0 standard. We will generate the model in two stages -1. Build a HIGH-LEVEL model by connecting together appropriate BPMN 2.0 elements -2. Build a DETAIL-LEVEL model by fleshing out this model and configuring each of the elements - -You have previously completed stage 1 by selecting elements from the provided library and linking them together. You generated the high-level model below: -``` -${highLevelModel} -``` - -We will now complete stage 2 and build the DETAILED model. Below are the full definitions of each element you used in the high-level model: -``` -${COMPONENT_LIBRARY} -``` - -You should now generate the DETAILED model. -* CAVEAT: Normally, you would fill out additional detail in each node based on the detailed component definitions above. However we are not yet ready to do this -* For now, please therefore return the EXACT SAME MODEL you returned in the high-level phase - -You should return the model as JSON complying to the following schema. Do NOT return a schema. Return JSON which complies with the schema: -``` -${SCHEMA_CONTENT} -``` - -NOTE: Now that you consider the detailed level and full component definitions, you may realize that you need to return to phase 1 and change the high-level structure. E.g. if you need additional nodes in order to generate data for downstream tasks. Please therefore return one of two possible responses: -1. The JSON complying to the schema above, if you successfully generate the model. Return ONLY the JSON and no other text or commentary -2. The phrase "RETURN_TO_HIGH_LEVEL: (REASON)" if you need to return to phase 1 and regenerate the high level model. Replace (REASON) with the reason(s) that you cannot generate a model at this time - -Given the caveat mentioned above, you should always be following option 1 at this point. +<#if detailLevelModel?? && detailLevelModel?trim?has_content && DETAIL_MODEL_VALIDATION_ISSUES?? && DETAIL_MODEL_VALIDATION_ISSUES?trim?has_content> + <#assign isDetailModelRetry = true> +<#else> + <#assign isDetailModelRetry = false> + + +You are designing a business process model following the BPMN 2.0 standard. We will generate the model in two stages +1. Build a HIGH-LEVEL model by connecting together appropriate BPMN 2.0 elements +2. Extend this into a DETAILED model by adding configuration and linking node inputs & outputs + +You have previously completed stage 1 by selecting elements from the provided library and linking them together. You also proposed the 'source' of each key input to those actions. In response to the following request: +``` +${request} +``` + +You generated the high-level model below: +``` +${highLevelModel} +``` + +<#if isDetailModelRetry> +You have also previously completed step 2 and generated the detail-level model below: +``` +${detailLevelModel} +``` + +However, it had the following issues (these are grouped by the Node Names found in the detail-level model you generated initially): +``` +<#assign issues = DETAIL_MODEL_VALIDATION_ISSUES?replace(", Node Name:", ", \nNode Name:")> +${issues} +``` + +You have now been asked to update the detail-level model to fix these issues. You should use the high-level model above as a starting point, and then update the detail-level model to fix the issues listed above following the guidelines provided. +<#else> + +We will now complete stage 2 and build the DETAILED model. + + + +Below are the full definitions of each element you used in the high-level model. The 'type' of each node in your model will match the name of a component in this library: +``` +${COMPONENT_LIBRARY} +``` + +<#if GLOBAL_VARIABLES_USED_IN_HL_MODEL?? && GLOBAL_VARIABLES_USED_IN_HL_MODEL?trim?has_content> + +You also selected the following global variables in stage 1: +``` +${GLOBAL_VARIABLES_USED_IN_HL_MODEL} +``` + + +<#if !isDetailModelRetry>You should now generate the DETAILED model. Feel free to correct/extend the high-level model you initially generated. +<#else> +Below are some guidelines to help you fix the issues found in the detail-level model + + +RULES FOR THE DETAILED MODEL GENERATION + +1. Model completeness + a. Include all high-level nodes (startEvent, endEvent(s), gateways, tasks) unless you deliberately restructure to satisfy inputs; in that case still produce a valid connected process. + b. You may add nodes, but do not drop all existing nodes. If you cannot produce any valid nodes, respond with: RETURN_TO_HIGH_LEVEL: (reason) rather than an empty model. + c. Every model must have exactly one startEvent and at least one endEvent. + d. Maintain connectivity: all nodes must be reachable from startEvent and lead to at least one endEvent. + +2. Input resolution + a. For every node use only inputs listed in that component's requiredInputs (include all mandatory; optional only if clearly beneficial and resolvable). + b. Each mandatory input must have exactly one source object: { name, value, variableSource }. + c. Allowed variableSource values: CONSTANT | SCRIPT | NODE | GLOBAL + - CONSTANT: Use for: + * Simple literal values that never change (e.g., "GET", "POST", "HIGH", 123, true). + * Pure function calls and expressions that ONLY retrieve variables without transformation (e.g., "getVariable('baseUrl')/api/endpoint" or getVariable('configValue.field')). + * Node IDs for gateway default paths. + - SCRIPT: Use when the value requires: + * Groovy script computation or transformation. + * Complex logic with multiple statements. + * Control flow (if/else, loops, etc.). + - NODE: Use when the value comes directly from a named output of any prior node in the process. The value should be the output variable name, and variableSource should reference ID of the source node. + - GLOBAL: Use when available in the global variables library. Global variables library is not the same as process shared state. + d. If any mandatory input cannot be satisfied with these rules, set their value to empty string. + e. Never add an input not defined in requiredInputs. Never guess enum values - only use allowedValues list. + +3. Outputs + a. The "automatically-generated outputs" listed in the component definitions are all generated by the component. You must not provide values for them. They are available if you want to use them to satisfy inputs. + b. However, if you need to generate *additional* outputs you can list them in the "outputs" array of the corresponding node. Each output can either have a constant value or contain code. + c. Any additionally generated outputs should be stored in shared state using setVariable('keyName', 'value') within scripts. + +4. Variable access API + a. Variables are stored individually in a payload object works as a shared state map across the process + b. To store a variable: use setVariable('keyName', 'value', 'valueType') + - This writes a single variable of a specific type to the shared process state. + - Each variable is stored separately, not as fields on a payload object. + - For each variable, define the appropriate valueType from: String, Integer, Float, Boolean, Object, Array. + - Example: setVariable('eventId', 12345, 'Integer'). + c. To read a variable from a previous node: use getVariable('keyName.subfield', 'sourceNodeId'). + - Use this when referencing: + * Any variable stored by a previous node using setVariable('keyName', 'value', 'valueType'). + * Any output variable from that node's generatedOutputs (e.g taskCompletionPayload, statusCode, result). + - keyName is the name of the variable to read. + - sourceNodeId is the ID of the node that produced/set this variable. + - Example: getVariable('reasonCode', 'resolveErrorTask') reads the reason code variable from resolveErrorTask node. + - ALWAYS specify sourceNodeId when reading data from a specific previous node. + d. To read a variable from initial process state: use getVariable('keyName') + - Use this ONLY for variables that are already in the shared state at process start (e.g., process input parameters, initial context). + - Do NOT use this for variables written by previous nodes - those require sourceNodeId. + e. For reads and writes, never reference the payload object directly (e.g., do NOT use payload.keyName), instead just use getVariable() and setVariable() as described above. + f. DO NOT perform any computations, transformations, or logic inside getVariable() or setVariable() calls. These calls should only read or write variables directly. + +5. Gateways and branching + a. Use a gateway if you want to branch execution into several options based on conditions. Use another gateway later to merge multiple flows back into one. + b. If you want to converge several branches into one and then immediately branch again, use a separate gateway to merge incoming flows (with no conditions) and a separate gateway to branch afterward; DO NOT merge and branch in the same gateway. + c. Condition keys must match target node IDs exactly. + d. Condition values must reference variables accessible in the shared state either at process start via getVariable('keyName') or at prior task output via getVariable('keyName', 'sourceNodeId'). + e. If a condition requires computed flags or complex expressions, derive them before the gateway using a ScriptTask. + +6. Connections + a. Every non-endEvent node must have at least one outbound connection. + b. Every non-startEvent node must have at least one inbound connection. + c. endEvent must have zero outbound connections. + d. startEvent must have zero inbound connections. + e. Ensure a single connected model with no orphan nodes. + +You should return the model as JSON complying to the following schema. Do NOT return a schema. Return JSON which complies with the schema: +``` +${SCHEMA_CONTENT} +``` + +--- +CODE GENERATION & SCRIPTING INSTRUCTIONS + +1. Script best practices + a. If need to read from the shared variable map: use getVariable('keyName.subfield') or getVariable('keyName.subfield', 'sourceNodeId'). DO NOT do null checks - assume key exists. + b. If need to write to the shared variable map: use setVariable('keyName', 'value', 'String'); + c. If need to throw exception use: throw(errorMessage); + d. Wildcards: Replace '%%' with appropriate Groovy/regex (e.g. (?i).*value.*) or use contains where sufficient. + e. Prefer basic string operations (contains, replace, split, toLowerCase) before regex. + +Finally, ensure that all steps are part of the SAME process. You should make sure that steps in your model are correctly linked together to form a single process. There should be no orphaned steps or processes - every step must be linked. + +NOTE: Now that you consider the detailed level and full component definitions, you may realize that you need to return to phase 1 and change the high-level structure. E.g. if you need additional nodes in order to generate some required component inputs. Please therefore return one of two possible responses: +1. The JSON complying to the schema above, if you successfully generate the model. Return ONLY the JSON and no other text or commentary. Make sure that detail-level model builds on the high-level model appropriately with all required inputs satisfied and potential structure changes but DO NOT return empty list of nodes. +2. The phrase "RETURN_TO_HIGH_LEVEL: (REASON)" if you need to return to phase 1 and regenerate the high level model. Replace (REASON) with the reason(s) that you cannot generate a model at this time diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json index ee9875d..0d33086 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json @@ -1,74 +1,139 @@ -{ - "$id": "https://example.com/process-model.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Process model", - "type": "object", - "additionalProperties": false, - "properties": { - "nodes": { - "type": "array", - "items": { - "$ref": "#/$defs/element" - } - } - }, - "$defs": { - "element": { - "type": "object", - "additionalProperties": false, - "properties": { - "id": { - "$ref": "#/$defs/elementId", - "description": "A unique identifier for this node. Camelcase string based on the name." - }, - "name": { - "type": "string", - "description": "A descriptive name for this node" - }, - "elementType": { - "type": "string", - "description": "A BPMN 2.0 element type. MUST match an item in the the given component library" - }, - "description": { - "type": [ - "string", - "null" - ], - "description": "A short summary of this step in the process" - }, - "connectedTo": { - "type": "array", - "items": { - "$ref": "#/$defs/nodeConnection", - "description": "The IDs of nodes which this node connects to. Outbound connections only. Only a single outbound connection is allowed unless this is an exclusiveGateway node" - } - } - }, - "required": [ - "id", - "name", - "elementType" - ] - }, - "elementId": { - "type": "string", - "description": "A unique identifier for a node" - }, - "nodeConnection": { - "type": "object", - "properties": { - "targetNode": { - "$ref": "#/$defs/elementId", - "description": "The target node of this connection" - }, - "description": { - "type": ["string", "null"], - "description": "A short text description of this connection" - } - }, - "required": [ - "targetNode" - ] - } - } +{ + "$id": "https://example.com/process-model.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Process model", + "type": "object", + "additionalProperties": false, + "properties": { + "nodes": { + "type": "array", + "items": { + "$ref": "#/$defs/element" + } + } + }, + "required": ["nodes"], + "$defs": { + "element": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/elementId", + "description": "A unique identifier for this node. Camelcase string based on the name." + }, + "name": { + "type": "string", + "description": "A descriptive name for this node" + }, + "elementType": { + "type": "string", + "description": "A BPMN 2.0 element type. MUST match an item in the the given component library" + }, + "description": { + "type": [ + "string", + "null" + ], + "description": "A short summary of this step in the process" + }, + "connectedTo": { + "type": "array", + "items": { + "$ref": "#/$defs/nodeConnection", + "description": "The IDs of nodes which this node connects to. Outbound connections only. Only a single outbound connection is allowed unless this is an exclusiveGateway node" + } + }, + "inputs": { + "type": "array", + "items": { + "$ref": "#/$defs/elementInput" + }, + "description": "Array of required inputs, as specified for this component type in the 'component library'. Empty array if no inputs are required." + }, + "outputs": { + "type": "array", + "items": { + "$ref": "#/$defs/elementOutput" + }, + "description": "Array of outputs to be generated, for use in other nodes. Empty array if no outputs are required." + } + }, + "required": [ + "id", + "name", + "elementType", + "inputs", + "outputs" + ] + }, + "elementId": { + "type": "string", + "description": "A unique identifier for a node" + }, + "elementInput": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elementInput", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the input parameter, as defined for this component type in the 'component library'" + }, + "value": { + "type": "string", + "description": "Value to be assigned to the input. Either a constant value, expression, script or the name of an output variable from another node" + }, + "variableSource": { + "type": "string", + "description": "A `CONSTANT` value if explicitly defined or `SCRIPT` if the value is a Groovy script or `NODE` if the value is sourced from another node's output or `GLOBAL` value if found in the global variable library" + } + }, + "required": [ + "name", + "value", + "variableSource" + ] + }, + "elementOutput": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elementOutput", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name to assign to the output, so that it can be referenced by other nodes" + }, + "value": { + "type": "string", + "description": "Value to be assigned to the output. Cannot be empty or null if the value type is 'code'" + }, + "type": { + "enum": ["global", "constant", "code"], + "description": "The type of output you are returning in 'value'. This can be either 'code', 'global' or 'constant'. It is never null. Consider the criteria for selecting these options and then select the most appropriate type. 1. If you can produce Groovy script representation of the parent node description value using the criteria defined below, the type is 'code'. 2. If you can find the value to be assigned to the output in the global variable library above, the type is 'global'. 3. If you can find the 'value' within the parent node's description, the type is 'constant'. If you cannot satisfy these conditions, the default type is 'constant'." + } + }, + "required": [ + "name", + "type", + "value" + ] + }, + "nodeConnection": { + "type": "object", + "properties": { + "targetNode": { + "$ref": "#/$defs/elementId", + "description": "The target node ID of this connection" + }, + "description": { + "type": ["string", "null"], + "description": "A short text description of this connection" + } + }, + "required": [ + "targetNode" + ] + } + } } \ No newline at end of file diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt index d3cac10..c2f39e5 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt @@ -1,43 +1,62 @@ -You are designing a business process model following the BPMN 2.0 standard. We will generate the model in two stages -1. Build a HIGH-LEVEL model by connecting together appropriate BPMN 2.0 elements -2. Build a DETAIL-LEVEL model by fleshing out this model and configuring each of the elements - -Let us start with the HIGH-LEVEL model. You can use any of the BPMN 2.0 elements in this component library: -``` -${COMPONENT_LIBRARY} -``` - -You should generate a simplified graph model by returning JSON that complies with the following schema. You should NOT return a response in JSON Schema format. Rather you should return raw JSON, which COMPLIES WITH this schema: -``` -${SCHEMA_CONTENT} -``` - -Other requirements: -* You can only use elements specified in the component library above -* A node can only have ONE outbound connection, UNLESS it is an 'exclusiveGateway' node. As a result, you should use exclusiveGateway nodes to handling branching. They should be placed after a result is calculated which you want to branch on -* Your process should begin with a Start Event and end with one or more End Events - -<#if highLevelModel??> -You have previously generated the following model, which follows the schema above: -``` -${highLevelModel} -``` - <#if llmDirectedRetryReason??> - However the agent responsible for building the detail-level model based on your model reported that it is unable to do so, for the following reason: - ``` - ${llmDirectedRetryReason} - ``` - Please make corrections/updates to your model to address these reported problems. - <#else> - You should make the following updates to this model, and return the new full model as JSON (complying to the schema above): - ``` - ${request} - ``` - -<#else> -The model which you should generate in JSON form (complying to the given schema) is as follows: -``` -${request} -``` - +You are designing a business process model following the BPMN 2.0 standard. We will generate the model in two stages +1. Build a HIGH-LEVEL model by connecting together appropriate BPMN 2.0 elements +2. Extend this into a DETAILED model by adding configuration and linking node inputs & outputs + +Let us start with the HIGH-LEVEL model. You can use any of the BPMN 2.0 elements in this component library: +``` +${COMPONENT_LIBRARY} +``` + +You should generate a simplified graph model by returning JSON that complies with the following schema. You should NOT return a response in JSON Schema format. Rather you should return raw JSON, which COMPLIES WITH this schema: +``` +${SCHEMA_CONTENT} +``` + +Other requirements: +* You can only use elements specified in the component library above +* A node can only have ONE inbound and ONE outbound connection, UNLESS it is an 'exclusiveGateway' node. As a result, you should use exclusiveGateway nodes to handling branching. They should be placed after a result is calculated which you want to branch on. If you need to merge branches, use another 'exclusiveGateway' node with no conditions. +* Your process should begin with a Start Event and end with one or more End Events +Each non-endEvent can make outbound connections to other nodes. These connections should reference the 'name' of the node they are connecting to. + ** The component library specifies which connections are required for each node type. endEvent nodes should have no outbound connections. + ** If a non-endEvent node has an outbound connection to an endEvent node, ensure that the endEvent node has a unique name and id. +* All steps are part of the SAME process. You should make sure that steps in your model are correctly linked together to form a single process. There should be no orphaned steps or processes - every step must be linked. +* Nodes should indicate how each of its inputs will be satisfied. Each input to a node can be one of the following: + 1. A constant value or simple expression. `source` should be the value, `sourceType` should be "CONSTANT" + 2. A Groovy script. `source` should be the script, `sourceType` should be "SCRIPT" + 3. A value from the output of a prior node in the process. `source` should be the id of the prior node, `sourceType` should be "NODE" + 4. A global variable, from the list provided below. `source` should be the name of the variable, `sourceType` should be "GLOBAL" +* The input values MUST be found in the 'requiredInputs' array for the node - do not include any inputs that are not part of this requiredInputs array for the node in question. + +<#if GLOBAL_VARIABLE_LIBRARY?has_content> +These are the global variables which can be used to satisfy inputs if applicable, in addition to constant values or node outputs: +``` +${GLOBAL_VARIABLE_LIBRARY} +``` +<#else> +No global variables are available at the moment. Inputs should be satisfied using constant values, scripts, or node outputs. + + +<#if highLevelModel??> +You have previously generated the following model, which follows the schema above: +``` +${highLevelModel} +``` + <#if llmDirectedRetryReason??> + However the agent responsible for building the detail-level model based on your model reported that it is unable to do so, for the following reason: + ``` + ${llmDirectedRetryReason} + ``` + Please make corrections/updates to your model to address these reported problems. + <#else> + You should make the following updates to this model, and return the new full model as JSON (complying to the schema above): + ``` + ${request} + ``` + +<#else> +The model which you should generate in JSON form (complying to the given schema) is as follows: +``` +${request} +``` + Return ONLY the JSON process data, with no other explanation or commentary. \ No newline at end of file diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-schema.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-schema.json index 8df3f56..1e091a1 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-schema.json +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-schema.json @@ -1,108 +1,109 @@ -{ - "$id": "https://example.com/process-model.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Process model", - "type": "object", - "additionalProperties": false, - "properties": { - "nodes": { - "type": "array", - "items": { - "$ref": "#/$defs/element" - } - } - }, - "$defs": { - "element": { - "type": "object", - "additionalProperties": false, - "properties": { - "id": { - "$ref": "#/$defs/elementId", - "description": "A unique identifier for this node. Camelcase string based on the name." - }, - "name": { - "type": "string", - "description": "A descriptive name for this node" - }, - "elementType": { - "type": "string", - "description": "A BPMN 2.0 element type. MUST match an item in the the given component library" - }, - "description": { - "type": [ - "string", - "null" - ], - "description": "A short summary of this step in the process" - }, - "connectedTo": { - "type": "array", - "items": { - "$ref": "#/$defs/nodeConnection", - "description": "The IDs of nodes which this node connects to. Outbound connections only. Only a single outbound connection is allowed unless this is an exclusiveGateway node" - } - }, - "inputs": { - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/$defs/elementInput" - }, - "description": "The source of data for each input required by this component." - } - }, - "required": [ - "id", - "name", - "elementType" - ] - }, - "elementId": { - "type": "string", - "description": "A unique identifier for a node" - }, - "elementInput" : { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "elementInput", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the input required for this component" - }, - "source": { - "type": "string", - "description": "Source of data for the input; either the name of another node which can provide it, a constant value, or one of the explicitly-defined global variables" - }, - "sourceType": { - "enum": ["CONSTANT", "NODE", "GLOBAL"], - "description": "\"CONSTANT\" if `source` is constant value or \"NODE\" if it is the name of a node which provides the value, or \"GLOBAL\" if it is a global variable" - } - }, - "required": [ - "name", - "source", - "sourceType" - ] - }, - "nodeConnection": { - "type": "object", - "properties": { - "targetNode": { - "$ref": "#/$defs/elementId", - "description": "The target node of this connection" - }, - "description": { - "type": ["string", "null"], - "description": "A short text description of this connection" - } - }, - "required": [ - "targetNode" - ] - } - } +{ + "$id": "https://example.com/process-model.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Process model", + "type": "object", + "additionalProperties": false, + "properties": { + "nodes": { + "type": "array", + "items": { + "$ref": "#/$defs/element" + } + } + }, + "required": [ "nodes" ], + "$defs": { + "element": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/elementId", + "description": "A unique identifier for this node. Camelcase string based on the name." + }, + "name": { + "type": "string", + "description": "A descriptive name for this node" + }, + "elementType": { + "type": "string", + "description": "A BPMN 2.0 element type. MUST match an item in the the given component library" + }, + "description": { + "type": [ + "string", + "null" + ], + "description": "A short summary of this step in the process" + }, + "connectedTo": { + "type": "array", + "items": { + "$ref": "#/$defs/nodeConnection", + "description": "The IDs of nodes which this node connects to. Outbound connections only. Only a single outbound connection is allowed unless this is an exclusiveGateway node" + } + }, + "inputs": { + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/$defs/elementInput" + }, + "description": "The source of data for each input required by this component." + } + }, + "required": [ + "id", + "name", + "elementType" + ] + }, + "elementId": { + "type": "string", + "description": "A unique identifier for a node" + }, + "elementInput" : { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elementInput", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the input required for this component" + }, + "source": { + "type": "string", + "description": "Source of data for the input; either the ID of another node which can provide it, a constant value, expression, Groovy script, or one of the explicitly-defined global variables" + }, + "sourceType": { + "enum": ["CONSTANT", "SCRIPT", "NODE", "GLOBAL"], + "description": "\"CONSTANT\" if `source` is constant value or expression to be evaluated or \"SCRIPT\" if `source` is a Groovy script or \"NODE\" if it is the name of a node which provides the value, or \"GLOBAL\" if it is a global variable" + } + }, + "required": [ + "name", + "source", + "sourceType" + ] + }, + "nodeConnection": { + "type": "object", + "properties": { + "targetNode": { + "$ref": "#/$defs/elementId", + "description": "The target node ID of this connection" + }, + "description": { + "type": ["string", "null"], + "description": "A short text description of this connection" + } + }, + "required": [ + "targetNode" + ] + } + } } \ No newline at end of file diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareModelForRendering.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareModelForRendering.java new file mode 100644 index 0000000..82bb7f5 --- /dev/null +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareModelForRendering.java @@ -0,0 +1,144 @@ +package org.rj.modelgen.llm.models.generation.multilevel.states; + +import org.rj.modelgen.llm.intrep.graph.GraphConnection; +import org.rj.modelgen.llm.intrep.graph.GraphNode; +import org.rj.modelgen.llm.intrep.graph.IntermediateGraphModel; +import org.rj.modelgen.llm.statemodel.states.common.ExecuteLogic; +import org.rj.modelgen.llm.util.Result; +import org.rj.modelgen.llm.util.ValidationUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import reactor.core.publisher.Mono; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +public abstract class PrepareModelForRendering extends ExecuteLogic { + + private static final Logger LOG = LoggerFactory.getLogger(PrepareModelForRendering.class); + + public PrepareModelForRendering() { + this(PrepareModelForRendering.class); + } + + public PrepareModelForRendering(Class cls) { + super(cls); + } + + // Remove any `null` nodes from the model. Shouldn't happen but cleans up the model for future steps + protected , TNode extends GraphNode, TModel extends IntermediateGraphModel> + void removeInvalidNullNodes(TModel model) { + final var sanitized = model.getNodes().stream() + .filter(Objects::nonNull) + .toList(); + + if (sanitized.size() != model.getNodes().size()) { + LOG.info("Removing {} invalid null nodes from model", model.getNodes().size() - sanitized.size()); + model.setNodes(sanitized); + } + } + + // Identify orphaned subgraphs (which may more likely be individual nodes that became disconnected during preparation operations + // above). Remove them if they fall below a low threshold size. Trigger a fatal generation error if they exceed the threshold + // since it likely means we have generated a partitioned model and it needs to be fully regenerated + protected , TNode extends GraphNode, TModel extends IntermediateGraphModel> + void identifyOrphanedSubgraphs(TModel model) { + final int SUBGRAPH_SIZE_THRESHOLD = 3; // Threshold for pruning small subgraphs + + List roots = ValidationUtils.identifyNumberOfRoots(model); + + // A correctly-formed model should have only one root (with |referrers| == 0) + if (roots.size() == 1) { + LOG.info("Validated that model is correctly-formed with a single root node ({})", roots.get(0)); + return; + } + + // Model has no roots - it is cyclic and therefore invalid + if (roots.isEmpty()) { + final var error = "Generated model is cyclic with no roots; cannot continue with rendering"; + LOG.error(error); + throw new RuntimeException(error); + } + + // Model has multiple roots. Determine the size of each subgraph. If all bar one subgraph is below the threshold we + // can prune them since they are minor orphaned nodes. However if any are larger we either have a partitioned model or + // multiple roots into the same large model + final Map> subgraphs = roots.stream() + .collect(Collectors.toMap(Function.identity(), root -> calculateSubgraph(model, root))); + + final var aboveThreshold = subgraphs.entrySet().stream() + .filter(e -> e.getValue().size() > SUBGRAPH_SIZE_THRESHOLD) + .toList(); + + // Fail if there are multiple subgraphs above the threshold (or if the model itself is small enough to be within the threshold) + if (aboveThreshold.size() > 1 || model.getNodes().size() <= SUBGRAPH_SIZE_THRESHOLD) { + final var error = String.format("Model contains multiple subgraphs. More than one subgraph is above threshold size and so we cannot prune them " + + "to continue with rendering. Model regeneration is required. Subgraph roots and sizes: [%s]", + subgraphs.entrySet().stream().map(e -> String.format("%s (%d)", e.getKey(), e.getValue().size())).collect(Collectors.joining(", "))); + LOG.error(error); + throw new RuntimeException(error); + } + + // Multiple subgraphs, but all bar the main graph are below threshold so we can prune them. There are no references to the subgraphs + // from outside the subgraphs (by definition) so we can safely remove them + LOG.warn("Model contains multiple subgraphs. Extra subgraphs are below threshold size and will be removed to allow rendering. " + + "Subgraph roots and sizes: [{}]", subgraphs.entrySet().stream().map(e -> String.format("%s (%d)", e.getKey(), e.getValue().size())) + .collect(Collectors.joining(", "))); + + final var toRemove = subgraphs.entrySet().stream() + .filter(e -> e.getValue().size() <= SUBGRAPH_SIZE_THRESHOLD) + .toList(); + if (toRemove.size() != subgraphs.size() - 1) { + LOG.warn("Expected to remove {} subgraphs but found {} to remove; skipping pruning logic", subgraphs.size() - 1, toRemove.size()); + return; + } + + for (final var remove : toRemove) { + LOG.info("Removing orphaned subgraph from model [{}]", String.join(", ", remove.getValue())); + removeSubgraph(model, remove.getValue()); + } + } + + protected , TNode extends GraphNode, TModel extends IntermediateGraphModel> + List calculateSubgraph(TModel model, String root) { + final Set visited = new HashSet<>(); + final List queue = new ArrayList<>(); + queue.add(root); + + var nodeMap = model.getNodes().stream().collect(Collectors.toMap(GraphNode::getId, Function.identity())); + + while (!queue.isEmpty()) { + final String nodeId = queue.remove(queue.size() - 1); + if (visited.contains(nodeId)) continue; + + visited.add(nodeId); + + final var node = nodeMap.get(nodeId); + if (node == null) { + LOG.warn("Encountered unknown node id '{}' specified as target while calculating subgraph size; skipping", nodeId); + continue; + } + + // Follow all connections + node.getConnectedTo().forEach(conn -> queue.add(conn.getTargetNode())); + } + + return visited.stream().toList(); + } + + private , TNode extends GraphNode, TModel extends IntermediateGraphModel> + void removeSubgraph(TModel model, List nodes) { + // Simply remove the subgraph nodes. There can be no connections into or out of the subgraph by definition + final Set remove = Optional.ofNullable(nodes).map(HashSet::new).orElseGet(HashSet::new); + model.getNodes().removeIf(n -> remove.contains(n.getId())); // I need to make ElementConnections to contains node ids not names + } + + /** + * Must be implemented by subclasses. Execute custom logic and return a result which will + * determine the outbound signal sent back to the model + * + * @return Result of the execution + */ + protected abstract Mono> executeLogic(); +} diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ExecuteLogic.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ExecuteLogic.java index 8e61912..0de9dfc 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ExecuteLogic.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ExecuteLogic.java @@ -8,17 +8,13 @@ import org.rj.modelgen.llm.state.ModelInterfaceState; import org.rj.modelgen.llm.util.Result; import org.rj.modelgen.llm.util.Util; -import org.rj.modelgen.llm.util.ValidationUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Mono; import java.util.*; -import java.util.function.Function; -import java.util.stream.Collectors; -public abstract class ExecuteLogic - extends ModelInterfaceState { +public abstract class ExecuteLogic extends ModelInterfaceState { private static final Logger LOG = LoggerFactory.getLogger(ExecuteLogic.class); @@ -66,121 +62,10 @@ Mono> execute(TModel model, List operations) { return Mono.just(Result.Ok()); } - - - // Remove any `null` nodes from the model. Shouldn't happen but cleans up the model for future steps - protected , TNode extends GraphNode, TModel extends IntermediateGraphModel> - void removeInvalidNullNodes(TModel model) { - final var sanitized = model.getNodes().stream() - .filter(Objects::nonNull) - .toList(); - - if (sanitized.size() != model.getNodes().size()) { - LOG.info("Removing {} invalid null nodes from model", model.getNodes().size() - sanitized.size()); - model.setNodes(sanitized); - } - } - - // Identify orphaned subgraphs (which may more likely be individual nodes that became disconnected during preparation operations - // above). Remove them if they fall below a low threshold size. Trigger a fatal generation error if they exceed the threshold - // since it likely means we have generated a partitioned model and it needs to be fully regenerated - protected , TNode extends GraphNode, TModel extends IntermediateGraphModel> - void identifyOrphanedSubgraphs(TModel model) { - final int SUBGRAPH_SIZE_THRESHOLD = 3; // Threshold for pruning small subgraphs - - List roots = ValidationUtils.identifyNumberOfRoots(model); - - // A correctly-formed model should have only one root (with |referrers| == 0) - if (roots.size() == 1) { - LOG.info("Validated that model is correctly-formed with a single root node ({})", roots.get(0)); - return; - } - - // Model has no roots - it is cyclic and therefore invalid - if (roots.isEmpty()) { - final var error = "Generated model is cyclic with no roots; cannot continue with rendering"; - LOG.error(error); - throw new RuntimeException(error); - } - - // Model has multiple roots. Determine the size of each subgraph. If all bar one subgraph is below the threshold we - // can prune them since they are minor orphaned nodes. However if any are larger we either have a partitioned model or - // multiple roots into the same large model - final Map> subgraphs = roots.stream() - .collect(Collectors.toMap(Function.identity(), root -> calculateSubgraph(model, root))); - - final var aboveThreshold = subgraphs.entrySet().stream() - .filter(e -> e.getValue().size() > SUBGRAPH_SIZE_THRESHOLD) - .toList(); - - // Fail if there are multiple subgraphs above the threshold (or if the model itself is small enough to be within the threshold) - if (aboveThreshold.size() > 1 || model.getNodes().size() <= SUBGRAPH_SIZE_THRESHOLD) { - final var error = String.format("Model contains multiple subgraphs. More than one subgraph is above threshold size and so we cannot prune them " + - "to continue with rendering. Model regeneration is required. Subgraph roots and sizes: [%s]", - subgraphs.entrySet().stream().map(e -> String.format("%s (%d)", e.getKey(), e.getValue().size())).collect(Collectors.joining(", "))); - LOG.error(error); - throw new RuntimeException(error); - } - - // Multiple subgraphs, but all bar the main graph are below threshold so we can prune them. There are no references to the subgraphs - // from outside the subgraphs (by definition) so we can safely remove them - LOG.warn("Model contains multiple subgraphs. Extra subgraphs are below threshold size and will be removed to allow rendering. " + - "Subgraph roots and sizes: [{}]", subgraphs.entrySet().stream().map(e -> String.format("%s (%d)", e.getKey(), e.getValue().size())) - .collect(Collectors.joining(", "))); - - final var toRemove = subgraphs.entrySet().stream() - .filter(e -> e.getValue().size() <= SUBGRAPH_SIZE_THRESHOLD) - .toList(); - if (toRemove.size() != subgraphs.size() - 1) { - LOG.warn("Expected to remove {} subgraphs but found {} to remove; skipping pruning logic", subgraphs.size() - 1, toRemove.size()); - return; - } - - for (final var remove : toRemove) { - LOG.info("Removing orphaned subgraph from model [{}]", String.join(", ", remove.getValue())); - removeSubgraph(model, remove.getValue()); - } - } - private String getModelKey() { return Optional.ofNullable(inputKeyOverride).orElse(MultiLevelModelStandardPayloadData.DetailLevelModel.toString()); } - - protected , TNode extends GraphNode, TModel extends IntermediateGraphModel> - List calculateSubgraph(TModel model, String root) { - final Set visited = new HashSet<>(); - final List queue = new ArrayList<>(); - queue.add(root); - - var nodeMap = model.getNodes().stream().collect(Collectors.toMap(GraphNode::getId, Function.identity())); - - while (!queue.isEmpty()) { - final String nodeName = queue.remove(queue.size() - 1); - if (visited.contains(nodeName)) continue; - - visited.add(nodeName); - - final var node = nodeMap.get(nodeName); - if (node == null) { - LOG.warn("Encountered unknown node name '{}' specified as target while calculating subgraph size; skipping", nodeName); - continue; - } - - // Follow all connections - node.getConnectedTo().forEach(conn -> queue.add(conn.getTargetNode())); - } - - return visited.stream().toList(); - } - - private , TNode extends GraphNode, TModel extends IntermediateGraphModel> - void removeSubgraph(TModel model, List nodes) { - // Simply remove the subgraph nodes. There can be no connections into or out of the subgraph by definition - final Set remove = Optional.ofNullable(nodes).map(HashSet::new).orElseGet(HashSet::new); - model.getNodes().removeIf(n -> remove.contains(n.getName())); - } - private , TNode extends GraphNode, TModel extends IntermediateGraphModel> Result saveModelData(TModel model) { if (model == null) return Result.Err("Cannot save null model"); diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java index bd4a5e9..dee3ff9 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java @@ -1,9 +1,13 @@ package org.rj.modelgen.llm.util; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import org.rj.modelgen.llm.intrep.graph.GraphConnection; import org.rj.modelgen.llm.intrep.graph.GraphNode; import org.rj.modelgen.llm.intrep.graph.IntermediateGraphModel; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; @@ -15,7 +19,7 @@ public class ValidationUtils { private static final String VAR = "var"; // BPMN internal names which are reserved and cannot be used as variable names inside scripts - private static final Set RESERVED_VARIABLE_NAMES = Set.of( //TODO: ? are there any reserved variables in Bpmns + private static final Set RESERVED_VARIABLE_NAMES = Set.of( "status" ); @@ -39,4 +43,14 @@ List identifyNumberOfRoots(TModel model) { .map(Map.Entry::getKey) .toList(); } + + public static Map convertStringToMap(String jsonString) { + try { + ObjectMapper mapper = new ObjectMapper(); + return mapper.readValue(jsonString, new TypeReference<>() {}); + } catch (JsonProcessingException e) { + return Collections.emptyMap(); + } + + } } From 1de9c780d1e3ab0d9614d7b0a7e9badcdd9feaf7 Mon Sep 17 00:00:00 2001 From: Rob Jenks Date: Fri, 14 Nov 2025 04:25:35 -0500 Subject: [PATCH 05/10] Handle missing input properties; avoid serializing empty inputs and ouptuts --- .../java/org/rj/modelgen/bpmn/component/BpmnComponent.java | 4 ++-- .../java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java index c131e8d..e482839 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java @@ -65,7 +65,7 @@ public String generateSerializedPromptData(BpmnComponentLibrarySerializationOpti final var result = new StringBuilder(String.format("Name: %s\nDescription: %s\nUsage: %s\n", name, description, usage)); if (options.shouldIncludeInputs()) { - final Map> inputs = requiredInputs.stream() + final Map> inputs = Optional.ofNullable(requiredInputs).orElseGet(List::of).stream() .collect(Collectors.partitioningBy(i -> (i.isMandatory() || i.isKeyValue()))); final var mandatory = inputs.get(Boolean.TRUE); final var optional = inputs.get(Boolean.FALSE); @@ -86,7 +86,7 @@ public String generateSerializedPromptData(BpmnComponentLibrarySerializationOpti } if (options.shouldIncludeOutputs()) { - if (!generatedOutputs.isEmpty()) { + if (generatedOutputs != null && !generatedOutputs.isEmpty()) { result.append("Automatically-generated outputs: \n").append(generatedOutputs.stream() .map(Variable::getVariableSummary) .collect(Collectors.joining(",\n"))) diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java index 030af04..abb1ad0 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java @@ -83,6 +83,7 @@ public void setProperties(Map properties) { this.properties = properties; } + @JsonInclude(JsonInclude.Include.NON_EMPTY) public List getInputs() { if (inputs == null) { return Collections.emptyList(); @@ -90,10 +91,12 @@ public List getInputs() { return inputs; } + @JsonInclude(JsonInclude.Include.NON_EMPTY) public void setInputs(List inputs) { this.inputs = inputs; } + @JsonInclude(JsonInclude.Include.NON_EMPTY) public List getOutputs() { if (outputs == null) { return Collections.emptyList(); @@ -110,6 +113,7 @@ public ElementNodeOutput getOutputAt(int index) { return outputs.get(index); } + @JsonInclude(JsonInclude.Include.NON_EMPTY) public void setOutputs(List outputs) { this.outputs = outputs; } From 2525a32c1aecb73994061ed4bca5758edff7ff68 Mon Sep 17 00:00:00 2001 From: "Liput, Milosz [Engineering]" Date: Tue, 6 Jan 2026 18:57:23 +0000 Subject: [PATCH 06/10] Merge master --- .gitlab-ci.yml | 4 + .gs-project.yml | 1 + .../bpmn/component/BpmnComponent.java | 28 +- .../bpmn/component/BpmnComponentLibrary.java | 19 + .../common/BpmnComponentInputSourceType.java} | 5 +- .../library/BpmnGlobalVariable.java | 83 +- .../library/BpmnGlobalVariableLibrary.java | 22 +- .../bpmn/generation/BpmnConstants.java | 18 +- ...nModelComponentNodeScriptVariableType.java | 13 - .../model/ElementHighLevelNodeInput.java | 9 +- .../ElementHighLevelNodeInputSourceType.java | 14 - .../bpmn/intrep/model/ElementNode.java | 22 +- .../bpmn/intrep/model/ElementNodeInput.java | 24 +- .../base/context/BpmnPromptPlaceholders.java | 44 +- .../common/BpmnAdditionalModelStates.java | 1 + .../BpmnMultiLevelGenerationModel.java | 60 +- .../BpmnMultiLevelGenerationModelOptions.java | 14 + ...mnGenerationMultiLevelPromptGenerator.java | 1 + .../multilevel/states/InitializeBpmnData.java | 53 +- .../states/PrepareBpmnModelForRendering.java | 66 +- ...evelModelDataForDetailLevelGeneration.java | 28 +- ...mDetailLevelIntermediateModelResponse.java | 15 +- .../validation/BpmnScriptUtils.java | 79 + .../validation/PayloadVariable.java | 46 + .../validation/ValidateBpmnModel.java | 500 +- .../components/bpmn-component-library.json | 127 +- .../bpmn-global-variable-library.json | 3 +- ...-multilevel-detail-level-generation-prompt | 110 +- ...mn-multilevel-high-level-generation-prompt | 20 +- ...mn-preprocessing-payload-generation-prompt | 25 + .../intrep/graph/IntermediateGraphModel.java | 80 +- .../MultiLevelGenerationModelStates.java | 82 +- .../MultiLevelModelStandardPayloadData.java | 1 + ...tiLevelGenerationModelPromptGenerator.java | 2 + .../prompt/MultiLevelModelPromptType.java | 1 + .../rj/modelgen/llm/util/ValidationUtils.java | 13 +- codegen-ui/package-lock.json | 12582 +++++++++------- codegen-ui/package.json | 3 +- 38 files changed, 8061 insertions(+), 6157 deletions(-) create mode 100644 .gitlab-ci.yml create mode 100644 .gs-project.yml rename codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/{generation/BpmnModelComponentNodeInputType.java => component/common/BpmnComponentInputSourceType.java} (54%) delete mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeScriptVariableType.java delete mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/PayloadVariable.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-preprocessing-payload-generation-prompt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..ad842ce --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,4 @@ +include: + - project: 'fp/open-source/os-ci' + file: + - '.gitlab-ci.yml' \ No newline at end of file diff --git a/.gs-project.yml b/.gs-project.yml new file mode 100644 index 0000000..520a9bf --- /dev/null +++ b/.gs-project.yml @@ -0,0 +1 @@ +productGuid: "product::823826" diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java index e482839..1da9d4a 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import org.rj.modelgen.bpmn.component.common.BpmnComponentVariableType; +import org.rj.modelgen.bpmn.component.common.BpmnComponentInputSourceType; import org.rj.modelgen.llm.component.Component; import java.util.List; @@ -80,7 +81,7 @@ public String generateSerializedPromptData(BpmnComponentLibrarySerializationOpti if (!options.isMandatoryInputsOnly() && !optional.isEmpty()) { result.append("Optional inputs: \n").append(optional.stream() .map(InputVariable::getVariableSummary) - .collect(Collectors.joining(",\n "))) + .collect(Collectors.joining(",\n"))) .append('\n'); } } @@ -179,19 +180,21 @@ public String getVariableSummary() { public static class InputVariable extends Variable { private boolean mandatory; private List allowedValues; + private List allowedInputSourceTypes; public InputVariable() { this(null, null); } public InputVariable(String name, String description) { - this(name, description, BpmnComponentVariableType.String, false, List.of()); + this(name, description, BpmnComponentVariableType.String, false, List.of(), List.of()); } - public InputVariable(String name, String description, BpmnComponentVariableType type, boolean mandatory, List allowedValues) { + public InputVariable(String name, String description, BpmnComponentVariableType type, boolean mandatory, List allowedValues, List allowedInputSourceTypes) { super(name, description, type); this.mandatory = mandatory; this.allowedValues = allowedValues; + this.allowedInputSourceTypes = allowedInputSourceTypes; } public boolean isMandatory() { @@ -210,12 +213,31 @@ public void setAllowedValues(List allowedValues) { this.allowedValues = allowedValues; } + public List getAllowedInputSourceTypes() { + return allowedInputSourceTypes; + } + + public void setAllowedInputSourceTypes(List allowedInputType) { + this.allowedInputSourceTypes = allowedInputType; + } + + public Boolean isAllowedInputSourceType(String type) { + if (allowedInputSourceTypes == null || allowedInputSourceTypes.isEmpty()) { + return true; + } + return allowedInputSourceTypes.stream() + .anyMatch(t -> t.name().equalsIgnoreCase(type)); + } + @Override protected List buildSummaryComponents() { final List components = super.buildSummaryComponents(); if (allowedValues != null && !allowedValues.isEmpty()) { components.add("Allowed values: " + String.join(", ", allowedValues)); } + if (allowedInputSourceTypes != null && !allowedInputSourceTypes.isEmpty()) { + components.add("Allowed input source types: " + allowedInputSourceTypes.stream().map(BpmnComponentInputSourceType::toString).collect(Collectors.joining(", "))); + } return components; } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrary.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrary.java index e1bcdc2..0d35ebd 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrary.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrary.java @@ -7,6 +7,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; public class BpmnComponentLibrary extends ComponentLibrary { @@ -71,6 +72,24 @@ public String defaultSerialize() { return generateSerializedPromptData(BpmnComponentLibrarySerializationOptions.defaultOptions()); } + @JsonIgnore + public BpmnComponentLibrary merge(BpmnComponentLibrary other) { + if (other == null || other.components == null) { + return new BpmnComponentLibrary(new ArrayList<>(this.components)); + } + + Set duplicatedComponentNames = this.components.stream() + .map(BpmnComponent::getName) + .collect(Collectors.toSet()); + + List mergedComponents = new ArrayList<>(this.components); + other.components.stream() + .filter(component -> !duplicatedComponentNames.contains(component.getName())) + .forEach(mergedComponents::add); + + return new BpmnComponentLibrary(mergedComponents); + } + public static BpmnComponentLibrary defaultLibrary() { return fromResource("content/components/bpmn-component-library.json"); } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeInputType.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/common/BpmnComponentInputSourceType.java similarity index 54% rename from codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeInputType.java rename to codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/common/BpmnComponentInputSourceType.java index 1d85c2e..005a957 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeInputType.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/common/BpmnComponentInputSourceType.java @@ -1,8 +1,9 @@ -package org.rj.modelgen.bpmn.generation; +package org.rj.modelgen.bpmn.component.common; -public enum BpmnModelComponentNodeInputType { +public enum BpmnComponentInputSourceType { CONSTANT, SCRIPT, + EXPRESSION, NODE, GLOBAL; diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariable.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariable.java index cf58e4b..5456020 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariable.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariable.java @@ -3,15 +3,17 @@ import org.apache.commons.lang3.StringUtils; import org.rj.modelgen.llm.component.Component; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; public class BpmnGlobalVariable extends Component { private String name; - private boolean available; private String description; private String type; + private List arguments; + private String resolveValue; + private String initScript; public BpmnGlobalVariable() { } @@ -23,14 +25,6 @@ public void setName(String name) { this.name = name; } - public boolean isAvailable() { - return available; - } - - public void setAvailable(boolean available) { - this.available = available; - } - public String getDescription() { return description; } @@ -47,15 +41,80 @@ public void setType(String type) { this.type = type; } + public List getArguments() { + return arguments; + } + + public void setArguments(List arguments) { + this.arguments = arguments; + } + + public String getResolveValue() { + return resolveValue; + } + + public void setResolveValue(String resolveValue) { + this.resolveValue = resolveValue; + } + + public String getInitScript() { + return initScript; + } + + public void setInitScript(String initScript) { + this.initScript = initScript; + } + @Override public String defaultSerialize() { if (name == null) return ""; + String argumentsInfo = null; + if (arguments != null && !arguments.isEmpty()) { + String argsList = arguments.stream() + .map(arg -> arg.getType() + " " + arg.getName() + " - " + arg.getDescription()) + .collect(Collectors.joining(", ")); + argumentsInfo = "Required arguments: " + argsList; + } + final String typeString = (type == null ? null : "type: " + type); - final String additionalInfo = Stream.of(description, typeString) + final String additionalInfo = Stream.of(description, typeString, argumentsInfo) .filter(Objects::nonNull) .collect(Collectors.joining("; ")); - return name + (StringUtils.isEmpty(additionalInfo) ? "" : " (" + additionalInfo + ")"); + return " - " + name + (StringUtils.isEmpty(additionalInfo) ? "" : " (" + additionalInfo + ")"); + } + + public static class GlobalVariableArgument { + private String name; + private String type; + private String description; + + public GlobalVariableArgument() { + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariableLibrary.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariableLibrary.java index c24f163..4778cb1 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariableLibrary.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/globalvars/library/BpmnGlobalVariableLibrary.java @@ -5,8 +5,10 @@ import org.rj.modelgen.llm.component.ComponentLibrary; import org.rj.modelgen.llm.util.Util; +import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; public class BpmnGlobalVariableLibrary extends ComponentLibrary { @@ -49,7 +51,6 @@ public void setComponents(List variables) { this.variables = variables; } - @JsonIgnore public Optional getVariableByName(String name) { return variables.stream() @@ -60,7 +61,6 @@ public Optional getVariableByName(String name) { @JsonIgnore public String defaultSerialize() { return variables.stream() - .filter(BpmnGlobalVariable::isAvailable) .map(BpmnGlobalVariable::defaultSerialize) .collect(Collectors.joining("\n")); } @@ -76,4 +76,22 @@ public JSONObject toJson() { return new JSONObject(Util.serializeOrThrow(this, e -> new RuntimeException("Unable to serialize global variable library: " + e.getMessage(), e))); } + + @JsonIgnore + public BpmnGlobalVariableLibrary merge(BpmnGlobalVariableLibrary other) { + if (other == null || other.variables == null) { + return new BpmnGlobalVariableLibrary(new ArrayList<>(this.variables)); + } + + Set duplicatedVariableNames = this.variables.stream() + .map(BpmnGlobalVariable::getName) + .collect(Collectors.toSet()); + + List mergedVariables = new ArrayList<>(this.variables); + other.variables.stream() + .filter(component -> !duplicatedVariableNames.contains(component.getName())) + .forEach(mergedVariables::add); + + return new BpmnGlobalVariableLibrary(mergedVariables); + } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnConstants.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnConstants.java index 95732f5..82cac6e 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnConstants.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnConstants.java @@ -2,6 +2,10 @@ import reactor.netty.udp.UdpServer; +import java.util.Arrays; +import java.util.List; +import java.util.regex.Pattern; + public class BpmnConstants { public static class NodeTypes { public static class Comparable { @@ -39,9 +43,19 @@ public static class Comparable { public static final String END_EVENT = "endEvent"; public static final String SEQUENCE_FLOW = "sequenceFlow"; + } - - + public static class Patterns { + // Matches getVariable('varName', 'sourceNodeId') or ${getVariable("varName", "sourceNodeId")} + public static final Pattern VAR_READ_PATTERN = Pattern.compile("(?:\\$\\{)?getVariable\\s*\\(\\s*['\"]([a-zA-Z_][a-zA-Z0-9_.]*)['\"](?:\\s*,\\s*['\"]([a-zA-Z_][a-zA-Z0-9_]*)['\"])?\\s*\\)(?:\\})?"); + // Matches setVariable('varName', value, 'varType') + public static final Pattern VAR_WRITE_PATTERN = Pattern.compile("setVariable\\s*\\(\\s*['\"]?([a-zA-Z_][a-zA-Z0-9_.]*)['\"]?\\s*,\\s*([^,]+?)\\s*,\\s*['\"]([a-zA-Z_][a-zA-Z0-9_]*)['\"]\\s*\\)"); + // Matches throw('errorMessage') + public static final Pattern THROW_ERROR_PATTERN = Pattern.compile("throw\\s*\\(\\s*(.+?)\\s*\\)"); + // Matches getGlobalVariable('varName', [arg1, arg2]) + public static final Pattern GLOBAL_VAR_READ_PATTERN = Pattern.compile("getGlobalVariable\\s*\\(\\s*['\"]([^'\"]+)['\"](?:\\s*,\\s*\\[([^\\]]*)\\])?\\s*\\)"); + // Matches ${variableName} but not ${payload.variableName} + public static final Pattern INTERPOLATION_PATTERN = Pattern.compile("\\$\\{(?!payload\\.)([^}]+)\\}"); } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeScriptVariableType.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeScriptVariableType.java deleted file mode 100644 index 160098f..0000000 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelComponentNodeScriptVariableType.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.rj.modelgen.bpmn.generation; - -public enum BpmnModelComponentNodeScriptVariableType { - NODE, - GLOBAL, - OUTPUT, - SCRIPT; - - @Override - public String toString() { - return name(); - } -} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java index 710b8ae..168c92c 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java @@ -1,9 +1,11 @@ package org.rj.modelgen.bpmn.intrep.model; +import org.rj.modelgen.bpmn.component.common.BpmnComponentInputSourceType; + public class ElementHighLevelNodeInput { private String name; private String source; - private ElementHighLevelNodeInputSourceType sourceType; + private BpmnComponentInputSourceType sourceType; public ElementHighLevelNodeInput() { } @@ -23,11 +25,11 @@ public void setSource(String source) { this.source = source; } - public ElementHighLevelNodeInputSourceType getSourceType() { + public BpmnComponentInputSourceType getSourceType() { return sourceType; } - public void setSourceType(ElementHighLevelNodeInputSourceType sourceType) { + public void setSourceType(BpmnComponentInputSourceType sourceType) { this.sourceType = sourceType; } @@ -39,6 +41,7 @@ public String generateSummary() { return switch (sourceType) { case NODE -> String.format("Input \"%s\" will be provided by node \"%s\"", name, source); case CONSTANT -> String.format("Input \"%s\" will be assigned constant value \"%s\"", name, source); + case EXPRESSION -> String.format("Input \"%s\" will be assigned expression value \"%s\"", name, source); case GLOBAL -> String.format("Input \"%s\" will be assigned global value \"%s\"", name, source); case SCRIPT -> String.format("Input \"%s\" will be a Groovy script value \"%s\"", name, source); }; diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java deleted file mode 100644 index afc05ea..0000000 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInputSourceType.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.rj.modelgen.bpmn.intrep.model; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public enum ElementHighLevelNodeInputSourceType { - @JsonProperty("NODE") - NODE, - @JsonProperty("CONSTANT") - CONSTANT, - @JsonProperty("GLOBAL") - GLOBAL, - @JsonProperty("SCRIPT") - SCRIPT -} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java index abb1ad0..aedc39c 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java @@ -1,8 +1,6 @@ package org.rj.modelgen.bpmn.intrep.model; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.*; import org.rj.modelgen.llm.intrep.graph.GraphNode; import java.util.*; @@ -83,24 +81,18 @@ public void setProperties(Map properties) { this.properties = properties; } - @JsonInclude(JsonInclude.Include.NON_EMPTY) + @JsonInclude(JsonInclude.Include.NON_NULL) public List getInputs() { - if (inputs == null) { - return Collections.emptyList(); - } return inputs; } - @JsonInclude(JsonInclude.Include.NON_EMPTY) + @JsonInclude(JsonInclude.Include.NON_NULL) public void setInputs(List inputs) { this.inputs = inputs; } - @JsonInclude(JsonInclude.Include.NON_EMPTY) + @JsonInclude(JsonInclude.Include.NON_NULL) public List getOutputs() { - if (outputs == null) { - return Collections.emptyList(); - } return outputs; } @@ -113,7 +105,7 @@ public ElementNodeOutput getOutputAt(int index) { return outputs.get(index); } - @JsonInclude(JsonInclude.Include.NON_EMPTY) + @JsonInclude(JsonInclude.Include.NON_NULL) public void setOutputs(List outputs) { this.outputs = outputs; } @@ -132,7 +124,7 @@ public boolean setOutputAt(int index, ElementNodeOutput output) { @JsonIgnore public Optional findInput(String name) { - if (name == null) return Optional.empty(); + if (name == null || inputs == null) return Optional.empty(); return getInputs().stream() .filter(input -> name.equals(input.getName())) .findFirst(); @@ -140,7 +132,7 @@ public Optional findInput(String name) { @JsonIgnore public Optional findOutput(String name) { - if (name == null) return Optional.empty(); + if (name == null || outputs == null) return Optional.empty(); return getOutputs().stream() .filter(outputs -> name.equals(outputs.getName())) .findFirst(); diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java index 2bfe1f9..a7c6cc9 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java @@ -3,7 +3,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.rj.modelgen.bpmn.generation.BpmnModelComponentNodeInputType; + +import static org.rj.modelgen.bpmn.component.common.BpmnComponentInputSourceType.*; @JsonPropertyOrder({ "name", "value", "variableSource" }) public class ElementNodeInput { @@ -43,7 +44,16 @@ public void setVariableSource(String variableSource) { public static ElementNodeInput createConstant(String name, String value) { ElementNodeInput input = new ElementNodeInput(); input.setName(name); - input.setVariableSource(BpmnModelComponentNodeInputType.CONSTANT.toString()); + input.setVariableSource(CONSTANT.toString()); + input.setValue(value); + return input; + } + + @JsonIgnore + public static ElementNodeInput createExpression(String name, String value) { + ElementNodeInput input = new ElementNodeInput(); + input.setName(name); + input.setVariableSource(EXPRESSION.toString()); input.setValue(value); return input; } @@ -52,7 +62,7 @@ public static ElementNodeInput createConstant(String name, String value) { public static ElementNodeInput createScript(String name, String value) { ElementNodeInput input = new ElementNodeInput(); input.setName(name); - input.setVariableSource(BpmnModelComponentNodeInputType.SCRIPT.toString()); + input.setVariableSource(SCRIPT.toString()); input.setValue(value); return input; } @@ -61,17 +71,17 @@ public static ElementNodeInput createScript(String name, String value) { public static ElementNodeInput createGlobal(String name, String globalVariable) { ElementNodeInput input = new ElementNodeInput(); input.setName(name); - input.setVariableSource(BpmnModelComponentNodeInputType.GLOBAL.toString()); + input.setVariableSource(GLOBAL.toString()); input.setValue(globalVariable); return input; } @JsonIgnore - public static ElementNodeInput createNodeSourced(String name, String sourceNodeName, String sourceNodeOutputName) { + public static ElementNodeInput createNodeSourced(String name, String sourceNodeName) { ElementNodeInput input = new ElementNodeInput(); input.setName(name); - input.setVariableSource(sourceNodeName); - input.setValue(sourceNodeOutputName); + input.setVariableSource(NODE.toString()); + input.setValue(sourceNodeName); return input; } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/context/BpmnPromptPlaceholders.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/context/BpmnPromptPlaceholders.java index 15dcfff..6449156 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/context/BpmnPromptPlaceholders.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/context/BpmnPromptPlaceholders.java @@ -1,21 +1,23 @@ -package org.rj.modelgen.bpmn.models.generation.base.context; - -import org.rj.modelgen.llm.prompt.PromptPlaceholder; -import org.rj.modelgen.llm.prompt.StandardPromptPlaceholders; - -public interface BpmnPromptPlaceholders extends StandardPromptPlaceholders { - PromptPlaceholder COMPONENT_LIBRARY = new PromptPlaceholder("COMPONENT_LIBRARY"); - PromptPlaceholder GLOBAL_VARIABLE_LIBRARY = new PromptPlaceholder("GLOBAL_VARIABLE_LIBRARY"); - - PromptPlaceholder HIGH_LEVEL_MODEL_SUMMARY = new PromptPlaceholder("HIGH_LEVEL_MODEL_SUMMARY"); - - // Set of global variables filtered to only those detected in the initial prompt - PromptPlaceholder PROMPT_RELEVANT_GLOBAL_VARIABLES = new PromptPlaceholder("PROMPT_RELEVANT_GLOBAL_VARIABLES"); - - // Set of global variables filtered to only those used in the generated high-level model - PromptPlaceholder GLOBAL_VARIABLES_USED_IN_HL_MODEL = new PromptPlaceholder("GLOBAL_VARIABLES_USED_IN_HL_MODEL"); - - // Set of validation fixes to apply to detail-level generation on retry of model generation - PromptPlaceholder DETAIL_MODEL_VALIDATION_ISSUES = new PromptPlaceholder("DETAIL_MODEL_VALIDATION_ISSUES"); -} - +package org.rj.modelgen.bpmn.models.generation.base.context; + +import org.rj.modelgen.llm.prompt.PromptPlaceholder; +import org.rj.modelgen.llm.prompt.StandardPromptPlaceholders; + +public interface BpmnPromptPlaceholders extends StandardPromptPlaceholders { + PromptPlaceholder COMPONENT_LIBRARY = new PromptPlaceholder("COMPONENT_LIBRARY"); + PromptPlaceholder GLOBAL_VARIABLE_LIBRARY = new PromptPlaceholder("GLOBAL_VARIABLE_LIBRARY"); + + PromptPlaceholder HIGH_LEVEL_MODEL_SUMMARY = new PromptPlaceholder("HIGH_LEVEL_MODEL_SUMMARY"); + + // Set of global variables filtered to only those detected in the initial prompt + PromptPlaceholder PROMPT_RELEVANT_GLOBAL_VARIABLES = new PromptPlaceholder("PROMPT_RELEVANT_GLOBAL_VARIABLES"); + + // Set of global variables filtered to only those used in the generated high-level model + PromptPlaceholder GLOBAL_VARIABLES_USED_IN_HL_MODEL = new PromptPlaceholder("GLOBAL_VARIABLES_USED_IN_HL_MODEL"); + + // Set of validation fixes to apply to detail-level generation on retry of model generation + PromptPlaceholder DETAIL_MODEL_VALIDATION_ISSUES = new PromptPlaceholder("DETAIL_MODEL_VALIDATION_ISSUES"); + + PromptPlaceholder STARTING_PAYLOAD_VARIABLES = new PromptPlaceholder("STARTING_PAYLOAD_VARIABLES"); +} + diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/common/BpmnAdditionalModelStates.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/common/BpmnAdditionalModelStates.java index 99d57fb..71ba4a7 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/common/BpmnAdditionalModelStates.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/common/BpmnAdditionalModelStates.java @@ -4,6 +4,7 @@ public enum BpmnAdditionalModelStates implements StringSerializable { InitializeBpmnData, + InitializeBpmnPayload, InsertSyntheticComponents, ProcessHighLevelModelDataForDetailLevelGeneration, DetailLevelBpmnIRModelValidation, diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java index 1397956..d10f2dc 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java @@ -32,12 +32,15 @@ import org.rj.modelgen.llm.models.generation.multilevel.config.MultiLevelModelDetailPhaseConfig; import org.rj.modelgen.llm.models.generation.multilevel.config.MultiLevelModelPhaseConfig; import org.rj.modelgen.llm.models.generation.multilevel.config.MultilevelModelPreprocessingConfig; +import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; import org.rj.modelgen.llm.models.generation.multilevel.prompt.MultiLevelGenerationModelPromptGenerator; +import org.rj.modelgen.llm.models.generation.multilevel.prompt.MultiLevelModelPromptType; import org.rj.modelgen.llm.state.ModelInterfaceState; import org.rj.modelgen.llm.state.ModelInterfaceStateMachineCustomization; import org.rj.modelgen.llm.state.ModelInterfaceTransitionRule; import org.rj.modelgen.llm.statemodel.signals.common.StandardErrorSignals; +import org.rj.modelgen.llm.statemodel.states.common.PrepareAndSubmitLlmGenericRequest; import org.rj.modelgen.llm.subproblem.config.SubproblemDecompositionConfig; import org.rj.modelgen.bpmn.models.generation.base.signals.*; import reactor.core.publisher.Mono; @@ -54,9 +57,12 @@ public class BpmnMultiLevelGenerationModel extends MultiLevelGenerationModel( new DefaultComponentLibrarySelector<>(), @@ -66,14 +72,14 @@ public static BpmnMultiLevelGenerationModel create(ModelInterface modelInterface BpmnHighLevelIntermediateModel.class, new BpmnGenerationMultiLevelSchemaHighLevel(), new BpmnHighLevelIntermediateModelSanitizer(), new DefaultComponentLibrarySelector<>(), new BpmnComponentLibraryHighLevelSerializer(), - params -> new PrepareBpmnMLHighLevelModelGenerationRequest<>(params, getGlobalVariableLibrary()), + params -> new PrepareBpmnMLHighLevelModelGenerationRequest<>(params, globalVariableLibrary), null); final var detailLevelConfig = new MultiLevelModelDetailPhaseConfig<>( // TODO BpmnIntermediateModel.class, new BpmnGenerationMultiLevelSchemaDetailLevel(), new BpmnDetailLevelIntermediateModelSanitizer(), new BpmnComponentLibraryDetailLevelSelector(), new BpmnComponentLibraryDetailLevelSerializer(), - params -> new PrepareBpmnMLDetailLevelModelGenerationRequest<>(params, getGlobalVariableLibrary()), + params -> new PrepareBpmnMLDetailLevelModelGenerationRequest<>(params, globalVariableLibrary), null); final var modelGenerationFunction = new BpmnModelGenerationFunction(); @@ -87,7 +93,7 @@ BpmnIntermediateModel.class, new BpmnGenerationMultiLevelSchemaDetailLevel(), return (BpmnMultiLevelGenerationModel) new BpmnMultiLevelGenerationModel(BpmnMultiLevelGenerationModel.class, modelInterface, promptGenerator, contextProvider, componentLibrary, preprocessingConfig, highLevelConfig, detailLevelConfig, modelGenerationFunction, renderedModelSerializer, subproblemDecompositionConfig, completionState, options) - .withModelCustomization(data -> addBpmnModelCustomization(data, options)); + .withModelCustomization(data -> addBpmnModelCustomization(data, options, promptGenerator, contextProvider, componentLibrary, globalVariableLibrary)); } protected BpmnMultiLevelGenerationModel(Class modelClass, @@ -119,14 +125,16 @@ public Mono executeModel(String sessionId, String request, .map(BpmnGenerationResult::fromModelExecutionResult); } - private static ModelInterfaceStateMachineCustomization addBpmnModelCustomization(ModelCustomizationData modelData, BpmnMultiLevelGenerationModelOptions options) { + private static ModelInterfaceStateMachineCustomization addBpmnModelCustomization(ModelCustomizationData modelData, BpmnMultiLevelGenerationModelOptions options, + BpmnGenerationMultiLevelPromptGenerator promptGenerator, ContextProvider contextProvider, BpmnComponentLibrary componentLibrary, BpmnGlobalVariableLibrary globalVariableLibrary) { final List> customizations = List.of( - (customization, data) -> initializeBpmnData(customization, data, options), + (customization, data) -> initializeBpmnPayload(customization, contextProvider, promptGenerator, componentLibrary), + (customization, data) -> initializeBpmnData(customization, data, componentLibrary, globalVariableLibrary, options), (customization, data) -> preProcessingInsertSyntheticComponents(customization, data, options), - BpmnMultiLevelGenerationModel::processHighLevelModelDataForDetailLevelGeneration, - BpmnMultiLevelGenerationModel::validateDetailLevelModel, + (customization, data) -> processHighLevelModelDataForDetailLevelGeneration(customization, data, globalVariableLibrary), + (customization, data) -> validateDetailLevelModel(customization, data, globalVariableLibrary), BpmnMultiLevelGenerationModel::postProcessingResolveSyntheticComponents, - BpmnMultiLevelGenerationModel::postProcessingPrepareForRendering, + (customization, data) -> postProcessingPrepareForRendering(customization, data, globalVariableLibrary), BpmnMultiLevelGenerationModel::validateBpmnModelCorrectness ); @@ -137,13 +145,23 @@ private static ModelInterfaceStateMachineCustomization addBpmnModelCustomization (a, b) -> a); } + private static ModelInterfaceStateMachineCustomization initializeBpmnPayload(ModelInterfaceStateMachineCustomization customization, ContextProvider contextProvider, + BpmnGenerationMultiLevelPromptGenerator promptGenerator, BpmnComponentLibrary componentLibrary) { + final var initializeProcessPayload = new PrepareAndSubmitLlmGenericRequest<>(contextProvider, promptGenerator, MultiLevelModelPromptType.PayloadGeneration, componentLibrary) + .withResponseOutputKey(MultiLevelModelStandardPayloadData.ProcessVariables) + .withOverriddenId(BpmnAdditionalModelStates.InitializeBpmnPayload); + + return customization + .withNewStateInsertedAfter(initializeProcessPayload, MultiLevelGenerationModelStates.SanitizingPrePass.toString()); + } + private static ModelInterfaceStateMachineCustomization initializeBpmnData(ModelInterfaceStateMachineCustomization customization, ModelCustomizationData modelData, - BpmnMultiLevelGenerationModelOptions options) { - final var initializeData = new InitializeBpmnData(getGlobalVariableLibrary(), options) + BpmnComponentLibrary componentLibrary, BpmnGlobalVariableLibrary globalVariableLibrary, BpmnMultiLevelGenerationModelOptions options) { + final var initializeData = new InitializeBpmnData(componentLibrary, globalVariableLibrary, options) .withOverriddenId(BpmnAdditionalModelStates.InitializeBpmnData); return customization - .withNewStateInsertedAfter(initializeData, MultiLevelGenerationModelStates.StartMultiLevelGeneration.toString()); + .withNewStateInsertedAfter(initializeData, BpmnAdditionalModelStates.InitializeBpmnPayload.toString()); } private static ModelInterfaceStateMachineCustomization preProcessingInsertSyntheticComponents(ModelInterfaceStateMachineCustomization customization, @@ -160,20 +178,20 @@ private static ModelInterfaceStateMachineCustomization preProcessingInsertSynthe .withOverriddenId(BpmnAdditionalModelStates.InsertSyntheticComponents); return customization - .withNewStateInsertedAfter(insertSyntheticComponents, MultiLevelGenerationModelStates.SanitizingPrePass.toString()); + .withNewStateInsertedAfter(insertSyntheticComponents, BpmnAdditionalModelStates.InitializeBpmnData.toString()); } - private static ModelInterfaceStateMachineCustomization processHighLevelModelDataForDetailLevelGeneration(ModelInterfaceStateMachineCustomization customization, ModelCustomizationData modelData) { - final var processHighLevelData = new ProcessHighLevelModelDataForDetailLevelGeneration(getGlobalVariableLibrary()) + private static ModelInterfaceStateMachineCustomization processHighLevelModelDataForDetailLevelGeneration(ModelInterfaceStateMachineCustomization customization, ModelCustomizationData modelData, BpmnGlobalVariableLibrary globalVariableLibrary) { + final var processHighLevelData = new ProcessHighLevelModelDataForDetailLevelGeneration(globalVariableLibrary) .withOverriddenId(BpmnAdditionalModelStates.ProcessHighLevelModelDataForDetailLevelGeneration); return customization .withNewStateInsertedAfter(processHighLevelData, MultiLevelGenerationModelStates.ValidateHighLevel.toString()); } - private static ModelInterfaceStateMachineCustomization validateDetailLevelModel(ModelInterfaceStateMachineCustomization customization, ModelCustomizationData modelData) { + private static ModelInterfaceStateMachineCustomization validateDetailLevelModel(ModelInterfaceStateMachineCustomization customization, ModelCustomizationData modelData, BpmnGlobalVariableLibrary globalVariableLibrary) { - final var validateBpmnDetailLevelIntermediateModel = new ValidateBpmnLlmDetailLevelIntermediateModelResponse(getGlobalVariableLibrary()) + final var validateBpmnDetailLevelIntermediateModel = new ValidateBpmnLlmDetailLevelIntermediateModelResponse(globalVariableLibrary) .withOverriddenId(BpmnAdditionalModelStates.DetailLevelBpmnIRModelValidation); validateBpmnDetailLevelIntermediateModel.setInvokeLimit(3); @@ -192,8 +210,8 @@ private static ModelInterfaceStateMachineCustomization postProcessingResolveSynt .withNewStateInsertedAfter(resolveSyntheticActions, BpmnAdditionalModelStates.DetailLevelBpmnIRModelValidation.toString()); } - private static ModelInterfaceStateMachineCustomization postProcessingPrepareForRendering(ModelInterfaceStateMachineCustomization customization, ModelCustomizationData modelData) { - final var prepareForRendering = new PrepareBpmnModelForRendering() + private static ModelInterfaceStateMachineCustomization postProcessingPrepareForRendering(ModelInterfaceStateMachineCustomization customization, ModelCustomizationData modelData, BpmnGlobalVariableLibrary globalVariableLibrary) { + final var prepareForRendering = new PrepareBpmnModelForRendering(globalVariableLibrary) .withOverriddenId(BpmnAdditionalModelStates.PrepareForRendering); return customization @@ -220,10 +238,6 @@ public static BpmnMultiLevelGenerationModelOptions defaultOptions() { ; } - private static BpmnGlobalVariableLibrary getGlobalVariableLibrary() { - return BpmnGlobalVariableLibrary.defaultLibrary(); - } - public BpmnComponentLibrary getComponentLibrary() { return componentLibrary; } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/options/BpmnMultiLevelGenerationModelOptions.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/options/BpmnMultiLevelGenerationModelOptions.java index 86ae128..2791cbf 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/options/BpmnMultiLevelGenerationModelOptions.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/options/BpmnMultiLevelGenerationModelOptions.java @@ -5,6 +5,7 @@ public class BpmnMultiLevelGenerationModelOptions extends MultiLevelGenerationModelOptions { private boolean addPlaceholderForUnknownComponents = false; private boolean addPromptSpecificGlobalVariables = false; + private boolean addStartingPayloadVariables = true; protected BpmnMultiLevelGenerationModelOptions() { super(); @@ -39,4 +40,17 @@ public BpmnMultiLevelGenerationModelOptions withAddPromptSpecificGlobalVariables setAddPromptSpecificGlobalVariables(addPromptSpecificGlobalVariables); return this; } + + public boolean shouldAddStartingPayloadVariables() { + return addStartingPayloadVariables; + } + + public void setAddStartingPayloadVariables(boolean addStartingPayloadVariables) { + this.addStartingPayloadVariables = addStartingPayloadVariables; + } + + public BpmnMultiLevelGenerationModelOptions withAddStartingPayloadVariables(boolean addStartingPayloadVariables) { + setAddStartingPayloadVariables(addStartingPayloadVariables); + return this; + } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/prompt/BpmnGenerationMultiLevelPromptGenerator.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/prompt/BpmnGenerationMultiLevelPromptGenerator.java index 6d7caef..dce5c8b 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/prompt/BpmnGenerationMultiLevelPromptGenerator.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/prompt/BpmnGenerationMultiLevelPromptGenerator.java @@ -7,6 +7,7 @@ public class BpmnGenerationMultiLevelPromptGenerator extends MultiLevelGenerationModelPromptGenerator { public BpmnGenerationMultiLevelPromptGenerator() { addPrompt(MultiLevelModelPromptType.SanitizingPrePass, Util.loadStringResource("content/models/multilevel/bpmn-sanitizing-prepass-prompt")); + addPrompt(MultiLevelModelPromptType.PayloadGeneration, Util.loadStringResource("content/models/multilevel/bpmn-preprocessing-payload-generation-prompt")); addPrompt(MultiLevelModelPromptType.GenerateHighLevel, Util.loadStringResource("content/models/multilevel/bpmn-multilevel-high-level-generation-prompt")); addPrompt(MultiLevelModelPromptType.GenerateDetailLevel, Util.loadStringResource("content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt")); } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/InitializeBpmnData.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/InitializeBpmnData.java index ef671ef..9e54453 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/InitializeBpmnData.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/InitializeBpmnData.java @@ -1,21 +1,30 @@ package org.rj.modelgen.bpmn.models.generation.multilevel.states; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.rj.modelgen.bpmn.component.BpmnComponentLibrary; +import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariable; import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; import org.rj.modelgen.bpmn.models.generation.multilevel.options.BpmnMultiLevelGenerationModelOptions; +import org.rj.modelgen.bpmn.models.generation.validation.PayloadVariable; import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; import org.rj.modelgen.llm.statemodel.states.common.ExecuteLogic; import org.rj.modelgen.llm.util.Result; import reactor.core.publisher.Mono; -import static org.rj.modelgen.bpmn.models.generation.base.context.BpmnPromptPlaceholders.GLOBAL_VARIABLE_LIBRARY; -import static org.rj.modelgen.bpmn.models.generation.base.context.BpmnPromptPlaceholders.PROMPT_RELEVANT_GLOBAL_VARIABLES; +import java.util.*; +import java.util.stream.Collectors; + +import static org.rj.modelgen.bpmn.models.generation.base.context.BpmnPromptPlaceholders.*; public class InitializeBpmnData extends ExecuteLogic { + private final BpmnComponentLibrary componentLibrary; private final BpmnGlobalVariableLibrary globalVariableLibrary; private final BpmnMultiLevelGenerationModelOptions options; - public InitializeBpmnData(BpmnGlobalVariableLibrary globalVariableLibrary, BpmnMultiLevelGenerationModelOptions options) { + public InitializeBpmnData(BpmnComponentLibrary componentLibrary, BpmnGlobalVariableLibrary globalVariableLibrary, BpmnMultiLevelGenerationModelOptions options) { super(InitializeBpmnData.class); + this.componentLibrary = componentLibrary; this.globalVariableLibrary = globalVariableLibrary; this.options = options; } @@ -37,6 +46,44 @@ protected Mono> executeLogic() { getPayload().put(MultiLevelModelStandardPayloadData.AddPlaceholdersForUnknownActions, true); } + if (options.shouldAddStartingPayloadVariables()) { + final String processVariables = getPayload().get(MultiLevelModelStandardPayloadData.ProcessVariables); + final var startingPayloadVariables = initializeStartingPayload(processVariables, componentLibrary); + // Store the starting payload variables for use in later phases + getPayload().put(MultiLevelModelStandardPayloadData.ProcessVariables, startingPayloadVariables); + + // Also serialize them for use in prompt generation + final String serializedStartingPayload = startingPayloadVariables.stream() + .map(v -> String.format("- %s (%s)", v.getName(), v.getType())) + .collect(Collectors.joining("\n")); + getPayload().put(STARTING_PAYLOAD_VARIABLES.getValue(), serializedStartingPayload); + } + return Mono.just(Result.Ok()); } + + private Set initializeStartingPayload(String processVariables, BpmnComponentLibrary componentLibrary) { + List processVariablesList; + try { + ObjectMapper mapper = new ObjectMapper(); + processVariablesList = mapper.readValue(processVariables, new TypeReference<>() {}); + + } catch (Exception e) { + processVariablesList = Collections.emptyList(); + } + + List automaticallyGeneratedOutputs = componentLibrary.getComponents().stream() + .flatMap(component -> component.getGeneratedOutputs().stream()) + .map(variable -> new PayloadVariable(variable.getName(), variable.getType().toString())) + .toList(); + + Set globalVarResolveValues = globalVariableLibrary.getComponents().stream() + .map(BpmnGlobalVariable::getResolveValue) + .collect(Collectors.toSet()); + + // Compute starting payload by removing automatically generated outputs and global vars from the read variables + return processVariablesList.stream() + .filter(x -> !automaticallyGeneratedOutputs.contains(x) && !globalVarResolveValues.contains(x.getName())) + .collect(Collectors.toSet()); + } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java index ac0aa0d..99a7726 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java @@ -1,7 +1,11 @@ package org.rj.modelgen.bpmn.models.generation.multilevel.states; import org.rj.modelgen.bpmn.component.BpmnComponentLibrary; +import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariable; +import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; +import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; +import org.rj.modelgen.bpmn.intrep.model.ElementNodeOutput; import org.rj.modelgen.bpmn.models.generation.multilevel.BpmnMultiLevelGenerationModel; import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; import org.rj.modelgen.llm.models.generation.multilevel.states.PrepareModelForRendering; @@ -13,16 +17,23 @@ import java.util.*; +import static org.rj.modelgen.bpmn.component.common.BpmnComponentInputSourceType.*; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.Patterns.*; +import static org.rj.modelgen.bpmn.models.generation.validation.BpmnScriptUtils.*; + public class PrepareBpmnModelForRendering extends PrepareModelForRendering { private static final Logger LOG = LoggerFactory.getLogger(PrepareBpmnModelForRendering.class); - public PrepareBpmnModelForRendering() { - this(PrepareBpmnModelForRendering.class); + private final BpmnGlobalVariableLibrary globalVariableLibrary; + + public PrepareBpmnModelForRendering(BpmnGlobalVariableLibrary globalVariableLibrary) { + this(globalVariableLibrary, PrepareBpmnModelForRendering.class); } - public PrepareBpmnModelForRendering(Class cls) { + public PrepareBpmnModelForRendering(BpmnGlobalVariableLibrary globalVariableLibrary, Class cls) { super(cls); + this.globalVariableLibrary = globalVariableLibrary; } public PrepareBpmnModelForRendering withInputKeyOverride(String inputKeyOverride) { @@ -43,7 +54,8 @@ protected Mono> executeLogic() { final List operations = List.of( () -> removeInvalidNullNodes(model), () -> eliminateDuplicateConnections(model), - () -> identifyOrphanedSubgraphs(model) + () -> identifyOrphanedSubgraphs(model), + () -> resolveInputs(model) ); return execute(model, operations); @@ -65,6 +77,52 @@ private void eliminateDuplicateConnections(BpmnIntermediateModel model) { } } + private void resolveInputs(BpmnIntermediateModel model) { + for (final var node : model.getNodes()) { + if (node.getInputs() == null) continue; + for (final var input : node.getInputs()) { + var inputValue = input.getValue(); + var inputSource = input.getVariableSource(); + + if (inputSource.equals(SCRIPT.toString())) { + inputValue = resolveVariableWrites(inputValue); + inputValue = resolveVariableReads(inputValue); + inputValue = resolveGlobalVariableReads(inputValue, globalVariableLibrary, false); + + // Hook for subclasses to add custom post-processing + inputValue = postProcessScriptInput(input, inputValue); + } + + if (inputSource.equals(EXPRESSION.toString())) { + inputValue = inputValue + .replaceAll(INTERPOLATION_PATTERN.pattern(), "\\${payload.$1}") + .replaceAll(VAR_READ_PATTERN.pattern(), "\\${payload.$1}"); + inputValue = resolveGlobalVariableReads(inputValue, globalVariableLibrary, true); + } + + if (inputSource.equals(GLOBAL.toString())) { + inputValue = globalVariableLibrary.getVariableByName(input.getValue()) + .map(BpmnGlobalVariable::getResolveValue) + .orElse("global_not_found"); + } + + if (inputSource.equals(NODE.toString())) { + inputValue = model.getNodeById(inputValue) + .flatMap(x -> x.findOutput(input.getName())) + .map(ElementNodeOutput::getValue) + .orElse("node_not_found"); + } + + input.setValue(inputValue); + } + } + } + + protected String postProcessScriptInput(ElementNodeInput input, String inputValue) { + inputValue = resolveErrorThrows(inputValue, "throw new Exception($1)"); + return inputValue; + } + private String getModelKey() { return Optional.ofNullable(inputKeyOverride).orElse(MultiLevelModelStandardPayloadData.DetailLevelModel.toString()); } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ProcessHighLevelModelDataForDetailLevelGeneration.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ProcessHighLevelModelDataForDetailLevelGeneration.java index dbc362a..23d509c 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ProcessHighLevelModelDataForDetailLevelGeneration.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ProcessHighLevelModelDataForDetailLevelGeneration.java @@ -2,8 +2,6 @@ import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; import org.rj.modelgen.bpmn.intrep.model.BpmnHighLevelIntermediateModel; -import org.rj.modelgen.bpmn.intrep.model.ElementHighLevelNodeInput; -import org.rj.modelgen.bpmn.intrep.model.ElementHighLevelNodeInputSourceType; import org.rj.modelgen.bpmn.models.generation.base.context.BpmnPromptPlaceholders; import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; import org.rj.modelgen.llm.statemodel.states.common.ExecuteLogic; @@ -11,8 +9,14 @@ import org.rj.modelgen.llm.util.Util; import reactor.core.publisher.Mono; +import java.util.HashSet; +import java.util.Set; +import java.util.regex.Matcher; import java.util.stream.Collectors; +import static org.rj.modelgen.bpmn.component.common.BpmnComponentInputSourceType.GLOBAL; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.Patterns.GLOBAL_VAR_READ_PATTERN; + public class ProcessHighLevelModelDataForDetailLevelGeneration extends ExecuteLogic { private BpmnGlobalVariableLibrary globalVariableLibrary; @@ -38,8 +42,24 @@ protected Mono> executeLogic() { private void determineGlobalVariablesInUse(BpmnHighLevelIntermediateModel model) { final var globalVariablesInUse = model.getNodes().stream() .flatMap(node -> node.getInputs().stream()) - .filter(input -> input.getSourceType() == ElementHighLevelNodeInputSourceType.GLOBAL) - .map(ElementHighLevelNodeInput::getSource) + .flatMap(input -> { + Set globalVars = new HashSet<>(); + + // Direct GLOBAL source type + if (input.getSourceType() == GLOBAL) { + globalVars.add(input.getSource()); + } else { + // Extract from scripts and expressions where source is the input value + String value = input.getSource(); + if (value != null ) { + Matcher matcher = GLOBAL_VAR_READ_PATTERN.matcher(value); + while (matcher.find()) { + globalVars.add(matcher.group(1)); + } + } + } + return globalVars.stream(); + }) .collect(Collectors.toSet()); final var filteredLibrary = globalVariableLibrary.getFilteredLibrary( diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java index 83212c0..8e5315c 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java @@ -1,10 +1,14 @@ package org.rj.modelgen.bpmn.models.generation.multilevel.states; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.rj.modelgen.bpmn.component.BpmnComponent; import org.rj.modelgen.bpmn.component.BpmnComponentLibrary; import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; import org.rj.modelgen.bpmn.models.generation.base.signals.BpmnGenerationSignals; import org.rj.modelgen.bpmn.models.generation.multilevel.BpmnMultiLevelGenerationModel; +import org.rj.modelgen.bpmn.models.generation.validation.PayloadVariable; import org.rj.modelgen.bpmn.models.generation.validation.ValidateBpmnModel; import org.rj.modelgen.llm.exception.LlmGenerationModelException; import org.rj.modelgen.llm.intrep.IntermediateModelParser; @@ -17,9 +21,7 @@ import org.slf4j.LoggerFactory; import reactor.core.publisher.Mono; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; import static org.rj.modelgen.bpmn.models.generation.base.context.BpmnPromptPlaceholders.DETAIL_MODEL_VALIDATION_ISSUES; @@ -41,15 +43,18 @@ public String getDescription() { @Override protected Mono invokeAction(ModelInterfaceSignal modelInterfaceSignal) { + final var componentLibrary = getComponentLibrary(); + final String content = getPayload().get(MultiLevelModelStandardPayloadData.DetailLevelModel); final var parser = new IntermediateModelParser<>(BpmnIntermediateModel.class); final var model = parser.parse(content).orElseThrow(e -> new LlmGenerationModelException(String.format( "Validate BPMN Detail Level Intermediate Model Response could not parse detail-level intermediate model: %s (content: %s)", e, content))); - final var componentLibrary = getComponentLibrary(); + Map> startingPayload = new HashMap<>(); + startingPayload.put("startingPayload", getPayload().get(MultiLevelModelStandardPayloadData.ProcessVariables)); - List validations = new ValidateBpmnModel(model, globalVariableLibrary, componentLibrary).validate(); + List validations = new ValidateBpmnModel(model, globalVariableLibrary, componentLibrary).validate(startingPayload); List validationMessages = new ArrayList<>(); validations.stream().collect(Collectors.groupingBy(IntermediateModelValidationError::getLocation)) .forEach((nodeName, nodeValidations) -> { diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java new file mode 100644 index 0000000..6a48276 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java @@ -0,0 +1,79 @@ +package org.rj.modelgen.bpmn.models.generation.validation; + +import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariable; +import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static org.rj.modelgen.bpmn.generation.BpmnConstants.Patterns.*; + +public class BpmnScriptUtils { + + public static List retrieveVariablesWithPattern(String inputValue, Pattern pattern) { + List variables = new ArrayList<>(); + Matcher matcher = pattern.matcher(inputValue); + while (matcher.find()) { + String variableName = matcher.group(1); + String variableValue = matcher.group(2); + String variableType = matcher.group(3); + variables.add(new PayloadVariable(variableName, variableType.toLowerCase())); + } + return variables; + } + + public static List retrieveGlobalVariables(String inputValue, BpmnGlobalVariableLibrary globalVariableLibrary) { + List variables = new ArrayList<>(); + Matcher matcher = GLOBAL_VAR_READ_PATTERN.matcher(inputValue); + while (matcher.find()) { + String variableName = matcher.group(1); + String variableType = globalVariableLibrary.getVariableByName(variableName).map(BpmnGlobalVariable::getType).orElse(""); + variables.add(new PayloadVariable(variableName, variableType.toLowerCase())); + } + return variables; + } + + public static String resolveVariableReads(String inputValue) { + return inputValue.replaceAll(VAR_READ_PATTERN.pattern(), "payload.$1"); + } + + public static String resolveVariableWrites(String inputValue) { + return inputValue.replaceAll(VAR_WRITE_PATTERN.pattern(), "payload.$1 = $2"); + } + + public static String resolveErrorThrows(String inputValue, String replacement) { + return inputValue.replaceAll(THROW_ERROR_PATTERN.pattern(), replacement); + } + + public static String resolveGlobalVariableReads(String inputValue, BpmnGlobalVariableLibrary globalVariableLibrary, boolean withInterpolation) { + Matcher globalVarMatcher = GLOBAL_VAR_READ_PATTERN.matcher(inputValue); + StringBuilder resolvedScript = new StringBuilder(); + while (globalVarMatcher.find()) { + String varName = globalVarMatcher.group(1); + String arguments = globalVarMatcher.group(2); + + var globalVar = globalVariableLibrary.getVariableByName(varName); + if (globalVar.isPresent()) { + String resolveValue = globalVar.get().getResolveValue(); + + // Replace argument placeholders with actual arguments + if (arguments != null && !arguments.trim().isEmpty()) { + String[] args = arguments.split(","); + for (int i = 0; i < args.length; i++) { + resolveValue = resolveValue.replace("arg" + (i + 1), args[i].trim()); + } + } + if (withInterpolation) { + globalVarMatcher.appendReplacement(resolvedScript, "${" + resolveValue + "}"); + } else { + globalVarMatcher.appendReplacement(resolvedScript, resolveValue); + } + + } + } + globalVarMatcher.appendTail(resolvedScript); + return resolvedScript.toString(); + } +} \ No newline at end of file diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/PayloadVariable.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/PayloadVariable.java new file mode 100644 index 0000000..e0bc5eb --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/PayloadVariable.java @@ -0,0 +1,46 @@ +package org.rj.modelgen.bpmn.models.generation.validation; + +public class PayloadVariable { + String name; + String type; + + public PayloadVariable() { + } + + public PayloadVariable(String name, String type) { + this.name = name; + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + PayloadVariable that = (PayloadVariable) obj; + if (name != null ? !name.equals(that.name) : that.name != null) return false; + return type != null ? type.equals(that.type) : that.type == null; + } + + @Override + public int hashCode() { + int result = name != null ? name.hashCode() : 0; + result += (type != null ? type.hashCode() : 0); + return result; + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java index ad5a437..d85a081 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java @@ -1,28 +1,43 @@ package org.rj.modelgen.bpmn.models.generation.validation; +import groovy.lang.GroovyShell; import org.apache.commons.lang3.StringUtils; -import org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.*; +import org.codehaus.groovy.ast.ASTNode; +import org.codehaus.groovy.ast.builder.AstBuilder; +import org.codehaus.groovy.ast.expr.*; +import org.codehaus.groovy.ast.stmt.BlockStatement; +import org.codehaus.groovy.ast.stmt.ExpressionStatement; +import org.codehaus.groovy.ast.stmt.Statement; +import org.codehaus.groovy.control.*; import org.rj.modelgen.bpmn.component.BpmnComponent; import org.rj.modelgen.bpmn.component.BpmnComponentLibrary; import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; +import org.rj.modelgen.bpmn.component.common.BpmnComponentInputSourceType; import org.rj.modelgen.bpmn.intrep.model.*; import org.rj.modelgen.llm.validation.beans.IntermediateModelValidationError; import java.util.*; +import java.util.function.Consumer; +import java.util.regex.Matcher; +import java.util.stream.Collectors; import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.*; -import static org.rj.modelgen.bpmn.generation.BpmnModelComponentNodeScriptVariableType.*; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.Patterns.*; +import static org.rj.modelgen.bpmn.component.common.BpmnComponentInputSourceType.*; +import static org.rj.modelgen.bpmn.models.generation.validation.BpmnScriptUtils.*; import static org.rj.modelgen.llm.util.ValidationUtils.identifyNumberOfRoots; import static org.rj.modelgen.llm.util.ValidationUtils.convertStringToMap; public class ValidateBpmnModel { private static final String FULL_PROCESS = "full_process"; + private static final String COMMA_DELIMITER = ","; private BpmnIntermediateModel model; private BpmnGlobalVariableLibrary globalVariableLibrary; private BpmnComponentLibrary componentLibrary; private List invalidMessages = new ArrayList<>(); + private final GroovyShell shell = new GroovyShell(); public ValidateBpmnModel(BpmnIntermediateModel model, BpmnGlobalVariableLibrary globalVariableLibrary, BpmnComponentLibrary componentLibrary) { this.model = model; @@ -30,16 +45,23 @@ public ValidateBpmnModel(BpmnIntermediateModel model, BpmnGlobalVariableLibrary this.componentLibrary = componentLibrary; } - public List validate() { + public List validate(Map> startingPayload) { for (ElementNode node : model.getNodes()) { validateNodeNames(node); validateRequiredInputs(node); - validateOutputNames(node); validateNodeConnections(node); validateNodeConnectionsRules(node); } identifyOrphanedNodes(); + // Code validation requires traversing a valid graph in execution order so execute it after successful graph structure validation + if (invalidMessages.isEmpty()) { + List> validationFunctions = List.of( + this::validateCodeGenInputs + ); + traverseGraphInExecutionOrder(validationFunctions, startingPayload); + } + return invalidMessages; } @@ -64,6 +86,7 @@ private void validateRequiredInputs(ElementNode node) { final Collection invalidInputMessages = new ArrayList<>(); final var component = componentLibrary.getComponentByName(node.getElementType()); if (component.isEmpty()) return; // Unknown action type, should probably never happen by the time we reach this point + if (node.getInputs() == null) return; node.getInputs().forEach(nodeInput -> { if (StringUtils.isBlank(nodeInput.getName())) { @@ -73,7 +96,7 @@ private void validateRequiredInputs(ElementNode node) { invalidInputMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has '%s' input with null or empty value", node.getId(), nodeInput.getName()), node.getId())); } if (StringUtils.isBlank(nodeInput.getVariableSource())) { - invalidInputMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has '%s' input with null or empty variableSource. It should be CONSTANT, SCRIPT, NODE or GLOBAL.", node.getId(), nodeInput.getName()), node.getId())); + invalidInputMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has '%s' input with null or empty variableSource. It should be CONSTANT, EXPRESSION, SCRIPT, NODE or GLOBAL.", node.getId(), nodeInput.getName()), node.getId())); } } }); @@ -85,7 +108,9 @@ private void validateRequiredInputs(ElementNode node) { } component.get().getRequiredInputs().forEach(requiredInput -> { - var inputs = node.getInputs().stream() + List inputs = node.getInputs() == null + ? new ArrayList<>() + : node.getInputs().stream() .filter(nodeInput -> nodeInput.getName().equals(requiredInput.getName())) .toList(); @@ -97,43 +122,23 @@ private void validateRequiredInputs(ElementNode node) { if (inputs.size() > 1) { invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has multiple definitions of input '%s'", node.getId(), requiredInput.getName()), node.getId())); } - // If the input is enum, it must have a valid value - if (requiredInput.getAllowedValues() != null && !requiredInput.getAllowedValues().isEmpty() && !requiredInput.getAllowedValues().contains(inputs.get(0).getValue())) { + // If the input is enum and constant, it must have a valid value + if (requiredInput.getAllowedValues() != null && !requiredInput.getAllowedValues().isEmpty() && inputs.get(0).getVariableSource().equals(CONSTANT.toString()) && !requiredInput.getAllowedValues().contains(inputs.get(0).getValue())) { invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an invalid value for input '%s'. Allowed values are: %s", node.getId(), requiredInput.getName(), String.join(", ", requiredInput.getAllowedValues())), node.getId())); } + // If the input's source type is GLOBAL, then global variable library must contain the input variable if (!inputs.isEmpty() && inputs.get(0).getVariableSource().equals(GLOBAL.toString()) && globalVariableLibrary.getVariableByName(inputs.get(0).getValue()).isEmpty()) { - invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an input '%s' which tries to use a global variable '%s' that does not exist in the global variable library", node.getId(), requiredInput.getName(), inputs.get(0).getValue()), node.getId())); + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an input '%s' which tries to use a global variable '%s' that does not exist in the global variable library", + node.getId(), requiredInput.getName(), inputs.get(0).getValue()), node.getId())); + } + // Input's source type must be among the component allowed source types + if (!inputs.isEmpty() && !requiredInput.isAllowedInputSourceType(inputs.get(0).getVariableSource())) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an input '%s' with invalid variable source type '%s'. Allowed source types for this input are: %s", + node.getId(), requiredInput.getName(), inputs.get(0).getVariableSource(), String.join(", ", requiredInput.getAllowedInputSourceTypes().stream().map(BpmnComponentInputSourceType::toString).toList())), node.getId())); } }); } - private void validateOutputNames(ElementNode node) { - final var component = componentLibrary.getComponentByName(node.getElementType()); - if (component.isEmpty()) return; // Unknown component type, should probably never happen by the time we reach this point - - node.getOutputs().stream() - .flatMap(x -> validateOutputName(x.getName(), component.get()).stream()) - .forEach(msg -> invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an invalid output: %s", node.getId(), msg), node.getId()))); - } - - private Optional validateOutputName(String name, BpmnComponent component) { - if (StringUtils.isBlank(name)) return Optional.of("Name cannot be null or blank"); - - // No possible conflict if the node does not generate fixed outputs - if (component.getGeneratedOutputs() == null) return Optional.empty(); - - final String outputName = name.trim(); - final var conflict = component.getGeneratedOutputs().stream() - .anyMatch(x -> outputName.equals(x.getName())); - - if (conflict) { - return Optional.of(("Cannot add a custom output with name '%s' since the node already generates this output automatically. " + - "Either change the output name to something else and adjust other nodes which may use it accordingly or just reference the automatically generated output in other nodes").formatted(name)); - } - - return Optional.empty(); - } - private void validateNodeConnections(ElementNode node) { if (node.getConnectedTo() != null) { node.getConnectedTo().forEach(connection -> { @@ -186,9 +191,9 @@ private void validateNodeConnectionsRules(ElementNode node) { // Validate that default node and conditions are mapped to existing nodes String defaultTargetNodeName = node.findInput("default").map(ElementNodeInput::getValue).orElse(null); if(StringUtils.isBlank(defaultTargetNodeName)) { - invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' is missing a default target node in its inputs. A default target node must be specified.", node.getId()), node.getId())); + invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' is missing a 'default' input specifying the default target node.", node.getId()), node.getId())); } else if(node.getConnectedTo().stream().noneMatch(c -> c.getTargetNode().equals(defaultTargetNodeName))) { - invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' has a default target node '%s' which is not among its outgoing connections. The default target node must be one of the outgoing connections.", node.getId(), defaultTargetNodeName), node.getId())); + invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' has a default target node '%s' which is not among its outgoing connections. The 'default' input must specify target node from one of the outgoing connections.", node.getId(), defaultTargetNodeName), node.getId())); } var conditions = convertStringToMap(node.findInput("conditions").map(ElementNodeInput::getValue).orElse("{}")); for (String conditionTargetNode : conditions.keySet()) { @@ -202,4 +207,423 @@ private void validateNodeConnectionsRules(ElementNode node) { } } } + + private void validateCodeGenInputs(ProcessState state) { + ElementNode node = state.currentNode; + Map> payload = state.payload; + + if (node.getInputs() != null) { + node.getInputs().forEach(input -> { + if (input.getVariableSource().equals(CONSTANT.toString())) { + validateConstantInput(node, input, payload); + } else if (input.getVariableSource().equals(EXPRESSION.toString())) { + validateExpressionInput(node, input, payload); + } else if (input.getVariableSource().equals(SCRIPT.toString())) { + validateScriptInput(node, input, payload); + } else if (input.getVariableSource().equals(NODE.toString())) { + validateNodeInput(node, input, payload); + } + }); + } + + Set currentNodeOutputs = payload.getOrDefault(node.getId(), new HashSet<>()); + Set currentNodeOutputsNames = currentNodeOutputs.stream() + .map(PayloadVariable::getName) + .collect(Collectors.toSet()); + + // Get component generated outputs + final var componentOutputVars = componentLibrary.getComponentByName(node.getElementType()) + .map(BpmnComponent::getGeneratedOutputs) + .orElse(Collections.emptyList()) + .stream() + .filter(outputVar -> !currentNodeOutputsNames.contains(outputVar.getName())) + .map(outputVar -> new PayloadVariable(outputVar.getName(), outputVar.getType().toString())) + .toList(); + + currentNodeOutputs.addAll(componentOutputVars); + payload.put(node.getId(), currentNodeOutputs); + } + + private void validateConstantInput(ElementNode node, ElementNodeInput input, Map> payload) { + String constantValue = input.getValue(); + + // Do not allow variable writes in constant inputs + List writtenVariables = retrieveVariablesWithPattern(constantValue, VAR_WRITE_PATTERN); + if (!writtenVariables.isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is a CONSTANT input but its value stores variables [%s] using setVariable(). CONSTANT inputs cannot write variables. Change its type to SCRIPT (if the input definition allows this type) or provide a valid CONSTANT value.", + input.getName(), node.getId(), String.join(", ", writtenVariables.stream().map(PayloadVariable::getName).toList())), node.getId())); + } + + // Do not allow variable reads in constant inputs + List readVariables = retrieveVariablesWithPattern(constantValue, VAR_READ_PATTERN); + if (!readVariables.isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is a CONSTANT input but its value reads variables [%s] using getVariable(). CONSTANT inputs cannot read variables. Change its type to EXPRESSION or SCRIPT (if the input definition allows this type) or provide a valid CONSTANT value.", + input.getName(), node.getId(), String.join(", ", readVariables.stream().map(PayloadVariable::getName).toList())), node.getId())); + } + + // Do not allow global variable reads in constant inputs + List readGlobalVariables = retrieveGlobalVariables(constantValue, globalVariableLibrary); + if (!readGlobalVariables.isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is a CONSTANT input but its value reads global variables [%s] using getGlobalVariable(). CONSTANT inputs cannot read global variables. Change its type to EXPRESSION or SCRIPT (if the input definition allows this type) or provide a valid CONSTANT value.", + input.getName(), node.getId(), String.join(", ", readGlobalVariables.stream().map(PayloadVariable::getName).toList())), node.getId())); + } + } + + private void validateExpressionInput(ElementNode node, ElementNodeInput input, Map> payload) { + String expression = input.getValue(); + + // Do not allow variable writes in constant inputs + List writtenVariables = retrieveVariablesWithPattern(expression, VAR_WRITE_PATTERN); + if (!writtenVariables.isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is an EXPRESSION input but its value stores variables [%s] using setVariable(). EXPRESSION inputs cannot write variables. Change its type to SCRIPT (if the input definition allows this type) or provide a valid CONSTANT value.", + input.getName(), node.getId(), String.join(", ", writtenVariables.stream().map(PayloadVariable::getName).toList())), node.getId())); + } + + validateVariableReads(node, input, payload); + expression = resolveVariableReads(expression); + + validateGlobalVariableReads(node, input); + expression = resolveGlobalVariableReads(expression, globalVariableLibrary, true); + + List expressionsToValidate = new ArrayList<>(); + if (node.getElementType().endsWith(GATEWAY_SUFFIX) && input.getName().equals("conditions")) { + var gatewayConditions = convertStringToMap(expression).values(); + expressionsToValidate.addAll(gatewayConditions); + } else { + expressionsToValidate.add(expression); + } + + for (String expr : expressionsToValidate) { + if (StringUtils.isBlank(expr)) { + continue; + } + validateExpression(node, input, expr); + } + } + + private void validateExpression(ElementNode node, ElementNodeInput input, String expression) { + if (expression.startsWith("return ")) { + expression = expression.substring(7).trim(); + } + if (expression.startsWith("/")) { + expression = expression.substring(1); + } + // If the expression contains interpolation syntax or it is a json object, wrap it with additional quotes to parse it as a GString or PropertyExpression + boolean addedQuotes = false; + if (expression.contains("${") || expression.startsWith("{") && expression.endsWith("}")) { + expression = "\"" + expression + "\""; + addedQuotes = true; + } + + try { + AstBuilder astBuilder = new AstBuilder(); + List astNodes; + try { + astNodes = astBuilder.buildFromString(CompilePhase.CONVERSION, expression); + } catch (Exception e) { + // Edge case: Parsing fails for scripts that contain interpolation values because of additional quotes so remove them and parse again + if (addedQuotes) { + expression = expression.substring(1, expression.length() - 1); + } + astNodes = astBuilder.buildFromString(CompilePhase.CONVERSION, expression); + } + var astNode = astNodes.get(0); + List statements = ((BlockStatement) astNode).getStatements(); + + if (statements.size() == 1) { + Statement statement = statements.get(0); + if (statement instanceof ExpressionStatement) { + Expression expr = ((ExpressionStatement) statement).getExpression(); + if (!isValidExpressionType(expr)) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is an EXPRESSION input but its value is a '%s' expression which is not allowed. EXPRESSION inputs must have single-line expressions. Change its source type to CONSTANT or SCRIPT, or provide a valid EXPRESSION value.", + input.getName(), node.getId(), expr.getClass().getSimpleName()), node.getId())); + } + } + } else { + invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is an EXPRESSION input but its value appears to be a Groovy script. EXPRESSION inputs must have single-line expressions. Change its source type to SCRIPT or provide a valid EXPRESSION value.", + input.getName(), node.getId()), node.getId())); + } + } catch (Exception e) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is an EXPRESSION input but its value could not be parsed as a valid Groovy expression and threw an error: %s. EXPRESSION inputs must have single-line expressions. Change its source type to SCRIPT or provide a valid EXPRESSION value.", + input.getName(), node.getId(), e.getMessage()), node.getId())); + } + } + + private boolean isValidExpressionType(Expression expr) { + return expr instanceof BinaryExpression || + expr instanceof VariableExpression || + expr instanceof GStringExpression || + expr instanceof PropertyExpression || + expr instanceof CastExpression || + expr instanceof ConstantExpression; + } + + + private void validateScriptInput(ElementNode node, ElementNodeInput input, Map> payload) { + String script = input.getValue(); + + // Check for variable writes + List writtenVariables = retrieveVariablesWithPattern(script, VAR_WRITE_PATTERN); + script = resolveVariableWrites(script); + + // Check for variable reads + boolean isScriptValid = validateVariableReads(node, input, payload) && validateGlobalVariableReads(node, input); + script = resolveVariableReads(script); + script = resolveGlobalVariableReads(script, globalVariableLibrary, false); + + // Replace throw(...) but don't use valid Groovy exception syntax as it would throw actual exception during evaluation + script = resolveErrorThrows(script, "errorMessagePlaceholder = $1"); + + // Groovy script validation will fail if there are variable read errors so only proceed if there are no such errors + if (isScriptValid) { + String globalVarInitScript = buildGlobalVarsInitScript(); + script = globalVarInitScript + buildDummyPayload(input, payload) + script; + + if (parseGroovyScript(node, input.getName(), script)) { + validateGroovyScript(node, input.getName(), script); + } + } + + // Store written variables per node - do it after building dummy payload to avoid including vars stored in the current node in the dummy payload + Set currentNodeOutputs = payload.getOrDefault(node.getId(), new HashSet<>()); + currentNodeOutputs.addAll(writtenVariables); + payload.put(node.getId(), currentNodeOutputs); + } + + private void validateNodeInput(ElementNode node, ElementNodeInput input, Map> payload) { + String sourceNodeId = input.getValue(); + String variableName = input.getName(); + + if (!payload.containsKey(sourceNodeId)) { + invalidMessages.add(new IntermediateModelValidationError( + String.format("Input '%s' in node '%s' references source node '%s' which does not exist or has not been processed yet.", + variableName, node.getId(), sourceNodeId), node.getId())); + return; + } + + Set sourceNodeOutputs = payload.get(sourceNodeId); + boolean variableExists = sourceNodeOutputs.stream() + .anyMatch(v -> v.getName().equals(variableName)); + + if (!variableExists) { + invalidMessages.add(new IntermediateModelValidationError( + String.format("Input '%s' in node '%s' tries to read from node '%s' which does not output this variable. Available outputs: [%s]", + variableName, node.getId(), sourceNodeId, + sourceNodeOutputs.stream().map(PayloadVariable::getName).collect(Collectors.joining(", "))), + node.getId())); + } + } + + private boolean validateVariableReads(ElementNode node, ElementNodeInput input, Map> payload) { + boolean isScriptValid = true; + Matcher readMatcher = VAR_READ_PATTERN.matcher(input.getValue()); + while (readMatcher.find()) { + String variableName = readMatcher.group(1); + String sourceNodeId = readMatcher.group(2); + + // If reading from a specific node (sourceNodeId specified), validate if input exists in payload or in source node outputs + boolean foundInSourceNode = false; + if (StringUtils.isNotBlank(sourceNodeId)) { + Set sourceNodeOutputs = payload.getOrDefault(sourceNodeId, Set.of()); + foundInSourceNode = sourceNodeOutputs.stream().anyMatch(x -> x.getName().equals(variableName) || variableName.startsWith(x.getName() + ".")); + } + // Fallback: check if variable exists in the starting payload + Set startingPayload = payload.get("startingPayload"); + boolean foundInStartingPayload = startingPayload.stream().anyMatch(x -> x.getName().equals(variableName) || variableName.startsWith(x.getName() + ".")); + + if (!foundInSourceNode && !foundInStartingPayload) { + invalidMessages.add(new IntermediateModelValidationError( + String.format("%s in node '%s' reads variable '%s' from " + (StringUtils.isNotBlank(sourceNodeId) + ? "node '%s' which does not store or output this variable. " + : "the starting payload which does not store it. ") + + "Ensure this variable is provided in the starting payload, generated as a source node output, or written in a previous node's script using setVariable().", + input.getName(), node.getId(), variableName, sourceNodeId), node.getId())); + isScriptValid = false; + } + } + return isScriptValid; + } + + private boolean validateGlobalVariableReads(ElementNode node, ElementNodeInput input) { + boolean isScriptValid = true; + Matcher globalVarMatcher = GLOBAL_VAR_READ_PATTERN.matcher(input.getValue()); + while (globalVarMatcher.find()) { + String variableName = globalVarMatcher.group(1); + String arguments = globalVarMatcher.group(2); + + // Check if global variable exists in the global variable library + var globalVar = globalVariableLibrary.getVariableByName(variableName); + if (globalVar.isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError( + String.format("%s in node '%s' reads global variable '%s' which does not exist in the global variable library. " + + "Change this input to a global variable which is in the library, or to another input type such as CONSTANT, EXPRESSION, SCRIPT or NODE if appropriate.", + input.getName(), node.getId(), variableName), node.getId())); + isScriptValid = false; + } else { + // Verify that all required arguments are provided + var requiredArgs = globalVar.get().getArguments(); + if (StringUtils.isNotBlank(arguments) && arguments.trim().split(COMMA_DELIMITER).length != requiredArgs.size()) { + invalidMessages.add(new IntermediateModelValidationError( + String.format("%s in node '%s' reads global variable '%s' but the number of provided arguments (%d) does not match the required number of arguments (%d). " + + "Ensure to provide all required arguments when reading this global variable.", + input.getName(), node.getId(), variableName, arguments.trim().split(COMMA_DELIMITER).length, requiredArgs.size()), node.getId())); + isScriptValid = false; + } + } + } + return isScriptValid; + } + + private String buildDummyPayload(ElementNodeInput input, Map> payload) { + StringBuilder fullScript = new StringBuilder("def payload = [:];\n"); + + // Accumulate variables from the starting payload with current payload + // Sort by depth to ensure parent objects are created before child properties + List sortedPayloadVariables = payload.entrySet().stream() + .flatMap(entry -> entry.getValue().stream()) + .sorted(Comparator.comparingInt(var -> var.getName().split("\\.").length)) + .toList(); + + Set initializedVars = new HashSet<>(); + + for (PayloadVariable variable : sortedPayloadVariables) { + String[] parts = variable.getName().split("\\."); + StringBuilder currentGroovyVar = new StringBuilder(); + + for (int i = 0; i < parts.length; i++) { + currentGroovyVar.append(i > 0 ? "." : "").append(parts[i]); + String fullIntermediateVar = currentGroovyVar.toString(); + + if (!initializedVars.contains(fullIntermediateVar)) { + boolean hasChildren = i < parts.length - 1 || sortedPayloadVariables.stream().anyMatch(var -> var.getName().startsWith(fullIntermediateVar + ".")); + + if (hasChildren) { + fullScript.append("payload.").append(fullIntermediateVar).append(" = payload.").append(fullIntermediateVar).append(" ?: [:];\n"); + } else { + String dummyValue = switch (variable.getType().toLowerCase()) { + case "integer" -> "123"; + case "boolean" -> "true"; + case "float" -> "123.45"; + case "array" -> "[]"; + case "object" -> "[:]"; + default -> "'default_dummy_value_for_" + variable.getName() + "'"; + }; + + fullScript.append("payload.").append(fullIntermediateVar).append(" = ").append(dummyValue).append(";\n"); + } + initializedVars.add(fullIntermediateVar); + } + } + } + + // Output script can use "response" output variable so ensure it's initialized + if (input.getName().equals("outputScript") && !initializedVars.contains("response")) { + fullScript.append("def response = [:];\n"); + fullScript.append("response.statusLine = [:]\nresponse.statusLine = [:]\nresponse.statusLine.statusCode = 200\n"); + fullScript.append("response.request = [:]\nresponse.request.uri = 'http://example.com/main/api'\n"); + fullScript.append("response.entity = [:]\n"); + } + + return fullScript.append("\n").toString(); + } + + public String buildGlobalVarsInitScript() { + StringBuilder script = new StringBuilder(); + Set processedLines = new HashSet<>(); + + for (var globalVar : globalVariableLibrary.getComponents()) { + String initScript = globalVar.getInitScript(); + if (initScript != null && !initScript.isBlank()) { + String[] lines = initScript.split("\n"); + for (String line : lines) { + if (!processedLines.contains(line)) { + script.append(line).append("\n"); + processedLines.add(line); + } + } + } + } + return script.toString(); + } + + private boolean parseGroovyScript(ElementNode node, String inputName, String script) { + try { + shell.parse(script); + return true; + } catch (Exception e) { + invalidMessages.add(new IntermediateModelValidationError(String.format("%s code for node '%s' is not a valid Groovy code or expression. Exception: '%s'", inputName, node.getId(), e), node.getId())); + return false; + } + } + + private void validateGroovyScript(ElementNode node, String inputName, String script) { + try { + shell.evaluate(script); + } catch (Exception e) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is a SCRIPT input but its value could not be evaluated. " + + "SCRIPT inputs must contain executable code that may read or write variables using getVariable() and setVariable(). Exception: '%s'", + inputName, node.getId(), e.getMessage()), node.getId())); + } + } + + private void traverseGraphInExecutionOrder(List> validationFunctions, Map> startingPayload) { + List roots = identifyNumberOfRoots(model); + if (roots.size() != 1) { + return; + } + + String startNodeId = roots.get(0); + ElementNode startNode = model.getNodeById(startNodeId).orElse(null); + + if (startNode == null) { + return; + } + + Stack stack = new Stack<>(); + stack.push(new ProcessState(startNode, new ArrayList<>(List.of(startNode.getId())), startingPayload)); + + while (!stack.isEmpty()) { + ProcessState state = stack.pop(); + ElementNode currentNode = state.currentNode; + List currentPath = state.path; + Map> payload = state.payload; + + for (var nodeValidationFunction : validationFunctions) { + nodeValidationFunction.accept(state); + } + + if (currentNode.getConnectedTo() != null) { + for (ElementConnection connection : currentNode.getConnectedTo()) { + ElementNode targetNode = model.getNodeById(connection.getTargetNode()).orElse(null); + + if (targetNode != null && !currentPath.contains(targetNode.getId())) { + List newPath = new ArrayList<>(currentPath); + newPath.add(targetNode.getId()); + stack.push(new ProcessState(targetNode, newPath, deepCopyPayload(payload))); + } + } + } + } + + } + + private Map> deepCopyPayload(Map> payload) { + return payload.entrySet().stream() + .collect(Collectors.toMap( + Map.Entry::getKey, + e -> new HashSet<>(e.getValue()) + )); + } + + public static class ProcessState { + ElementNode currentNode; + List path; + Map> payload; + + ProcessState(ElementNode currentNode, List path, Map> payload) { + this.currentNode = currentNode; + this.path = path; + this.payload = payload; + } + } } diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json index d4f51c5..a9c6ad2 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json @@ -10,28 +10,24 @@ "description": "Name of the eTask for identification and display purposes", "type": "string", "mandatory": true, - "keyValue": true + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] }, { "name": "taskDescription", "description": "Detailed description of what the user needs to do in this task", "type": "string", "mandatory": true, - "keyValue": true - }, - { - "name": "taskTypeName", - "description": "Identifier for the type of task being created in the eTask system", - "type": "string", - "mandatory": true, - "keyValue": true + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] }, { "name": "sourceSystemName", "description": "Source system or process that generated this task", "type": "string", "mandatory": true, - "keyValue": true + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT"] }, { "name": "taskPriority", @@ -39,55 +35,50 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedValues": ["CRITICAL", "HIGH", "MEDIUM", "LOW"] + "allowedValues": ["CRITICAL", "HIGH", "MEDIUM", "LOW"], + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] }, { "name": "taskDeadline", "description": "Expected completion date and time for the task in date format (e.g. YYYY-MM-DDTHH:MM:SS) or duration (e.g. P{days}DT{hours}H{minutes}M)", "type": "string", "mandatory": true, - "keyValue": true - }, - { - "name": "routingStrategy", - "description": "Strategy for routing the task to appropriate users or groups", - "type": "string", - "mandatory": true, "keyValue": true, - "allowedValues": ["RESPONSIBILITY", "PRIVATE", "KERBEROS_LIST", "ADVANCED"] + "allowedInputSourceTypes": ["CONSTANT"] }, { "name": "maximumActiveTasks", - "description": "Maximum number of active user tasks allowed before throttling", + "description": "Maximum number of active user tasks allowed to run concurrently", "type": "integer", "mandatory": true, - "keyValue": false + "keyValue": false, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] } ], "generatedOutputs": [ { "name": "reasonCode", - "description": "Reason code indicating how the task was completed. Useful for determining approval outcomes (e.g., 'APPROVED' vs 'REJECTED') or other completion reasons.", + "description": "Reason code indicating how the task was completed. Useful for determining approval outcomes (e.g., 'APPROVED' vs 'REJECTED') or other completion reasons", "type": "string", - "keyValue": false + "keyValue": true }, { "name": "comment", "description": "The comment entered by the user who completed the task.", "type": "string", - "keyValue": false + "keyValue": true }, { "name": "completionPayload", "description": "Optional payload data containing additional information submitted when the task was completed. Use this to access custom data or form fields submitted by the user", "type": "string", - "keyValue": false + "keyValue": true }, { "name": "taskIdentifier", "description": "Unique reference identifier from taskCompletionPayload for the completed task instance. Useful for tracking, auditing, or correlating this specific task execution with external systems", "type": "string", - "keyValue": false + "keyValue": true } ] }, @@ -101,14 +92,16 @@ "description": "Identification for the target service, e.g a hardcoded URL or GS Discover path in example format /{domain}/.../{service}/location or variable containing such a value", "type": "string", "mandatory": true, - "keyValue": true + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] }, { "name": "uriPath", "description": "Specific URI path to append to the location identifier", "type": "string", "mandatory": true, - "keyValue": true + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] }, { "name": "httpMethod", @@ -116,35 +109,40 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedValues": ["GET", "POST", "PUT", "DELETE"] + "allowedValues": ["GET", "POST", "PUT", "DELETE"], + "allowedInputSourceTypes": ["CONSTANT"] }, { "name": "headers", "description": "HTTP headers to include in the request. It's a stringified map where keys are header names and values are the corresponding header values", "type": "string", "mandatory": false, - "keyValue": false + "keyValue": false, + "allowedInputSourceTypes": ["CONSTANT"] }, { "name": "queryParams", "description": "Query parameters for the request URL. It's a stringified map where keys are parameter names and values are the corresponding parameter values", "type": "string", "mandatory": false, - "keyValue": false + "keyValue": false, + "allowedInputSourceTypes": ["CONSTANT"] }, { "name": "inputExpression", "description": "Provide an expression or a Groovy script to be used to resolve the body of the HTTP request. Not required for GET requests", "type": "string", "mandatory": false, - "keyValue": false + "keyValue": false, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "SCRIPT", "NODE"] }, { "name": "outputScript", - "description": "Groovy script to process the response from the server (e.g handle status code and throw exceptions). The response object will be available in a `response` variable", + "description": "Groovy script to process the response from the server (e.g handle status code and throw exceptions). The response object will be available in a `response` variable with response.statusLine.statusCode, response.request.uri and response.entity available", "type": "string", "mandatory": false, - "keyValue": true + "keyValue": true, + "allowedInputSourceTypes": ["NODE", "SCRIPT"] } ], "generatedOutputs": [ @@ -152,7 +150,7 @@ "name": "statusCode", "description": "HTTP status code returned by the service", "type": "string", - "keyValue": false + "keyValue": true } ] }, @@ -166,7 +164,8 @@ "description": "Groovy script code to execute", "type": "string", "mandatory": true, - "keyValue": true + "keyValue": true, + "allowedInputSourceTypes": ["NODE", "SCRIPT"] } ], "generatedOutputs": [ @@ -174,7 +173,7 @@ "name": "result", "description": "Name of the variable that stores the output of the script execution", "type": "string", - "keyValue": false + "keyValue": true } ] }, @@ -189,28 +188,32 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedValues": ["Sapiens", "Signavio", "DMN", "Droit", "Decision Tables"] + "allowedValues": ["Sapiens", "Signavio", "DMN", "Droit", "Decision Tables"], + "allowedInputSourceTypes": ["CONSTANT"] }, { "name": "applicationId", "description": "ID of the Application within Decision Services Platform", "type": "string", "mandatory": true, - "keyValue": true + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] }, { "name": "ruleName", "description": "Rule Name of the rule to be executed in Decision Services Platform", "type": "string", "mandatory": false, - "keyValue": false + "keyValue": false, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] }, { "name": "ruleVersion", "description": "Rule Version of the rule to be executed in Decision Services Platform", "type": "string", "mandatory": false, - "keyValue": false + "keyValue": false, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] } ], "generatedOutputs": [] @@ -222,17 +225,19 @@ "requiredInputs": [ { "name": "location", - "description": "Identification for the target service", + "description": "Identification for the target service, e.g a hardcoded URL or GS Discover path in example format /{domain}/.../{service}/location or variable containing such a value", "type": "string", "mandatory": true, - "keyValue": true + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] }, { - "name": "httpPath", + "name": "uriPath", "description": "Specific URI path to append to the location identifier", "type": "string", "mandatory": true, - "keyValue": true + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] }, { "name": "httpMethod", @@ -240,35 +245,40 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedValues": ["GET", "POST", "PUT", "DELETE"] + "allowedValues": ["GET", "POST", "PUT", "DELETE"], + "allowedInputSourceTypes": ["CONSTANT"] }, { "name": "headers", "description": "HTTP headers to include in the request. It's a stringified map where keys are header names and values are the corresponding header values", "type": "string", "mandatory": false, - "keyValue": false + "keyValue": false, + "allowedInputSourceTypes": ["CONSTANT"] }, { "name": "queryParams", "description": "Query parameters for the request URL. It's a stringified map where keys are parameter names and values are the corresponding parameter values", "type": "string", "mandatory": false, - "keyValue": false + "keyValue": false, + "allowedInputSourceTypes": ["CONSTANT"] }, { "name": "inputExpression", "description": "Provide an expression or a Groovy script to be used to resolve the body of the HTTP request. Not required for GET requests", "type": "string", "mandatory": false, - "keyValue": false + "keyValue": false, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "SCRIPT", "NODE"] }, { "name": "outputScript", - "description": "Groovy script to process the response from the server (e.g handle status code and throw exceptions). The response object will be available as a `response` variable", + "description": "Groovy script to process the response from the server (e.g handle status code and throw exceptions). The response object will be available in a `response` variable with response.statusLine.statusCode, response.request.uri and response.entity", "type": "string", "mandatory": false, - "keyValue": true + "keyValue": true, + "allowedInputSourceTypes": ["NODE", "SCRIPT"] } ], "generatedOutputs": [] @@ -283,14 +293,16 @@ "description": "ID of a message to listen for", "type": "string", "mandatory": true, - "keyValue": false + "keyValue": false, + "allowedInputSourceTypes": ["CONSTANT", "NODE"] }, { "name": "availabilityRuleScript", "description": "A Groovy script that specifies control of who can call this Receive Task", "type": "string", "mandatory": false, - "keyValue": false + "keyValue": false, + "allowedInputSourceTypes": ["NODE", "SCRIPT"] } ], "generatedOutputs": [] @@ -319,14 +331,16 @@ "description": "Identifier of a default target node if no conditions are met.", "type": "string", "mandatory": false, - "keyValue": true + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT"] }, { "name": "conditions", "description": "Data used for condition evaluation. It's a stringified map where keys are target node identifiers and values are the corresponding conditions", "type": "string", "mandatory": true, - "keyValue": false + "keyValue": false, + "allowedInputSourceTypes": ["EXPRESSION", "NODE"] } ], "generatedOutputs": [] @@ -348,7 +362,8 @@ "description": "Data used for condition evaluation. It's a stringified map where keys are target node identifiers and values are the corresponding conditions", "type": "string", "mandatory": true, - "keyValue": false + "keyValue": false, + "allowedInputSourceTypes": ["EXPRESSION", "NODE"] } ], "generatedOutputs": [] diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-global-variable-library.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-global-variable-library.json index e324524..c0433c2 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-global-variable-library.json +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-global-variable-library.json @@ -1,3 +1,4 @@ { - "components": [] + "components": [ + ] } \ No newline at end of file diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt index 9b82acc..9a47402 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt @@ -37,7 +37,7 @@ We will now complete stage 2 and build the DETAILED model. -Below are the full definitions of each element you used in the high-level model. The 'type' of each node in your model will match the name of a component in this library: +Below are the full definitions of each element you used in the high-level model. The 'elementType' of each node in your model will match the name of a component in this library: ``` ${COMPONENT_LIBRARY} ``` @@ -50,6 +50,26 @@ ${GLOBAL_VARIABLES_USED_IN_HL_MODEL} ``` +<#if GLOBAL_VARIABLE_LIBRARY?has_content> +These are the global variables which can be used to satisfy inputs: +``` +${GLOBAL_VARIABLE_LIBRARY} +``` +Global variables can be used in two ways: +1. **Direct input assignment**: Reference the global variable name directly. Set `name` to the global variable name and `sourceType` to "GLOBAL" +2. **Within scripts**: Use `getGlobalVariable('variableName', [arg1, arg2])` + +<#else> +No global variables are available at the moment. Inputs should be satisfied using constant values, scripts, or node outputs. + + +<#if STARTING_PAYLOAD_VARIABLES?has_content> +These are the initial payload variables available at the start of the process that can be used to satisfy inputs: +``` +${STARTING_PAYLOAD_VARIABLES} +``` + + <#if !isDetailModelRetry>You should now generate the DETAILED model. Feel free to correct/extend the high-level model you initially generated. <#else> Below are some guidelines to help you fix the issues found in the detail-level model @@ -66,27 +86,31 @@ RULES FOR THE DETAILED MODEL GENERATION 2. Input resolution a. For every node use only inputs listed in that component's requiredInputs (include all mandatory; optional only if clearly beneficial and resolvable). b. Each mandatory input must have exactly one source object: { name, value, variableSource }. - c. Allowed variableSource values: CONSTANT | SCRIPT | NODE | GLOBAL + c. Use only allowed variable source types for each input as per component definitions in the component library. + d. Available variableSource values: CONSTANT | SCRIPT | NODE | GLOBAL - CONSTANT: Use for: - * Simple literal values that never change (e.g., "GET", "POST", "HIGH", 123, true). - * Pure function calls and expressions that ONLY retrieve variables without transformation (e.g., "getVariable('baseUrl')/api/endpoint" or getVariable('configValue.field')). + * Simple literal values that never change (e.g., "GET", "POST", "HIGH", 123, true, "This is short description."). * Node IDs for gateway default paths. + * Do not use for values that require any computation, transformation, or retrieval from variables. + - EXPRESSION: Use for: + * Pure function calls and expressions that ONLY retrieve variables without transformation (e.g., "getVariable('baseUrl')/api/endpoint" or "getVariable('configValue.field'))" or "getVariable('counter') > 0". + * Make sure expressions adhere to best practices outlined in `CODE GENERATION & SCRIPTING INSTRUCTIONS` section below. - SCRIPT: Use when the value requires: * Groovy script computation or transformation. * Complex logic with multiple statements. * Control flow (if/else, loops, etc.). - - NODE: Use when the value comes directly from a named output of any prior node in the process. The value should be the output variable name, and variableSource should reference ID of the source node. + * Make sure scripts adhere to best practices outlined in `CODE GENERATION & SCRIPTING INSTRUCTIONS` section below. + - NODE: Use when the value comes directly from a named output of any prior node in the process. Set `name` to the input variable name being satisfied and `value` to the source node ID. - GLOBAL: Use when available in the global variables library. Global variables library is not the same as process shared state. - d. If any mandatory input cannot be satisfied with these rules, set their value to empty string. - e. Never add an input not defined in requiredInputs. Never guess enum values - only use allowedValues list. + e. If any mandatory input cannot be satisfied with these rules, set their value to empty string. + f. Never add an input not defined in requiredInputs. Never guess enum values - only use allowedValues list. 3. Outputs - a. The "automatically-generated outputs" listed in the component definitions are all generated by the component. You must not provide values for them. They are available if you want to use them to satisfy inputs. - b. However, if you need to generate *additional* outputs you can list them in the "outputs" array of the corresponding node. Each output can either have a constant value or contain code. - c. Any additionally generated outputs should be stored in shared state using setVariable('keyName', 'value') within scripts. + a. The "generated outputs" listed in the component definitions are all generated by the component. You must not provide values for them. They are available if you want to use them to satisfy inputs in subsequent nodes. + b. Any additional variables that need to be accessible in subsequent nodes must be stored in the shared state using setVariable('keyName', 'value', 'valueType') within scripts. -4. Variable access API - a. Variables are stored individually in a payload object works as a shared state map across the process +4. Payload variable access API + a. Variables are stored individually in a payload object that works as a shared state map across the process b. To store a variable: use setVariable('keyName', 'value', 'valueType') - This writes a single variable of a specific type to the shared process state. - Each variable is stored separately, not as fields on a payload object. @@ -105,36 +129,76 @@ RULES FOR THE DETAILED MODEL GENERATION - Do NOT use this for variables written by previous nodes - those require sourceNodeId. e. For reads and writes, never reference the payload object directly (e.g., do NOT use payload.keyName), instead just use getVariable() and setVariable() as described above. f. DO NOT perform any computations, transformations, or logic inside getVariable() or setVariable() calls. These calls should only read or write variables directly. - -5. Gateways and branching + g. DO NOT use getVariable() inside setVariable() or vice versa. Use intermediate variables in scripts if needed. + +5. Global variable access API + a. Global variables are predefined utility functions or constants available for use in scripts and inputs. + b. To read a global variable use getGlobalVariable('globalVarName', [arg1, arg2]). + - globalVarName is the name of the global variable to read. + - If the global variable requires arguments, provide them as an array in the second parameter. Otherwise, provide empty array. + - Example: getGlobalVariable('parseJsonString', [jsonString]) calls the parseJsonString global function with jsonString as argument. + c. DO NOT perform any computations, transformations, or logic inside getGlobalVariable() calls. These calls should only read global variables directly. + d. DO NOT use getGlobalVariable() inside getVariable() or setVariable() or vice versa. Use intermediate variables in scripts if needed. + +6. Gateways and branching a. Use a gateway if you want to branch execution into several options based on conditions. Use another gateway later to merge multiple flows back into one. b. If you want to converge several branches into one and then immediately branch again, use a separate gateway to merge incoming flows (with no conditions) and a separate gateway to branch afterward; DO NOT merge and branch in the same gateway. c. Condition keys must match target node IDs exactly. d. Condition values must reference variables accessible in the shared state either at process start via getVariable('keyName') or at prior task output via getVariable('keyName', 'sourceNodeId'). e. If a condition requires computed flags or complex expressions, derive them before the gateway using a ScriptTask. -6. Connections +7. Connections a. Every non-endEvent node must have at least one outbound connection. b. Every non-startEvent node must have at least one inbound connection. c. endEvent must have zero outbound connections. d. startEvent must have zero inbound connections. e. Ensure a single connected model with no orphan nodes. -You should return the model as JSON complying to the following schema. Do NOT return a schema. Return JSON which complies with the schema: -``` -${SCHEMA_CONTENT} -``` - ---- CODE GENERATION & SCRIPTING INSTRUCTIONS 1. Script best practices a. If need to read from the shared variable map: use getVariable('keyName.subfield') or getVariable('keyName.subfield', 'sourceNodeId'). DO NOT do null checks - assume key exists. b. If need to write to the shared variable map: use setVariable('keyName', 'value', 'String'); c. If need to throw exception use: throw(errorMessage); - d. Wildcards: Replace '%%' with appropriate Groovy/regex (e.g. (?i).*value.*) or use contains where sufficient. - e. Prefer basic string operations (contains, replace, split, toLowerCase) before regex. + d. Scripts should be concise but complete. Group related logic in a single script rather than creating separate nodes for each command. + e. Scripts MUST be properly formatted with correct indentation and structure: + - Use `\n` for newlines between statements and after opening braces `{` + - Use `\t` or 4 spaces for each indentation level + - Every statement must end with a semicolon + - Control flow blocks (if/else, for, while) MUST be multi-line with proper indentation: + ``` + if (condition) {\n\tstatement1;\n\tstatement2;\n} + ``` + - Variable assignments with closures using `= { }` should preserve the closure formatting: + ``` + def handler = { param ->\n\tstatement1;\n\tstatement2;\n} + ``` + - Method closures (`.each { }`, `.findAll { }`, `.collect { }`) can stay inline for simple single statements, but MUST use proper formatting for multiple statements or nested logic: + ``` + list.each { item -> println(item); } // Simple: inline OK + list.each { item ->\n\tif (item > 5) {\n\t\tprintln(item);\n\t}\n} // Complex: multi-line required + ``` + - Do NOT collapse or strip whitespace - preserve all indentation and line breaks explicitly + f. Script should not return any values with `return` statement. Instead, write any outputs to the shared state using setVariable(). + g Use global variables to leverage built-in functionalities and values where applicable. + h. Do not import any external libraries. Use only built-in Groovy functions. + i. Prefer basic string operations (contains, replace, split, toLowerCase) before regex. + +2. Expression best practices + a. If need to read from the shared variable map: use getVariable('keyName.subfield') or getVariable('keyName.subfield', 'sourceNodeId'). DO NOT do null checks - assume key exists. + b. When building strings with variables, use getVariable() or getGlobalVariable() calls directly without concatenation operators. E.g., use "Value is getVariable('keyName')" instead of "Value is " + getVariable('keyName') + c. Expressions should not use `return` statement. + d Use global variables to leverage built-in functionalities and values where applicable. + e. Do not import any external libraries. Use only built-in Groovy functions. + f. Prefer basic string operations (contains, replace, split, toLowerCase) before regex. + +--- +You should return the model as JSON complying to the following schema. Do NOT return a schema. Return JSON which complies with the schema: +``` +${SCHEMA_CONTENT} +``` +--- Finally, ensure that all steps are part of the SAME process. You should make sure that steps in your model are correctly linked together to form a single process. There should be no orphaned steps or processes - every step must be linked. NOTE: Now that you consider the detailed level and full component definitions, you may realize that you need to return to phase 1 and change the high-level structure. E.g. if you need additional nodes in order to generate some required component inputs. Please therefore return one of two possible responses: diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt index c2f39e5..132a340 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt @@ -20,20 +20,32 @@ Each non-endEvent can make outbound connections to other nodes. These connection ** The component library specifies which connections are required for each node type. endEvent nodes should have no outbound connections. ** If a non-endEvent node has an outbound connection to an endEvent node, ensure that the endEvent node has a unique name and id. * All steps are part of the SAME process. You should make sure that steps in your model are correctly linked together to form a single process. There should be no orphaned steps or processes - every step must be linked. -* Nodes should indicate how each of its inputs will be satisfied. Each input to a node can be one of the following: - 1. A constant value or simple expression. `source` should be the value, `sourceType` should be "CONSTANT" +* Nodes should indicate how each of its inputs will be satisfied. Component library defines allowed values for each input which can be one of the following: + 1. A constant value. `source` should be the value, `sourceType` should be "CONSTANT" + 2. A Groovy expression. `source` should be the expression, `sourceType` should be "EXPRESSION" 2. A Groovy script. `source` should be the script, `sourceType` should be "SCRIPT" 3. A value from the output of a prior node in the process. `source` should be the id of the prior node, `sourceType` should be "NODE" 4. A global variable, from the list provided below. `source` should be the name of the variable, `sourceType` should be "GLOBAL" * The input values MUST be found in the 'requiredInputs' array for the node - do not include any inputs that are not part of this requiredInputs array for the node in question. <#if GLOBAL_VARIABLE_LIBRARY?has_content> -These are the global variables which can be used to satisfy inputs if applicable, in addition to constant values or node outputs: +These are the global variables which can be used to satisfy inputs: ``` ${GLOBAL_VARIABLE_LIBRARY} ``` +Global variables can be used in two ways: +1. **Direct input assignment**: Reference the global variable name directly. Set `source` to the global variable name and `sourceType` to "GLOBAL" +2. **Within scripts**: Use `getGlobalVariable('variableName', [arg1, arg2])` + <#else> -No global variables are available at the moment. Inputs should be satisfied using constant values, scripts, or node outputs. +No global variables are available at the moment. Inputs should be satisfied using constant values, expressions, scripts, or node outputs. + + +<#if STARTING_PAYLOAD_VARIABLES?has_content> +These are the initial payload variables available at the start of the process that can be used to satisfy inputs: +``` +${STARTING_PAYLOAD_VARIABLES} +``` <#if highLevelModel??> diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-preprocessing-payload-generation-prompt b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-preprocessing-payload-generation-prompt new file mode 100644 index 0000000..dfcf551 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-preprocessing-payload-generation-prompt @@ -0,0 +1,25 @@ +You are designing a business process model following the BPMN 2.0 standard. We will generate the model in two stages +1. Build a HIGH-LEVEL model by connecting together appropriate BPMN 2.0 elements +2. Extend this into a DETAILED model by adding configuration and linking node inputs & outputs + +Before we start, identify all payload variables used in the process. A payload variable is any variable that is read before it is written to. +Follow these rules to identify the variables: +a. A variable should be included if it is read before it is ever written to or modified. This includes variables that are only read. +b. A variable should be included if it is first read and then later modified. +c. A variable should be excluded if it is written to or created before its first read operation. +d. For complex objects, provide the full path to each field (e.g., user.address.street). +e. If a variable path references payload, omit the payload. prefix (e.g., for payload.result, return result). + +IMPORTANT: DO NOT return any other content or commentary. Only return a single JSON list as described below. Each object in the list must have a name and a type. Allowed types are: "string", "integer", "float" "boolean", "object, and "array". + +[ + { + "name": "status", + "type": "string" + } +} + +The process description that needs to be modeled is as follows: +``` +${request} +``` \ No newline at end of file diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/graph/IntermediateGraphModel.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/graph/IntermediateGraphModel.java index ea9ee01..6d8dd41 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/graph/IntermediateGraphModel.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/graph/IntermediateGraphModel.java @@ -1,36 +1,44 @@ -package org.rj.modelgen.llm.intrep.graph; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Stream; - -public class IntermediateGraphModel, - TNode extends GraphNode> implements IntermediateModel { - - private List nodes = new ArrayList<>(); - - public IntermediateGraphModel() { } - - public List getNodes() { - return nodes; - } - - public void setNodes(List nodes) { - this.nodes = nodes; - } - - // Returns a stream of all nodes in this graph AND any subgraphs, for implementations where graphs can - // contain other graphs. Will be identical to `getNodes()` for implementations which do not support - // this. Stream makes no guarantee about ordering. Individual nodes can be modified but obviously not - // added or removed since this is a stream API - @JsonIgnore - public Stream getAllNodesRecursive() { - return getNodes().stream(); - } - -} +package org.rj.modelgen.llm.intrep.graph; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.stream.Stream; + +public class IntermediateGraphModel, + TNode extends GraphNode> implements IntermediateModel { + + private List nodes = new ArrayList<>(); + + public IntermediateGraphModel() { } + + public List getNodes() { + return nodes; + } + + public void setNodes(List nodes) { + this.nodes = nodes; + } + + @JsonIgnore + public Optional getNodeById(String nodeId) { + return nodes.stream() + .filter(n -> n.getId().equals(nodeId)) + .findFirst(); + } + + // Returns a stream of all nodes in this graph AND any subgraphs, for implementations where graphs can + // contain other graphs. Will be identical to `getNodes()` for implementations which do not support + // this. Stream makes no guarantee about ordering. Individual nodes can be modified but obviously not + // added or removed since this is a stream API + @JsonIgnore + public Stream getAllNodesRecursive() { + return getNodes().stream(); + } + +} diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModelStates.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModelStates.java index 1e7d1da..440abf8 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModelStates.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModelStates.java @@ -1,41 +1,41 @@ -package org.rj.modelgen.llm.models.generation.multilevel; - -import org.rj.modelgen.llm.util.StringSerializable; - -public enum MultiLevelGenerationModelStates implements StringSerializable { - StartMultiLevelGeneration, - SanitizingPrePass, - PreProcessing, - GenerateSubproblems, - ExecuteHighLevel, - ValidateHighLevel, - ExecuteDetailLevel, - ValidateDetailLevel, - CombineSubproblems, - PostProcessing, - GenerateModel, - Complete; - - @Override - public String toString() { - return Character.toLowerCase(name().charAt(0)) + name().substring(1); - } - - public String description() - { - return switch (this) { - case StartMultiLevelGeneration -> "Starting multi-level workflow generation process"; - case SanitizingPrePass -> "Sanitizing provided input"; - case PreProcessing -> "Pre-processing provided input"; - case GenerateSubproblems -> "Decomposing the input into sub-problems"; - case ExecuteHighLevel -> "Generating high-level intermediate model"; - case ValidateHighLevel -> "Validating high-level intermediate model"; - case ExecuteDetailLevel -> "Executing detail-level intermediate model"; - case ValidateDetailLevel -> "Validating detail-level intermediate model"; - case CombineSubproblems -> "Combining results from sub-problems"; - case PostProcessing -> "Processing final intermediate model"; - case GenerateModel -> "Generating final workflow"; - case Complete -> "Multi-level generation process complete"; - }; - } -} +package org.rj.modelgen.llm.models.generation.multilevel; + +import org.rj.modelgen.llm.util.StringSerializable; + +public enum MultiLevelGenerationModelStates implements StringSerializable { + StartMultiLevelGeneration, + SanitizingPrePass, + PreProcessing, + GenerateSubproblems, + ExecuteHighLevel, + ValidateHighLevel, + ExecuteDetailLevel, + ValidateDetailLevel, + CombineSubproblems, + PostProcessing, + GenerateModel, + Complete; + + @Override + public String toString() { + return Character.toLowerCase(name().charAt(0)) + name().substring(1); + } + + public String description() + { + return switch (this) { + case StartMultiLevelGeneration -> "Starting multi-level workflow generation process"; + case SanitizingPrePass -> "Sanitizing provided input"; + case PreProcessing -> "Pre-processing provided input"; + case GenerateSubproblems -> "Decomposing the input into sub-problems"; + case ExecuteHighLevel -> "Generating high-level intermediate model"; + case ValidateHighLevel -> "Validating high-level intermediate model"; + case ExecuteDetailLevel -> "Executing detail-level intermediate model"; + case ValidateDetailLevel -> "Validating detail-level intermediate model"; + case CombineSubproblems -> "Combining results from sub-problems"; + case PostProcessing -> "Processing final intermediate model"; + case GenerateModel -> "Generating final workflow"; + case Complete -> "Multi-level generation process complete"; + }; + } +} diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/data/MultiLevelModelStandardPayloadData.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/data/MultiLevelModelStandardPayloadData.java index 5d36cd3..b7e07be 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/data/MultiLevelModelStandardPayloadData.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/data/MultiLevelModelStandardPayloadData.java @@ -2,6 +2,7 @@ public enum MultiLevelModelStandardPayloadData { Request, + ProcessVariables, HighLevelModel, DetailLevelModel, LlmDirectedRetryReason, diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/prompt/MultiLevelGenerationModelPromptGenerator.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/prompt/MultiLevelGenerationModelPromptGenerator.java index dcbc34f..f077c86 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/prompt/MultiLevelGenerationModelPromptGenerator.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/prompt/MultiLevelGenerationModelPromptGenerator.java @@ -4,6 +4,7 @@ public class MultiLevelGenerationModelPromptGenerator extends TemplatedPromptGenerator { public static MultiLevelGenerationModelPromptGenerator create(String sanitizingPrePassPrompt, + String payloadGenerationPrompt, String highLevelGenerationPrompt, String highLevelSchemaCorrectionPrompt, String detailLevelGenerationPrompt, @@ -11,6 +12,7 @@ public static MultiLevelGenerationModelPromptGenerator create(String sanitizingP String generatedModelErrorCorrectionPrompt) { return new MultiLevelGenerationModelPromptGenerator() .withAvailablePrompt(MultiLevelModelPromptType.SanitizingPrePass, sanitizingPrePassPrompt) + .withAvailablePrompt(MultiLevelModelPromptType.PayloadGeneration, payloadGenerationPrompt) .withAvailablePrompt(MultiLevelModelPromptType.GenerateHighLevel, highLevelGenerationPrompt) .withAvailablePrompt(MultiLevelModelPromptType.CorrectHighLevelSchemaErrors, highLevelSchemaCorrectionPrompt) .withAvailablePrompt(MultiLevelModelPromptType.GenerateDetailLevel, detailLevelGenerationPrompt) diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/prompt/MultiLevelModelPromptType.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/prompt/MultiLevelModelPromptType.java index 91dd8a8..8e2f1ea 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/prompt/MultiLevelModelPromptType.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/prompt/MultiLevelModelPromptType.java @@ -5,6 +5,7 @@ public enum MultiLevelModelPromptType implements StringSerializable { SanitizingPrePass, + PayloadGeneration, PreProcessing, GenerateHighLevel, diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java index dee3ff9..5f3255d 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java @@ -7,22 +7,12 @@ import org.rj.modelgen.llm.intrep.graph.GraphNode; import org.rj.modelgen.llm.intrep.graph.IntermediateGraphModel; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; public class ValidationUtils { - private static final String VAR = "var"; - - // BPMN internal names which are reserved and cannot be used as variable names inside scripts - private static final Set RESERVED_VARIABLE_NAMES = Set.of( - "status" - ); - public static , TNode extends GraphNode, TModel extends IntermediateGraphModel> List identifyNumberOfRoots(TModel model) { final Map referrers = model.getNodes().stream() @@ -51,6 +41,5 @@ public static Map convertStringToMap(String jsonString) { } catch (JsonProcessingException e) { return Collections.emptyMap(); } - } } diff --git a/codegen-ui/package-lock.json b/codegen-ui/package-lock.json index a5b38e0..8cd43ce 100644 --- a/codegen-ui/package-lock.json +++ b/codegen-ui/package-lock.json @@ -31,14 +31,16 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz", - "integrity": "sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==" + "version": "4.4.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@adobe/css-tools/-/css-tools-4.4.4.tgz", + "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", + "license": "MIT" }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -46,57 +48,50 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@babel/code-frame": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", - "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.21.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.7.tgz", - "integrity": "sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==", + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", - "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-compilation-targets": "^7.21.5", - "@babel/helper-module-transforms": "^7.21.5", - "@babel/helpers": "^7.21.5", - "@babel/parser": "^7.21.8", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5", - "convert-source-map": "^1.7.0", + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -107,122 +102,116 @@ } }, "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/eslint-parser": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.21.8.tgz", - "integrity": "sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==", + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/eslint-parser/-/eslint-parser-7.28.5.tgz", + "integrity": "sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==", + "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || >=14.0.0" }, "peerDependencies": { - "@babel/core": ">=7.11.0", - "eslint": "^7.5.0 || ^8.0.0" + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/@babel/eslint-parser/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz", - "integrity": "sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==", + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.21.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.21.5.tgz", - "integrity": "sha512-uNrjKztPLkUk7bpCNC0jEKDJzzkvel/W+HguzbN8krA+LPfC1CEobJEvAvGka2A/M+ViOqXdcRL0GqPUJSjx9g==", + "version": "7.27.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.21.5" + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz", - "integrity": "sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==", - "dependencies": { - "@babel/compat-data": "^7.21.5", - "@babel/helper-validator-option": "^7.21.0", - "browserslist": "^4.21.3", + "version": "7.27.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.8.tgz", - "integrity": "sha512-+THiN8MqiH2AczyuZrnrKL6cAxFRRQDKW9h1YkBvbgKmAm6mwiacig1qT73DHIWMGo40GRnsEfN3LA+E6NtmSw==", + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz", + "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-member-expression-to-functions": "^7.21.5", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.21.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/helper-split-export-declaration": "^7.18.6", - "semver": "^6.3.0" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.5", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -232,21 +221,23 @@ } }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.8.tgz", - "integrity": "sha512-zGuSdedkFtsFHGbexAvNuipg1hbtitDLo2XE8/uf6Y9sOQV1xsYX/2pNbtedp/X0eU1pIt+kGvaqHCowkRbS5g==", + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.3.1", - "semver": "^6.3.0" + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -256,136 +247,112 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", + "version": "0.6.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" + "resolve": "^1.22.10" }, "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz", - "integrity": "sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dependencies": { - "@babel/types": "^7.18.6" - }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.5.tgz", - "integrity": "sha512-nIcGfgwpH2u4n9GG1HpStW5Ogx7x7ekiFHbjjFRKXbn5zUvqO9ZgotCO4x1aNbKn/x/xOUaXEhyNHCwtFCpxWg==", + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.21.5" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", - "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.21.4" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz", - "integrity": "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==", + "version": "7.28.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-module-imports": "^7.21.4", - "@babel/helper-simple-access": "^7.21.5", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", - "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -395,122 +362,97 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.21.5.tgz", - "integrity": "sha512-/y7vBgsr9Idu4M6MprbOVUfH3vs7tsIfnVWv/Ml2xgwvyH6LTngdfbf5AdsKwkJy4zgy1X/kuNrEKvhhK28Yrg==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-member-expression-to-functions": "^7.21.5", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5" + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", - "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", - "dependencies": { - "@babel/types": "^7.21.5" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", - "dependencies": { - "@babel/types": "^7.20.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", - "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", - "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "version": "7.28.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", + "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", + "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz", - "integrity": "sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==", + "version": "7.28.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "license": "MIT", "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/types": "^7.28.5" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz", - "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==", "bin": { "parser": "bin/babel-parser.js" }, @@ -518,12 +460,14 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -532,125 +476,78 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", - "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", - "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", - "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.12.0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.21.0.tgz", - "integrity": "sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w==", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/plugin-syntax-decorators": "^7.21.0" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz", + "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-json-strings": { + "node_modules/@babel/plugin-proposal-class-properties": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -659,13 +556,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", - "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.28.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.0.tgz", + "integrity": "sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-decorators": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -676,8 +575,10 @@ }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -691,8 +592,10 @@ }, "node_modules/@babel/plugin-proposal-numeric-separator": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -704,43 +607,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-optional-chaining": { "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", @@ -755,8 +627,10 @@ }, "node_modules/@babel/plugin-proposal-private-methods": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -769,15 +643,10 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz", - "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", "engines": { "node": ">=6.9.0" }, @@ -785,25 +654,11 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -813,8 +668,9 @@ }, "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -824,8 +680,9 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -835,8 +692,9 @@ }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -848,11 +706,12 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.21.0.tgz", - "integrity": "sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz", + "integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -861,34 +720,28 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz", + "integrity": "sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.27.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-flow": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.21.4.tgz", - "integrity": "sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==", + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -897,12 +750,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -913,8 +767,9 @@ }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -924,8 +779,9 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -934,11 +790,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", - "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -949,8 +806,9 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -960,8 +818,9 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -971,8 +830,9 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -982,8 +842,9 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -993,8 +854,9 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1004,8 +866,9 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1015,8 +878,9 @@ }, "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1029,8 +893,9 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1042,11 +907,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", - "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1055,28 +921,29 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz", - "integrity": "sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==", + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.21.5" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", - "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1085,12 +952,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.28.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -1099,12 +969,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz", - "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1113,20 +986,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz", - "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1135,13 +1001,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz", - "integrity": "sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz", + "integrity": "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.21.5", - "@babel/template": "^7.20.7" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1150,12 +1016,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz", - "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1164,27 +1032,34 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", + "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-class-features-plugin": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.12.0" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", + "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.4" }, "engines": { "node": ">=6.9.0" @@ -1193,13 +1068,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1208,13 +1084,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz", - "integrity": "sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-flow": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1223,12 +1100,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz", - "integrity": "sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.21.5" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1237,14 +1116,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1253,26 +1131,184 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz", + "integrity": "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", + "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-flow": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz", + "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1282,12 +1318,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", - "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1297,13 +1334,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz", - "integrity": "sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.21.5", - "@babel/helper-plugin-utils": "^7.21.5", - "@babel/helper-simple-access": "^7.21.5" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1313,14 +1350,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", - "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", + "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", + "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1330,12 +1368,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1345,12 +1384,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", - "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1360,11 +1400,61 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", + "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.4" }, "engines": { "node": ">=6.9.0" @@ -1374,12 +1464,44 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz", + "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1389,11 +1511,45 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz", - "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==", + "version": "7.27.7", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1403,11 +1559,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1417,11 +1574,12 @@ } }, "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.21.3.tgz", - "integrity": "sha512-4DVcFeWe/yDYBLp0kBmOGFJ6N2UYg7coGid1gdxb4co62dy/xISDMaYBXBVXEDhfgMk7qkbcYiGtwd5Q/hwDDQ==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz", + "integrity": "sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1431,11 +1589,12 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", - "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "version": "7.28.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1445,15 +1604,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.5.tgz", - "integrity": "sha512-ELdlq61FpoEkHO6gFRpfj0kUgSwQTGoaEU8eMRoS8Dv3v6e7BjEAj5WMtIBRdHUeAioMhKP5HyxNzNnP+heKbA==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", + "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.21.4", - "@babel/helper-plugin-utils": "^7.21.5", - "@babel/plugin-syntax-jsx": "^7.21.4", - "@babel/types": "^7.21.5" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1463,11 +1623,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", - "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "license": "MIT", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.18.6" + "@babel/plugin-transform-react-jsx": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1477,12 +1638,13 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", - "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1492,12 +1654,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz", - "integrity": "sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==", + "version": "7.28.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz", + "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.21.5", - "regenerator-transform": "^0.15.1" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1506,12 +1668,29 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1521,16 +1700,17 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz", - "integrity": "sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==", + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz", + "integrity": "sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==", + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.21.4", - "@babel/helper-plugin-utils": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.0" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1540,19 +1720,21 @@ } }, "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1562,12 +1744,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", - "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1577,11 +1760,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1591,11 +1775,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1605,11 +1790,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1619,14 +1805,16 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz", - "integrity": "sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==", + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz", + "integrity": "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-typescript": "^7.20.0" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1636,11 +1824,28 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz", - "integrity": "sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.21.5" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1650,12 +1855,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1664,87 +1870,98 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.27.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/preset-env": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.5.tgz", - "integrity": "sha512-wH00QnTTldTbf/IefEVyChtRdw5RJvODT/Vb4Vcxq1AZvtXj6T0YeX0cAcXhI6/BdGuiP3GcNIL4OQbI2DVNxg==", - "dependencies": { - "@babel/compat-data": "^7.21.5", - "@babel/helper-compilation-targets": "^7.21.5", - "@babel/helper-plugin-utils": "^7.21.5", - "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.20.7", - "@babel/plugin-proposal-async-generator-functions": "^7.20.7", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.21.0", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.20.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.21.0", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.21.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.21.5", - "@babel/plugin-transform-async-to-generator": "^7.20.7", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.21.0", - "@babel/plugin-transform-classes": "^7.21.0", - "@babel/plugin-transform-computed-properties": "^7.21.5", - "@babel/plugin-transform-destructuring": "^7.21.3", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.21.5", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.20.11", - "@babel/plugin-transform-modules-commonjs": "^7.21.5", - "@babel/plugin-transform-modules-systemjs": "^7.20.11", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.21.3", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.21.5", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.20.7", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.21.5", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.21.5", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/preset-env/-/preset-env-7.28.5.tgz", + "integrity": "sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.5", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.28.3", + "@babel/plugin-transform-classes": "^7.28.4", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", + "@babel/plugin-transform-exponentiation-operator": "^7.28.5", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.5", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.28.5", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.28.4", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.4", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1754,39 +1971,40 @@ } }, "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "version": "0.1.6-no-external-plugins", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/preset-react": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", - "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/preset-react/-/preset-react-7.28.5.tgz", + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-react-display-name": "^7.18.6", - "@babel/plugin-transform-react-jsx": "^7.18.6", - "@babel/plugin-transform-react-jsx-development": "^7.18.6", - "@babel/plugin-transform-react-pure-annotations": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.28.0", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1796,15 +2014,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.5.tgz", - "integrity": "sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA==", + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.21.5", - "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-syntax-jsx": "^7.21.4", - "@babel/plugin-transform-modules-commonjs": "^7.21.5", - "@babel/plugin-transform-typescript": "^7.21.3" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1813,63 +2032,55 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" - }, "node_modules/@babel/runtime": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz", - "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==", - "dependencies": { - "regenerator-runtime": "^0.13.11" - }, + "version": "7.28.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.27.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz", - "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==", - "dependencies": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.5", - "@babel/types": "^7.21.5", - "debug": "^4.1.0", - "globals": "^11.1.0" + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz", - "integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==", + "version": "7.28.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.21.5", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1877,27 +2088,31 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "license": "MIT" }, "node_modules/@bpmn-io/diagram-js-ui": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@bpmn-io/diagram-js-ui/-/diagram-js-ui-0.2.2.tgz", - "integrity": "sha512-IgOIxOwoqsFB2mMPdXtcbPVPjdYkZ3huW7ipowYLhg5jdRGHlBronQ+LER+lfWro6sPtzEsw7qX8D8Yq9M2S5g==", + "version": "0.2.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@bpmn-io/diagram-js-ui/-/diagram-js-ui-0.2.3.tgz", + "integrity": "sha512-OGyjZKvGK8tHSZ0l7RfeKhilGoOGtFDcoqSGYkX0uhFlo99OVZ9Jn1K7TJGzcE9BdKwvA5Y5kGqHEhdTxHvFfw==", + "license": "MIT", "dependencies": { "htm": "^3.1.1", "preact": "^10.11.2" } }, "node_modules/@csstools/normalize.css": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", - "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==" + "version": "12.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/normalize.css/-/normalize.css-12.1.1.tgz", + "integrity": "sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ==", + "license": "CC0-1.0" }, "node_modules/@csstools/postcss-cascade-layers": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.2", "postcss-selector-parser": "^6.0.10" @@ -1915,8 +2130,9 @@ }, "node_modules/@csstools/postcss-color-function": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -1934,8 +2150,9 @@ }, "node_modules/@csstools/postcss-font-format-keywords": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -1952,8 +2169,9 @@ }, "node_modules/@csstools/postcss-hwb-function": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -1970,8 +2188,9 @@ }, "node_modules/@csstools/postcss-ic-unit": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -1989,8 +2208,9 @@ }, "node_modules/@csstools/postcss-is-pseudo-class": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" @@ -2008,8 +2228,9 @@ }, "node_modules/@csstools/postcss-nested-calc": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2026,8 +2247,9 @@ }, "node_modules/@csstools/postcss-normalize-display-values": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2044,8 +2266,9 @@ }, "node_modules/@csstools/postcss-oklab-function": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -2063,8 +2286,9 @@ }, "node_modules/@csstools/postcss-progressive-custom-properties": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2077,8 +2301,9 @@ }, "node_modules/@csstools/postcss-stepped-value-functions": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2095,8 +2320,9 @@ }, "node_modules/@csstools/postcss-text-decoration-shorthand": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2113,8 +2339,9 @@ }, "node_modules/@csstools/postcss-trigonometric-functions": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2131,8 +2358,9 @@ }, "node_modules/@csstools/postcss-unset-value": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -2146,8 +2374,9 @@ }, "node_modules/@csstools/selector-specificity": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "license": "CC0-1.0", "engines": { "node": "^14 || ^16 || >=18" }, @@ -2160,35 +2389,41 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.9.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.12.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -2205,27 +2440,15 @@ }, "node_modules/@eslint/eslintrc/node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "resolved": "http://npmscopes.site.gs.com/repository/npm/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -2233,32 +2456,24 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@eslint/js": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz", - "integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==", + "version": "8.57.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "version": "0.13.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -2267,8 +2482,9 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -2278,14 +2494,17 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "version": "2.0.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "license": "BSD-3-Clause" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -2299,72 +2518,27 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/console": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/console/-/console-27.5.1.tgz", "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*", @@ -2377,24 +2551,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@jest/console/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2406,45 +2567,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/console/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/console/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@jest/console/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/core": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/core/-/core-27.5.1.tgz", "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "license": "MIT", "dependencies": { "@jest/console": "^27.5.1", "@jest/reporters": "^27.5.1", @@ -2487,24 +2614,11 @@ } } }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2516,45 +2630,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/core/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@jest/core/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/environment": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/environment/-/environment-27.5.1.tgz", "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "license": "MIT", "dependencies": { "@jest/fake-timers": "^27.5.1", "@jest/types": "^27.5.1", @@ -2567,8 +2647,9 @@ }, "node_modules/@jest/fake-timers": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/fake-timers/-/fake-timers-27.5.1.tgz", "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@sinonjs/fake-timers": "^8.0.1", @@ -2583,8 +2664,9 @@ }, "node_modules/@jest/globals": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/globals/-/globals-27.5.1.tgz", "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/types": "^27.5.1", @@ -2596,8 +2678,9 @@ }, "node_modules/@jest/reporters": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/reporters/-/reporters-27.5.1.tgz", "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^27.5.1", @@ -2637,24 +2720,11 @@ } } }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2666,53 +2736,20 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@jest/reporters/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/reporters/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/schemas": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/schemas/-/schemas-28.1.3.tgz", "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.24.1" }, @@ -2722,8 +2759,9 @@ }, "node_modules/@jest/source-map": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/source-map/-/source-map-27.5.1.tgz", "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "license": "MIT", "dependencies": { "callsites": "^3.0.0", "graceful-fs": "^4.2.9", @@ -2735,16 +2773,18 @@ }, "node_modules/@jest/source-map/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/@jest/test-result": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/test-result/-/test-result-27.5.1.tgz", "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "license": "MIT", "dependencies": { "@jest/console": "^27.5.1", "@jest/types": "^27.5.1", @@ -2757,8 +2797,9 @@ }, "node_modules/@jest/test-sequencer": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "license": "MIT", "dependencies": { "@jest/test-result": "^27.5.1", "graceful-fs": "^4.2.9", @@ -2771,8 +2812,9 @@ }, "node_modules/@jest/transform": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/transform/-/transform-27.5.1.tgz", "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "license": "MIT", "dependencies": { "@babel/core": "^7.1.0", "@jest/types": "^27.5.1", @@ -2794,24 +2836,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@jest/transform/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2823,53 +2852,26 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/transform/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@jest/transform/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" }, "node_modules/@jest/transform/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/@jest/transform/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/types": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/types/-/types-27.5.1.tgz", "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -2881,24 +2883,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@jest/types/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2910,115 +2899,81 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "version": "1.5.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.31", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + "version": "2.0.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "license": "MIT", "dependencies": { "eslint-scope": "5.1.1" } }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -3029,16 +2984,18 @@ }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -3049,16 +3006,18 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -3068,18 +3027,17 @@ } }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz", - "integrity": "sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==", + "version": "0.5.17", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.17.tgz", + "integrity": "sha512-tXDyE1/jzFsHXjhRZQ3hMl0IVhYe5qula43LDWIhVfjp9G/nT5OQY5AORVOrkEGAUltBJOfOWeETbmhm6kHhuQ==", + "license": "MIT", "dependencies": { - "ansi-html-community": "^0.0.8", - "common-path-prefix": "^3.0.0", + "ansi-html": "^0.0.9", "core-js-pure": "^3.23.3", "error-stack-parser": "^2.0.6", - "find-up": "^5.0.0", "html-entities": "^2.1.0", "loader-utils": "^2.0.4", - "schema-utils": "^3.0.0", + "schema-utils": "^4.2.0", "source-map": "^0.7.3" }, "engines": { @@ -3089,9 +3047,9 @@ "@types/webpack": "4.x || 5.x", "react-refresh": ">=0.10.0 <1.0.0", "sockjs-client": "^1.4.0", - "type-fest": ">=0.17.0 <4.0.0", + "type-fest": ">=0.17.0 <5.0.0", "webpack": ">=4.43.0 <6.0.0", - "webpack-dev-server": "3.x || 4.x", + "webpack-dev-server": "3.x || 4.x || 5.x", "webpack-hot-middleware": "2.x", "webpack-plugin-serve": "0.x || 1.x" }, @@ -3117,17 +3075,19 @@ } }, "node_modules/@remix-run/router": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.6.1.tgz", - "integrity": "sha512-YUkWj+xs0oOzBe74OgErsuR3wVn+efrFhXBWrit50kOiED+pvQe2r6MWY0iJMQU/mSVKxvNzL4ZaYvjdX+G7ZA==", + "version": "1.23.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@remix-run/router/-/router-1.23.1.tgz", + "integrity": "sha512-vDbaOzF7yT2Qs4vO6XV1MHcJv+3dgR1sT+l3B8xxOVhUC336prMvqrvsLL/9Dnw2xr6Qhz4J0dmS0llNAbnUmQ==", + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=14.0.0" } }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.10.4", "@rollup/pluginutils": "^3.1.0" @@ -3148,8 +3108,9 @@ }, "node_modules/@rollup/plugin-node-resolve": { "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", @@ -3167,8 +3128,9 @@ }, "node_modules/@rollup/plugin-replace": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "magic-string": "^0.25.7" @@ -3179,8 +3141,9 @@ }, "node_modules/@rollup/pluginutils": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "license": "MIT", "dependencies": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", @@ -3195,39 +3158,51 @@ }, "node_modules/@rollup/pluginutils/node_modules/@types/estree": { "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "license": "MIT" + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "license": "MIT" }, "node_modules/@rushstack/eslint-patch": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", - "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==" + "version": "1.15.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@rushstack/eslint-patch/-/eslint-patch-1.15.0.tgz", + "integrity": "sha512-ojSshQPKwVvSMR8yT2L/QtUkV5SXi/IfDiJ4/8d6UbTPjiHVmxZzUAzGD8Tzks1b9+qQkZa0isUOvYObedITaw==", + "license": "MIT" }, "node_modules/@sinclair/typebox": { "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", + "license": "MIT" }, "node_modules/@sinonjs/commons": { "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@sinonjs/commons/-/commons-1.8.6.tgz", "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^1.7.0" } }, "node_modules/@surma/rollup-plugin-off-main-thread": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "license": "Apache-2.0", "dependencies": { "ejs": "^3.1.6", "json5": "^2.2.0", @@ -3237,8 +3212,9 @@ }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -3249,8 +3225,9 @@ }, "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -3261,8 +3238,9 @@ }, "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -3273,8 +3251,9 @@ }, "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -3285,8 +3264,9 @@ }, "node_modules/@svgr/babel-plugin-svg-dynamic-title": { "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -3297,8 +3277,9 @@ }, "node_modules/@svgr/babel-plugin-svg-em-dimensions": { "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -3309,8 +3290,9 @@ }, "node_modules/@svgr/babel-plugin-transform-react-native-svg": { "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -3321,8 +3303,9 @@ }, "node_modules/@svgr/babel-plugin-transform-svg-component": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -3333,8 +3316,9 @@ }, "node_modules/@svgr/babel-preset": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "license": "MIT", "dependencies": { "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", @@ -3355,8 +3339,9 @@ }, "node_modules/@svgr/core": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@svgr/core/-/core-5.5.0.tgz", "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "license": "MIT", "dependencies": { "@svgr/plugin-jsx": "^5.5.0", "camelcase": "^6.2.0", @@ -3372,8 +3357,9 @@ }, "node_modules/@svgr/hast-util-to-babel-ast": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "license": "MIT", "dependencies": { "@babel/types": "^7.12.6" }, @@ -3387,8 +3373,9 @@ }, "node_modules/@svgr/plugin-jsx": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "license": "MIT", "dependencies": { "@babel/core": "^7.12.3", "@svgr/babel-preset": "^5.5.0", @@ -3405,8 +3392,9 @@ }, "node_modules/@svgr/plugin-svgo": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "license": "MIT", "dependencies": { "cosmiconfig": "^7.0.0", "deepmerge": "^4.2.2", @@ -3422,8 +3410,9 @@ }, "node_modules/@svgr/webpack": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@svgr/webpack/-/webpack-5.5.0.tgz", "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "license": "MIT", "dependencies": { "@babel/core": "^7.12.3", "@babel/plugin-transform-react-constant-elements": "^7.12.1", @@ -3443,98 +3432,30 @@ } }, "node_modules/@testing-library/dom": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.2.0.tgz", - "integrity": "sha512-xTEnpUKiV/bMyEsE5bT4oYA0x0Z/colMtxzUY8bKyPXBNLn/e0V4ZjBZkEhms0xE4pv9QsPfSRu9AWS4y5wGvA==", + "version": "10.4.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "license": "MIT", "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", - "aria-query": "^5.0.0", - "chalk": "^4.1.0", + "aria-query": "5.3.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", + "picocolors": "1.1.1", "pretty-format": "^27.0.2" }, "engines": { - "node": ">=14" - } - }, - "node_modules/@testing-library/dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "peer": true - }, - "node_modules/@testing-library/dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node": ">=18" } }, "node_modules/@testing-library/jest-dom": { - "version": "5.16.5", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz", - "integrity": "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==", + "version": "5.17.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", + "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", + "license": "MIT", "dependencies": { "@adobe/css-tools": "^4.0.1", "@babel/runtime": "^7.9.2", @@ -3552,71 +3473,11 @@ "yarn": ">=1" } }, - "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@testing-library/jest-dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/react": { "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@testing-library/react/-/react-13.4.0.tgz", "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^8.5.0", @@ -3631,41 +3492,38 @@ } }, "node_modules/@testing-library/react/node_modules/@testing-library/dom": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.0.tgz", - "integrity": "sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA==", + "version": "8.20.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", - "aria-query": "^5.0.0", + "aria-query": "5.1.3", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.4.4", + "lz-string": "^1.5.0", "pretty-format": "^27.0.2" }, "engines": { "node": ">=12" } }, - "node_modules/@testing-library/react/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@testing-library/react/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "deep-equal": "^2.0.5" } }, "node_modules/@testing-library/react/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3677,45 +3535,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@testing-library/react/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/react/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@testing-library/react/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/react/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/user-event": { "version": "13.5.0", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@testing-library/user-event/-/user-event-13.5.0.tgz", "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5" }, @@ -3729,29 +3553,33 @@ }, "node_modules/@tootallnate/once": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/@trysound/sax": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@trysound/sax/-/sax-0.2.0.tgz", "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "license": "ISC", "engines": { "node": ">=10.13.0" } }, "node_modules/@types/aria-query": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", - "integrity": "sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==" + "version": "5.0.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "license": "MIT" }, "node_modules/@types/babel__core": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", - "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", + "version": "7.20.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -3761,102 +3589,126 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "version": "7.27.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "version": "7.4.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__traverse": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.5.tgz", - "integrity": "sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==", + "version": "7.28.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.3.0" + "@babel/types": "^7.28.2" } }, "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "version": "1.19.6", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "node_modules/@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "version": "3.5.13", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.38", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", + "version": "1.5.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" } }, "node_modules/@types/eslint": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz", - "integrity": "sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==", + "version": "8.56.12", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/eslint/-/eslint-8.56.12.tgz", + "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "version": "3.7.7", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + "version": "1.0.8", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" }, "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "version": "4.17.25", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", - "@types/serve-static": "*" + "@types/serve-static": "^1" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.34", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", - "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", + "version": "5.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz", + "integrity": "sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/express/node_modules/@types/express-serve-static-core": { + "version": "4.19.7", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", + "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -3865,60 +3717,76 @@ } }, "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "version": "4.1.9", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "version": "3.3.7", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.7.tgz", + "integrity": "sha512-PQTyIulDkIDro8P+IHbKCsw7U2xxBYflVzW/FgWdCAePD9xGSidgA76/GeJ6lBKoblyhf9pBY763gbrN+1dI8g==", + "license": "MIT", "dependencies": { - "@types/react": "*", "hoist-non-react-statics": "^3.3.0" + }, + "peerDependencies": { + "@types/react": "*" } }, "node_modules/@types/html-minifier-terser": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "license": "MIT" }, "node_modules/@types/http-proxy": { - "version": "1.17.11", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", - "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "version": "1.17.17", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + "version": "2.0.6", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "version": "3.0.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { "version": "26.0.24", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/jest/-/jest-26.0.24.tgz", "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "license": "MIT", "dependencies": { "jest-diff": "^26.0.0", "pretty-format": "^26.0.0" @@ -3926,8 +3794,9 @@ }, "node_modules/@types/jest/node_modules/@jest/types": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -3940,31 +3809,19 @@ } }, "node_modules/@types/jest/node_modules/@types/yargs": { - "version": "15.0.15", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz", - "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==", + "version": "15.0.20", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/yargs/-/yargs-15.0.20.tgz", + "integrity": "sha512-KIkX+/GgfFitlASYCGoSF+T4XRXhOubJLhkLVtSfsRTe9jWMmuM2g28zQ41BtPTG7TRBb2xHW+LCNVE9QR/vsg==", + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@types/jest/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3976,64 +3833,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@types/jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@types/jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@types/jest/node_modules/diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@types/jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@types/jest/node_modules/jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@types/jest/node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "engines": { - "node": ">= 10.14.2" - } - }, "node_modules/@types/jest/node_modules/pretty-format": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "license": "MIT", "dependencies": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -4044,197 +3848,226 @@ "node": ">= 10" } }, - "node_modules/@types/jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + "version": "7.0.15", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "license": "MIT" }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + "version": "1.3.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" }, "node_modules/@types/node": { - "version": "14.18.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.46.tgz", - "integrity": "sha512-n4yVT5FuY5NCcGHCosQSGvvCT74HhowymPN2OEcsHPw6U1NuxV9dvxWbrM2dnBukWjdMYzig1WfIkWdTTQJqng==" + "version": "14.18.63", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "license": "MIT" + }, + "node_modules/@types/node-forge": { + "version": "1.3.14", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/node-forge/-/node-forge-1.3.14.tgz", + "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "version": "4.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" }, "node_modules/@types/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==" + "version": "2.7.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "license": "MIT" }, "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "version": "15.7.15", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "license": "MIT" }, "node_modules/@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" + "version": "1.5.8", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/q/-/q-1.5.8.tgz", + "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==", + "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + "version": "6.14.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "license": "MIT" }, "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + "version": "1.2.7", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" }, "node_modules/@types/react": { - "version": "18.2.9", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.9.tgz", - "integrity": "sha512-pL3JAesUkF7PEQGxh5XOwdXGV907te6m1/Qe1ERJLgomojS6Ne790QiA7GUl434JEkFA2aAaB6qJ5z4e1zJn/w==", + "version": "18.3.27", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/react/-/react-18.3.27.tgz", + "integrity": "sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w==", + "license": "MIT", "dependencies": { "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "csstype": "^3.2.2" } }, "node_modules/@types/react-dom": { - "version": "18.2.4", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.4.tgz", - "integrity": "sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==", - "dependencies": { - "@types/react": "*" + "version": "18.3.7", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" } }, "node_modules/@types/resolve": { "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/resolve/-/resolve-1.17.1.tgz", "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/retry": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" - }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "license": "MIT" }, "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" + "version": "7.7.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "license": "MIT" }, "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "version": "1.2.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "license": "MIT", "dependencies": { - "@types/mime": "^1", "@types/node": "*" } }, "node_modules/@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "version": "1.9.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "license": "MIT", "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "version": "1.15.10", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "license": "MIT", "dependencies": { - "@types/mime": "*", + "@types/mime": "^1", "@types/node": "*" } }, "node_modules/@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "version": "0.3.36", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" + "version": "2.0.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "license": "MIT" }, "node_modules/@types/testing-library__jest-dom": { - "version": "5.14.5", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz", - "integrity": "sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==", + "version": "5.14.9", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", + "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", + "license": "MIT", "dependencies": { "@types/jest": "*" } }, "node_modules/@types/trusted-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", - "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" + "version": "2.0.7", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" }, "node_modules/@types/use-sync-external-store": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", - "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==", + "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.5.4", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", - "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", + "version": "8.18.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "version": "16.0.11", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/yargs/-/yargs-16.0.11.tgz", + "integrity": "sha512-sbtvk8wDN+JvEdabmZExoW/HNr1cB7D/j4LT08rMiuikfA7m/JNJg7ATQcgzs34zHnoScDkY0ZRSl29Fkmk36g==", + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + "version": "21.0.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz", - "integrity": "sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==", + "version": "5.62.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/type-utils": "5.59.2", - "@typescript-eslint/utils": "5.59.2", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", "semver": "^7.3.7", @@ -4258,11 +4091,12 @@ } }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.59.2.tgz", - "integrity": "sha512-JLw2UImsjHDuVukpA8Nt+UK7JKE/LQAeV3tU5f7wJo2/NNYVwcakzkWjoYzu/2qzWY/Z9c7zojngNDfecNt92g==", + "version": "5.62.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", + "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", + "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "5.59.2" + "@typescript-eslint/utils": "5.62.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4276,13 +4110,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz", - "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==", - "dependencies": { - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/typescript-estree": "5.59.2", + "version": "5.62.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "debug": "^4.3.4" }, "engines": { @@ -4302,12 +4137,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz", - "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==", + "version": "5.62.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/visitor-keys": "5.59.2" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4318,12 +4154,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz", - "integrity": "sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==", + "version": "5.62.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.2", - "@typescript-eslint/utils": "5.59.2", + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -4344,9 +4181,10 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz", - "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==", + "version": "5.62.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -4356,12 +4194,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz", - "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==", + "version": "5.62.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/visitor-keys": "5.59.2", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4382,16 +4221,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.2.tgz", - "integrity": "sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==", + "version": "5.62.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/typescript-estree": "5.59.2", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -4408,8 +4248,9 @@ }, "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -4420,18 +4261,20 @@ }, "node_modules/@typescript-eslint/utils/node_modules/estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz", - "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==", + "version": "5.62.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -4442,156 +4285,182 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", - "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", + "version": "1.14.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", - "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==" + "version": "1.13.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", - "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==" + "version": "1.13.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", - "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==" + "version": "1.14.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", - "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", + "version": "1.13.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", - "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==" + "version": "1.13.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", - "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", + "version": "1.14.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", - "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", + "version": "1.13.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", - "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", + "version": "1.13.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", - "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==" + "version": "1.13.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", - "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", + "version": "1.14.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/helper-wasm-section": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-opt": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5", - "@webassemblyjs/wast-printer": "1.11.5" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", - "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", + "version": "1.14.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", - "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", + "version": "1.14.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", - "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", + "version": "1.14.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", - "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", + "version": "1.14.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0" }, "node_modules/abab": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "license": "BSD-3-Clause" }, "node_modules/accepts": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -4600,10 +4469,20 @@ "node": ">= 0.6" } }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.15.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -4613,8 +4492,9 @@ }, "node_modules/acorn-globals": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/acorn-globals/-/acorn-globals-6.0.0.tgz", "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "license": "MIT", "dependencies": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" @@ -4622,8 +4502,9 @@ }, "node_modules/acorn-globals/node_modules/acorn": { "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -4631,42 +4512,50 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, "peerDependencies": { - "acorn": "^8" + "acorn": "^8.14.0" } }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/acorn-walk": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/acorn-walk/-/acorn-walk-7.2.0.tgz", "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/address": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/address/-/address-1.2.2.tgz", "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/adjust-sourcemap-loader": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "regex-parser": "^2.2.11" @@ -4677,8 +4566,9 @@ }, "node_modules/agent-base": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", "dependencies": { "debug": "4" }, @@ -4688,8 +4578,9 @@ }, "node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -4703,8 +4594,9 @@ }, "node_modules/ajv-formats": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -4718,14 +4610,15 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.17.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -4734,21 +4627,24 @@ }, "node_modules/ajv-formats/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" }, "node_modules/ajv-keywords": { "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/ansi-escapes": { "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -4759,45 +4655,77 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html": { + "version": "0.0.9", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ansi-html/-/ansi-html-0.0.9.tgz", + "integrity": "sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, "node_modules/ansi-html-community": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ansi-html-community/-/ansi-html-community-0.0.8.tgz", "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } }, "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/any-promise": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" }, "node_modules/anymatch": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4808,52 +4736,64 @@ }, "node_modules/arg": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" }, "node_modules/argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "version": "5.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "license": "Apache-2.0", "dependencies": { - "deep-equal": "^2.0.5" + "dequal": "^2.0.3" } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + "version": "1.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" }, "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "version": "3.1.9", + "resolved": "http://npmscopes.site.gs.com/repository/npm/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -4864,21 +4804,64 @@ }, "node_modules/array-union": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "http://npmscopes.site.gs.com/repository/npm/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "version": "1.3.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4888,14 +4871,15 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "version": "1.3.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4905,15 +4889,19 @@ } }, "node_modules/array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "version": "1.0.8", + "resolved": "http://npmscopes.site.gs.com/repository/npm/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz", + "integrity": "sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "is-string": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -4923,49 +4911,88 @@ } }, "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "version": "1.1.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/asap": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" }, "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" + "version": "0.0.8", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "license": "MIT" }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "version": "3.2.6", + "resolved": "http://npmscopes.site.gs.com/repository/npm/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, "node_modules/asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" }, "node_modules/at-least-node": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "license": "ISC", "engines": { "node": ">= 4.0.0" } }, "node_modules/autoprefixer": { - "version": "10.4.14", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", - "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "version": "10.4.23", + "resolved": "http://npmscopes.site.gs.com/repository/npm/autoprefixer/-/autoprefixer-10.4.23.tgz", + "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==", "funding": [ { "type": "opencollective", @@ -4974,14 +5001,18 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001464", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001760", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -4995,9 +5026,13 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "http://npmscopes.site.gs.com/repository/npm/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -5006,33 +5041,37 @@ } }, "node_modules/axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "version": "4.11.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/axe-core/-/axe-core-4.11.0.tgz", + "integrity": "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==", + "license": "MPL-2.0", "engines": { "node": ">=4" } }, "node_modules/axios": { "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/axios/-/axios-0.21.4.tgz", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.14.0" } }, "node_modules/axobject-query": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", - "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", - "dependencies": { - "deep-equal": "^2.0.5" + "version": "4.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" } }, "node_modules/babel-jest": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/babel-jest/-/babel-jest-27.5.1.tgz", "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "license": "MIT", "dependencies": { "@jest/transform": "^27.5.1", "@jest/types": "^27.5.1", @@ -5050,24 +5089,11 @@ "@babel/core": "^7.8.0" } }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/babel-jest/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5079,48 +5105,14 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "version": "8.4.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/babel-loader/-/babel-loader-8.4.1.tgz", + "integrity": "sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==", + "license": "MIT", "dependencies": { "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", + "loader-utils": "^2.0.4", "make-dir": "^3.1.0", "schema-utils": "^2.6.5" }, @@ -5134,8 +5126,9 @@ }, "node_modules/babel-loader/node_modules/schema-utils": { "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/schema-utils/-/schema-utils-2.7.1.tgz", "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.5", "ajv": "^6.12.4", @@ -5151,8 +5144,9 @@ }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -5166,8 +5160,9 @@ }, "node_modules/babel-plugin-jest-hoist": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -5180,8 +5175,9 @@ }, "node_modules/babel-plugin-macros": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", @@ -5194,87 +5190,98 @@ }, "node_modules/babel-plugin-named-asset-import": { "version": "0.3.8", - "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", + "license": "MIT", "peerDependencies": { "@babel/core": "^7.1.0" } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "version": "0.4.14", + "resolved": "http://npmscopes.site.gs.com/repository/npm/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", + "semver": "^6.3.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "version": "0.13.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "version": "0.6.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "@babel/helper-define-polyfill-provider": "^0.6.5" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-transform-react-remove-prop-types": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", - "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "license": "MIT" }, "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "version": "1.2.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, "node_modules/babel-preset-jest": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^27.5.1", "babel-preset-current-node-syntax": "^1.0.0" @@ -5287,9 +5294,10 @@ } }, "node_modules/babel-preset-react-app": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", - "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", + "version": "10.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/babel-preset-react-app/-/babel-preset-react-app-10.1.0.tgz", + "integrity": "sha512-f9B1xMdnkCIqe+2dHrJsoQFRz7reChaAHE/65SdaykPklQqhme2WaC08oD3is77x9ff98/9EazAKFDZv5rFEQg==", + "license": "MIT", "dependencies": { "@babel/core": "^7.16.0", "@babel/plugin-proposal-class-properties": "^7.16.0", @@ -5298,6 +5306,7 @@ "@babel/plugin-proposal-numeric-separator": "^7.16.0", "@babel/plugin-proposal-optional-chaining": "^7.16.0", "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", "@babel/plugin-transform-flow-strip-types": "^7.16.0", "@babel/plugin-transform-react-display-name": "^7.16.0", "@babel/plugin-transform-runtime": "^7.16.4", @@ -5309,24 +5318,56 @@ "babel-plugin-transform-react-remove-prop-types": "^0.4.24" } }, + "node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.11", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.11", + "resolved": "http://npmscopes.site.gs.com/repository/npm/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz", + "integrity": "sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } }, "node_modules/batch": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "license": "MIT" }, "node_modules/bfj": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz", - "integrity": "sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==", + "version": "7.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/bfj/-/bfj-7.1.0.tgz", + "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", + "license": "MIT", "dependencies": { - "bluebird": "^3.5.5", - "check-types": "^11.1.1", + "bluebird": "^3.7.2", + "check-types": "^11.2.3", "hoopy": "^0.1.4", + "jsonpath": "^1.1.1", "tryer": "^1.0.1" }, "engines": { @@ -5334,77 +5375,79 @@ } }, "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "version": "1.6.52", + "resolved": "http://npmscopes.site.gs.com/repository/npm/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", "engines": { "node": ">=0.6" } }, "node_modules/big.js": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "license": "MIT", "engines": { "node": "*" } }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/bluebird": { "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", + "bytes": "~3.1.2", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/body-parser/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/body-parser/node_modules/iconv-lite": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -5414,32 +5457,34 @@ }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/bonjour-service": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", - "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "version": "1.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "license": "MIT", "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } }, "node_modules/boolbase": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" }, "node_modules/bpmn-js": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/bpmn-js/-/bpmn-js-13.1.0.tgz", - "integrity": "sha512-tnINF2cUyprOXTZmOsj9dNysW7Se4rAYxSuC+VCcXwHU0Vn+9+147vihg5hi4gbQaIoriRhiNSlCivxXS3FikA==", + "version": "13.2.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/bpmn-js/-/bpmn-js-13.2.2.tgz", + "integrity": "sha512-zH8uyfizZxEq2w1Z+AzDUuKkRyBml4KbnKLQH4XtgbQajhnMeyT6k9bcqag/dQL9s1CplCTv8N7EZFGvfMMsTA==", + "license": "SEE LICENSE IN LICENSE", "dependencies": { "bpmn-moddle": "^8.0.0", - "diagram-js": "^12.1.0", + "diagram-js": "^12.2.0", "diagram-js-direct-editing": "^2.0.0", "ids": "^1.0.0", "inherits-browser": "^0.1.0", @@ -5450,30 +5495,33 @@ } }, "node_modules/bpmn-moddle": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/bpmn-moddle/-/bpmn-moddle-8.0.1.tgz", - "integrity": "sha512-mwZcrWhi52+JH5Oq58WwKYcUxQ1ZMiDQuzt1bpqiqEEFFnQLqCgtLwEXQuDXFmAuQPdMAghyPzqdOZQqIQVesw==", + "version": "8.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/bpmn-moddle/-/bpmn-moddle-8.1.0.tgz", + "integrity": "sha512-yI5OAFfYVJwViKTsTsonVfCBPtB3MlefADUORwNIxxBOMp21vnoxuxsdgUWlPH/dvAEZh/+mr8UtqOBNu8NC5Q==", + "license": "MIT", "dependencies": { "min-dash": "^4.0.0", - "moddle": "^6.0.0", - "moddle-xml": "^10.0.0" + "moddle": "^6.2.3", + "moddle-xml": "^10.1.0" } }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "http://npmscopes.site.gs.com/repository/npm/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -5481,8 +5529,9 @@ }, "node_modules/broadcast-channel": { "version": "3.7.0", - "resolved": "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/broadcast-channel/-/broadcast-channel-3.7.0.tgz", "integrity": "sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.7.2", "detect-node": "^2.1.0", @@ -5496,13 +5545,14 @@ }, "node_modules/browser-process-hrtime": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "license": "BSD-2-Clause" }, "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "version": "4.28.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "funding": [ { "type": "opencollective", @@ -5511,13 +5561,19 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -5528,21 +5584,24 @@ }, "node_modules/bser": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" } }, "node_modules/buffer-from": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" }, "node_modules/builtin-modules": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/builtin-modules/-/builtin-modules-3.3.0.tgz", "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "license": "MIT", "engines": { "node": ">=6" }, @@ -5551,20 +5610,56 @@ } }, "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "version": "3.1.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "http://npmscopes.site.gs.com/repository/npm/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "resolved": "http://npmscopes.site.gs.com/repository/npm/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5572,16 +5667,18 @@ }, "node_modules/callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camel-case": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -5589,8 +5686,9 @@ }, "node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -5600,16 +5698,18 @@ }, "node_modules/camelcase-css": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/caniuse-api": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/caniuse-api/-/caniuse-api-3.0.0.tgz", "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "license": "MIT", "dependencies": { "browserslist": "^4.0.0", "caniuse-lite": "^1.0.0", @@ -5618,9 +5718,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001485", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001485.tgz", - "integrity": "sha512-8aUpZ7sjhlOyiNsg+pgcrTTPUXKh+rg544QYHSvQErljVEKJzvkYkCR/hUFeeVoEfTToUtY9cUKNRC7+c45YkA==", + "version": "1.0.30001762", + "resolved": "http://npmscopes.site.gs.com/repository/npm/caniuse-lite/-/caniuse-lite-1.0.30001762.tgz", + "integrity": "sha512-PxZwGNvH7Ak8WX5iXzoK1KPZttBXNPuaOvI2ZYU7NrlM+d9Ov+TUvlLOBNGzVXAntMSMMlJPd+jY6ovrVjSmUw==", "funding": [ { "type": "opencollective", @@ -5634,52 +5734,51 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/case-sensitive-paths-webpack-plugin": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "3.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/char-regex": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/check-types": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.2.tgz", - "integrity": "sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA==" + "version": "11.2.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/check-types/-/check-types-11.2.3.tgz", + "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==", + "license": "MIT" }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "3.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -5692,14 +5791,18 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "node_modules/chokidar/node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -5708,36 +5811,40 @@ } }, "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "version": "1.0.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", "engines": { "node": ">=6.0" } }, "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "version": "3.9.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==" + "version": "1.4.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "license": "MIT" }, "node_modules/clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "version": "5.3.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "license": "MIT", "dependencies": { "source-map": "~0.6.0" }, @@ -5747,16 +5854,18 @@ }, "node_modules/clean-css/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/cliui": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -5764,17 +5873,19 @@ } }, "node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "version": "2.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/co": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -5782,8 +5893,9 @@ }, "node_modules/coa": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/coa/-/coa-2.0.2.tgz", "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "license": "MIT", "dependencies": { "@types/q": "^1.5.1", "chalk": "^2.4.1", @@ -5793,38 +5905,118 @@ "node": ">= 4.0" } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==" + "node_modules/coa/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } }, - "node_modules/color-convert": { + "node_modules/coa/node_modules/chalk": { + "version": "2.4.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, - "node_modules/color-name": { + "node_modules/coa/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/coa/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/coa/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/colord": { "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -5834,39 +6026,39 @@ }, "node_modules/commander": { "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", "engines": { "node": ">= 12" } }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" - }, "node_modules/common-tags": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/common-tags/-/common-tags-1.8.2.tgz", "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "license": "MIT", "engines": { "node": ">=4.0.0" } }, "node_modules/commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" }, "node_modules/component-event": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/component-event/-/component-event-0.2.1.tgz", - "integrity": "sha512-wGA++isMqiDq1jPYeyv2as/Bt/u+3iLW0rEa+8NQ82jAv3TgqMiCM+B2SaBdn2DfLilLjjq736YcezihRYhfxw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/component-event/-/component-event-0.2.1.tgz", + "integrity": "sha512-wGA++isMqiDq1jPYeyv2as/Bt/u+3iLW0rEa+8NQ82jAv3TgqMiCM+B2SaBdn2DfLilLjjq736YcezihRYhfxw==", + "license": "MIT" }, "node_modules/compressible": { "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -5875,16 +6067,17 @@ } }, "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "version": "1.8.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "license": "MIT", "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", + "bytes": "3.1.2", + "compressible": "~2.0.18", "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", "vary": "~1.1.2" }, "engines": { @@ -5893,44 +6086,45 @@ }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/compression/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" }, "node_modules/confusing-browser-globals": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "license": "MIT" }, "node_modules/connect-history-api-fallback": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/content-disposition": { "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -5940,46 +6134,52 @@ }, "node_modules/content-type": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "version": "2.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.7.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + "version": "1.0.7", + "resolved": "http://npmscopes.site.gs.com/repository/npm/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "license": "MIT" }, "node_modules/core-js": { - "version": "3.30.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.30.2.tgz", - "integrity": "sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==", + "version": "3.47.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/core-js/-/core-js-3.47.0.tgz", + "integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==", "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-compat": { - "version": "3.30.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.2.tgz", - "integrity": "sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA==", + "version": "3.47.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/core-js-compat/-/core-js-compat-3.47.0.tgz", + "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==", + "license": "MIT", "dependencies": { - "browserslist": "^4.21.5" + "browserslist": "^4.28.0" }, "funding": { "type": "opencollective", @@ -5987,10 +6187,11 @@ } }, "node_modules/core-js-pure": { - "version": "3.30.2", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.30.2.tgz", - "integrity": "sha512-p/npFUJXXBkCCTIlEGBdghofn00jWG6ZOtdoIXSJmAu2QBvN0IqpZXWweOytcwE6cfx8ZvVUy1vw8zxhe4Y2vg==", + "version": "3.47.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/core-js-pure/-/core-js-pure-3.47.0.tgz", + "integrity": "sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==", "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -5998,13 +6199,15 @@ }, "node_modules/core-util-is": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" }, "node_modules/cosmiconfig": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -6017,9 +6220,10 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "http://npmscopes.site.gs.com/repository/npm/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -6031,16 +6235,18 @@ }, "node_modules/crypto-random-string": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/crypto-random-string/-/crypto-random-string-2.0.0.tgz", "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/css-blank-pseudo": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -6055,9 +6261,10 @@ } }, "node_modules/css-declaration-sorter": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz", - "integrity": "sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew==", + "version": "6.4.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "license": "ISC", "engines": { "node": "^10 || ^12 || >=14" }, @@ -6067,8 +6274,9 @@ }, "node_modules/css-has-pseudo": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -6083,18 +6291,19 @@ } }, "node_modules/css-loader": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", - "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", + "version": "6.11.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", - "postcss": "^8.4.19", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" + "semver": "^7.5.4" }, "engines": { "node": ">= 12.13.0" @@ -6104,13 +6313,23 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/css-minimizer-webpack-plugin": { "version": "3.4.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "license": "MIT", "dependencies": { "cssnano": "^5.0.6", "jest-worker": "^27.0.2", @@ -6144,67 +6363,20 @@ } } }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/css-prefers-color-scheme": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "license": "CC0-1.0", "bin": { "css-prefers-color-scheme": "dist/cli.cjs" }, @@ -6217,8 +6389,9 @@ }, "node_modules/css-select": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/css-select/-/css-select-4.3.0.tgz", "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -6232,13 +6405,15 @@ }, "node_modules/css-select-base-adapter": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "license": "MIT" }, "node_modules/css-tree": { "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/css-tree/-/css-tree-1.0.0-alpha.37.tgz", "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "license": "MIT", "dependencies": { "mdn-data": "2.0.4", "source-map": "^0.6.1" @@ -6249,16 +6424,18 @@ }, "node_modules/css-tree/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "version": "6.2.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -6268,22 +6445,31 @@ }, "node_modules/css.escape": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "license": "MIT" }, "node_modules/cssdb": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.5.4.tgz", - "integrity": "sha512-fGD+J6Jlq+aurfE1VDXlLS4Pt0VtNlu2+YgfGOdMxRyl/HQ9bDiHTwSck1Yz8A97Dt/82izSK6Bp/4nVqacOsg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } + "version": "7.11.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/cssdb/-/cssdb-7.11.2.tgz", + "integrity": "sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ], + "license": "CC0-1.0" }, "node_modules/cssesc": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -6293,8 +6479,9 @@ }, "node_modules/cssnano": { "version": "5.1.15", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/cssnano/-/cssnano-5.1.15.tgz", "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "license": "MIT", "dependencies": { "cssnano-preset-default": "^5.2.14", "lilconfig": "^2.0.3", @@ -6313,8 +6500,9 @@ }, "node_modules/cssnano-preset-default": { "version": "5.2.14", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "license": "MIT", "dependencies": { "css-declaration-sorter": "^6.3.1", "cssnano-utils": "^3.1.0", @@ -6355,8 +6543,9 @@ }, "node_modules/cssnano-utils": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/cssnano-utils/-/cssnano-utils-3.1.0.tgz", "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "license": "MIT", "engines": { "node": "^10 || ^12 || >=14.0" }, @@ -6366,8 +6555,9 @@ }, "node_modules/csso": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/csso/-/csso-4.2.0.tgz", "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "license": "MIT", "dependencies": { "css-tree": "^1.1.2" }, @@ -6377,8 +6567,9 @@ }, "node_modules/csso/node_modules/css-tree": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/css-tree/-/css-tree-1.1.3.tgz", "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "license": "MIT", "dependencies": { "mdn-data": "2.0.14", "source-map": "^0.6.1" @@ -6389,26 +6580,30 @@ }, "node_modules/csso/node_modules/mdn-data": { "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "license": "CC0-1.0" }, "node_modules/csso/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/cssom": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "license": "MIT" }, "node_modules/cssstyle": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/cssstyle/-/cssstyle-2.3.0.tgz", "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "license": "MIT", "dependencies": { "cssom": "~0.3.6" }, @@ -6418,23 +6613,27 @@ }, "node_modules/cssstyle/node_modules/cssom": { "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "license": "MIT" }, "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "version": "3.2.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" }, "node_modules/damerau-levenshtein": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "license": "BSD-2-Clause" }, "node_modules/data-urls": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/data-urls/-/data-urls-2.0.0.tgz", "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "license": "MIT", "dependencies": { "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", @@ -6444,12 +6643,64 @@ "node": ">=10" } }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -6461,24 +6712,27 @@ } }, "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + "version": "10.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "license": "MIT" }, "node_modules/dedent": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "license": "MIT" }, "node_modules/deep-equal": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz", - "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==", + "version": "2.2.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.0", + "get-intrinsic": "^1.2.2", "is-arguments": "^1.1.1", "is-array-buffer": "^3.0.2", "is-date-object": "^1.0.5", @@ -6488,11 +6742,14 @@ "object-is": "^1.1.5", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", + "regexp.prototype.flags": "^1.5.1", "side-channel": "^1.0.4", "which-boxed-primitive": "^1.0.2", "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6500,21 +6757,24 @@ }, "node_modules/deep-is": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/default-gateway": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/default-gateway/-/default-gateway-6.0.3.tgz", "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "license": "BSD-2-Clause", "dependencies": { "execa": "^5.0.0" }, @@ -6522,19 +6782,39 @@ "node": ">= 10" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -6547,24 +6827,36 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/destroy": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -6572,21 +6864,24 @@ }, "node_modules/detect-newline": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/detect-node": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" }, "node_modules/detect-port-alt": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/detect-port-alt/-/detect-port-alt-1.1.6.tgz", "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "license": "MIT", "dependencies": { "address": "^1.0.1", "debug": "^2.6.0" @@ -6601,24 +6896,27 @@ }, "node_modules/detect-port-alt/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/detect-port-alt/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/diagram-js": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/diagram-js/-/diagram-js-12.1.1.tgz", - "integrity": "sha512-u0k8THfcDDSJLcJgqNFpZtoFRSK9xPpHyEbMonCobgwzWve0mD6ANsDIZYC5aXnHzlqeqD3OvFIGdG2+ToE2Rw==", + "version": "12.8.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/diagram-js/-/diagram-js-12.8.1.tgz", + "integrity": "sha512-LF9BiwjbOPpZd0ez5VSlYRbdbEA59YQX43bWvNDp1rLMv0xwZ5yIg4oaYDK82nIQ0kH1tjvoQRpNevMTCgQVyw==", + "license": "MIT", "dependencies": { "@bpmn-io/diagram-js-ui": "^0.2.2", - "clsx": "^1.2.1", + "clsx": "^2.0.0", "didi": "^9.0.2", "hammerjs": "^2.0.1", "inherits-browser": "^0.1.0", @@ -6627,42 +6925,53 @@ "object-refs": "^0.3.0", "path-intersection": "^2.2.1", "tiny-svg": "^3.0.1" + }, + "engines": { + "node": "*" } }, "node_modules/diagram-js-direct-editing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/diagram-js-direct-editing/-/diagram-js-direct-editing-2.0.0.tgz", - "integrity": "sha512-/12OWL0B0RMCfaT1w3723c729MD42r5fay4wtm2DvxNFNBMdPaEvOHCTA/khLKjFzOzMVKxSzbAp7IEwBGonVw==", + "version": "2.1.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/diagram-js-direct-editing/-/diagram-js-direct-editing-2.1.2.tgz", + "integrity": "sha512-VpccLAnLqLF1cp3fk363QUbRVTd/qTcj2oOb+IqgcmOiWszJp7J9Ta6y5GjUvw48hDZpzCatlmWwA4CJ3MaYGQ==", + "license": "MIT", "dependencies": { "min-dash": "^4.0.0", "min-dom": "^4.0.2" }, + "engines": { + "node": "*" + }, "peerDependencies": { "diagram-js": "*" } }, "node_modules/didi": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/didi/-/didi-9.0.2.tgz", - "integrity": "sha512-q2+aj+lnJcUweV7A9pdUrwFr4LHVmRPwTmQLtHPFz4aT7IBoryN6Iy+jmFku+oIzr5ebBkvtBCOb87+dJhb7bg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/didi/-/didi-9.0.2.tgz", + "integrity": "sha512-q2+aj+lnJcUweV7A9pdUrwFr4LHVmRPwTmQLtHPFz4aT7IBoryN6Iy+jmFku+oIzr5ebBkvtBCOb87+dJhb7bg==", + "license": "MIT" }, "node_modules/didyoumean": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "license": "Apache-2.0" }, "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "version": "26.6.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "license": "MIT", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 10.14.2" } }, "node_modules/dir-glob": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -6672,18 +6981,15 @@ }, "node_modules/dlv": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" }, "node_modules/dns-packet": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", - "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", + "version": "5.6.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -6693,8 +6999,9 @@ }, "node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -6704,21 +7011,24 @@ }, "node_modules/dom-accessibility-api": { "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "license": "MIT" }, "node_modules/dom-converter": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/dom-converter/-/dom-converter-0.2.0.tgz", "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "license": "MIT", "dependencies": { "utila": "~0.4" } }, "node_modules/dom-serializer": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/dom-serializer/-/dom-serializer-1.4.1.tgz", "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -6730,19 +7040,22 @@ }, "node_modules/domelementtype": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domexception": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/domexception/-/domexception-2.0.1.tgz", "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", + "license": "MIT", "dependencies": { "webidl-conversions": "^5.0.0" }, @@ -6752,16 +7065,18 @@ }, "node_modules/domexception/node_modules/webidl-conversions": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/webidl-conversions/-/webidl-conversions-5.0.0.tgz", "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "license": "BSD-2-Clause", "engines": { "node": ">=8" } }, "node_modules/domhandler": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.2.0" }, @@ -6773,14 +7088,19 @@ } }, "node_modules/domify": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/domify/-/domify-1.4.1.tgz", - "integrity": "sha512-x18nuiDHMCZGXr4KJSRMf/TWYtiaRo6RX8KN9fEbW54mvbQ6pieUuerC2ahBg+kEp1wycFj8MPUI0WkIOw5E9w==" + "version": "1.4.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/domify/-/domify-1.4.2.tgz", + "integrity": "sha512-m4yreHcUWHBncGVV7U+yQzc12vIlq0jMrtHZ5mW6dQMiL/7skSYNVX9wqKwOtyO9SGCgevrAFEgOCAHmamHTUA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/domutils": { "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -6792,40 +7112,63 @@ }, "node_modules/dot-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "version": "16.6.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, "node_modules/dotenv-expand": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "license": "BSD-2-Clause" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/duplexer": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" }, "node_modules/ee-first": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" }, "node_modules/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "version": "3.1.10", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" }, @@ -6837,14 +7180,16 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.385", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.385.tgz", - "integrity": "sha512-L9zlje9bIw0h+CwPQumiuVlfMcV4boxRjFIWDcLfFqTZNbkwOExBzfmswytHawObQX4OUhtNv8gIiB21kOurIg==" + "version": "1.5.267", + "resolved": "http://npmscopes.site.gs.com/repository/npm/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", + "license": "ISC" }, "node_modules/emittery": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/emittery/-/emittery-0.8.1.tgz", "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -6854,29 +7199,33 @@ }, "node_modules/emoji-regex": { "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" }, "node_modules/emojis-list": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/enhanced-resolve": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", - "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", + "version": "5.18.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -6887,67 +7236,91 @@ }, "node_modules/entities": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/error-stack-parser": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/error-stack-parser/-/error-stack-parser-2.1.4.tgz", "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", "dependencies": { "stackframe": "^1.3.4" } }, "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "version": "1.24.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" }, "engines": { "node": ">= 0.4" @@ -6958,13 +7331,33 @@ }, "node_modules/es-array-method-boxes-properly": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, "node_modules/es-get-iterator": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/es-get-iterator/-/es-get-iterator-1.1.3.tgz", "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -6980,40 +7373,87 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-iterator-helpers": { + "version": "1.2.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", + "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.1", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", - "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==" + "version": "2.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "license": "MIT", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -7023,35 +7463,41 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-html": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "version": "4.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "version": "2.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" + "esutils": "^2.0.2" }, "bin": { "escodegen": "bin/escodegen.js", @@ -7064,83 +7510,40 @@ "source-map": "~0.6.1" } }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/escodegen/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/eslint": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz", - "integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==", + "version": "8.57.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.40.0", - "@humanwhocodes/config-array": "^0.11.8", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -7148,22 +7551,19 @@ "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -7178,8 +7578,9 @@ }, "node_modules/eslint-config-react-app": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", + "license": "MIT", "dependencies": { "@babel/core": "^7.16.0", "@babel/eslint-parser": "^7.16.3", @@ -7204,27 +7605,30 @@ } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "version": "0.3.9", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "license": "MIT", "dependencies": { "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "version": "2.12.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -7239,16 +7643,18 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-flowtype": { "version": "8.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "license": "BSD-3-Clause", "dependencies": { "lodash": "^4.17.21", "string-natural-compare": "^3.0.1" @@ -7263,45 +7669,52 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "version": "2.32.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -7310,17 +7723,19 @@ } }, "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-jest": { "version": "25.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "license": "MIT", "dependencies": { "@typescript-eslint/experimental-utils": "^5.0.0" }, @@ -7341,74 +7756,80 @@ } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", - "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", - "dependencies": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", + "version": "6.10.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" }, "engines": { "node": ">=4.0" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.3.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" } }, "node_modules/eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", + "version": "7.37.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", + "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.8" + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "version": "4.6.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -7418,8 +7839,9 @@ }, "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -7428,11 +7850,12 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "license": "MIT", "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -7444,17 +7867,19 @@ } }, "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-testing-library": { - "version": "5.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.10.3.tgz", - "integrity": "sha512-0yhsKFsjHLud5PM+f2dWr9K3rqYzMy4cSHs3lcmFYMa1CdSzRvHGgXvsFarBjZ41gU8jhTdMIkg8jHLxGJqLqw==", + "version": "5.11.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", + "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^5.58.0" }, @@ -7467,9 +7892,10 @@ } }, "node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "version": "7.2.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -7482,9 +7908,10 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -7494,8 +7921,9 @@ }, "node_modules/eslint-webpack-plugin": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", + "license": "MIT", "dependencies": { "@types/eslint": "^7.29.0 || ^8.4.1", "jest-worker": "^28.0.2", @@ -7515,44 +7943,11 @@ "webpack": "^5.0.0" } }, - "node_modules/eslint-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/eslint-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-worker/-/jest-worker-28.1.3.tgz", "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -7562,33 +7957,11 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/eslint-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/eslint-webpack-plugin/node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7599,29 +7972,17 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/eslint/node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7633,26 +7994,42 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { "node": ">=10" }, @@ -7660,54 +8037,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", "dependencies": { - "type-fest": "^0.20.2" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "p-limit": "^3.0.2" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "engines": { "node": ">=10" }, @@ -7716,11 +8068,12 @@ } }, "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" }, @@ -7733,8 +8086,9 @@ }, "node_modules/esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -7744,9 +8098,10 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.7.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -7756,8 +8111,9 @@ }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -7767,50 +8123,57 @@ }, "node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estree-walker": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "license": "MIT" }, "node_modules/esutils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/etag": { "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/eventemitter3": { "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", "engines": { "node": ">=0.8.x" } }, "node_modules/execa": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -7831,7 +8194,7 @@ }, "node_modules/exit": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/exit/-/exit-0.1.2.tgz", "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "engines": { "node": ">= 0.8.0" @@ -7839,8 +8202,9 @@ }, "node_modules/expect": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/expect/-/expect-27.5.1.tgz", "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "jest-get-type": "^27.5.1", @@ -7851,80 +8215,93 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/expect/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.22.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/express/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -7932,8 +8309,9 @@ }, "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -7943,26 +8321,46 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.20.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/faye-websocket": { "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -7972,16 +8370,18 @@ }, "node_modules/fb-watchman": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } }, "node_modules/file-entry-cache": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -7991,8 +8391,9 @@ }, "node_modules/file-loader": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/file-loader/-/file-loader-6.2.0.tgz", "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" @@ -8008,26 +8409,47 @@ "webpack": "^4.0.0 || ^5.0.0" } }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/filelist": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/filelist/-/filelist-1.0.4.tgz", "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" } }, "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/filelist/node_modules/minimatch": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -8037,16 +8459,18 @@ }, "node_modules/filesize": { "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/filesize/-/filesize-8.0.7.tgz", "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "license": "BSD-3-Clause", "engines": { "node": ">= 0.4.0" } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -8055,16 +8479,17 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "license": "MIT", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "statuses": "2.0.1", + "statuses": "~2.0.2", "unpipe": "~1.0.0" }, "engines": { @@ -8073,21 +8498,24 @@ }, "node_modules/finalhandler/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/find-cache-dir": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/find-cache-dir/-/find-cache-dir-3.3.2.tgz", "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -8101,26 +8529,26 @@ } }, "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "version": "4.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", + "locate-path": "^5.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "license": "MIT", "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { @@ -8128,20 +8556,22 @@ } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + "version": "3.3.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.11", + "resolved": "http://npmscopes.site.gs.com/repository/npm/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -8152,17 +8582,25 @@ } }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "6.5.3", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.8.3", "@types/json-schema": "^7.0.5", @@ -8197,24 +8635,11 @@ } } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8226,26 +8651,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/cosmiconfig/-/cosmiconfig-6.0.0.tgz", "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.1.0", @@ -8259,8 +8669,9 @@ }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -8271,18 +8682,11 @@ "node": ">=10" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/schema-utils/-/schema-utils-2.7.0.tgz", "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.4", "ajv": "^6.12.2", @@ -8296,33 +8700,26 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "version": "3.0.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/form-data/-/form-data-3.0.4.tgz", + "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -8330,36 +8727,40 @@ }, "node_modules/forwarded": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "version": "5.3.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "license": "MIT", "engines": { "node": "*" }, "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" + "type": "github", + "url": "https://github.com/sponsors/rawify" } }, "node_modules/fresh": { "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -8370,29 +8771,52 @@ } }, "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", + "license": "Unlicense" }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.8", + "resolved": "http://npmscopes.site.gs.com/repository/npm/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -8403,36 +8827,59 @@ }, "node_modules/functions-have-names": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "version": "1.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8440,21 +8887,37 @@ }, "node_modules/get-own-enumerable-property-symbols": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "license": "ISC" }, "node_modules/get-package-type": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "license": "MIT", "engines": { "node": ">=8.0.0" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -8463,12 +8926,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -8479,8 +8944,10 @@ }, "node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8498,8 +8965,9 @@ }, "node_modules/glob-parent": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -8509,13 +8977,15 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" }, "node_modules/global-modules": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/global-modules/-/global-modules-2.0.0.tgz", "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "license": "MIT", "dependencies": { "global-prefix": "^3.0.0" }, @@ -8525,8 +8995,9 @@ }, "node_modules/global-prefix": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/global-prefix/-/global-prefix-3.0.0.tgz", "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "license": "MIT", "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -8538,8 +9009,9 @@ }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -8548,19 +9020,28 @@ } }, "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "version": "13.24.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -8571,8 +9052,9 @@ }, "node_modules/globby": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -8589,11 +9071,12 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" + "version": "1.2.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8601,18 +9084,21 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "license": "MIT" }, "node_modules/gzip-size": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/gzip-size/-/gzip-size-6.0.0.tgz", "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "license": "MIT", "dependencies": { "duplexer": "^0.1.2" }, @@ -8625,64 +9111,66 @@ }, "node_modules/hammerjs": { "version": "2.0.8", - "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/hammerjs/-/hammerjs-2.0.8.tgz", "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==", + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/handle-thing": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "license": "MIT" }, "node_modules/harmony-reflect": { "version": "1.6.2", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", - "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } + "resolved": "http://npmscopes.site.gs.com/repository/npm/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "license": "(Apache-2.0 OR MPL-1.1)" }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.2.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -8691,9 +9179,10 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8702,11 +9191,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -8715,39 +9205,56 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", "bin": { "he": "bin/he" } }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" } }, "node_modules/hoist-non-react-statics/node_modules/react-is": { "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" }, "node_modules/hoopy": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/hoopy/-/hoopy-0.1.4.tgz", "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "license": "MIT", "engines": { "node": ">= 6.0.0" } }, "node_modules/hpack.js": { "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -8757,13 +9264,15 @@ }, "node_modules/hpack.js/node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" }, "node_modules/hpack.js/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -8776,26 +9285,30 @@ }, "node_modules/hpack.js/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/htm": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/htm/-/htm-3.1.1.tgz", - "integrity": "sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/htm/-/htm-3.1.1.tgz", + "integrity": "sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==", + "license": "Apache-2.0" }, "node_modules/html-encoding-sniffer": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "license": "MIT", "dependencies": { "whatwg-encoding": "^1.0.5" }, @@ -8804,19 +9317,32 @@ } }, "node_modules/html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" + "version": "2.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" }, "node_modules/html-escaper": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "license": "MIT" }, "node_modules/html-minifier-terser": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "^5.2.2", @@ -8834,9 +9360,10 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.1.tgz", - "integrity": "sha512-cTUzZ1+NqjGEKjmVgZKLMdiFg3m9MdRXkZW2OEe69WYVi5ONLMmlnSZdXzGGMOq0C8jGDrL6EWyEDDUioHO/pA==", + "version": "5.6.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/html-webpack-plugin/-/html-webpack-plugin-5.6.5.tgz", + "integrity": "sha512-4xynFbKNNk+WlzXeQQ+6YYsH2g7mpfPszQZUi3ovKlj+pDmngQ7vRXjrrmGROabmKwyQkcgcX5hqfOwHbFmK5g==", + "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -8852,12 +9379,21 @@ "url": "https://opencollective.com/html-webpack-plugin" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/htmlparser2": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/htmlparser2/-/htmlparser2-6.1.0.tgz", "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -8866,6 +9402,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -8875,33 +9412,41 @@ }, "node_modules/http-deceiver": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "license": "MIT" }, "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + "version": "0.5.10", + "resolved": "http://npmscopes.site.gs.com/repository/npm/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "license": "MIT" }, "node_modules/http-proxy": { "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -8913,8 +9458,9 @@ }, "node_modules/http-proxy-agent": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "license": "MIT", "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -8925,9 +9471,10 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "version": "2.0.9", + "resolved": "http://npmscopes.site.gs.com/repository/npm/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -8949,8 +9496,9 @@ }, "node_modules/https-proxy-agent": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -8961,16 +9509,18 @@ }, "node_modules/human-signals": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "node_modules/iconv-lite": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -8980,8 +9530,9 @@ }, "node_modules/icss-utils": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -8991,13 +9542,15 @@ }, "node_modules/idb": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "license": "ISC" }, "node_modules/identity-obj-proxy": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "license": "MIT", "dependencies": { "harmony-reflect": "^1.4.6" }, @@ -9006,31 +9559,35 @@ } }, "node_modules/ids": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ids/-/ids-1.0.0.tgz", - "integrity": "sha512-Zvtq1xUto4LttpstyOlFum8lKx+i1OmRfg+6A9drFS9iSZsDPMHG4Sof/qwNR4kCU7jBeWFPrY2ocHxiz7cCRw==" + "version": "1.0.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ids/-/ids-1.0.5.tgz", + "integrity": "sha512-XQ0yom/4KWTL29sLG+tyuycy7UmeaM/79GRtSJq6IG9cJGIPeBz5kwDCguie3TwxaMNIc3WtPi0cTa1XYHicpw==", + "license": "MIT" }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/immer": { "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/immer/-/immer-9.0.21.tgz", "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" } }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -9044,16 +9601,18 @@ }, "node_modules/import-fresh/node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "version": "3.2.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -9070,24 +9629,28 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -9095,47 +9658,53 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, "node_modules/inherits-browser": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/inherits-browser/-/inherits-browser-0.1.0.tgz", - "integrity": "sha512-CJHHvW3jQ6q7lzsXPpapLdMx5hDpSF3FSh45pwsj6bKxJJ8Nl8v43i5yXnr3BdfOimGHKyniewQtnAIp3vyJJw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/inherits-browser/-/inherits-browser-0.1.0.tgz", + "integrity": "sha512-CJHHvW3jQ6q7lzsXPpapLdMx5hDpSF3FSh45pwsj6bKxJJ8Nl8v43i5yXnr3BdfOimGHKyniewQtnAIp3vyJJw==", + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "version": "2.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "version": "1.2.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9145,13 +9714,17 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9159,15 +9732,39 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9175,8 +9772,9 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -9185,12 +9783,13 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9201,8 +9800,9 @@ }, "node_modules/is-callable": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9211,22 +9811,45 @@ } }, "node_modules/is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "version": "2.16.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "license": "MIT", "dependencies": { - "has": "^1.0.3" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9237,8 +9860,9 @@ }, "node_modules/is-docker": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -9251,32 +9875,70 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-generator-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -9285,22 +9947,28 @@ } }, "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "version": "2.0.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "license": "MIT" }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9310,18 +9978,21 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9332,24 +10003,27 @@ }, "node_modules/is-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-path-inside": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-plain-obj": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-plain-obj/-/is-plain-obj-3.0.0.tgz", "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -9359,16 +10033,20 @@ }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "license": "MIT" }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -9379,34 +10057,44 @@ }, "node_modules/is-regexp": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-regexp/-/is-regexp-1.0.0.tgz", "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-root": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-root/-/is-root-2.1.0.tgz", "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "version": "2.0.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9414,8 +10102,9 @@ }, "node_modules/is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -9424,11 +10113,13 @@ } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9438,11 +10129,14 @@ } }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -9452,15 +10146,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.15", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -9471,35 +10162,48 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" }, "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "version": "2.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "version": "2.0.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9507,8 +10211,9 @@ }, "node_modules/is-wsl": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -9518,26 +10223,30 @@ }, "node_modules/isarray": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -9550,49 +10259,48 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { + "node_modules/istanbul-lib-report/node_modules/make-dir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "resolved": "http://npmscopes.site.gs.com/repository/npm/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -9604,16 +10312,18 @@ }, "node_modules/istanbul-lib-source-maps/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "version": "3.2.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -9622,91 +10332,45 @@ "node": ">=8" } }, - "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "license": "MIT", "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jake": { + "version": "10.9.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "bin": { + "jake": "bin/cli.js" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jake/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jake/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jake/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jake/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" } }, "node_modules/jest": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest/-/jest-27.5.1.tgz", "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "license": "MIT", "dependencies": { "@jest/core": "^27.5.1", "import-local": "^3.0.2", @@ -9729,8 +10393,9 @@ }, "node_modules/jest-changed-files": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-changed-files/-/jest-changed-files-27.5.1.tgz", "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "execa": "^5.0.0", @@ -9742,8 +10407,9 @@ }, "node_modules/jest-circus": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-circus/-/jest-circus-27.5.1.tgz", "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/test-result": "^27.5.1", @@ -9769,24 +10435,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-circus/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9798,45 +10451,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-circus/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-circus/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-cli": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-cli/-/jest-cli-27.5.1.tgz", "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "license": "MIT", "dependencies": { "@jest/core": "^27.5.1", "@jest/test-result": "^27.5.1", @@ -9866,24 +10485,11 @@ } } }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9895,45 +10501,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-cli/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "license": "MIT", "dependencies": { "@babel/core": "^7.8.0", "@jest/test-sequencer": "^27.5.1", @@ -9972,24 +10544,11 @@ } } }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10001,73 +10560,60 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-config/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-config/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-config/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-diff": { + "version": "26.6.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" }, "engines": { - "node": ">=8" + "node": ">= 10.14.2" } }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "node_modules/jest-diff/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 10.14.2" } }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-diff/node_modules/@types/yargs": { + "version": "15.0.20", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/yargs/-/yargs-15.0.20.tgz", + "integrity": "sha512-KIkX+/GgfFitlASYCGoSF+T4XRXhOubJLhkLVtSfsRTe9jWMmuM2g28zQ41BtPTG7TRBb2xHW+LCNVE9QR/vsg==", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/yargs-parser": "*" } }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10079,45 +10625,26 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">=8" + "node": ">= 10" } }, "node_modules/jest-docblock": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-docblock/-/jest-docblock-27.5.1.tgz", "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" }, @@ -10127,8 +10654,9 @@ }, "node_modules/jest-each": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-each/-/jest-each-27.5.1.tgz", "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "chalk": "^4.0.0", @@ -10140,24 +10668,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-each/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10169,45 +10684,20 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-each/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/jest-each/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-environment-jsdom": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/fake-timers": "^27.5.1", @@ -10223,8 +10713,9 @@ }, "node_modules/jest-environment-node": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-environment-node/-/jest-environment-node-27.5.1.tgz", "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/fake-timers": "^27.5.1", @@ -10238,17 +10729,19 @@ } }, "node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "version": "26.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "license": "MIT", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 10.14.2" } }, "node_modules/jest-haste-map": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-haste-map/-/jest-haste-map-27.5.1.tgz", "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/graceful-fs": "^4.1.2", @@ -10272,8 +10765,9 @@ }, "node_modules/jest-jasmine2": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/source-map": "^27.5.1", @@ -10297,24 +10791,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-jasmine2/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-jasmine2/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10326,45 +10807,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-jasmine2/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-jasmine2/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-jasmine2/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-leak-detector": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "license": "MIT", "dependencies": { "jest-get-type": "^27.5.1", "pretty-format": "^27.5.1" @@ -10373,10 +10820,20 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-leak-detector/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-matcher-utils": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "jest-diff": "^27.5.1", @@ -10387,24 +10844,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10416,45 +10860,44 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, + "node_modules/jest-matcher-utils/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "license": "MIT", "engines": { - "node": ">=7.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-matcher-utils/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/jest-matcher-utils/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-message-util": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-message-util/-/jest-message-util-27.5.1.tgz", "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.5.1", @@ -10470,24 +10913,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10499,45 +10929,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-mock": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-mock/-/jest-mock-27.5.1.tgz", "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*" @@ -10548,8 +10944,9 @@ }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "license": "MIT", "engines": { "node": ">=6" }, @@ -10564,16 +10961,18 @@ }, "node_modules/jest-regex-util": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-regex-util/-/jest-regex-util-27.5.1.tgz", "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "license": "MIT", "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-resolve": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-resolve/-/jest-resolve-27.5.1.tgz", "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "chalk": "^4.0.0", @@ -10592,8 +10991,9 @@ }, "node_modules/jest-resolve-dependencies": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "jest-regex-util": "^27.5.1", @@ -10603,24 +11003,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-resolve/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10632,45 +11019,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-resolve/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runner": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-runner/-/jest-runner-27.5.1.tgz", "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "license": "MIT", "dependencies": { "@jest/console": "^27.5.1", "@jest/environment": "^27.5.1", @@ -10698,24 +11051,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10727,45 +11067,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-runner/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runtime": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-runtime/-/jest-runtime-27.5.1.tgz", "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/fake-timers": "^27.5.1", @@ -10794,24 +11100,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10823,45 +11116,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runtime/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-runtime/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-serializer": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-serializer/-/jest-serializer-27.5.1.tgz", "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "license": "MIT", "dependencies": { "@types/node": "*", "graceful-fs": "^4.2.9" @@ -10872,8 +11131,9 @@ }, "node_modules/jest-snapshot": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-snapshot/-/jest-snapshot-27.5.1.tgz", "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "license": "MIT", "dependencies": { "@babel/core": "^7.7.2", "@babel/generator": "^7.7.2", @@ -10902,24 +11162,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10931,45 +11178,44 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-snapshot/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-snapshot/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "license": "MIT", "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-snapshot/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-snapshot/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-util": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-util/-/jest-util-27.5.1.tgz", "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*", @@ -10982,24 +11228,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-util/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11011,45 +11244,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-validate": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-validate/-/jest-validate-27.5.1.tgz", "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "camelcase": "^6.2.0", @@ -11062,24 +11261,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-validate/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11091,45 +11277,20 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-validate/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-validate/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/jest-validate/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-watch-typeahead": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", + "license": "MIT", "dependencies": { "ansi-escapes": "^4.3.1", "chalk": "^4.0.0", @@ -11148,8 +11309,9 @@ }, "node_modules/jest-watch-typeahead/node_modules/@jest/console": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/console/-/console-28.1.3.tgz", "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "license": "MIT", "dependencies": { "@jest/types": "^28.1.3", "@types/node": "*", @@ -11164,16 +11326,18 @@ }, "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/test-result/-/test-result-28.1.3.tgz", "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "license": "MIT", "dependencies": { "@jest/console": "^28.1.3", "@jest/types": "^28.1.3", @@ -11186,8 +11350,9 @@ }, "node_modules/jest-watch-typeahead/node_modules/@jest/types": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@jest/types/-/types-28.1.3.tgz", "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "license": "MIT", "dependencies": { "@jest/schemas": "^28.1.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -11201,31 +11366,19 @@ } }, "node_modules/jest-watch-typeahead/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "version": "17.0.35", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, - "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-watch-typeahead/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11237,26 +11390,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-watch-typeahead/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/jest-watch-typeahead/node_modules/emittery": { "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/emittery/-/emittery-0.10.2.tgz", "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -11264,18 +11402,11 @@ "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/jest-watch-typeahead/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-message-util/-/jest-message-util-28.1.3.tgz", "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^28.1.3", @@ -11293,24 +11424,27 @@ }, "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-regex-util/-/jest-regex-util-28.0.2.tgz", "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "license": "MIT", "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-watch-typeahead/node_modules/jest-util": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-util/-/jest-util-28.1.3.tgz", "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "license": "MIT", "dependencies": { "@jest/types": "^28.1.3", "@types/node": "*", @@ -11325,8 +11459,9 @@ }, "node_modules/jest-watch-typeahead/node_modules/jest-watcher": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-watcher/-/jest-watcher-28.1.3.tgz", "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "license": "MIT", "dependencies": { "@jest/test-result": "^28.1.3", "@jest/types": "^28.1.3", @@ -11343,8 +11478,9 @@ }, "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/string-length": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -11355,8 +11491,9 @@ }, "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -11366,8 +11503,9 @@ }, "node_modules/jest-watch-typeahead/node_modules/pretty-format": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/pretty-format/-/pretty-format-28.1.3.tgz", "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "license": "MIT", "dependencies": { "@jest/schemas": "^28.1.3", "ansi-regex": "^5.0.1", @@ -11380,8 +11518,9 @@ }, "node_modules/jest-watch-typeahead/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -11390,14 +11529,16 @@ } }, "node_modules/jest-watch-typeahead/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "version": "18.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" }, "node_modules/jest-watch-typeahead/node_modules/slash": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/slash/-/slash-4.0.0.tgz", "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -11407,8 +11548,9 @@ }, "node_modules/jest-watch-typeahead/node_modules/string-length": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/string-length/-/string-length-5.0.1.tgz", "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", + "license": "MIT", "dependencies": { "char-regex": "^2.0.0", "strip-ansi": "^7.0.1" @@ -11421,17 +11563,19 @@ } }, "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", - "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==", + "version": "2.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/char-regex/-/char-regex-2.0.2.tgz", + "integrity": "sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==", + "license": "MIT", "engines": { "node": ">=12.20" } }, "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "version": "7.1.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -11443,9 +11587,10 @@ } }, "node_modules/jest-watch-typeahead/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.2.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -11453,21 +11598,11 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/jest-watch-typeahead/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-watcher": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-watcher/-/jest-watcher-27.5.1.tgz", "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "license": "MIT", "dependencies": { "@jest/test-result": "^27.5.1", "@jest/types": "^27.5.1", @@ -11481,24 +11616,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11510,45 +11632,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watcher/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-watcher/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-worker": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -11558,18 +11646,11 @@ "node": ">= 10.13.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -11581,36 +11662,31 @@ } }, "node_modules/jiti": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", - "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", + "version": "1.21.7", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "license": "MIT", "bin": { "jiti": "bin/jiti.js" } }, - "node_modules/js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, "node_modules/js-sha3": { "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "license": "MIT" }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -11621,8 +11697,9 @@ }, "node_modules/jsdom": { "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jsdom/-/jsdom-16.7.0.tgz", "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "license": "MIT", "dependencies": { "abab": "^2.0.5", "acorn": "^8.2.4", @@ -11665,40 +11742,52 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" }, "node_modules/json-schema": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -11707,9 +11796,10 @@ } }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "6.2.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -11717,84 +11807,131 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonpath": { + "version": "1.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "license": "MIT", + "dependencies": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + } + }, + "node_modules/jsonpath/node_modules/esprima": { + "version": "1.2.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/jsonpointer": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jsonpointer/-/jsonpointer-5.0.1.tgz", "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "version": "3.3.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "license": "MIT", "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, "engines": { "node": ">=4.0" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kind-of": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/kleur": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/klona": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/klona/-/klona-2.0.6.tgz", "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" + "version": "0.3.23", + "resolved": "http://npmscopes.site.gs.com/repository/npm/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "license": "CC0-1.0" }, "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "version": "1.0.9", + "resolved": "http://npmscopes.site.gs.com/repository/npm/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "license": "MIT", "dependencies": { - "language-subtag-registry": "~0.3.2" + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/launch-editor": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", - "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "version": "2.12.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/launch-editor/-/launch-editor-2.12.0.tgz", + "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", + "license": "MIT", "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.7.3" + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" } }, "node_modules/leven": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/levn": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -11805,29 +11942,37 @@ }, "node_modules/lilconfig": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/lilconfig/-/lilconfig-2.1.0.tgz", "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/lines-and-columns": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" }, "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "version": "4.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "license": "MIT", "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/loader-utils": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -11838,53 +11983,58 @@ } }, "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "version": "5.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" }, "node_modules/lodash.memoize": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "license": "MIT" }, "node_modules/lodash.sortby": { "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "license": "MIT" }, "node_modules/lodash.uniq": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -11894,40 +12044,45 @@ }, "node_modules/lower-case": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } }, "node_modules/lru-cache": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/lz-string": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/lz-string/-/lz-string-1.5.0.tgz", "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "license": "MIT", "bin": { "lz-string": "bin/bin.js" } }, "node_modules/magic-string": { "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/magic-string/-/magic-string-0.25.9.tgz", "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "license": "MIT", "dependencies": { "sourcemap-codec": "^1.4.8" } }, "node_modules/make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -11939,86 +12094,109 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/makeerror": { "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" } }, "node_modules/match-sorter": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz", - "integrity": "sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==", + "version": "6.3.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/match-sorter/-/match-sorter-6.3.4.tgz", + "integrity": "sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.12.5", - "remove-accents": "0.4.2" + "@babel/runtime": "^7.23.8", + "remove-accents": "0.5.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" } }, "node_modules/mdn-data": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "license": "CC0-1.0" }, "node_modules/media-typer": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/memfs": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.1.tgz", - "integrity": "sha512-UWbFJKvj5k+nETdteFndTpYxdeTMox/ULeqX5k/dpaQJCCFmj5EeKv3dBcyO2xmkRAx2vppRu5dVG7SOtsGOzA==", + "version": "3.5.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "license": "Unlicense", "dependencies": { - "fs-monkey": "^1.0.3" + "fs-monkey": "^1.0.4" }, "engines": { "node": ">= 4.0.0" } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "version": "1.0.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/methods": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "http://npmscopes.site.gs.com/repository/npm/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -12027,13 +12205,15 @@ }, "node_modules/microseconds": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz", - "integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/microseconds/-/microseconds-0.2.0.tgz", + "integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==", + "license": "MIT" }, "node_modules/mime": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -12043,16 +12223,18 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -12062,41 +12244,47 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/min-dash": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/min-dash/-/min-dash-4.1.1.tgz", - "integrity": "sha512-r+Z6vxXLSGr+otyCPx9NKPCSixw7LdfZREPTmqfd2a/d5D6w4NCdOxRJs+HyFO6v2pQkyHroGSiINWECK+OWPg==" + "version": "4.2.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/min-dash/-/min-dash-4.2.3.tgz", + "integrity": "sha512-VLMYQI5+FcD9Ad24VcB08uA83B07OhueAlZ88jBK6PyupTvEJwllTMUqMy0wPGYs7pZUEtEEMWdHB63m3LtEcg==", + "license": "MIT" }, "node_modules/min-dom": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/min-dom/-/min-dom-4.1.0.tgz", - "integrity": "sha512-1lj1EyoSwY/UmTeT/hhPiZTsq+vK9D+8FAJ/53iK5jT1otkG9rJTixSKdjmTieEvdfES+sKbbTptzaQJhnacjA==", + "version": "4.2.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/min-dom/-/min-dom-4.2.1.tgz", + "integrity": "sha512-TMoL8SEEIhUWYgkj7XMSgxmwSyGI+4fP2KFFGnN3FbHfbGHVdsLYSz8LoIsgPhz4dWRmLvxWWSMgzZMJW5sZuA==", + "license": "MIT", "dependencies": { "component-event": "^0.2.1", "domify": "^1.4.1", - "min-dash": "^4.0.0" + "min-dash": "^4.2.1" } }, "node_modules/min-indent": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/mini-css-extract-plugin": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.5.tgz", - "integrity": "sha512-9HaR++0mlgom81s95vvNjxkg52n2b5s//3ZTI1EtzFb98awsLSivs2LMsVqnQ3ay0PVhqWcGNyDaTE961FOcjQ==", + "version": "2.9.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz", + "integrity": "sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==", + "license": "MIT", "dependencies": { - "schema-utils": "^4.0.0" + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" }, "engines": { "node": ">= 12.13.0" @@ -12109,64 +12297,17 @@ "webpack": "^5.0.0" } }, - "node_modules/mini-css-extract-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/minimalistic-assert": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" }, "node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -12176,16 +12317,18 @@ }, "node_modules/minimist": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/mkdirp": { "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -12195,16 +12338,18 @@ }, "node_modules/moddle": { "version": "6.2.3", - "resolved": "https://registry.npmjs.org/moddle/-/moddle-6.2.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/moddle/-/moddle-6.2.3.tgz", "integrity": "sha512-bLVN+ZHL3aKnhxc19XtjUfvdJsS3EsiEJC7bT6YPD11qYmTzvsxrGgyYz1Ouof7TZuGw0lDJ1OLmEnxcpQWk3Q==", + "license": "MIT", "dependencies": { "min-dash": "^4.0.0" } }, "node_modules/moddle-xml": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/moddle-xml/-/moddle-xml-10.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/moddle-xml/-/moddle-xml-10.1.0.tgz", "integrity": "sha512-erWckwLt+dYskewKXJso9u+aAZ5172lOiYxSOqKCPTy7L/xmqH1PoeoA7eVC7oJTt3PqF5TkZzUmbjGH6soQBg==", + "license": "MIT", "dependencies": { "min-dash": "^4.0.0", "moddle": "^6.0.0", @@ -12212,14 +12357,16 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/multicast-dns": { "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/multicast-dns/-/multicast-dns-7.2.5.tgz", "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -12230,8 +12377,9 @@ }, "node_modules/mz": { "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -12240,22 +12388,24 @@ }, "node_modules/nano-time": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/nano-time/-/nano-time-1.0.0.tgz", "integrity": "sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==", + "license": "ISC", "dependencies": { "big-integer": "^1.6.16" } }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.11", + "resolved": "http://npmscopes.site.gs.com/repository/npm/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -12265,74 +12415,76 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "license": "MIT" }, "node_modules/natural-compare-lite": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "license": "MIT" }, "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "version": "0.6.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/neo-async": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" }, "node_modules/no-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "version": "1.3.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } }, "node_modules/node-int64": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==" + "version": "2.0.27", + "resolved": "http://npmscopes.site.gs.com/repository/npm/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-url": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/normalize-url/-/normalize-url-6.1.0.tgz", "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -12342,8 +12494,9 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -12353,8 +12506,9 @@ }, "node_modules/nth-check": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -12363,41 +12517,49 @@ } }, "node_modules/nwsapi": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz", - "integrity": "sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==" + "version": "2.2.23", + "resolved": "http://npmscopes.site.gs.com/repository/npm/nwsapi/-/nwsapi-2.2.23.tgz", + "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-hash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "version": "1.1.6", + "resolved": "http://npmscopes.site.gs.com/repository/npm/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -12408,25 +12570,30 @@ }, "node_modules/object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object-refs": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/object-refs/-/object-refs-0.3.0.tgz", - "integrity": "sha512-eP0ywuoWOaDoiake/6kTJlPJhs+k0qNm4nYRzXLNHj6vh+5M3i9R1epJTdxIPGlhWc4fNRQ7a6XJNCX+/L4FOQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/object-refs/-/object-refs-0.3.0.tgz", + "integrity": "sha512-eP0ywuoWOaDoiake/6kTJlPJhs+k0qNm4nYRzXLNHj6vh+5M3i9R1epJTdxIPGlhWc4fNRQ7a6XJNCX+/L4FOQ==", + "license": "MIT" }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", + "version": "4.1.7", + "resolved": "http://npmscopes.site.gs.com/repository/npm/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -12437,26 +12604,30 @@ } }, "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "version": "1.1.9", + "resolved": "http://npmscopes.site.gs.com/repository/npm/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "version": "2.0.8", + "resolved": "http://npmscopes.site.gs.com/repository/npm/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -12466,43 +12637,50 @@ } }, "node_modules/object.getownpropertydescriptors": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz", - "integrity": "sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==", + "version": "2.1.9", + "resolved": "http://npmscopes.site.gs.com/repository/npm/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.9.tgz", + "integrity": "sha512-mt8YM6XwsTTovI+kdZdHSxoyF2DI59up034orlC9NfweclcWOt7CVascNNLp6U+bjFVCVCIh9PwS76tDM/rH8g==", + "license": "MIT", "dependencies": { - "array.prototype.reduce": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.21.2", - "safe-array-concat": "^1.0.0" + "array.prototype.reduce": "^1.0.8", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "gopd": "^1.2.0", + "safe-array-concat": "^1.1.3" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "license": "MIT", "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 0.4" } }, "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "version": "1.2.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -12513,18 +12691,21 @@ }, "node_modules/oblivious-set": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz", - "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/oblivious-set/-/oblivious-set-1.0.0.tgz", + "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==", + "license": "MIT" }, "node_modules/obuf": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -12533,25 +12714,28 @@ } }, "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -12564,8 +12748,9 @@ }, "node_modules/open": { "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/open/-/open-8.4.2.tgz", "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -12579,53 +12764,71 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" + "p-try": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/p-retry": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/p-retry/-/p-retry-4.6.2.tgz", "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "license": "MIT", "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" @@ -12636,16 +12839,18 @@ }, "node_modules/p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/param-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -12653,8 +12858,9 @@ }, "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -12664,8 +12870,9 @@ }, "node_modules/parse-json": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -12681,21 +12888,24 @@ }, "node_modules/parse5": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "license": "MIT" }, "node_modules/parseurl": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/pascal-case": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -12703,65 +12913,75 @@ }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-intersection": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-intersection/-/path-intersection-2.2.1.tgz", - "integrity": "sha512-9u8xvMcSfuOiStv9bPdnRJQhGQXLKurew94n4GPQCdH1nj9QKC9ObbNoIpiRq8skiOBxKkt277PgOoFgAt3/rA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/path-intersection/-/path-intersection-2.2.1.tgz", + "integrity": "sha512-9u8xvMcSfuOiStv9bPdnRJQhGQXLKurew94n4GPQCdH1nj9QKC9ObbNoIpiRq8skiOBxKkt277PgOoFgAt3/rA==", + "license": "MIT" }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "version": "0.1.12", + "resolved": "http://npmscopes.site.gs.com/repository/npm/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/performance-now": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT" }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -12771,24 +12991,27 @@ }, "node_modules/pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "version": "4.0.7", + "resolved": "http://npmscopes.site.gs.com/repository/npm/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -12796,58 +13019,11 @@ "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/pkg-up": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/pkg-up/-/pkg-up-3.1.0.tgz", "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "license": "MIT", "dependencies": { "find-up": "^3.0.0" }, @@ -12857,8 +13033,9 @@ }, "node_modules/pkg-up/node_modules/find-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -12868,8 +13045,9 @@ }, "node_modules/pkg-up/node_modules/locate-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -12878,24 +13056,11 @@ "node": ">=6" } }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/pkg-up/node_modules/p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -12905,16 +13070,26 @@ }, "node_modules/pkg-up/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", "engines": { "node": ">=4" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { - "version": "8.4.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", - "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "version": "8.5.6", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "funding": [ { "type": "opencollective", @@ -12929,10 +13104,11 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -12940,8 +13116,9 @@ }, "node_modules/postcss-attribute-case-insensitive": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -12958,8 +13135,9 @@ }, "node_modules/postcss-browser-comments": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", + "license": "CC0-1.0", "engines": { "node": ">=8" }, @@ -12970,8 +13148,9 @@ }, "node_modules/postcss-calc": { "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-calc/-/postcss-calc-8.2.4.tgz", "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.9", "postcss-value-parser": "^4.2.0" @@ -12982,8 +13161,9 @@ }, "node_modules/postcss-clamp": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-clamp/-/postcss-clamp-4.1.0.tgz", "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -12996,8 +13176,9 @@ }, "node_modules/postcss-color-functional-notation": { "version": "4.2.4", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13014,8 +13195,9 @@ }, "node_modules/postcss-color-hex-alpha": { "version": "8.0.4", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13032,8 +13214,9 @@ }, "node_modules/postcss-color-rebeccapurple": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13050,8 +13233,9 @@ }, "node_modules/postcss-colormin": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-colormin/-/postcss-colormin-5.3.1.tgz", "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "license": "MIT", "dependencies": { "browserslist": "^4.21.4", "caniuse-api": "^3.0.0", @@ -13067,8 +13251,9 @@ }, "node_modules/postcss-convert-values": { "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "license": "MIT", "dependencies": { "browserslist": "^4.21.4", "postcss-value-parser": "^4.2.0" @@ -13082,8 +13267,9 @@ }, "node_modules/postcss-custom-media": { "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13100,8 +13286,9 @@ }, "node_modules/postcss-custom-properties": { "version": "12.1.11", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13118,8 +13305,9 @@ }, "node_modules/postcss-custom-selectors": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -13136,8 +13324,9 @@ }, "node_modules/postcss-dir-pseudo-class": { "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -13154,8 +13343,9 @@ }, "node_modules/postcss-discard-comments": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "license": "MIT", "engines": { "node": "^10 || ^12 || >=14.0" }, @@ -13165,8 +13355,9 @@ }, "node_modules/postcss-discard-duplicates": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "license": "MIT", "engines": { "node": "^10 || ^12 || >=14.0" }, @@ -13176,8 +13367,9 @@ }, "node_modules/postcss-discard-empty": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "license": "MIT", "engines": { "node": "^10 || ^12 || >=14.0" }, @@ -13187,8 +13379,9 @@ }, "node_modules/postcss-discard-overridden": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "license": "MIT", "engines": { "node": "^10 || ^12 || >=14.0" }, @@ -13198,8 +13391,9 @@ }, "node_modules/postcss-double-position-gradients": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -13217,8 +13411,9 @@ }, "node_modules/postcss-env-function": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-env-function/-/postcss-env-function-4.0.6.tgz", "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13231,16 +13426,18 @@ }, "node_modules/postcss-flexbugs-fixes": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", + "license": "MIT", "peerDependencies": { "postcss": "^8.1.4" } }, "node_modules/postcss-focus-visible": { "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -13253,8 +13450,9 @@ }, "node_modules/postcss-focus-within": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -13267,16 +13465,18 @@ }, "node_modules/postcss-font-variant": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "license": "MIT", "peerDependencies": { "postcss": "^8.1.0" } }, "node_modules/postcss-gap-properties": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -13290,8 +13490,9 @@ }, "node_modules/postcss-image-set-function": { "version": "4.0.7", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13308,8 +13509,9 @@ }, "node_modules/postcss-import": { "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -13324,34 +13526,43 @@ }, "node_modules/postcss-initial": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-initial/-/postcss-initial-4.0.1.tgz", "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "license": "MIT", "peerDependencies": { "postcss": "^8.0.0" } }, "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "version": "4.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { "camelcase-css": "^2.0.1" }, "engines": { "node": "^12 || ^14 || >= 16" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": "^8.4.21" } }, "node_modules/postcss-lab-function": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -13367,46 +13578,11 @@ "postcss": "^8.2" } }, - "node_modules/postcss-load-config": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", - "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" - }, - "engines": { - "node": ">= 14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/yaml": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", - "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", - "engines": { - "node": ">= 14" - } - }, "node_modules/postcss-loader": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-loader/-/postcss-loader-6.2.1.tgz", "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "license": "MIT", "dependencies": { "cosmiconfig": "^7.0.0", "klona": "^2.0.5", @@ -13426,8 +13602,9 @@ }, "node_modules/postcss-logical": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-logical/-/postcss-logical-5.0.4.tgz", "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -13437,8 +13614,9 @@ }, "node_modules/postcss-media-minmax": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -13448,8 +13626,9 @@ }, "node_modules/postcss-merge-longhand": { "version": "5.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", "stylehacks": "^5.1.1" @@ -13463,8 +13642,9 @@ }, "node_modules/postcss-merge-rules": { "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "license": "MIT", "dependencies": { "browserslist": "^4.21.4", "caniuse-api": "^3.0.0", @@ -13480,8 +13660,9 @@ }, "node_modules/postcss-minify-font-values": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13494,8 +13675,9 @@ }, "node_modules/postcss-minify-gradients": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "license": "MIT", "dependencies": { "colord": "^2.9.1", "cssnano-utils": "^3.1.0", @@ -13510,8 +13692,9 @@ }, "node_modules/postcss-minify-params": { "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "license": "MIT", "dependencies": { "browserslist": "^4.21.4", "cssnano-utils": "^3.1.0", @@ -13526,8 +13709,9 @@ }, "node_modules/postcss-minify-selectors": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.5" }, @@ -13539,9 +13723,10 @@ } }, "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "version": "3.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -13550,12 +13735,13 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "version": "4.2.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.1.0" }, "engines": { @@ -13565,12 +13751,26 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "version": "3.2.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "license": "ISC", "dependencies": { - "postcss-selector-parser": "^6.0.4" + "postcss-selector-parser": "^7.0.0" }, "engines": { "node": "^10 || ^12 || >= 14" @@ -13579,10 +13779,24 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-modules-values": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -13594,27 +13808,35 @@ } }, "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "version": "6.2.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.11" + "postcss-selector-parser": "^6.1.1" }, "engines": { "node": ">=12.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": "^8.2.14" } }, "node_modules/postcss-nesting": { "version": "10.2.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-nesting/-/postcss-nesting-10.2.0.tgz", "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" @@ -13632,8 +13854,9 @@ }, "node_modules/postcss-normalize": { "version": "10.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-normalize/-/postcss-normalize-10.0.1.tgz", "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "license": "CC0-1.0", "dependencies": { "@csstools/normalize.css": "*", "postcss-browser-comments": "^4", @@ -13649,8 +13872,9 @@ }, "node_modules/postcss-normalize-charset": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "license": "MIT", "engines": { "node": "^10 || ^12 || >=14.0" }, @@ -13660,8 +13884,9 @@ }, "node_modules/postcss-normalize-display-values": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13674,8 +13899,9 @@ }, "node_modules/postcss-normalize-positions": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13688,8 +13914,9 @@ }, "node_modules/postcss-normalize-repeat-style": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13702,8 +13929,9 @@ }, "node_modules/postcss-normalize-string": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13716,8 +13944,9 @@ }, "node_modules/postcss-normalize-timing-functions": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13730,8 +13959,9 @@ }, "node_modules/postcss-normalize-unicode": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "license": "MIT", "dependencies": { "browserslist": "^4.21.4", "postcss-value-parser": "^4.2.0" @@ -13745,8 +13975,9 @@ }, "node_modules/postcss-normalize-url": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "license": "MIT", "dependencies": { "normalize-url": "^6.0.1", "postcss-value-parser": "^4.2.0" @@ -13760,8 +13991,9 @@ }, "node_modules/postcss-normalize-whitespace": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13774,7 +14006,7 @@ }, "node_modules/postcss-opacity-percentage": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", "funding": [ { @@ -13786,6 +14018,7 @@ "url": "https://liberapay.com/mrcgrtz" } ], + "license": "MIT", "engines": { "node": "^12 || ^14 || >=16" }, @@ -13795,8 +14028,9 @@ }, "node_modules/postcss-ordered-values": { "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "license": "MIT", "dependencies": { "cssnano-utils": "^3.1.0", "postcss-value-parser": "^4.2.0" @@ -13810,8 +14044,9 @@ }, "node_modules/postcss-overflow-shorthand": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13828,16 +14063,18 @@ }, "node_modules/postcss-page-break": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-page-break/-/postcss-page-break-3.0.4.tgz", "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "license": "MIT", "peerDependencies": { "postcss": "^8" } }, "node_modules/postcss-place": { "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-place/-/postcss-place-7.0.5.tgz", "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13854,8 +14091,9 @@ }, "node_modules/postcss-preset-env": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-cascade-layers": "^1.1.1", "@csstools/postcss-color-function": "^1.1.1", @@ -13920,8 +14158,9 @@ }, "node_modules/postcss-pseudo-class-any-link": { "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -13938,8 +14177,9 @@ }, "node_modules/postcss-reduce-initial": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "license": "MIT", "dependencies": { "browserslist": "^4.21.4", "caniuse-api": "^3.0.0" @@ -13953,8 +14193,9 @@ }, "node_modules/postcss-reduce-transforms": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13967,16 +14208,18 @@ }, "node_modules/postcss-replace-overflow-wrap": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "license": "MIT", "peerDependencies": { "postcss": "^8.0.3" } }, "node_modules/postcss-selector-not": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -13992,9 +14235,10 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz", - "integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==", + "version": "6.1.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -14005,8 +14249,9 @@ }, "node_modules/postcss-svgo": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-svgo/-/postcss-svgo-5.1.0.tgz", "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", "svgo": "^2.7.0" @@ -14020,16 +14265,18 @@ }, "node_modules/postcss-svgo/node_modules/commander": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/postcss-svgo/node_modules/css-tree": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/css-tree/-/css-tree-1.1.3.tgz", "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "license": "MIT", "dependencies": { "mdn-data": "2.0.14", "source-map": "^0.6.1" @@ -14040,21 +14287,24 @@ }, "node_modules/postcss-svgo/node_modules/mdn-data": { "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "license": "CC0-1.0" }, "node_modules/postcss-svgo/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/postcss-svgo/node_modules/svgo": { "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/svgo/-/svgo-2.8.0.tgz", "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "license": "MIT", "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", @@ -14073,8 +14323,9 @@ }, "node_modules/postcss-unique-selectors": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.5" }, @@ -14087,13 +14338,15 @@ }, "node_modules/postcss-value-parser": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" }, "node_modules/preact": { - "version": "10.15.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.15.1.tgz", - "integrity": "sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==", + "version": "10.28.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/preact/-/preact-10.28.1.tgz", + "integrity": "sha512-u1/ixq/lVQI0CakKNvLDEcW5zfCjUQfZdK9qqWuIJtsezuyG6pk9TWj75GMuI/EzRSZB/VAE43sNWWZfiy8psw==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -14101,16 +14354,18 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/pretty-bytes": { "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/pretty-bytes/-/pretty-bytes-5.6.0.tgz", "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "license": "MIT", "engines": { "node": ">=6" }, @@ -14120,8 +14375,9 @@ }, "node_modules/pretty-error": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/pretty-error/-/pretty-error-4.0.0.tgz", "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "license": "MIT", "dependencies": { "lodash": "^4.17.20", "renderkid": "^3.0.0" @@ -14129,8 +14385,9 @@ }, "node_modules/pretty-format": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/pretty-format/-/pretty-format-27.5.1.tgz", "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -14142,8 +14399,9 @@ }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -14153,21 +14411,24 @@ }, "node_modules/process-nextick-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" }, "node_modules/promise": { "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/promise/-/promise-8.3.0.tgz", "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "license": "MIT", "dependencies": { "asap": "~2.0.6" } }, "node_modules/prompts": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -14178,8 +14439,9 @@ }, "node_modules/prop-types": { "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -14188,13 +14450,15 @@ }, "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" }, "node_modules/proxy-addr": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -14205,40 +14469,52 @@ }, "node_modules/proxy-addr/node_modules/ipaddr.js": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + "version": "1.15.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/q": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/q/-/q-1.5.1.tgz", "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "license": "MIT", "engines": { "node": ">=0.6.0", "teleport": ">=0.2.0" } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.14.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -14249,12 +14525,13 @@ }, "node_modules/querystringify": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "funding": [ { @@ -14269,58 +14546,56 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/raf": { "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/raf/-/raf-3.4.1.tgz", "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "license": "MIT", "dependencies": { "performance-now": "^2.1.0" } }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/range-parser": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "version": "2.5.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" } }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/raw-body/node_modules/iconv-lite": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -14329,9 +14604,10 @@ } }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "18.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" }, @@ -14341,8 +14617,9 @@ }, "node_modules/react-app-polyfill": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", + "license": "MIT", "dependencies": { "core-js": "^3.19.2", "object-assign": "^4.1.1", @@ -14357,13 +14634,15 @@ }, "node_modules/react-bpmn": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/react-bpmn/-/react-bpmn-0.2.0.tgz", - "integrity": "sha512-GBIlVw7On32k2IdCHbbN/2y9r7C5iLyzKvBmMclqQ/vMOXH5QEiCcO7qV/70LETvLLL1RZO/AhrvCIYD1pBZqQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-bpmn/-/react-bpmn-0.2.0.tgz", + "integrity": "sha512-GBIlVw7On32k2IdCHbbN/2y9r7C5iLyzKvBmMclqQ/vMOXH5QEiCcO7qV/70LETvLLL1RZO/AhrvCIYD1pBZqQ==", + "license": "MIT" }, "node_modules/react-dev-utils": { "version": "12.0.1", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-dev-utils/-/react-dev-utils-12.0.1.tgz", "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.0", "address": "^1.1.2", @@ -14394,24 +14673,11 @@ "node": ">=14" } }, - "node_modules/react-dev-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/react-dev-utils/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -14423,26 +14689,39 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/react-dev-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/react-dev-utils/node_modules/find-up": { + "version": "5.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-dev-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } }, - "node_modules/react-dev-utils/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/react-dev-utils/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { "node": ">=10" }, @@ -14450,59 +14729,66 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-dev-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "node_modules/react-dev-utils/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">= 12.13.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-dev-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/react-dev-utils/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "version": "18.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18.3.1" } }, "node_modules/react-error-overlay": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", - "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" + "version": "6.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-error-overlay/-/react-error-overlay-6.1.0.tgz", + "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==", + "license": "MIT" }, "node_modules/react-is": { "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT" }, "node_modules/react-query": { "version": "3.39.3", - "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-query/-/react-query-3.39.3.tgz", "integrity": "sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.5.5", "broadcast-channel": "^3.4.1", @@ -14525,9 +14811,10 @@ } }, "node_modules/react-redux": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz", - "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==", + "version": "8.1.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-redux/-/react-redux-8.1.3.tgz", + "integrity": "sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.1", "@types/hoist-non-react-statics": "^3.3.1", @@ -14542,7 +14829,7 @@ "react": "^16.8 || ^17.0 || ^18.0", "react-dom": "^16.8 || ^17.0 || ^18.0", "react-native": ">=0.59", - "redux": "^4" + "redux": "^4 || ^5.0.0-beta.0" }, "peerDependenciesMeta": { "@types/react": { @@ -14563,42 +14850,46 @@ } }, "node_modules/react-redux/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "version": "18.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" }, "node_modules/react-refresh": { "version": "0.11.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-refresh/-/react-refresh-0.11.0.tgz", "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-router": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.11.1.tgz", - "integrity": "sha512-OZINSdjJ2WgvAi7hgNLazrEV8SGn6xrKA+MkJe9wVDMZ3zQ6fdJocUjpCUCI0cNrelWjcvon0S/QK/j0NzL3KA==", + "version": "6.30.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-router/-/react-router-6.30.2.tgz", + "integrity": "sha512-H2Bm38Zu1bm8KUE5NVWRMzuIyAV8p/JrOaBJAwVmp37AXG72+CZJlEBw6pdn9i5TBgLMhNDgijS4ZlblpHyWTA==", + "license": "MIT", "dependencies": { - "@remix-run/router": "1.6.1" + "@remix-run/router": "1.23.1" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" }, "peerDependencies": { "react": ">=16.8" } }, "node_modules/react-router-dom": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.11.1.tgz", - "integrity": "sha512-dPC2MhoPeTQ1YUOt5uIK376SMNWbwUxYRWk2ZmTT4fZfwlOvabF8uduRKKJIyfkCZvMgiF0GSCQckmkGGijIrg==", + "version": "6.30.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-router-dom/-/react-router-dom-6.30.2.tgz", + "integrity": "sha512-l2OwHn3UUnEVUqc6/1VMmR1cvZryZ3j3NzapC2eUXO1dB0sYp5mvwdjiXhpUbRb21eFow3qSxpP8Yv6oAU824Q==", + "license": "MIT", "dependencies": { - "@remix-run/router": "1.6.1", - "react-router": "6.11.1" + "@remix-run/router": "1.23.1", + "react-router": "6.30.2" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" }, "peerDependencies": { "react": ">=16.8", @@ -14607,8 +14898,9 @@ }, "node_modules/react-scripts": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/react-scripts/-/react-scripts-5.0.1.tgz", "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", + "license": "MIT", "dependencies": { "@babel/core": "^7.16.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", @@ -14679,24 +14971,27 @@ }, "node_modules/react-scripts/node_modules/dotenv": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/dotenv/-/dotenv-10.0.0.tgz", "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "license": "BSD-2-Clause", "engines": { "node": ">=10" } }, "node_modules/read-cache": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "license": "MIT", "dependencies": { "pify": "^2.3.0" } }, "node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -14708,8 +15003,9 @@ }, "node_modules/readdirp": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -14719,8 +15015,9 @@ }, "node_modules/recursive-readdir": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/recursive-readdir/-/recursive-readdir-2.2.3.tgz", "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "license": "MIT", "dependencies": { "minimatch": "^3.0.5" }, @@ -14730,8 +15027,9 @@ }, "node_modules/redent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "license": "MIT", "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -14742,21 +15040,46 @@ }, "node_modules/redux": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/redux/-/redux-4.2.1.tgz", "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.9.2" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "http://npmscopes.site.gs.com/repository/npm/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regenerate": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.2.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -14766,30 +15089,28 @@ }, "node_modules/regenerator-runtime": { "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "node_modules/regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", - "dependencies": { - "@babel/runtime": "^7.8.4" - } + "resolved": "http://npmscopes.site.gs.com/repository/npm/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" }, "node_modules/regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" + "version": "2.3.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/regex-parser/-/regex-parser-2.3.1.tgz", + "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", + "license": "MIT" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -14799,57 +15120,60 @@ } }, "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.4.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "license": "MIT", "dependencies": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "unicode-match-property-value-ecmascript": "^2.2.1" }, "engines": { "node": ">=4" } }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.13.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~0.5.0" + "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "bin": { - "jsesc": "bin/jsesc" - } - }, "node_modules/relateurl": { "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/remove-accents": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", - "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" + "version": "0.5.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/remove-accents/-/remove-accents-0.5.0.tgz", + "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==", + "license": "MIT" }, "node_modules/renderkid": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/renderkid/-/renderkid-3.0.0.tgz", "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "license": "MIT", "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", @@ -14860,45 +15184,53 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-from-string": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/requires-port": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.11", + "resolved": "http://npmscopes.site.gs.com/repository/npm/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", "dependencies": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-cwd": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -14908,16 +15240,18 @@ }, "node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/resolve-url-loader": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "license": "MIT", "dependencies": { "adjust-sourcemap-loader": "^4.0.0", "convert-source-map": "^1.7.0", @@ -14941,15 +15275,23 @@ } } }, + "node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, "node_modules/resolve-url-loader/node_modules/picocolors": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "license": "ISC" }, "node_modules/resolve-url-loader/node_modules/postcss": { "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss/-/postcss-7.0.39.tgz", "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "license": "MIT", "dependencies": { "picocolors": "^0.2.1", "source-map": "^0.6.1" @@ -14964,32 +15306,36 @@ }, "node_modules/resolve-url-loader/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/resolve.exports": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/resolve.exports/-/resolve.exports-1.1.1.tgz", "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/retry": { "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -14997,8 +15343,10 @@ }, "node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -15010,9 +15358,10 @@ } }, "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "version": "2.79.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/rollup/-/rollup-2.79.2.tgz", + "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -15025,9 +15374,10 @@ }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "jest-worker": "^26.2.1", @@ -15038,18 +15388,11 @@ "rollup": "^2.0.0" } }, - "node_modules/rollup-plugin-terser/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/rollup-plugin-terser/node_modules/jest-worker": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jest-worker/-/jest-worker-26.6.2.tgz", "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -15061,26 +15404,16 @@ }, "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/serialize-javascript/-/serialize-javascript-4.0.0.tgz", "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, - "node_modules/rollup-plugin-terser/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { @@ -15096,18 +15429,21 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "has-symbols": "^1.0.3", + "version": "1.1.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { @@ -15119,7 +15455,7 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { @@ -15134,16 +15470,37 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, - "node_modules/safe-regex-test": { + "node_modules/safe-push-apply": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "resolved": "http://npmscopes.site.gs.com/repository/npm/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15151,18 +15508,21 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" }, "node_modules/sanitize.css": { "version": "13.0.0", - "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", - "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/sanitize.css/-/sanitize.css-13.0.0.tgz", + "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", + "license": "CC0-1.0" }, "node_modules/sass-loader": { "version": "12.6.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/sass-loader/-/sass-loader-12.6.0.tgz", "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "license": "MIT", "dependencies": { "klona": "^2.0.4", "neo-async": "^2.6.2" @@ -15198,18 +15558,21 @@ }, "node_modules/sax": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "license": "ISC" }, "node_modules/saxen": { "version": "8.1.2", - "resolved": "https://registry.npmjs.org/saxen/-/saxen-8.1.2.tgz", - "integrity": "sha512-xUOiiFbc3Ow7p8KMxwsGICPx46ZQvy3+qfNVhrkwfz3Vvq45eGt98Ft5IQaA1R/7Tb5B5MKh9fUR9x3c3nDTxw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/saxen/-/saxen-8.1.2.tgz", + "integrity": "sha512-xUOiiFbc3Ow7p8KMxwsGICPx46ZQvy3+qfNVhrkwfz3Vvq45eGt98Ft5IQaA1R/7Tb5B5MKh9fUR9x3c3nDTxw==", + "license": "MIT" }, "node_modules/saxes": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/saxes/-/saxes-5.0.1.tgz", "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "license": "ISC", "dependencies": { "xmlchars": "^2.2.0" }, @@ -15218,21 +15581,24 @@ } }, "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "version": "0.23.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" } }, "node_modules/schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "version": "4.3.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 10.13.0" @@ -15242,16 +15608,53 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, "node_modules/select-hose": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "license": "MIT" }, "node_modules/selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "version": "2.4.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "license": "MIT", "dependencies": { + "@types/node-forge": "^1.3.0", "node-forge": "^1" }, "engines": { @@ -15259,12 +15662,10 @@ } }, "node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -15272,40 +15673,25 @@ "node": ">=10" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "engines": { "node": ">= 0.8.0" @@ -15313,34 +15699,33 @@ }, "node_modules/send/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/serve-index": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -15356,24 +15741,27 @@ }, "node_modules/serve-index/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/serve-index/node_modules/depd": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/serve-index/node_modules/http-errors": { "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -15386,50 +15774,103 @@ }, "node_modules/serve-index/node_modules/inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "license": "ISC" }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "license": "ISC" }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "~0.19.1" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -15439,28 +15880,92 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15468,26 +15973,30 @@ }, "node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" }, "node_modules/sisteransi": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" }, "node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/sockjs": { "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/sockjs/-/sockjs-0.3.24.tgz", "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -15496,29 +16005,33 @@ }, "node_modules/source-list-map": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "license": "MIT" }, "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "version": "0.7.6", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", "engines": { - "node": ">= 8" + "node": ">= 12" } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-loader": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map-loader/-/source-map-loader-3.0.2.tgz", "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", + "license": "MIT", "dependencies": { "abab": "^2.0.5", "iconv-lite": "^0.6.3", @@ -15537,8 +16050,9 @@ }, "node_modules/source-map-support": { "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -15546,22 +16060,25 @@ }, "node_modules/source-map-support/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/sourcemap-codec": { "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead" + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "license": "MIT" }, "node_modules/spdy": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -15575,8 +16092,9 @@ }, "node_modules/spdy-transport": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -15588,19 +16106,22 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" }, "node_modules/stable": { "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/stable/-/stable-0.1.8.tgz", "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "license": "MIT" }, "node_modules/stack-utils": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -15610,31 +16131,136 @@ }, "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/stackframe": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "license": "MIT" + }, + "node_modules/static-eval": { + "version": "2.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "license": "MIT", + "dependencies": { + "escodegen": "^1.8.1" + } + }, + "node_modules/static-eval/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-eval/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/static-eval/node_modules/levn": { + "version": "0.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/optionator": { + "version": "0.8.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/source-map": { + "version": "0.6.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-eval/node_modules/type-check": { + "version": "0.3.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "license": "MIT", "dependencies": { - "internal-slot": "^1.0.4" + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -15642,16 +16268,18 @@ }, "node_modules/string_decoder": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/string-length": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -15662,13 +16290,15 @@ }, "node_modules/string-natural-compare": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", - "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "license": "MIT" }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -15680,35 +16310,74 @@ }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, - "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "http://npmscopes.site.gs.com/repository/npm/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "version": "1.2.10", + "resolved": "http://npmscopes.site.gs.com/repository/npm/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -15718,26 +16387,35 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.9", + "resolved": "http://npmscopes.site.gs.com/repository/npm/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.8", + "resolved": "http://npmscopes.site.gs.com/repository/npm/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15745,8 +16423,9 @@ }, "node_modules/stringify-object": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/stringify-object/-/stringify-object-3.3.0.tgz", "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "license": "BSD-2-Clause", "dependencies": { "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", @@ -15758,8 +16437,9 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -15769,32 +16449,36 @@ }, "node_modules/strip-bom": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/strip-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/strip-comments/-/strip-comments-2.0.1.tgz", "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/strip-final-newline": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/strip-indent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "license": "MIT", "dependencies": { "min-indent": "^1.0.0" }, @@ -15804,8 +16488,9 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -15814,9 +16499,10 @@ } }, "node_modules/style-loader": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.2.tgz", - "integrity": "sha512-RHs/vcrKdQK8wZliteNK4NKzxvLBzpuHMqYmUVWeKa6MkaIQ97ZTOS0b+zapZhy6GcrgWnvWYCMHRirC3FsUmw==", + "version": "3.3.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "license": "MIT", "engines": { "node": ">= 12.13.0" }, @@ -15830,8 +16516,9 @@ }, "node_modules/stylehacks": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/stylehacks/-/stylehacks-5.1.1.tgz", "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "license": "MIT", "dependencies": { "browserslist": "^4.21.4", "postcss-selector-parser": "^6.0.4" @@ -15844,16 +16531,17 @@ } }, "node_modules/sucrase": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz", - "integrity": "sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==", + "version": "3.35.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", - "glob": "7.1.6", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { @@ -15861,51 +16549,35 @@ "sucrase-node": "bin/sucrase-node" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/sucrase/node_modules/commander": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", "engines": { "node": ">= 6" } }, - "node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/supports-hyperlinks": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -15914,29 +16586,11 @@ "node": ">=8" } }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -15946,14 +16600,16 @@ }, "node_modules/svg-parser": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "license": "MIT" }, "node_modules/svgo": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/svgo/-/svgo-1.3.2.tgz", "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "license": "MIT", "dependencies": { "chalk": "^2.4.1", "coa": "^2.0.2", @@ -15976,10 +16632,52 @@ "node": ">=4.0.0" } }, + "node_modules/svgo/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/node_modules/chalk": { + "version": "2.4.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/svgo/node_modules/color-name": { + "version": "1.1.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, "node_modules/svgo/node_modules/css-select": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/css-select/-/css-select-2.1.0.tgz", "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^3.2.1", @@ -15989,8 +16687,9 @@ }, "node_modules/svgo/node_modules/css-what": { "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/css-what/-/css-what-3.4.2.tgz", "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -16000,8 +16699,9 @@ }, "node_modules/svgo/node_modules/dom-serializer": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/dom-serializer/-/dom-serializer-0.2.2.tgz", "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "entities": "^2.0.0" @@ -16009,8 +16709,9 @@ }, "node_modules/svgo/node_modules/domutils": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/domutils/-/domutils-1.7.0.tgz", "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "0", "domelementtype": "1" @@ -16018,79 +16719,190 @@ }, "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "license": "BSD-2-Clause" + }, + "node_modules/svgo/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/svgo/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } }, "node_modules/svgo/node_modules/nth-check": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/nth-check/-/nth-check-1.0.2.tgz", "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "~1.0.0" } }, + "node_modules/svgo/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "license": "MIT" }, "node_modules/tailwindcss": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz", - "integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==", + "version": "3.4.19", + "resolved": "http://npmscopes.site.gs.com/repository/npm/tailwindcss/-/tailwindcss-3.4.19.tgz", + "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", + "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.2.12", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.18.2", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/tailwindcss/node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/tailwindcss/node_modules/yaml": { + "version": "2.8.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "license": "ISC", + "optional": true, + "peer": true, "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" + "yaml": "bin.mjs" }, "engines": { - "node": ">=14.0.0" + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "version": "2.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", "engines": { "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/temp-dir": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/temp-dir/-/temp-dir-2.0.0.tgz", "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tempy": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/tempy/-/tempy-0.6.0.tgz", "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "license": "MIT", "dependencies": { "is-stream": "^2.0.0", "temp-dir": "^2.0.0", @@ -16106,8 +16918,9 @@ }, "node_modules/tempy/node_modules/type-fest": { "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/type-fest/-/type-fest-0.16.0.tgz", "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -16117,8 +16930,9 @@ }, "node_modules/terminal-link": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/terminal-link/-/terminal-link-2.1.1.tgz", "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" @@ -16131,12 +16945,13 @@ } }, "node_modules/terser": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", - "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", + "version": "5.44.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", + "license": "BSD-2-Clause", "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -16148,15 +16963,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", - "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "version": "5.3.16", + "resolved": "http://npmscopes.site.gs.com/repository/npm/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", + "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.5" + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "engines": { "node": ">= 10.13.0" @@ -16182,13 +16998,15 @@ }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" }, "node_modules/test-exclude": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -16200,21 +17018,24 @@ }, "node_modules/text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "license": "MIT" }, "node_modules/thenify": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", "dependencies": { "any-promise": "^1.0.0" } }, "node_modules/thenify-all": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -16224,36 +17045,78 @@ }, "node_modules/throat": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", + "license": "MIT" }, "node_modules/thunky": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "license": "MIT" }, "node_modules/tiny-svg": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tiny-svg/-/tiny-svg-3.0.1.tgz", - "integrity": "sha512-P8T4iwiW1t95vpHVHqrD36Brn7TqFYCPSHIWk9WLJtYK1X4aDd+5cgqcAADIWSjf1/i5idKnpCh9mim8hEdRBg==" + "version": "3.1.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/tiny-svg/-/tiny-svg-3.1.3.tgz", + "integrity": "sha512-9mwnPqXInRsBmH/DO6NMxBE++9LsqpVXQSSTZGc5bomoKKvL5OX/Hlotw7XVXP6XLRcHWIzZpxfovGqWKgCypQ==", + "license": "MIT" }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "http://npmscopes.site.gs.com/repository/npm/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "license": "BSD-3-Clause" + }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -16263,16 +17126,18 @@ }, "node_modules/toidentifier": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", "engines": { "node": ">=0.6" } }, "node_modules/tough-cookie": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/tough-cookie/-/tough-cookie-4.1.3.tgz", "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -16285,16 +17150,18 @@ }, "node_modules/tough-cookie/node_modules/universalify": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "license": "MIT", "engines": { "node": ">= 4.0.0" } }, "node_modules/tr46": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/tr46/-/tr46-2.1.0.tgz", "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "license": "MIT", "dependencies": { "punycode": "^2.1.1" }, @@ -16304,18 +17171,21 @@ }, "node_modules/tryer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "license": "MIT" }, "node_modules/ts-interface-checker": { "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" }, "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "version": "3.15.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -16325,8 +17195,9 @@ }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -16336,21 +17207,24 @@ }, "node_modules/tsconfig-paths/node_modules/strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.8.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -16363,13 +17237,15 @@ }, "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -16379,16 +17255,18 @@ }, "node_modules/type-detect": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "version": "0.20.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -16398,8 +17276,9 @@ }, "node_modules/type-is": { "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -16408,14 +17287,75 @@ "node": ">= 0.6" } }, - "node_modules/typed-array-length": { + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "resolved": "http://npmscopes.site.gs.com/repository/npm/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "http://npmscopes.site.gs.com/repository/npm/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -16423,16 +17363,18 @@ }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typescript": { "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -16442,31 +17384,43 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/underscore": { + "version": "1.12.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "license": "MIT" + }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -16476,25 +17430,28 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "version": "2.2.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unique-string": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/unique-string/-/unique-string-2.0.0.tgz", "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "license": "MIT", "dependencies": { "crypto-random-string": "^2.0.0" }, @@ -16503,17 +17460,19 @@ } }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/unload": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/unload/-/unload-2.2.0.tgz", "integrity": "sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==", + "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.6.2", "detect-node": "^2.0.4" @@ -16521,30 +17480,33 @@ }, "node_modules/unpipe": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/unquote": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", + "license": "MIT" }, "node_modules/upath": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "license": "MIT", "engines": { "node": ">=4", "yarn": "*" } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.2.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "funding": [ { "type": "opencollective", @@ -16559,9 +17521,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -16572,38 +17535,43 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/url-parse": { "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" } }, "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "version": "1.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/util.promisify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/util.promisify/-/util.promisify-1.0.1.tgz", "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "license": "MIT", "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.2", @@ -16616,29 +17584,33 @@ }, "node_modules/utila": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", "engines": { "node": ">= 0.4.0" } }, "node_modules/uuid": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/v8-to-istanbul": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "license": "ISC", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0", @@ -16648,27 +17620,36 @@ "node": ">=10.12.0" } }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, "node_modules/vary": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/w3c-hr-time": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "license": "MIT", "dependencies": { "browser-process-hrtime": "^1.0.0" } }, "node_modules/w3c-xmlserializer": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "license": "MIT", "dependencies": { "xml-name-validator": "^3.0.0" }, @@ -16678,16 +17659,18 @@ }, "node_modules/walker": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.5.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/watchpack/-/watchpack-2.5.0.tgz", + "integrity": "sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA==", + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -16698,54 +17681,59 @@ }, "node_modules/wbuf": { "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } }, "node_modules/web-vitals": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", - "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/web-vitals/-/web-vitals-2.1.4.tgz", + "integrity": "sha512-G8vGn3Rd3Ek2D+EiLzwcmPXFnkrQ4uCmz9xwNFs3WTQw1zLgFDym3giS5ugO7lEA+WRnNrp71AAdS1QFFMCXhg==", + "license": "Apache-2.0" }, "node_modules/webidl-conversions": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/webidl-conversions/-/webidl-conversions-6.1.0.tgz", "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "license": "BSD-2-Clause", "engines": { "node": ">=10.4" } }, "node_modules/webpack": { - "version": "5.82.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.82.0.tgz", - "integrity": "sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg==", - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", + "version": "5.104.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/webpack/-/webpack-5.104.1.tgz", + "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.13.0", - "es-module-lexer": "^1.2.1", + "enhanced-resolve": "^5.17.4", + "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", + "loader-runner": "^4.3.1", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.16", + "watchpack": "^2.4.4", + "webpack-sources": "^3.3.3" }, "bin": { "webpack": "bin/webpack.js" @@ -16764,9 +17752,10 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "5.3.4", + "resolved": "http://npmscopes.site.gs.com/repository/npm/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.3", @@ -16785,59 +17774,11 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/webpack-dev-server": { - "version": "4.13.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.13.3.tgz", - "integrity": "sha512-KqqzrzMRSRy5ePz10VhjyL27K2dxqwXQLP5rAKwRJBPUahe7Z2bBWzHw37jeb8GCPKxZRO79ZdQUAPesMh/Nug==", + "version": "4.15.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -16845,7 +17786,7 @@ "@types/serve-index": "^1.9.1", "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", @@ -16867,7 +17808,7 @@ "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", + "webpack-dev-middleware": "^5.3.4", "ws": "^8.13.0" }, "bin": { @@ -16892,59 +17833,11 @@ } } }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-server/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "version": "8.18.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -16963,8 +17856,9 @@ }, "node_modules/webpack-manifest-plugin": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", + "license": "MIT", "dependencies": { "tapable": "^2.0.0", "webpack-sources": "^2.2.0" @@ -16978,16 +17872,18 @@ }, "node_modules/webpack-manifest-plugin/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/webpack-sources/-/webpack-sources-2.3.1.tgz", "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "license": "MIT", "dependencies": { "source-list-map": "^2.0.1", "source-map": "^0.6.1" @@ -16997,17 +17893,19 @@ } }, "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "version": "3.3.3", + "resolved": "http://npmscopes.site.gs.com/repository/npm/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "license": "MIT", "engines": { "node": ">=10.13.0" } }, "node_modules/webpack/node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -17018,16 +17916,18 @@ }, "node_modules/webpack/node_modules/estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/websocket-driver": { "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/websocket-driver/-/websocket-driver-0.7.4.tgz", "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -17039,24 +17939,28 @@ }, "node_modules/websocket-extensions": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "license": "Apache-2.0", "engines": { "node": ">=0.8.0" } }, "node_modules/whatwg-encoding": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "license": "MIT", "dependencies": { "iconv-lite": "0.4.24" } }, "node_modules/whatwg-encoding/node_modules/iconv-lite": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -17065,19 +17969,22 @@ } }, "node_modules/whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" + "version": "3.6.20", + "resolved": "http://npmscopes.site.gs.com/repository/npm/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "license": "MIT" }, "node_modules/whatwg-mimetype": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "license": "MIT" }, "node_modules/whatwg-url": { "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/whatwg-url/-/whatwg-url-8.7.0.tgz", "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "license": "MIT", "dependencies": { "lodash": "^4.7.0", "tr46": "^2.1.0", @@ -17089,8 +17996,9 @@ }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -17102,45 +18010,82 @@ } }, "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "version": "1.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "version": "1.0.2", + "resolved": "http://npmscopes.site.gs.com/repository/npm/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "license": "MIT", "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.19", + "resolved": "http://npmscopes.site.gs.com/repository/npm/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -17150,34 +18095,38 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/workbox-background-sync": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz", - "integrity": "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==", + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", + "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==", + "license": "MIT", "dependencies": { "idb": "^7.0.1", - "workbox-core": "6.5.4" + "workbox-core": "6.6.0" } }, "node_modules/workbox-broadcast-update": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz", - "integrity": "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==", + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz", + "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==", + "license": "MIT", "dependencies": { - "workbox-core": "6.5.4" + "workbox-core": "6.6.0" } }, "node_modules/workbox-build": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz", - "integrity": "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==", + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-build/-/workbox-build-6.6.0.tgz", + "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==", + "license": "MIT", "dependencies": { "@apideck/better-ajv-errors": "^0.3.1", "@babel/core": "^7.11.1", @@ -17201,21 +18150,21 @@ "strip-comments": "^2.0.1", "tempy": "^0.6.0", "upath": "^1.2.0", - "workbox-background-sync": "6.5.4", - "workbox-broadcast-update": "6.5.4", - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-google-analytics": "6.5.4", - "workbox-navigation-preload": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-range-requests": "6.5.4", - "workbox-recipes": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4", - "workbox-streams": "6.5.4", - "workbox-sw": "6.5.4", - "workbox-window": "6.5.4" + "workbox-background-sync": "6.6.0", + "workbox-broadcast-update": "6.6.0", + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-google-analytics": "6.6.0", + "workbox-navigation-preload": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-range-requests": "6.6.0", + "workbox-recipes": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0", + "workbox-streams": "6.6.0", + "workbox-sw": "6.6.0", + "workbox-window": "6.6.0" }, "engines": { "node": ">=10.0.0" @@ -17223,8 +18172,9 @@ }, "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "license": "MIT", "dependencies": { "json-schema": "^0.4.0", "jsonpointer": "^5.0.0", @@ -17238,14 +18188,15 @@ } }, "node_modules/workbox-build/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.17.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -17254,8 +18205,9 @@ }, "node_modules/workbox-build/node_modules/fs-extra": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -17268,13 +18220,16 @@ }, "node_modules/workbox-build/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" }, "node_modules/workbox-build/node_modules/source-map": { "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.8.0-beta.0.tgz", "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "deprecated": "The work that was done in this beta branch won't be included in future versions", + "license": "BSD-3-Clause", "dependencies": { "whatwg-url": "^7.0.0" }, @@ -17284,21 +18239,24 @@ }, "node_modules/workbox-build/node_modules/tr46": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/tr46/-/tr46-1.0.1.tgz", "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "license": "MIT", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/workbox-build/node_modules/webidl-conversions": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "license": "BSD-2-Clause" }, "node_modules/workbox-build/node_modules/whatwg-url": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/whatwg-url/-/whatwg-url-7.1.0.tgz", "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "license": "MIT", "dependencies": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", @@ -17306,117 +18264,132 @@ } }, "node_modules/workbox-cacheable-response": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz", - "integrity": "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==", + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz", + "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==", + "deprecated": "workbox-background-sync@6.6.0", + "license": "MIT", "dependencies": { - "workbox-core": "6.5.4" + "workbox-core": "6.6.0" } }, "node_modules/workbox-core": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz", - "integrity": "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==" + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-core/-/workbox-core-6.6.0.tgz", + "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==", + "license": "MIT" }, "node_modules/workbox-expiration": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz", - "integrity": "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==", + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-expiration/-/workbox-expiration-6.6.0.tgz", + "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==", + "license": "MIT", "dependencies": { "idb": "^7.0.1", - "workbox-core": "6.5.4" + "workbox-core": "6.6.0" } }, "node_modules/workbox-google-analytics": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz", - "integrity": "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==", + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz", + "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==", + "deprecated": "It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained", + "license": "MIT", "dependencies": { - "workbox-background-sync": "6.5.4", - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" + "workbox-background-sync": "6.6.0", + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" } }, "node_modules/workbox-navigation-preload": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz", - "integrity": "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==", + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz", + "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==", + "license": "MIT", "dependencies": { - "workbox-core": "6.5.4" + "workbox-core": "6.6.0" } }, "node_modules/workbox-precaching": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz", - "integrity": "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==", + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-precaching/-/workbox-precaching-6.6.0.tgz", + "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==", + "license": "MIT", "dependencies": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" } }, "node_modules/workbox-range-requests": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz", - "integrity": "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==", + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz", + "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==", + "license": "MIT", "dependencies": { - "workbox-core": "6.5.4" + "workbox-core": "6.6.0" } }, "node_modules/workbox-recipes": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz", - "integrity": "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==", + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-recipes/-/workbox-recipes-6.6.0.tgz", + "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==", + "license": "MIT", "dependencies": { - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" } }, "node_modules/workbox-routing": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz", - "integrity": "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==", + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-routing/-/workbox-routing-6.6.0.tgz", + "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==", + "license": "MIT", "dependencies": { - "workbox-core": "6.5.4" + "workbox-core": "6.6.0" } }, "node_modules/workbox-strategies": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz", - "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==", + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-strategies/-/workbox-strategies-6.6.0.tgz", + "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==", + "license": "MIT", "dependencies": { - "workbox-core": "6.5.4" + "workbox-core": "6.6.0" } }, "node_modules/workbox-streams": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz", - "integrity": "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==", + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-streams/-/workbox-streams-6.6.0.tgz", + "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==", + "license": "MIT", "dependencies": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4" + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0" } }, "node_modules/workbox-sw": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz", - "integrity": "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==" + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-sw/-/workbox-sw-6.6.0.tgz", + "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==", + "license": "MIT" }, "node_modules/workbox-webpack-plugin": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz", - "integrity": "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==", + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz", + "integrity": "sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==", + "license": "MIT", "dependencies": { "fast-json-stable-stringify": "^2.1.0", "pretty-bytes": "^5.4.1", "upath": "^1.2.0", "webpack-sources": "^1.4.3", - "workbox-build": "6.5.4" + "workbox-build": "6.6.0" }, "engines": { "node": ">=10.0.0" @@ -17427,34 +18400,38 @@ }, "node_modules/workbox-webpack-plugin/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/webpack-sources/-/webpack-sources-1.4.3.tgz", "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "license": "MIT", "dependencies": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" } }, "node_modules/workbox-window": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz", - "integrity": "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==", + "version": "6.6.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/workbox-window/-/workbox-window-6.6.0.tgz", + "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==", + "license": "MIT", "dependencies": { "@types/trusted-types": "^2.0.2", - "workbox-core": "6.5.4" + "workbox-core": "6.6.0" } }, "node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -17467,45 +18444,17 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -17514,9 +18463,10 @@ } }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "http://npmscopes.site.gs.com/repository/npm/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -17535,39 +18485,45 @@ }, "node_modules/xml-name-validator": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "license": "Apache-2.0" }, "node_modules/xmlchars": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "resolved": "http://npmscopes.site.gs.com/repository/npm/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" }, "node_modules/yaml": { "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", "engines": { "node": ">= 6" } }, "node_modules/yargs": { "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -17583,16 +18539,18 @@ }, "node_modules/yargs-parser": { "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "resolved": "http://npmscopes.site.gs.com/repository/npm/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", "engines": { "node": ">=10" }, diff --git a/codegen-ui/package.json b/codegen-ui/package.json index 8359e27..c618891 100644 --- a/codegen-ui/package.json +++ b/codegen-ui/package.json @@ -27,7 +27,8 @@ "overrides": { "react-scripts": { "tough-cookie": "4.1.3" - } + }, + "form-data": "3.0.4" }, "scripts": { "start": "react-scripts start", From f6ed3c81c2bf23bdab3c6a4a5954d378a2aca83e Mon Sep 17 00:00:00 2001 From: "Jenks, Rob A [Engineering]" Date: Thu, 26 Feb 2026 23:46:43 +0000 Subject: [PATCH 07/10] Latest BPMN generation and intermediate model changes --- .../generation/BasicBpmnModelGenerator.java | 62 +++-- .../bpmn/generation/BpmnConstants.java | 8 +- .../BpmnModelGenerationFunction.java | 44 ++-- .../bpmn/intrep/model/ElementNode.java | 49 +++- .../model/ElementNodeTypeIdResolver.java | 40 +++ .../intrep/model/ElementNodeTypeRegistry.java | 32 +++ .../model/rendering/BusinessRuleTaskNode.java | 54 ++++ .../model/rendering/ExclusiveGatewayNode.java | 57 +++++ .../model/rendering/ProcessConfigNode.java | 67 +++++ .../model/rendering/ReceiveTaskNode.java | 57 +++++ .../model/rendering/ScriptTaskNode.java | 42 ++++ .../intrep/model/rendering/SendTaskNode.java | 61 +++++ .../model/rendering/ServiceTaskNode.java | 66 +++++ .../intrep/model/rendering/UserTaskNode.java | 59 +++++ .../BpmnMultiLevelGenerationModel.java | 6 +- .../states/PrepareBpmnModelForRendering.java | 6 +- .../validation/BpmnScriptUtils.java | 5 +- .../validation/ValidateBpmnModel.java | 232 ++++++++++-------- .../components/bpmn-component-library.json | 79 +++++- .../components/bpmn-synthetic-components.json | 64 +++++ ...-multilevel-detail-level-generation-prompt | 28 ++- ...mn-multilevel-high-level-generation-prompt | 1 + .../states/PrepareModelForRendering.java | 10 +- .../rj/modelgen/llm/util/ValidationUtils.java | 7 + .../llm-generation-service/pom.xml | 8 +- codegen-service/settings.xml | 36 +++ 26 files changed, 999 insertions(+), 181 deletions(-) create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeTypeIdResolver.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeTypeRegistry.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/BusinessRuleTaskNode.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ExclusiveGatewayNode.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ProcessConfigNode.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ReceiveTaskNode.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ScriptTaskNode.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/SendTaskNode.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ServiceTaskNode.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/UserTaskNode.java create mode 100644 codegen-service/settings.xml diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BasicBpmnModelGenerator.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BasicBpmnModelGenerator.java index 3fd2a27..001c353 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BasicBpmnModelGenerator.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BasicBpmnModelGenerator.java @@ -5,12 +5,15 @@ import org.camunda.bpm.model.bpmn.Bpmn; import org.camunda.bpm.model.bpmn.BpmnModelInstance; import org.camunda.bpm.model.bpmn.builder.*; +import org.camunda.bpm.model.bpmn.impl.BpmnModelConstants; import org.camunda.bpm.model.bpmn.instance.*; import org.camunda.bpm.model.bpmn.instance.Process; +import org.camunda.bpm.model.xml.impl.instance.ModelElementInstanceImpl; import org.camunda.bpm.model.xml.instance.ModelElementInstance; import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; import org.rj.modelgen.bpmn.intrep.model.ElementConnection; import org.rj.modelgen.bpmn.intrep.model.ElementNode; +import org.rj.modelgen.bpmn.intrep.model.rendering.*; import org.rj.modelgen.llm.util.Result; import org.rj.modelgen.llm.util.Util; import org.slf4j.Logger; @@ -49,6 +52,16 @@ public Result generateModel(BpmnIntermediateModel int .name(startNode.getName()) .done(); + final var definitions = builder.getDefinitions(); + registerNamespace("bpmn", BpmnModelConstants.BPMN20_NS, definitions); + registerNamespace("camunda", BpmnModelConstants.CAMUNDA_NS, definitions); + registerAdditionalNamespaces(definitions); + + final var processConfig = intermediateModel.getNodes().stream() + .filter(node -> BpmnConstants.NodeTypes.PROCESS_CONFIG.equalsIgnoreCase(node.getElementType())) + .findFirst(); + processConfig.ifPresent(config -> setProcessConfiguration(config, builder)); + int sequenceId = 0; nodes.add(startNode.getId()); @@ -85,45 +98,66 @@ public Result generateModel(BpmnIntermediateModel int return Result.Ok(builder); } - private , E extends FlowNode> + // No-op; override in subclasses to add additional namespaces as needed + protected void registerAdditionalNamespaces(Definitions definitions) {} + + // Override in subclasses to provide custom namespace on process configuration + protected void setProcessConfiguration(ElementNode processConfig, BpmnModelInstance builder) { + String defaultNamespace = BpmnModelConstants.BPMN20_NS; + ((ProcessConfigNode) processConfig).configure(builder, defaultNamespace); + } + + protected void registerNamespace(String namespacePrefix, String namespaceUri, Definitions definitions) { + if (definitions == null) return; + try { + ModelElementInstanceImpl impl = (ModelElementInstanceImpl) definitions; + var dom = impl.getDomElement(); + + String existing = dom.getAttribute("xmlns:" + namespacePrefix); + if (existing == null || !existing.equals(namespaceUri)) { + dom.registerNamespace(namespacePrefix, namespaceUri); + } + } catch (ClassCastException e) { + LOG.warn("Failed to register {} namespace (unexpected type): {}", namespaceUri, e.getMessage()); + } + } + + protected , E extends FlowNode> void addNode(AbstractFlowNodeBuilder builder, ElementNode element) { if (element == null) throw new RuntimeException("Cannot generate definition for null BPMN element"); final var id = element.getId(); final var name = element.getName(); - // Not differentiating between all element types for now final var type = element.getElementType(); switch (type) { - case BpmnConstants.NodeTypes.TASK_USER, BpmnConstants.NodeTypes.TASK_USER_TASK -> builder.userTask(id).name(name).done(); - case BpmnConstants.NodeTypes.TASK_SERVICE, BpmnConstants.NodeTypes.TASK_SERVICE_TASK -> builder.serviceTask(id).name(name).done(); - case BpmnConstants.NodeTypes.TASK_SCRIPT, BpmnConstants.NodeTypes.TASK_SCRIPT_TASK -> builder.scriptTask(id).name(name).done(); - case BpmnConstants.NodeTypes.TASK_MANUAL, BpmnConstants.NodeTypes.TASK_MANUAL_TASK -> builder.manualTask(id).name(name).done(); - case BpmnConstants.NodeTypes.TASK_SEND, BpmnConstants.NodeTypes.TASK_SEND_TASK -> builder.sendTask(id).name(name).done(); - case BpmnConstants.NodeTypes.TASK_RECEIVE, BpmnConstants.NodeTypes.TASK_RECEIVE_TASK -> builder.receiveTask(id).name(name).done(); - case BpmnConstants.NodeTypes.TASK_BUSINESS_RULE, BpmnConstants.NodeTypes.TASK_BUSINESS_RULE_TASK -> builder.businessRuleTask(id).name(name).done(); case BpmnConstants.NodeTypes.END_EVENT -> builder.endEvent(id).name(name).done(); - case BpmnConstants.NodeTypes.GATEWAY_EXCLUSIVE -> builder.exclusiveGateway(id).name(name).done(); case BpmnConstants.NodeTypes.GATEWAY_INCLUSIVE -> builder.inclusiveGateway(id).name(name).done(); case BpmnConstants.NodeTypes.GATEWAY_PARALLEL -> builder.parallelGateway(id).name(name).done(); - default -> builder.manualTask(id).name(name).done(); // TODO + default -> renderElement(builder, element); } } + // Render element and its attributes - override in subclasses to render with a custom namespace + protected , E extends FlowNode> BpmnModelInstance renderElement(AbstractFlowNodeBuilder builder, ElementNode element) { + return element.render(builder, BpmnModelConstants.BPMN20_NS); + } + private , E extends FlowNode> AbstractFlowNodeBuilder addOutboundConnection(AbstractFlowNodeBuilder builder, ElementNode sourceElement, ElementConnection connection, String id) { if (builder == null || sourceElement == null || connection == null || StringUtils.isBlank(id)) throw new RuntimeException("Cannot make connection with invalid null data"); - final var elementConnection = builder.sequenceFlowId(id); + final var outboundConnection = builder.sequenceFlowId(id); if (BpmnConstants.NodeTypes.GATEWAY_EXCLUSIVE.equals(sourceElement.getElementType())) { - elementConnection.condition(connection.getDescription(), null); + ExclusiveGatewayNode gatewayNode = (ExclusiveGatewayNode) sourceElement; + gatewayNode.renderConditionalConnections(builder, connection, id, outboundConnection); } - return elementConnection; + return outboundConnection; } private FlowNode addElement(ElementNode element, Process process) { diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnConstants.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnConstants.java index 82cac6e..d455281 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnConstants.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnConstants.java @@ -1,6 +1,10 @@ package org.rj.modelgen.bpmn.generation; -import reactor.netty.udp.UdpServer; +import java.util.regex.Pattern; + +import java.util.Arrays; +import java.util.List; +import java.util.regex.Pattern; import java.util.Arrays; import java.util.List; @@ -43,6 +47,8 @@ public static class Comparable { public static final String END_EVENT = "endEvent"; public static final String SEQUENCE_FLOW = "sequenceFlow"; + + public static final String PROCESS_CONFIG = "processConfig"; } public static class Patterns { diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelGenerationFunction.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelGenerationFunction.java index f760782..5651813 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelGenerationFunction.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelGenerationFunction.java @@ -1,20 +1,24 @@ -package org.rj.modelgen.bpmn.generation; - -import org.camunda.bpm.model.bpmn.BpmnModelInstance; -import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; -import org.rj.modelgen.llm.generation.ModelGenerationFunction; -import org.rj.modelgen.llm.state.ModelInterfaceStateMachine; -import org.rj.modelgen.llm.util.Result; - -public class BpmnModelGenerationFunction implements ModelGenerationFunction { - final BasicBpmnModelGenerator modelGenerator; - - public BpmnModelGenerationFunction() { - this.modelGenerator = new BasicBpmnModelGenerator(); - } - - @Override - public Result generateModel(BpmnIntermediateModel intermediateModel, ModelInterfaceStateMachine executionModel) { - return modelGenerator.generateModel(intermediateModel); - } -} +package org.rj.modelgen.bpmn.generation; + +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; +import org.rj.modelgen.llm.generation.ModelGenerationFunction; +import org.rj.modelgen.llm.state.ModelInterfaceStateMachine; +import org.rj.modelgen.llm.util.Result; + +public class BpmnModelGenerationFunction implements ModelGenerationFunction { + final BasicBpmnModelGenerator modelGenerator; + + public BpmnModelGenerationFunction() { + this.modelGenerator = new BasicBpmnModelGenerator(); + } + + public BpmnModelGenerationFunction(BasicBpmnModelGenerator modelGenerator) { + this.modelGenerator = modelGenerator; + } + + @Override + public Result generateModel(BpmnIntermediateModel intermediateModel, ModelInterfaceStateMachine executionModel) { + return modelGenerator.generateModel(intermediateModel); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java index aedc39c..7c371f3 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java @@ -1,20 +1,33 @@ package org.rj.modelgen.bpmn.intrep.model; import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver; +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; +import org.camunda.bpm.model.bpmn.instance.ExtensionElements; +import org.camunda.bpm.model.bpmn.instance.FlowNode; +import org.camunda.bpm.model.bpmn.instance.Task; +import org.rj.modelgen.bpmn.intrep.model.rendering.*; import org.rj.modelgen.llm.intrep.graph.GraphNode; import java.util.*; @JsonIgnoreProperties(ignoreUnknown = true) +@JsonTypeInfo( + use = JsonTypeInfo.Id.CUSTOM, + include = JsonTypeInfo.As.EXISTING_PROPERTY, + property = "elementType", + visible = true) +@JsonTypeIdResolver(ElementNodeTypeIdResolver.class) public class ElementNode implements GraphNode { - private String id; - private String name; - private String elementType; - private String description; - private List connectedTo; - private Map properties; - private List inputs; - private List outputs; + protected String id; + protected String name; + protected String elementType; + protected String description; + protected List connectedTo; + protected Map properties; + protected List inputs; + protected List outputs; public ElementNode() { } @@ -138,6 +151,26 @@ public Optional findOutput(String name) { .findFirst(); } + @JsonIgnore + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + return builder.manualTask(id).name(name).done(); + } + + @JsonIgnore + protected String getAttrName(ElementNodeInput input) { + return input.getName(); + } + + @JsonIgnore + protected ExtensionElements getExtensionElements(Task task) { + ExtensionElements extensionElements = task.getExtensionElements(); + if (extensionElements == null) { + extensionElements = task.getModelInstance().newInstance(ExtensionElements.class); + task.setExtensionElements(extensionElements); + } + return extensionElements; + } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeTypeIdResolver.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeTypeIdResolver.java new file mode 100644 index 0000000..c608552 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeTypeIdResolver.java @@ -0,0 +1,40 @@ +package org.rj.modelgen.bpmn.intrep.model; + +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.databind.DatabindContext; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.jsontype.impl.TypeIdResolverBase; + +public class ElementNodeTypeIdResolver extends TypeIdResolverBase { + + private JavaType baseType; + + @Override + public void init(JavaType baseType) { + this.baseType = baseType; + } + + @Override + public String idFromValue(Object value) { + return idFromValueAndType(value, value.getClass()); + } + + @Override + public String idFromValueAndType(Object value, Class suggestedType) { + if (value instanceof ElementNode node) { + return node.getElementType(); + } + return null; + } + + @Override + public JavaType typeFromId(DatabindContext context, String id) { + Class clazz = ElementNodeTypeRegistry.getNodeClass(id); + return context.constructType(clazz); + } + + @Override + public JsonTypeInfo.Id getMechanism() { + return JsonTypeInfo.Id.CUSTOM; + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeTypeRegistry.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeTypeRegistry.java new file mode 100644 index 0000000..bb9d627 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeTypeRegistry.java @@ -0,0 +1,32 @@ +package org.rj.modelgen.bpmn.intrep.model; + +import org.rj.modelgen.bpmn.intrep.model.rendering.*; + +import java.util.HashMap; +import java.util.Map; + +import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.*; + +public class ElementNodeTypeRegistry { + + private static final Map> typeMap = new HashMap<>(); + + static { + registerType(TASK_USER_TASK, UserTaskNode.class); + registerType(TASK_SERVICE_TASK, ServiceTaskNode.class); + registerType(TASK_SCRIPT_TASK, ScriptTaskNode.class); + registerType(TASK_RECEIVE_TASK, ReceiveTaskNode.class); + registerType(TASK_SEND_TASK, SendTaskNode.class); + registerType(TASK_BUSINESS_RULE_TASK, BusinessRuleTaskNode.class); + registerType(GATEWAY_EXCLUSIVE, ExclusiveGatewayNode.class); + registerType(PROCESS_CONFIG, ProcessConfigNode.class); + } + + public static void registerType(String elementType, Class nodeClass) { + typeMap.put(elementType, nodeClass); + } + + public static Class getNodeClass(String elementType) { + return typeMap.getOrDefault(elementType, ElementNode.class); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/BusinessRuleTaskNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/BusinessRuleTaskNode.java new file mode 100644 index 0000000..bedb512 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/BusinessRuleTaskNode.java @@ -0,0 +1,54 @@ +package org.rj.modelgen.bpmn.intrep.model.rendering; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; +import org.camunda.bpm.model.bpmn.builder.BusinessRuleTaskBuilder; +import org.camunda.bpm.model.bpmn.instance.*; +import org.rj.modelgen.bpmn.intrep.model.ElementNode; +import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; + +import java.util.List; +import java.util.Map; + +import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.TASK_BUSINESS_RULE_TASK; + +public class BusinessRuleTaskNode extends ElementNode { + + protected final List attributes = List.of("executionEngine", "applicationId", "ruleName", "ruleVersion"); + protected final Map inputAliases = Map.ofEntries( + Map.entry("ruleName", "businessRuleName"), + Map.entry("ruleVersion", "businessRuleVersion")); + + public BusinessRuleTaskNode() { + super(); + } + + public BusinessRuleTaskNode(String id, String name) { + super(id, name, TASK_BUSINESS_RULE_TASK); + } + + @JsonIgnore + @Override + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + BusinessRuleTaskBuilder taskBuilder = builder.businessRuleTask(id).name(name); + BusinessRuleTask task = taskBuilder.getElement(); + + if (inputs != null) { + inputs.forEach(input -> { + if (attributes.contains(input.getName())) { + String attrName = getAttrName(input); + task.setAttributeValueNs(namespace, attrName, input.getValue()); + } + }); + } + + return taskBuilder.done(); + } + + @JsonIgnore + @Override + protected String getAttrName(ElementNodeInput input) { + return inputAliases.getOrDefault(input.getName(), input.getName()); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ExclusiveGatewayNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ExclusiveGatewayNode.java new file mode 100644 index 0000000..a2d6609 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ExclusiveGatewayNode.java @@ -0,0 +1,57 @@ +package org.rj.modelgen.bpmn.intrep.model.rendering; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; +import org.camunda.bpm.model.bpmn.instance.FlowNode; +import org.rj.modelgen.bpmn.intrep.model.ElementConnection; +import org.rj.modelgen.bpmn.intrep.model.ElementNode; +import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.Map; + +import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.GATEWAY_EXCLUSIVE; + +public class ExclusiveGatewayNode extends ElementNode { + private static final Logger LOG = LoggerFactory.getLogger(ExclusiveGatewayNode.class); + + public ExclusiveGatewayNode() { + super(); + } + + public ExclusiveGatewayNode(String id, String name) { + super(id, name, GATEWAY_EXCLUSIVE); + } + + @JsonIgnore + @Override + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + return builder.exclusiveGateway(id).name(name).done(); + } + + public , E extends FlowNode> void renderConditionalConnections(AbstractFlowNodeBuilder builder, ElementConnection connection, String connectionId, B outboundConnection) { + String defaultTargetNodeId = findInput("default").map(ElementNodeInput::getValue).orElse(""); + String conditionsJson = findInput("conditions").map(ElementNodeInput::getValue).orElse("{}"); + + // Set default sequence flow on the gateway node + if (connection.getTargetNode().equals(defaultTargetNodeId)) { + builder.getElement().setAttributeValue("default", connectionId); + } + + // Set condition expression on the sequence flow + Map conditions = new HashMap<>(); + try { + ObjectMapper mapper = new ObjectMapper(); + conditions = mapper.readValue(conditionsJson, new TypeReference>() {}); + } catch (Exception e) { + LOG.warn("Failed to parse conditions JSON: {}", e.getMessage()); + } + + outboundConnection.condition(connection.getDescription(), conditions.getOrDefault(connection.getTargetNode(), "")); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ProcessConfigNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ProcessConfigNode.java new file mode 100644 index 0000000..171b845 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ProcessConfigNode.java @@ -0,0 +1,67 @@ +package org.rj.modelgen.bpmn.intrep.model.rendering; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; +import org.camunda.bpm.model.bpmn.instance.FlowNode; +import org.camunda.bpm.model.bpmn.instance.Process; +import org.rj.modelgen.bpmn.intrep.model.ElementNode; +import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; + +import java.util.List; +import java.util.Map; + +import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.PROCESS_CONFIG; + +public class ProcessConfigNode extends ElementNode { + + protected final List attributes = List.of("processId", "processName", "processDescription", "sourceSystemName", "processTypeName", "processPriority", "processDeadline", "maximumActiveProcesses"); + protected final Map inputAliases = Map.ofEntries( + Map.entry("processName", "workItemName"), + Map.entry("processDescription", "workItemDescription"), + Map.entry("sourceSystemName", "appName"), + Map.entry("processTypeName", "workItemTypeName"), + Map.entry("processPriority", "workItemPriority"), + Map.entry("processDeadline", "workItemDeadline"), + Map.entry("maximumActiveProcesses", "maximumActiveProcessInstances")); + + public ProcessConfigNode() { + super(); + } + + public ProcessConfigNode(String id, String name) { + super(id, name, PROCESS_CONFIG); + } + + + @JsonIgnore + @Override + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + // Process configuration is not rendered as a bpmn node so this is a no-op in the flow. + return builder.done(); + } + + public void configure(BpmnModelInstance modelInstance, String namespace) { + Process process = modelInstance.getModelElementsByType(Process.class).iterator().next(); + + String id = this.findInput("processId").map(ElementNodeInput::getValue).orElse("not_configured"); + String name = this.findInput("processName").map(ElementNodeInput::getValue).orElse("not_configured"); + process.setId(id); + process.setName(name); + + if (inputs != null) { + this.inputs.forEach(input -> { + if (attributes.contains(input.getName())) { + String attrName = getAttrName(input); + process.setAttributeValueNs(namespace, attrName, input.getValue()); + } + }); + } + } + + @JsonIgnore + @Override + protected String getAttrName(ElementNodeInput input) { + return inputAliases.getOrDefault(input.getName(), input.getName()); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ReceiveTaskNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ReceiveTaskNode.java new file mode 100644 index 0000000..83db131 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ReceiveTaskNode.java @@ -0,0 +1,57 @@ +package org.rj.modelgen.bpmn.intrep.model.rendering; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; +import org.camunda.bpm.model.bpmn.builder.ReceiveTaskBuilder; +import org.camunda.bpm.model.bpmn.instance.*; +import org.rj.modelgen.bpmn.intrep.model.ElementNode; +import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; + +import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.TASK_RECEIVE_TASK; + +public class ReceiveTaskNode extends ElementNode { + + public ReceiveTaskNode() { + super(); + } + + public ReceiveTaskNode(String id, String name) { + super(id, name, TASK_RECEIVE_TASK); + } + + @JsonIgnore + @Override + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + ReceiveTaskBuilder taskBuilder = builder.receiveTask(id).name(name); + ReceiveTask task = taskBuilder.getElement(); + BpmnModelInstance modelInstance = (BpmnModelInstance) task.getModelInstance(); + + String messageId = findInput("messageId") + .map(ElementNodeInput::getValue) + .orElse(null); + + if (messageId != null) { + Message message = modelInstance.getModelElementById(messageId); + if (message == null) { + Definitions definitions = modelInstance.getDefinitions(); + message = modelInstance.newInstance(Message.class); + String randomId = java.util.UUID.randomUUID().toString().substring(0, 7); + message.setId("Message_" + randomId); + message.setName(messageId); + + definitions.addChildElement(message); + } + task.setMessage(message); + } + + // Set availability script + String availability = findInput("availabilityRuleScript") + .map(ElementNodeInput::getValue) + .orElse("// not configured"); + + task.setAttributeValueNs(namespace, "availability", availability); + + return taskBuilder.done(); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ScriptTaskNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ScriptTaskNode.java new file mode 100644 index 0000000..3ba937e --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ScriptTaskNode.java @@ -0,0 +1,42 @@ +package org.rj.modelgen.bpmn.intrep.model.rendering; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; +import org.camunda.bpm.model.bpmn.builder.ScriptTaskBuilder; +import org.camunda.bpm.model.bpmn.instance.FlowNode; +import org.camunda.bpm.model.bpmn.instance.Script; +import org.camunda.bpm.model.bpmn.instance.ScriptTask; +import org.rj.modelgen.bpmn.intrep.model.ElementNode; +import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; + +import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.TASK_SCRIPT_TASK; + +public class ScriptTaskNode extends ElementNode { + public ScriptTaskNode() { + super(); + } + + public ScriptTaskNode(String id, String name) { + super(id, name, TASK_SCRIPT_TASK); + } + + @JsonIgnore + @Override + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + ScriptTaskBuilder taskBuilder = builder.scriptTask(id).name(name); + ScriptTask task = taskBuilder.getElement(); + + String scriptContent = findInput("script") + .map(ElementNodeInput::getValue) + .orElse(""); + + task.setScriptFormat("groovy"); + BpmnModelInstance modelInstance = (BpmnModelInstance) task.getModelInstance(); + Script scriptElement = modelInstance.newInstance(Script.class); + scriptElement.setTextContent(scriptContent); + task.setScript(scriptElement); + + return taskBuilder.done(); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/SendTaskNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/SendTaskNode.java new file mode 100644 index 0000000..ebd043a --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/SendTaskNode.java @@ -0,0 +1,61 @@ +package org.rj.modelgen.bpmn.intrep.model.rendering; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; +import org.camunda.bpm.model.bpmn.builder.SendTaskBuilder; +import org.camunda.bpm.model.bpmn.instance.*; +import org.camunda.bpm.model.xml.instance.ModelElementInstance; +import org.rj.modelgen.bpmn.intrep.model.ElementNode; +import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; + +import java.util.List; +import java.util.Map; + +import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.TASK_SEND_TASK; + +public class SendTaskNode extends ElementNode { + + protected final List attributes = List.of("serviceUrl", "uriPath", "httpMethod", "inputExpression", "outputVariable"); + protected final List extensions = List.of("inputScript", "outputScript"); + protected final Map inputAliases = Map.ofEntries( + Map.entry("serviceUrl", "httpRootUrl"), + Map.entry("uriPath", "httpPath"), + Map.entry("httpMethod", "httpServiceMethod")); + + public SendTaskNode() { + super(); + } + + public SendTaskNode(String id, String name) { + super(id, name, TASK_SEND_TASK); + } + + @JsonIgnore + @Override + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + SendTaskBuilder taskBuilder = builder.sendTask(id).name(name); + SendTask task = taskBuilder.getElement(); + + if (inputs != null) { + inputs.forEach(input -> { + if (attributes.contains(input.getName())) { + String attrName = getAttrName(input); + task.setAttributeValueNs(namespace, attrName, input.getValue()); + } else if (extensions.contains(input.getName())) { + ExtensionElements extensionElements = getExtensionElements(task); + ModelElementInstance extensionElement = extensionElements.addExtensionElement(namespace, input.getName()); + extensionElement.setTextContent(input.getValue()); + } + }); + } + + return taskBuilder.done(); + } + + @JsonIgnore + @Override + protected String getAttrName(ElementNodeInput input) { + return inputAliases.getOrDefault(input.getName(), input.getName()); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ServiceTaskNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ServiceTaskNode.java new file mode 100644 index 0000000..4964cc8 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ServiceTaskNode.java @@ -0,0 +1,66 @@ +package org.rj.modelgen.bpmn.intrep.model.rendering; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; +import org.camunda.bpm.model.bpmn.builder.ServiceTaskBuilder; +import org.camunda.bpm.model.bpmn.instance.ExtensionElements; +import org.camunda.bpm.model.bpmn.instance.FlowNode; +import org.camunda.bpm.model.bpmn.instance.ServiceTask; +import org.camunda.bpm.model.xml.instance.ModelElementInstance; +import org.rj.modelgen.bpmn.intrep.model.ElementNode; +import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; + +import java.util.List; +import java.util.Map; + +import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.TASK_SERVICE_TASK; + +public class ServiceTaskNode extends ElementNode { + + protected final List attributes = List.of("serviceUrl", "uriPath", "httpMethod", "inputExpression", "outputVariable"); + protected final List extensions = List.of("inputScript", "outputScript"); + protected final Map inputAliases = Map.ofEntries( + Map.entry("serviceUrl", "httpRootUrl"), + Map.entry("uriPath", "httpPath"), + Map.entry("httpMethod", "httpServiceMethod")); + + public ServiceTaskNode() { + super(); + } + + public ServiceTaskNode(String id, String name) { + super(id, name, TASK_SERVICE_TASK); + } + + @JsonIgnore + @Override + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + ServiceTaskBuilder taskBuilder = builder.serviceTask(id).name(name); + ServiceTask task = taskBuilder.getElement(); + + // Set default value for output variable + task.setAttributeValueNs(namespace, "outputVariable", "response"); + + if (inputs != null) { + inputs.forEach(input -> { + if (attributes.contains(input.getName())) { + String attrName = getAttrName(input); + task.setAttributeValueNs(namespace, attrName, input.getValue()); + } else if (extensions.contains(input.getName())) { + ExtensionElements extensionElements = getExtensionElements(task); + ModelElementInstance extensionElement = extensionElements.addExtensionElement(namespace, input.getName()); + extensionElement.setTextContent(input.getValue()); + } + }); + } + + return taskBuilder.done(); + } + + @JsonIgnore + @Override + protected String getAttrName(ElementNodeInput input) { + return inputAliases.getOrDefault(input.getName(), input.getName()); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/UserTaskNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/UserTaskNode.java new file mode 100644 index 0000000..c865591 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/UserTaskNode.java @@ -0,0 +1,59 @@ +package org.rj.modelgen.bpmn.intrep.model.rendering; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; +import org.camunda.bpm.model.bpmn.builder.UserTaskBuilder; +import org.camunda.bpm.model.bpmn.instance.FlowNode; +import org.camunda.bpm.model.bpmn.instance.UserTask; +import org.rj.modelgen.bpmn.intrep.model.ElementNode; +import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; + +import java.util.List; +import java.util.Map; + +import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.TASK_USER_TASK; + +public class UserTaskNode extends ElementNode { + + protected final List attributes = List.of("taskName", "taskDescription", "sourceSystemName", "taskPriority", "taskDeadline", "maximumActiveTasks"); + protected final Map inputAliases = Map.ofEntries( + Map.entry("taskName", "workItemName"), + Map.entry("taskDescription", "workItemDescription"), + Map.entry("sourceSystemName", "appName"), + Map.entry("taskTypeName", "workItemTypeName"), + Map.entry("taskPriority", "workItemPriority"), + Map.entry("taskDeadline", "workItemDeadline")); + + public UserTaskNode() { + super(); + } + + public UserTaskNode(String id, String name) { + super(id, name, TASK_USER_TASK); + } + + @JsonIgnore + @Override + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + UserTaskBuilder taskBuilder = builder.userTask(id).name(name); + UserTask task = taskBuilder.getElement(); + + if (inputs != null) { + inputs.forEach(input -> { + if (attributes.contains(input.getName())) { + String attrName = getAttrName(input); + task.setAttributeValueNs(namespace, attrName, input.getValue()); + } + }); + } + + return taskBuilder.done(); + } + + @JsonIgnore + @Override + protected String getAttrName(ElementNodeInput input) { + return inputAliases.getOrDefault(input.getName(), input.getName()); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java index d10f2dc..456ca26 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java @@ -57,10 +57,11 @@ public class BpmnMultiLevelGenerationModel extends MultiLevelGenerationModel new PrepareBpmnMLDetailLevelModelGenerationRequest<>(params, globalVariableLibrary), null); - final var modelGenerationFunction = new BpmnModelGenerationFunction(); final Function renderedModelSerializer = Bpmn::convertToString; final var subproblemDecompositionConfig = SubproblemDecompositionConfig.defaultConfig() diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java index 99a7726..5af9574 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java @@ -18,12 +18,14 @@ import java.util.*; import static org.rj.modelgen.bpmn.component.common.BpmnComponentInputSourceType.*; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.PROCESS_CONFIG; import static org.rj.modelgen.bpmn.generation.BpmnConstants.Patterns.*; import static org.rj.modelgen.bpmn.models.generation.validation.BpmnScriptUtils.*; public class PrepareBpmnModelForRendering extends PrepareModelForRendering { private static final Logger LOG = LoggerFactory.getLogger(PrepareBpmnModelForRendering.class); + private static final List NODES_TO_IGNORE = List.of(PROCESS_CONFIG); private final BpmnGlobalVariableLibrary globalVariableLibrary; @@ -54,7 +56,7 @@ protected Mono> executeLogic() { final List operations = List.of( () -> removeInvalidNullNodes(model), () -> eliminateDuplicateConnections(model), - () -> identifyOrphanedSubgraphs(model), + () -> identifyOrphanedSubgraphs(model, node -> !NODES_TO_IGNORE.contains(node.getElementType())), () -> resolveInputs(model) ); @@ -86,7 +88,7 @@ private void resolveInputs(BpmnIntermediateModel model) { if (inputSource.equals(SCRIPT.toString())) { inputValue = resolveVariableWrites(inputValue); - inputValue = resolveVariableReads(inputValue); + inputValue = resolveVariableReads(inputValue, false); inputValue = resolveGlobalVariableReads(inputValue, globalVariableLibrary, false); // Hook for subclasses to add custom post-processing diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java index 6a48276..7a0139f 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java @@ -35,8 +35,9 @@ public static List retrieveGlobalVariables(String inputValue, B return variables; } - public static String resolveVariableReads(String inputValue) { - return inputValue.replaceAll(VAR_READ_PATTERN.pattern(), "payload.$1"); + public static String resolveVariableReads(String inputValue, boolean withInterpolation) { + String replacement = withInterpolation ? "\\${payload.$1}" : "payload.$1"; + return inputValue.replaceAll(VAR_READ_PATTERN.pattern(), replacement); } public static String resolveVariableWrites(String inputValue) { diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java index d85a081..f828681 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java @@ -32,6 +32,7 @@ public class ValidateBpmnModel { private static final String FULL_PROCESS = "full_process"; private static final String COMMA_DELIMITER = ","; + private static final List NODES_TO_IGNORE = List.of(PROCESS_CONFIG); private BpmnIntermediateModel model; private BpmnGlobalVariableLibrary globalVariableLibrary; @@ -56,10 +57,27 @@ public List validate(Map> validationFunctions = List.of( - this::validateCodeGenInputs - ); - traverseGraphInExecutionOrder(validationFunctions, startingPayload); + Map> predecessors = new HashMap<>(); // Key: node ID, Value: list of immediate predecessor nodes + Map> inVars = new HashMap<>(); // Key: node ID, Value: set of entry variables available to the node before it executes + Map> outVars = new HashMap<>(); // Key: node ID, Value: set of exit variables available after the node executes + + for (ElementNode node : model.getNodes()) { + inVars.put(node.getId(), new HashSet<>()); + outVars.put(node.getId(), new HashSet<>()); + + // Compute predecessors + predecessors.putIfAbsent(node.getId(), new ArrayList<>()); + List outgoingConnections = node.getConnectedTo() == null ? new ArrayList<>() : node.getConnectedTo().stream().toList(); + for (ElementConnection connection : outgoingConnections) { + model.getNodes().stream() + .filter(n -> n.getId().equals(connection.getTargetNode())) + .findFirst() + .ifPresent(targetNode -> + predecessors.computeIfAbsent(targetNode.getId(), k -> new ArrayList<>()).add(node)); + } + + } + traverseGraphAndValidateInputs(predecessors, inVars, outVars, startingPayload); } return invalidMessages; @@ -123,7 +141,7 @@ private void validateRequiredInputs(ElementNode node) { invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has multiple definitions of input '%s'", node.getId(), requiredInput.getName()), node.getId())); } // If the input is enum and constant, it must have a valid value - if (requiredInput.getAllowedValues() != null && !requiredInput.getAllowedValues().isEmpty() && inputs.get(0).getVariableSource().equals(CONSTANT.toString()) && !requiredInput.getAllowedValues().contains(inputs.get(0).getValue())) { + if (!inputs.isEmpty() && requiredInput.getAllowedValues() != null && !requiredInput.getAllowedValues().isEmpty() && inputs.get(0).getVariableSource().equals(CONSTANT.toString()) && !requiredInput.getAllowedValues().contains(inputs.get(0).getValue())) { invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an invalid value for input '%s'. Allowed values are: %s", node.getId(), requiredInput.getName(), String.join(", ", requiredInput.getAllowedValues())), node.getId())); } // If the input's source type is GLOBAL, then global variable library must contain the input variable @@ -152,7 +170,8 @@ private void validateNodeConnections(ElementNode node) { } private void identifyOrphanedNodes() { - List roots = identifyNumberOfRoots(model); + // Identify number of roots but ignore processConfig node + List roots = identifyNumberOfRoots(model, node -> !NODES_TO_IGNORE.contains(node.getElementType())); if (roots.isEmpty()) { invalidMessages.add(new IntermediateModelValidationError("Model has no roots - it is cyclic and therefore invalid. The process must be a single continuous process with one root.", FULL_PROCESS)); @@ -201,50 +220,22 @@ private void validateNodeConnectionsRules(ElementNode node) { invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' has a condition target node '%s' which is not among its outgoing connections. All condition target nodes must be one of the outgoing connections.", node.getId(), conditionTargetNode), node.getId())); } } - } else { + } else if (node.getElementType().equals(PROCESS_CONFIG)) { + if (!incomingConnections.isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Process configuration node '%s' has incoming connections. A process configuration must be an orphan node.", node.getId()), node.getId())); + } + if (!node.getConnectedTo().isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Process configuration node '%s' has outgoing connections. A process configuration must be an orphan node.", node.getId()), node.getId())); + } + } + else { if (incomingConnections.size() != 1 && node.getConnectedTo().size() != 1) { invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' of type '%s' has %d incoming connections and %d outgoing connections. This type of node must have exactly one incoming and one outgoing connection.", node.getId(), node.getElementType(), incomingConnections.size(), node.getConnectedTo().size()), node.getId())); } } } - private void validateCodeGenInputs(ProcessState state) { - ElementNode node = state.currentNode; - Map> payload = state.payload; - - if (node.getInputs() != null) { - node.getInputs().forEach(input -> { - if (input.getVariableSource().equals(CONSTANT.toString())) { - validateConstantInput(node, input, payload); - } else if (input.getVariableSource().equals(EXPRESSION.toString())) { - validateExpressionInput(node, input, payload); - } else if (input.getVariableSource().equals(SCRIPT.toString())) { - validateScriptInput(node, input, payload); - } else if (input.getVariableSource().equals(NODE.toString())) { - validateNodeInput(node, input, payload); - } - }); - } - - Set currentNodeOutputs = payload.getOrDefault(node.getId(), new HashSet<>()); - Set currentNodeOutputsNames = currentNodeOutputs.stream() - .map(PayloadVariable::getName) - .collect(Collectors.toSet()); - - // Get component generated outputs - final var componentOutputVars = componentLibrary.getComponentByName(node.getElementType()) - .map(BpmnComponent::getGeneratedOutputs) - .orElse(Collections.emptyList()) - .stream() - .filter(outputVar -> !currentNodeOutputsNames.contains(outputVar.getName())) - .map(outputVar -> new PayloadVariable(outputVar.getName(), outputVar.getType().toString())) - .toList(); - - currentNodeOutputs.addAll(componentOutputVars); - payload.put(node.getId(), currentNodeOutputs); - } - - private void validateConstantInput(ElementNode node, ElementNodeInput input, Map> payload) { + private void validateConstantInput(ElementNode node, ElementNodeInput input) { String constantValue = input.getValue(); // Do not allow variable writes in constant inputs @@ -280,7 +271,7 @@ private void validateExpressionInput(ElementNode node, ElementNodeInput input, M } validateVariableReads(node, input, payload); - expression = resolveVariableReads(expression); + expression = resolveVariableReads(expression, true); validateGlobalVariableReads(node, input); expression = resolveGlobalVariableReads(expression, globalVariableLibrary, true); @@ -309,24 +300,14 @@ private void validateExpression(ElementNode node, ElementNodeInput input, String expression = expression.substring(1); } // If the expression contains interpolation syntax or it is a json object, wrap it with additional quotes to parse it as a GString or PropertyExpression - boolean addedQuotes = false; if (expression.contains("${") || expression.startsWith("{") && expression.endsWith("}")) { expression = "\"" + expression + "\""; - addedQuotes = true; } try { AstBuilder astBuilder = new AstBuilder(); - List astNodes; - try { - astNodes = astBuilder.buildFromString(CompilePhase.CONVERSION, expression); - } catch (Exception e) { - // Edge case: Parsing fails for scripts that contain interpolation values because of additional quotes so remove them and parse again - if (addedQuotes) { - expression = expression.substring(1, expression.length() - 1); - } - astNodes = astBuilder.buildFromString(CompilePhase.CONVERSION, expression); - } + List astNodes = astBuilder.buildFromString(CompilePhase.CONVERSION, expression); + var astNode = astNodes.get(0); List statements = ((BlockStatement) astNode).getStatements(); @@ -358,7 +339,6 @@ private boolean isValidExpressionType(Expression expr) { expr instanceof ConstantExpression; } - private void validateScriptInput(ElementNode node, ElementNodeInput input, Map> payload) { String script = input.getValue(); @@ -368,7 +348,7 @@ private void validateScriptInput(ElementNode node, ElementNodeInput input, Map> validationFunctions, Map> startingPayload) { - List roots = identifyNumberOfRoots(model); - if (roots.size() != 1) { - return; - } + // Data flow analysis + private void traverseGraphAndValidateInputs(Map> predecessors, + Map> inVars, + Map> outVars, + Map> payload) { - String startNodeId = roots.get(0); - ElementNode startNode = model.getNodeById(startNodeId).orElse(null); + List roots = identifyNumberOfRoots(model, node -> !NODES_TO_IGNORE.contains(node.getElementType())); // Ignore processConfig node - if (startNode == null) { - return; + if (roots.size() == 1) { + model.getNodeById(roots.get(0)).ifPresent(startNode -> { + Set startingVars = new HashSet<>(payload.getOrDefault("startingPayload", Set.of())); + inVars.put(startNode.getId(), startingVars); + }); } - Stack stack = new Stack<>(); - stack.push(new ProcessState(startNode, new ArrayList<>(List.of(startNode.getId())), startingPayload)); + boolean changed; + int maxIterations = 1_000_000; + int iter = 0; + do { + changed = false; + for (ElementNode node : model.getNodes()) { + // IN[node] = union of OUT[predecessor] for all predecessors + Set newInVars = new HashSet<>(); + for (ElementNode pred : predecessors.getOrDefault(node.getId(), List.of())) { + newInVars.addAll(outVars.get(pred.getId())); + } - while (!stack.isEmpty()) { - ProcessState state = stack.pop(); - ElementNode currentNode = state.currentNode; - List currentPath = state.path; - Map> payload = state.payload; + // OUT[node] = IN[node] + variables written by this node + Set newOutVars = new HashSet<>(newInVars); - for (var nodeValidationFunction : validationFunctions) { - nodeValidationFunction.accept(state); + // Extract variables written by this node's inputs + if (node.getInputs() != null) { + for (ElementNodeInput input : node.getInputs()) { + if (input.getVariableSource().equals(SCRIPT.toString())) { + List writtenVars = retrieveVariablesWithPattern(input.getValue(), VAR_WRITE_PATTERN); + newOutVars.addAll(writtenVars); + } + } + } + + // Add component-generated outputs + componentLibrary.getComponentByName(node.getElementType()) + .map(BpmnComponent::getGeneratedOutputs) + .ifPresent(outputs -> { + newOutVars.addAll(outputs.stream() + .map(out -> new PayloadVariable(out.getName(), out.getType().toString())) + .toList()); + }); + + // Check if anything changed + if (!newInVars.equals(inVars.get(node.getId())) || !newOutVars.equals(outVars.get(node.getId()))) { + inVars.put(node.getId(), newInVars); + outVars.put(node.getId(), newOutVars); + changed = true; + } } + iter++; + } while (changed && iter < maxIterations); + + if (changed) { + throw new RuntimeException("Bpmn model validation failed: Data flow analysis did not converge within the maximum number of iterations."); + } + + Map> allReachablePredecessors = new HashMap<>(); + for (ElementNode node : model.getNodes()) { + allReachablePredecessors.put(node.getId(), getAllReachablePredecessors(node, predecessors)); + } - if (currentNode.getConnectedTo() != null) { - for (ElementConnection connection : currentNode.getConnectedTo()) { - ElementNode targetNode = model.getNodeById(connection.getTargetNode()).orElse(null); + // Now validate using the computed IN sets + for (ElementNode node : model.getNodes()) { + if (node.getInputs() != null) { + // Build payload structure for THIS NODE only + for (ElementNode pred : allReachablePredecessors.get(node.getId())) { + payload.put(pred.getId(), outVars.get(pred.getId())); + } - if (targetNode != null && !currentPath.contains(targetNode.getId())) { - List newPath = new ArrayList<>(currentPath); - newPath.add(targetNode.getId()); - stack.push(new ProcessState(targetNode, newPath, deepCopyPayload(payload))); + for (ElementNodeInput input : node.getInputs()) { + if (input.getVariableSource().equals(CONSTANT.toString())) { + validateConstantInput(node, input); + } else if (input.getVariableSource().equals(EXPRESSION.toString())) { + validateExpressionInput(node, input, payload); + } else if (input.getVariableSource().equals(SCRIPT.toString())) { + validateScriptInput(node, input, payload); + } else if (input.getVariableSource().equals(NODE.toString())) { + validateNodeInput(node, input, payload); } } } } - } - private Map> deepCopyPayload(Map> payload) { - return payload.entrySet().stream() - .collect(Collectors.toMap( - Map.Entry::getKey, - e -> new HashSet<>(e.getValue()) - )); - } - - public static class ProcessState { - ElementNode currentNode; - List path; - Map> payload; - - ProcessState(ElementNode currentNode, List path, Map> payload) { - this.currentNode = currentNode; - this.path = path; - this.payload = payload; + // Helper method to get all transitive predecessors + private Set getAllReachablePredecessors(ElementNode node, Map> predecessors) { + Set reachable = new HashSet<>(); + Queue queue = new LinkedList<>(); + queue.add(node); + + while (!queue.isEmpty()) { + ElementNode current = queue.poll(); + for (ElementNode pred : predecessors.getOrDefault(current.getId(), List.of())) { + if (reachable.add(pred)) { // Returns true if not already visited + queue.add(pred); + } + } } + + return reachable; } } diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json index a9c6ad2..eb0c0a3 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json @@ -88,10 +88,10 @@ "usage": "Use service tasks when a task in the process flow can be automated and executed by a software service or application without direct human involvement. It often involves invoking external systems, performing calculations, or executing predefined functions", "requiredInputs": [ { - "name": "location", - "description": "Identification for the target service, e.g a hardcoded URL or GS Discover path in example format /{domain}/.../{service}/location or variable containing such a value", + "name": "serviceUrl", + "description": "Direct HTTP/HTTPS URL of the target service (e.g., https://api.example.com). Use this when the service endpoint is known and accessible via a direct URL. Choose either serviceUrl OR discoveryPath, not both.", "type": "string", - "mandatory": true, + "mandatory": false, "keyValue": true, "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] }, @@ -138,7 +138,7 @@ }, { "name": "outputScript", - "description": "Groovy script to process the response from the server (e.g handle status code and throw exceptions). The response object will be available in a `response` variable with response.statusLine.statusCode, response.request.uri and response.entity available", + "description": "Groovy script to process the response from the server (e.g handle status code and throw exceptions). The returned object will be available in a `response` variable with response.statusLine.statusCode, response.request.uri and response.entity available directly without any additional parsing", "type": "string", "mandatory": false, "keyValue": true, @@ -224,10 +224,10 @@ "usage": "Use send tasks when a task in the process flow involves sending a message or signal to another process participant or external system. It initiates communication or triggers actions in other parts of the process or external systems.", "requiredInputs": [ { - "name": "location", - "description": "Identification for the target service, e.g a hardcoded URL or GS Discover path in example format /{domain}/.../{service}/location or variable containing such a value", + "name": "serviceUrl", + "description": "Direct HTTP/HTTPS URL of the target service (e.g., https://api.example.com). Use this when the service endpoint is known and accessible via a direct URL. Choose either serviceUrl OR discoveryPath, not both.", "type": "string", - "mandatory": true, + "mandatory": false, "keyValue": true, "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] }, @@ -374,6 +374,71 @@ "usage": "Use when the process flow should split into multiple parallel paths or merge from multiple parallel paths simultaneously. All outgoing sequence flows are followed in parallel, and all incoming sequence flows must complete before proceeding", "requiredInputs": [], "generatedOutputs": [] + }, + { + "name": "processConfig", + "description": "Use this node to represent a configuration of the process. This node has no effect besides documentation. It should not have any inputs or outputs as it will not be rendered as a node in the executable model.", + "usage": "Use this node to represent a configuration of the process. This node has no effect besides documentation. It should not have any inputs or outputs as it will not be rendered as a node in the executable model.", + "requiredInputs": [ + { + "name": "processId", + "description": "Unique identifier for the process instance", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT"] + }, + { + "name": "processName", + "description": "Name of the process appearing to the user. This should contain contextual information to allow instances of a process to be distinguished", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + }, + { + "name": "processDescription", + "description": "Name of the process appearing to the user. This should contain contextual information to allow instances of a process to be distinguished", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + }, + { + "name": "sourceSystemName", + "description": "Source system generated this process", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT"] + }, + { + "name": "processPriority", + "description": "Priority level of the process.", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedValues": ["CRITICAL", "HIGH", "MEDIUM", "LOW"], + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + }, + { + "name": "processDeadline", + "description": "Expected completion date and time for the process in date format (e.g. YYYY-MM-DDTHH:MM:SS) or duration (e.g. P{days}DT{hours}H{minutes}M)", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT"] + }, + { + "name": "maximumActiveProcesses", + "description": "Maximum number of active processes allowed before throttling", + "type": "integer", + "mandatory": true, + "keyValue": false, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + } + ], + "generatedOutputs": [] } ] } diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-synthetic-components.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-synthetic-components.json index c06dc09..04d7a41 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-synthetic-components.json +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-synthetic-components.json @@ -1,5 +1,69 @@ { "components": [ + { + "name": "processConfig", + "description": "Use this node to represent a configuration of the process. This node has no effect besides documentation. It should not have any inputs or outputs as it will not be rendered as a node in the executable model.", + "usage": "Use this node to represent a configuration of the process. This node has no effect besides documentation. It should not have any inputs or outputs as it will not be rendered as a node in the executable model.", + "requiredInputs": [ + { + "name": "processId", + "description": "Unique identifier for the process instance", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT"] + }, + { + "name": "processName", + "description": "Name of the process appearing to the user. This should contain contextual information to allow instances of a process to be distinguished", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + }, + { + "name": "processDescription", + "description": "Name of the process appearing to the user. This should contain contextual information to allow instances of a process to be distinguished", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + }, + { + "name": "sourceSystemName", + "description": "Source system generated this process", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT"] + }, + { + "name": "processPriority", + "description": "Priority level of the process.", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedValues": ["CRITICAL", "HIGH", "MEDIUM", "LOW"], + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + }, + { + "name": "processDeadline", + "description": "Expected completion date and time for the process in date format (e.g. YYYY-MM-DDTHH:MM:SS) or duration (e.g. P{days}DT{hours}H{minutes}M)", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT"] + }, + { + "name": "maximumActiveProcesses", + "description": "Maximum number of active processes allowed before throttling", + "type": "integer", + "mandatory": true, + "keyValue": false, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + } + ] + }, { "name": "unknownElement", "description": "Use this node to represent a step if there is no applicable component in the rest of the library. This node has no effect besides documentation. Its single output should connect to the next node in the model. Do not use this for generic logic (checking values, parsing text etc.)", diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt index 9a47402..bbec7ce 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt @@ -81,7 +81,7 @@ RULES FOR THE DETAILED MODEL GENERATION a. Include all high-level nodes (startEvent, endEvent(s), gateways, tasks) unless you deliberately restructure to satisfy inputs; in that case still produce a valid connected process. b. You may add nodes, but do not drop all existing nodes. If you cannot produce any valid nodes, respond with: RETURN_TO_HIGH_LEVEL: (reason) rather than an empty model. c. Every model must have exactly one startEvent and at least one endEvent. - d. Maintain connectivity: all nodes must be reachable from startEvent and lead to at least one endEvent. + d. Maintain connectivity: all nodes (except processConfig node) must be reachable from startEvent and lead to at least one endEvent. 2. Input resolution a. For every node use only inputs listed in that component's requiredInputs (include all mandatory; optional only if clearly beneficial and resolvable). @@ -148,20 +148,22 @@ RULES FOR THE DETAILED MODEL GENERATION e. If a condition requires computed flags or complex expressions, derive them before the gateway using a ScriptTask. 7. Connections - a. Every non-endEvent node must have at least one outbound connection. - b. Every non-startEvent node must have at least one inbound connection. - c. endEvent must have zero outbound connections. - d. startEvent must have zero inbound connections. - e. Ensure a single connected model with no orphan nodes. + a. processConfig node must have no inbound or outbound connections. + b. Every non-endEvent node must have at least one outbound connection. + c. Every non-startEvent node must have at least one inbound connection. + d. endEvent must have zero outbound connections. + e. startEvent must have zero inbound connections. + f. Ensure a single connected model with no orphan nodes (except processConfig). CODE GENERATION & SCRIPTING INSTRUCTIONS 1. Script best practices a. If need to read from the shared variable map: use getVariable('keyName.subfield') or getVariable('keyName.subfield', 'sourceNodeId'). DO NOT do null checks - assume key exists. b. If need to write to the shared variable map: use setVariable('keyName', 'value', 'String'); - c. If need to throw exception use: throw(errorMessage); - d. Scripts should be concise but complete. Group related logic in a single script rather than creating separate nodes for each command. - e. Scripts MUST be properly formatted with correct indentation and structure: + c. If need to read a variable that was set on the same node, use local variables within the script. + d. If need to throw exception use: throw(errorMessage); + e. Scripts should be concise but complete. Group related logic in a single script rather than creating separate nodes for each command. + f. Scripts MUST be properly formatted with correct indentation and structure: - Use `\n` for newlines between statements and after opening braces `{` - Use `\t` or 4 spaces for each indentation level - Every statement must end with a semicolon @@ -179,10 +181,10 @@ CODE GENERATION & SCRIPTING INSTRUCTIONS list.each { item ->\n\tif (item > 5) {\n\t\tprintln(item);\n\t}\n} // Complex: multi-line required ``` - Do NOT collapse or strip whitespace - preserve all indentation and line breaks explicitly - f. Script should not return any values with `return` statement. Instead, write any outputs to the shared state using setVariable(). - g Use global variables to leverage built-in functionalities and values where applicable. - h. Do not import any external libraries. Use only built-in Groovy functions. - i. Prefer basic string operations (contains, replace, split, toLowerCase) before regex. + g. Script should not return any values with `return` statement. Instead, write any outputs to the shared state using setVariable(). + h Use global variables to leverage built-in functionalities and values where applicable. + i. Do not import any external libraries. Use only built-in Groovy functions. + j. Prefer basic string operations (contains, replace, split, toLowerCase) before regex. 2. Expression best practices a. If need to read from the shared variable map: use getVariable('keyName.subfield') or getVariable('keyName.subfield', 'sourceNodeId'). DO NOT do null checks - assume key exists. diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt index 132a340..c1d337c 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt @@ -14,6 +14,7 @@ ${SCHEMA_CONTENT} Other requirements: * You can only use elements specified in the component library above +* There must be one processConfig node and it should have no inbound or outbound connections. This is the only node allowed to be an orphan. * A node can only have ONE inbound and ONE outbound connection, UNLESS it is an 'exclusiveGateway' node. As a result, you should use exclusiveGateway nodes to handling branching. They should be placed after a result is calculated which you want to branch on. If you need to merge branches, use another 'exclusiveGateway' node with no conditions. * Your process should begin with a Start Event and end with one or more End Events Each non-endEvent can make outbound connections to other nodes. These connections should reference the 'name' of the node they are connecting to. diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareModelForRendering.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareModelForRendering.java index 82bb7f5..cfb6fa0 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareModelForRendering.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareModelForRendering.java @@ -12,6 +12,7 @@ import java.util.*; import java.util.function.Function; +import java.util.function.Predicate; import java.util.stream.Collectors; public abstract class PrepareModelForRendering extends ExecuteLogic { @@ -39,14 +40,19 @@ void removeInvalidNullNodes(TModel model) { } } + protected , TNode extends GraphNode, TModel extends IntermediateGraphModel> + void identifyOrphanedSubgraphs(TModel model) { + identifyOrphanedSubgraphs(model, node -> true); + } + // Identify orphaned subgraphs (which may more likely be individual nodes that became disconnected during preparation operations // above). Remove them if they fall below a low threshold size. Trigger a fatal generation error if they exceed the threshold // since it likely means we have generated a partitioned model and it needs to be fully regenerated protected , TNode extends GraphNode, TModel extends IntermediateGraphModel> - void identifyOrphanedSubgraphs(TModel model) { + void identifyOrphanedSubgraphs(TModel model, Predicate nodeFilter) { final int SUBGRAPH_SIZE_THRESHOLD = 3; // Threshold for pruning small subgraphs - List roots = ValidationUtils.identifyNumberOfRoots(model); + List roots = ValidationUtils.identifyNumberOfRoots(model, nodeFilter); // A correctly-formed model should have only one root (with |referrers| == 0) if (roots.size() == 1) { diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java index 5f3255d..290a0ad 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java @@ -9,13 +9,20 @@ import java.util.*; import java.util.function.Function; +import java.util.function.Predicate; import java.util.stream.Collectors; public class ValidationUtils { public static , TNode extends GraphNode, TModel extends IntermediateGraphModel> List identifyNumberOfRoots(TModel model) { + return identifyNumberOfRoots(model, node -> true); + } + + public static , TNode extends GraphNode, TModel extends IntermediateGraphModel> + List identifyNumberOfRoots(TModel model, Predicate nodeFilter) { final Map referrers = model.getNodes().stream() + .filter(nodeFilter) .map(GraphNode::getId) .collect(Collectors.toMap(Function.identity(), __ -> 0)); diff --git a/codegen-service/llm-generation-service/pom.xml b/codegen-service/llm-generation-service/pom.xml index 3bfffaa..8a20b4b 100644 --- a/codegen-service/llm-generation-service/pom.xml +++ b/codegen-service/llm-generation-service/pom.xml @@ -3,12 +3,6 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - - - - - org.rj.modelgen llm-generation @@ -59,7 +53,7 @@ org.springframework.boot spring-boot-dependencies - 3.0.6 + 3.5.0 pom import diff --git a/codegen-service/settings.xml b/codegen-service/settings.xml new file mode 100644 index 0000000..af555bb --- /dev/null +++ b/codegen-service/settings.xml @@ -0,0 +1,36 @@ + + + + default + + true + + + + central + Maven Central + http://gscentral.area.services.gs.com/maven/ + + + AREA-public + AREA Repository + http://area.services.gs.com/area/repo/cbkmaventest + + + + + central + Maven Central + http://gscentral.area.services.gs.com/maven/ + + + AREA-public + http://area.services.gs.com/area/repo/cbkmaventest + + + + + + default + + \ No newline at end of file From 7411c5b872190f0affa64090245ee762569b9d5c Mon Sep 17 00:00:00 2001 From: "Liput, Milosz [Engineering]" Date: Wed, 11 Mar 2026 14:10:42 +0000 Subject: [PATCH 08/10] Extended BPMN validation and generation capabilities --- .../bpmn/component/BpmnComponent.java | 159 +++++++-- ...mnComponentLibraryHighLevelSerializer.java | 3 +- ...nComponentLibrarySerializationOptions.java | 14 + .../common/BpmnComponentVariableType.java | 4 +- .../config/BpmnSyntheticElementConfig.java | 7 +- .../BpmnSyntheticUnknownElementNode.java | 8 + .../generation/BasicBpmnModelGenerator.java | 50 +-- .../bpmn/generation/BpmnConstants.java | 72 +++- .../BpmnModelGenerationFunction.java | 3 +- .../generation/BpmnReverseRenderFunction.java | 29 ++ .../modelgen/bpmn/intrep/BpmnModelParser.java | 24 ++ .../intrep/model/BpmnReverseRenderer.java | 38 ++ .../model/ElementHighLevelNodeInput.java | 38 +- .../bpmn/intrep/model/ElementNode.java | 25 +- .../bpmn/intrep/model/ElementNodeInput.java | 54 ++- .../intrep/model/ElementNodeTypeRegistry.java | 1 + .../model/rendering/BusinessRuleTaskNode.java | 33 +- .../model/rendering/ConditionalGateway.java | 24 ++ .../model/rendering/ExclusiveGatewayNode.java | 46 ++- .../model/rendering/InclusiveGatewayNode.java | 75 ++++ .../model/rendering/ProcessConfigNode.java | 35 +- .../model/rendering/ReceiveTaskNode.java | 14 +- .../model/rendering/ScriptTaskNode.java | 8 +- .../intrep/model/rendering/SendTaskNode.java | 29 +- .../model/rendering/ServiceTaskNode.java | 30 +- .../intrep/model/rendering/UserTaskNode.java | 27 +- .../BpmnGenerationExecutionModel.java | 2 +- .../BpmnGenerationBaseExecutionModel.java | 4 +- .../data/BpmnGenerationModelInputPayload.java | 4 +- .../BpmnMultiLevelGenerationModel.java | 60 ++-- .../states/PrepareBpmnModelForRendering.java | 78 +++-- ...mDetailLevelIntermediateModelResponse.java | 9 +- .../validation/BpmnScriptUtils.java | 62 +++- .../validation/ValidateBpmnModel.java | 329 +++++++++++------- .../components/bpmn-component-library.json | 295 ++++++++++++---- .../components/bpmn-synthetic-components.json | 64 ---- ...-multilevel-detail-level-generation-prompt | 60 +++- ...ilevel-detail-level-generation-schema.json | 30 +- ...mn-multilevel-high-level-generation-prompt | 11 + ...ltilevel-high-level-generation-schema.json | 30 +- ...mn-preprocessing-payload-generation-prompt | 4 +- .../rj/modelgen/llm/intrep/ModelParser.java | 8 + .../intrep/graph/IntermediateGraphModel.java | 4 + .../models/generation/GenerationModel.java | 2 +- .../multilevel/MultiLevelGenerationModel.java | 62 +++- .../MultiLevelGenerationModelStates.java | 6 + .../MultiLevelModelStandardPayloadData.java | 6 +- .../MultiLevelModelStandardSignals.java | 5 +- .../states/ReverseRenderFunction.java | 8 + .../ReverseRenderIntermediateModel.java | 71 ++++ .../states/StartMultiLevelGeneration.java | 8 +- .../llm/state/ModelInterfaceInputPayload.java | 3 +- .../llm/state/ModelInterfaceState.java | 4 + .../data/common/StandardModelData.java | 1 + .../common/ResolveSyntheticComponents.java | 33 ++ ...bmitDetailLevelGenerationRequestToLlm.java | 34 +- .../ValidateLlmIntermediateModelResponse.java | 2 + .../config/SubproblemDecompositionConfig.java | 2 +- .../data/SubproblemDecompositionSignals.java | 4 +- .../subproblem/states/CombineSubproblems.java | 269 +++++++------- .../states/GenerateSubproblems.java | 1 - ...ModelSubproblemDecompositionBaseState.java | 61 ++++ .../states/SubproblemDecompositionState.java | 37 -- .../modelgen/llm/synthetic/SyntheticNode.java | 9 + .../llm/synthetic/SyntheticNodeConfig.java | 46 ++- .../llm/synthetic/SyntheticNodeResolver.java | 129 ++++--- .../rj/modelgen/llm/util/ValidationUtils.java | 9 - .../service/CodegenServiceApplication.java | 2 +- codegen-service/settings.xml | 36 -- codegen-ui/package-lock.json | 9 +- codegen-ui/package.json | 4 +- 71 files changed, 1912 insertions(+), 855 deletions(-) create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnReverseRenderFunction.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/BpmnModelParser.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/BpmnReverseRenderer.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ConditionalGateway.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/InclusiveGatewayNode.java create mode 100644 codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/ModelParser.java create mode 100644 codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/ReverseRenderFunction.java create mode 100644 codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/ReverseRenderIntermediateModel.java create mode 100644 codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/IntermediateModelSubproblemDecompositionBaseState.java delete mode 100644 codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/SubproblemDecompositionState.java delete mode 100644 codegen-service/settings.xml diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java index 1da9d4a..fe7df4e 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; +import org.apache.commons.lang3.StringUtils; import org.rj.modelgen.bpmn.component.common.BpmnComponentVariableType; import org.rj.modelgen.bpmn.component.common.BpmnComponentInputSourceType; import org.rj.modelgen.llm.component.Component; @@ -70,18 +71,17 @@ public String generateSerializedPromptData(BpmnComponentLibrarySerializationOpti .collect(Collectors.partitioningBy(i -> (i.isMandatory() || i.isKeyValue()))); final var mandatory = inputs.get(Boolean.TRUE); final var optional = inputs.get(Boolean.FALSE); + boolean shouldIncludeConstants = options.shouldIncludeConstantInputs(); if (!mandatory.isEmpty()) { - result.append("Mandatory inputs: \n").append(mandatory.stream() - .map(InputVariable::getVariableSummary) - .collect(Collectors.joining(",\n"))) + result.append("Mandatory inputs: \n") + .append(serializeInputs(mandatory, 0, shouldIncludeConstants)) .append('\n'); } if (!options.isMandatoryInputsOnly() && !optional.isEmpty()) { - result.append("Optional inputs: \n").append(optional.stream() - .map(InputVariable::getVariableSummary) - .collect(Collectors.joining(",\n"))) + result.append("Optional inputs: \n") + .append(serializeInputs(optional, 0, shouldIncludeConstants)) .append('\n'); } } @@ -98,16 +98,104 @@ public String generateSerializedPromptData(BpmnComponentLibrarySerializationOpti return result.toString().trim(); } + private String serializeInputs(List inputs, int level, boolean shouldIncludeConstants) { + if (inputs == null || inputs.isEmpty()) { + return ""; + } + + final StringBuilder sb = new StringBuilder(); + for (InputVariable input : inputs) { + if (input == null) continue; + + var sourceTypes = input.getAllowedInputSourceTypes(); + if (!shouldIncludeConstants && sourceTypes != null && sourceTypes.size() == 1 && sourceTypes.get(0).equals(BpmnComponentInputSourceType.CONSTANT)) { + continue; + } + + final String indent = " ".repeat(level * 4); + final String bullet = (level == 0) ? "- " : "* "; + String singleInput = indent + bullet + input.getName() + " (" + buildInlineInputDetails(input) + ")"; + sb.append(singleInput); + + final List props = input.getProperties(); + if (props != null && !props.isEmpty()) { + sb.append(" Object properties:\n") + .append(serializeInputs(props, level + 1, shouldIncludeConstants)); + } + sb.append('\n'); + } + + // trim last newline + while (!sb.isEmpty() && sb.charAt(sb.length() - 1) == '\n') { + sb.setLength(sb.length() - 1); + } + return sb.toString(); + } + + private String buildInlineInputDetails(InputVariable input) { + final List components = new ArrayList<>(); + + components.add(input.isMandatory() || input.isKeyValue() ? "Mandatory" : "Optional"); + + if (input.getType() != null) { + components.add("Type: " + input.getType().name()); + } + if (StringUtils.isNotBlank(input.getDescription())) { + components.add(input.getDescription().trim()); + } + if (StringUtils.isNotBlank(input.getDefaultValue())) { + components.add("Default value: " + input.getDefaultValue()); + } + if (input.getAllowedValues() != null && !input.getAllowedValues().isEmpty()) { + components.add("Allowed values: " + String.join(", ", input.getAllowedValues())); + } + if (input.getAllowedInputSourceTypes() != null && !input.getAllowedInputSourceTypes().isEmpty()) { + components.add("Allowed input source types: " + input.getAllowedInputSourceTypes().stream() + .map(BpmnComponentInputSourceType::toString) + .collect(Collectors.joining(", "))); + } + + return String.join("; ", components); + } + @Override public String defaultSerialize() { return generateSerializedPromptData(BpmnComponentLibrarySerializationOptions.defaultOptions()); } + @JsonIgnore + public String getInputVariableAlias(String inputVarName) { + if (StringUtils.isBlank(inputVarName)) { + return inputVarName; + } + return findInputVariableAlias(requiredInputs, inputVarName) + .orElse(inputVarName); + } + + private Optional findInputVariableAlias(List inputs, String inputVarName) { + if (inputs == null || inputs.isEmpty()) { + return Optional.empty(); + } + + for (InputVariable input : inputs) { + if (input == null) continue; + if (inputVarName.equals(input.getName())) { + return Optional.ofNullable(input.getAlias()); + } + final Optional nested = findInputVariableAlias(input.getProperties(), inputVarName); + if (nested.isPresent()) { + return nested; + } + } + return Optional.empty(); + } + public static class Variable { private String name; private String description; private BpmnComponentVariableType type; private boolean keyValue; + private String resolveValue; public Variable() { this(null, null); @@ -156,6 +244,14 @@ public void setKeyValue(boolean keyValue) { this.keyValue = keyValue; } + public String getResolveValue() { + return resolveValue; + } + + public void setResolveValue(String resolveValue) { + this.resolveValue = resolveValue; + } + protected List buildSummaryComponents() { final List components = new ArrayList<>(); if (type != null && type != BpmnComponentVariableType.String) { @@ -179,6 +275,9 @@ public String getVariableSummary() { public static class InputVariable extends Variable { private boolean mandatory; + private String defaultValue; + private String alias; + private List properties; private List allowedValues; private List allowedInputSourceTypes; @@ -187,12 +286,15 @@ public InputVariable() { } public InputVariable(String name, String description) { - this(name, description, BpmnComponentVariableType.String, false, List.of(), List.of()); + this(name, description, BpmnComponentVariableType.String, false, null, null, List.of(), List.of(), List.of()); } - public InputVariable(String name, String description, BpmnComponentVariableType type, boolean mandatory, List allowedValues, List allowedInputSourceTypes) { + public InputVariable(String name, String description, BpmnComponentVariableType type, boolean mandatory, String defaultValue, String alias, List properties, List allowedValues, List allowedInputSourceTypes) { super(name, description, type); this.mandatory = mandatory; + this.defaultValue = defaultValue; + this.alias = alias; + this.properties = properties; this.allowedValues = allowedValues; this.allowedInputSourceTypes = allowedInputSourceTypes; } @@ -205,6 +307,30 @@ public void setMandatory(boolean mandatory) { this.mandatory = mandatory; } + public String getDefaultValue() { + return defaultValue; + } + + public void setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public List getProperties() { + return properties; + } + + public void setProperties(List properties) { + this.properties = properties; + } + public List getAllowedValues() { return allowedValues; } @@ -228,22 +354,5 @@ public Boolean isAllowedInputSourceType(String type) { return allowedInputSourceTypes.stream() .anyMatch(t -> t.name().equalsIgnoreCase(type)); } - - @Override - protected List buildSummaryComponents() { - final List components = super.buildSummaryComponents(); - if (allowedValues != null && !allowedValues.isEmpty()) { - components.add("Allowed values: " + String.join(", ", allowedValues)); - } - if (allowedInputSourceTypes != null && !allowedInputSourceTypes.isEmpty()) { - components.add("Allowed input source types: " + allowedInputSourceTypes.stream().map(BpmnComponentInputSourceType::toString).collect(Collectors.joining(", "))); - } - return components; - } - - @JsonIgnore - public String getVariableSummary() { - return super.getVariableSummary(); - } } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryHighLevelSerializer.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryHighLevelSerializer.java index 5267902..fb5a9e3 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryHighLevelSerializer.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibraryHighLevelSerializer.java @@ -7,7 +7,8 @@ public class BpmnComponentLibraryHighLevelSerializer implements ComponentLibrary private final BpmnComponentLibrarySerializationOptions options = BpmnComponentLibrarySerializationOptions.defaultOptions() .withIncludeInputs(true) .withIncludeOutputs(true) - .withMandatoryInputsOnly(false); + .withMandatoryInputsOnly(false) + .withIncludeConstantInputs(false); @Override public String serialize(BpmnComponentLibrary library) { diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrarySerializationOptions.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrarySerializationOptions.java index 9e164dd..da4deae 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrarySerializationOptions.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrarySerializationOptions.java @@ -5,6 +5,7 @@ public class BpmnComponentLibrarySerializationOptions { private boolean mandatoryInputsOnly = false; private boolean includeInputs = true; private boolean includeOutputs = true; + private boolean includeConstantInputs = true; public BpmnComponentLibrarySerializationOptions() { } @@ -50,4 +51,17 @@ public BpmnComponentLibrarySerializationOptions withIncludeOutputs(boolean inclu setIncludeOutputs(includeOutputs); return this; } + + public boolean shouldIncludeConstantInputs() { + return includeConstantInputs; + } + + public void setIncludeConstantInputs(boolean includeConstantInputs) { + this.includeConstantInputs = includeConstantInputs; + } + + public BpmnComponentLibrarySerializationOptions withIncludeConstantInputs(boolean includeConstantInputs) { + setIncludeConstantInputs(includeConstantInputs); + return this; + } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/common/BpmnComponentVariableType.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/common/BpmnComponentVariableType.java index 0026ec5..d6a5bc8 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/common/BpmnComponentVariableType.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/common/BpmnComponentVariableType.java @@ -9,7 +9,9 @@ public enum BpmnComponentVariableType { String, Integer, Float, - Boolean; + Boolean, + Array, + Object; public static Optional parse(String name) { return Arrays.stream(values()) diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/synthetic/config/BpmnSyntheticElementConfig.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/synthetic/config/BpmnSyntheticElementConfig.java index 8e0f42c..9ab21c2 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/synthetic/config/BpmnSyntheticElementConfig.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/synthetic/config/BpmnSyntheticElementConfig.java @@ -22,8 +22,13 @@ public BpmnSyntheticElementConfig(Map generateModel(BpmnIntermediateModel intermediateModel) { + return generateModel(intermediateModel, BpmnComponentLibrary.defaultLibrary()); + } + + public Result generateModel(BpmnIntermediateModel intermediateModel, BpmnComponentLibrary componentLibrary) { if (intermediateModel == null) return Result.Err("Cannot generate model without valid intermediate model"); LOG.info("Generating BPMN model data for graph: {}", Util.serializeOrThrow(intermediateModel)); @@ -57,11 +66,11 @@ public Result generateModel(BpmnIntermediateModel int registerNamespace("camunda", BpmnModelConstants.CAMUNDA_NS, definitions); registerAdditionalNamespaces(definitions); - final var processConfig = intermediateModel.getNodes().stream() - .filter(node -> BpmnConstants.NodeTypes.PROCESS_CONFIG.equalsIgnoreCase(node.getElementType())) - .findFirst(); - processConfig.ifPresent(config -> setProcessConfiguration(config, builder)); - + componentLibrary.getComponentByName(BpmnConstants.NodeTypes.PROCESS_CONFIG).ifPresent(configDefinition -> + intermediateModel.getNodes().stream() + .filter(node -> BpmnConstants.NodeTypes.PROCESS_CONFIG.equalsIgnoreCase(node.getElementType())) + .findFirst() + .ifPresent(processConfig -> setProcessConfiguration(processConfig, configDefinition, builder))); int sequenceId = 0; nodes.add(startNode.getId()); @@ -82,12 +91,15 @@ public Result generateModel(BpmnIntermediateModel int if (targetElement == null) throw new RuntimeException("Target element does not exist: " + target.getTargetNode()); + final var elementDefinition = componentLibrary.getComponentByName(targetElement.getElementType()); + if (elementDefinition.isEmpty()) continue; + final var connectionId = "seq-" + (sequenceId++); final var outboundConnection = addOutboundConnection(flowNode.builder(), node, target, connectionId); final ModelElementInstance existingTarget = builder.getModelElementById(target.getTargetNode()); if (existingTarget == null) { - addNode(outboundConnection, targetElement); + addNode(outboundConnection, targetElement, elementDefinition.get()); nodes.add(targetElement.getId()); } else { outboundConnection.connectTo(target.getTargetNode()); @@ -98,13 +110,14 @@ public Result generateModel(BpmnIntermediateModel int return Result.Ok(builder); } - // No-op; override in subclasses to add additional namespaces as needed - protected void registerAdditionalNamespaces(Definitions definitions) {} + // Override in subclasses to add additional namespaces as needed + protected void registerAdditionalNamespaces(Definitions definitions) { + registerNamespace(DEFAULT_NAMESPACE, DEFAULT_NAMESPACE_URI, definitions); + } // Override in subclasses to provide custom namespace on process configuration - protected void setProcessConfiguration(ElementNode processConfig, BpmnModelInstance builder) { - String defaultNamespace = BpmnModelConstants.BPMN20_NS; - ((ProcessConfigNode) processConfig).configure(builder, defaultNamespace); + protected void setProcessConfiguration(ElementNode processConfig, BpmnComponent configDefinition, BpmnModelInstance builder) { + ((ProcessConfigNode) processConfig).configure(builder, configDefinition, DEFAULT_NAMESPACE_URI); } protected void registerNamespace(String namespacePrefix, String namespaceUri, Definitions definitions) { @@ -123,7 +136,7 @@ protected void registerNamespace(String namespacePrefix, String namespaceUri, De } protected , E extends FlowNode> - void addNode(AbstractFlowNodeBuilder builder, ElementNode element) { + void addNode(AbstractFlowNodeBuilder builder, ElementNode element, BpmnComponent elementDefinition) { if (element == null) throw new RuntimeException("Cannot generate definition for null BPMN element"); final var id = element.getId(); @@ -132,16 +145,14 @@ void addNode(AbstractFlowNodeBuilder builder, ElementNode element) { final var type = element.getElementType(); switch (type) { case BpmnConstants.NodeTypes.END_EVENT -> builder.endEvent(id).name(name).done(); - case BpmnConstants.NodeTypes.GATEWAY_INCLUSIVE -> builder.inclusiveGateway(id).name(name).done(); case BpmnConstants.NodeTypes.GATEWAY_PARALLEL -> builder.parallelGateway(id).name(name).done(); - - default -> renderElement(builder, element); + default -> renderElement(builder, element, elementDefinition); } } // Render element and its attributes - override in subclasses to render with a custom namespace - protected , E extends FlowNode> BpmnModelInstance renderElement(AbstractFlowNodeBuilder builder, ElementNode element) { - return element.render(builder, BpmnModelConstants.BPMN20_NS); + protected , E extends FlowNode> BpmnModelInstance renderElement(AbstractFlowNodeBuilder builder, ElementNode element, BpmnComponent elementDefinition) { + return element.render(builder, elementDefinition, DEFAULT_NAMESPACE_URI); } private , E extends FlowNode> @@ -152,9 +163,8 @@ AbstractFlowNodeBuilder addOutboundConnection(AbstractFlowNodeBuilder ATTRIBUTES = List.of("taskName", "taskDescription", "sourceSystemName", "taskPriority", "taskDeadline", "maximumActiveTasks"); + } + + public static class ServiceTaskConstants { + public static final List ATTRIBUTES = List.of("serviceUrl", "uriPath", "httpMethod", "inputExpression", "outputVariable"); + public static final List EXTENSIONS = List.of("inputScript", "outputScript", "queryParams", "headers"); + } + + public static class SendTaskConstants { + public static final List ATTRIBUTES = List.of("serviceUrl", "uriPath", "httpMethod", "inputExpression", "outputVariable"); + public static final List EXTENSIONS = List.of("inputScript", "outputScript", "queryParams", "headers"); + } + + public static class ScriptTaskConstants { + public static final String SCRIPT = "script"; + public static final String SCRIPT_FORMAT_GROOVY = "groovy"; + } + + public static class ReceiveTaskConstants { + public static final String MESSAGE_ID_INPUT_NAME = "messageId"; + public static final String MESSAGE_PREFIX = "Message_"; + public static final String AVAILABILITY_INPUT_NAME = "availabilityRuleScript"; + public static final String AVAILABILITY_ATTR = "availability"; + public static final String SCRIPT_NOT_CONFIGURED = "// not configured"; + } + + public static class BusinessRuleTaskConstants { + public static final List ATTRIBUTES = List.of("executionEngine", "applicationId", "ruleName", "ruleVersion", "factTypesExpression", "metadataExpression"); + public static final List EXTENSIONS = List.of("factTypesScript", "metadataScript", "outputScript"); + } + + public static class ProcessConfigConstants { + public static final List ATTRIBUTES = List.of("processId", "processName", "processDescription", "sourceSystemName", "processTypeName", "processPriority", "processDeadline", "maximumActiveProcesses"); + public static final String PROCESS_ID = "processId"; + public static final String PROCESS_NAME = "processName"; + public static final String PROCESS_NAME_ATTR = "workItemTypeDisplayName"; + public static final String ATTR_NOT_CONFIGURED = "not_configured"; + } + + public static class GatewayConstants { + public static final String DEFAULT = "default"; + public static final String CONDITIONS = "conditions"; + public static final String TARGET_NODE_ID = "targetNodeId"; + public static final String CONDITION_EXPRESSION = "conditionExpression"; + } + } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelGenerationFunction.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelGenerationFunction.java index 5651813..9de7361 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelGenerationFunction.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnModelGenerationFunction.java @@ -2,6 +2,7 @@ import org.camunda.bpm.model.bpmn.BpmnModelInstance; import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; +import org.rj.modelgen.bpmn.models.generation.multilevel.BpmnMultiLevelGenerationModel; import org.rj.modelgen.llm.generation.ModelGenerationFunction; import org.rj.modelgen.llm.state.ModelInterfaceStateMachine; import org.rj.modelgen.llm.util.Result; @@ -19,6 +20,6 @@ public BpmnModelGenerationFunction(BasicBpmnModelGenerator modelGenerator) { @Override public Result generateModel(BpmnIntermediateModel intermediateModel, ModelInterfaceStateMachine executionModel) { - return modelGenerator.generateModel(intermediateModel); + return modelGenerator.generateModel(intermediateModel, ((BpmnMultiLevelGenerationModel) executionModel).getComponentLibrary()); } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnReverseRenderFunction.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnReverseRenderFunction.java new file mode 100644 index 0000000..87c2218 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/generation/BpmnReverseRenderFunction.java @@ -0,0 +1,29 @@ +package org.rj.modelgen.bpmn.generation; + +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.json.JSONObject; +import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; +import org.rj.modelgen.bpmn.intrep.model.BpmnReverseRenderer; +import org.rj.modelgen.llm.models.generation.multilevel.states.ReverseRenderFunction; +import org.rj.modelgen.llm.util.Result; + +public class BpmnReverseRenderFunction implements ReverseRenderFunction { + + public BpmnReverseRenderFunction() { + + } + + @Override + public Result reverseRenderModelToIR(BpmnModelInstance model) { + try { + final var reverseRenderer = new BpmnReverseRenderer(model); + final BpmnIntermediateModel rendered = reverseRenderer.generateBpmnIntermediateModel(); + + return Result.Ok(rendered); + } + catch (Throwable t) { + return Result.Err("Could not reverse render intermediate model from input BPMN model: " + t.getMessage()); + } + } + +} \ No newline at end of file diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/BpmnModelParser.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/BpmnModelParser.java new file mode 100644 index 0000000..d71a867 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/BpmnModelParser.java @@ -0,0 +1,24 @@ +package org.rj.modelgen.bpmn.intrep; + +import org.apache.commons.lang3.StringUtils; +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.json.JSONObject; +import org.rj.modelgen.llm.intrep.ModelParser; +import org.rj.modelgen.llm.util.Result; + +public class BpmnModelParser extends ModelParser { + + public BpmnModelParser() {} + + public Result parse(String content) { + if (StringUtils.isBlank(content)) { + return Result.Err("Cannot build model from null content"); + } else { + try { + return Result.Ok(); + } catch (Exception ex) { + return Result.Err(String.format("Cannot build model; content does not conform to JSONObject standard (%s)", ex.getMessage())); + } + } + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/BpmnReverseRenderer.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/BpmnReverseRenderer.java new file mode 100644 index 0000000..346f805 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/BpmnReverseRenderer.java @@ -0,0 +1,38 @@ +package org.rj.modelgen.bpmn.intrep.model; + +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.camunda.bpm.model.bpmn.instance.FlowNode; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class BpmnReverseRenderer { + private static final Logger LOG = LoggerFactory.getLogger(BpmnReverseRenderer.class); + private final BpmnModelInstance inputModel; + + public BpmnReverseRenderer(BpmnModelInstance inputModel) { + this.inputModel = inputModel; + if(inputModel == null) throw new IllegalArgumentException("Null input model"); + } + + public BpmnIntermediateModel generateBpmnIntermediateModel() { + LOG.info("Starting generation of BPMN Intermediate Model"); + + BpmnIntermediateModel intermediateModel = new BpmnIntermediateModel(); + + // a simple bpmn reverse render to create a map of nodes + inputModel.getModelElementsByType(FlowNode.class) + .forEach(node -> { + + ElementNode elementNode = new ElementNode(node.getId(), node.getName(), node.getElementType().getTypeName()); + + if(node.getOutgoing() != null) { + elementNode.setConnectedTo( + node.getOutgoing().stream().map(outgoing -> new ElementConnection(outgoing.getTarget().getName(), null)).toList()); + } + + intermediateModel.addNode(elementNode); + }); + + return intermediateModel; + } + } \ No newline at end of file diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java index 168c92c..a71c235 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementHighLevelNodeInput.java @@ -1,11 +1,22 @@ package org.rj.modelgen.bpmn.intrep.model; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import org.rj.modelgen.bpmn.component.common.BpmnComponentInputSourceType; +import java.util.List; +import java.util.stream.Collectors; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ "name", "source", "sourceType", "properties" }) public class ElementHighLevelNodeInput { private String name; private String source; private BpmnComponentInputSourceType sourceType; + private List properties; public ElementHighLevelNodeInput() { } @@ -33,12 +44,37 @@ public void setSourceType(BpmnComponentInputSourceType sourceType) { this.sourceType = sourceType; } + public List getProperties() { + return properties; + } + + public void setProperties(List properties) { + this.properties = properties; + } + + @JsonIgnore + public boolean hasProperties() { + return properties != null && !properties.isEmpty(); + } + /* Serialization methods */ public String generateSummary() { - return switch (sourceType) { + return generateSummary(0); + } + + public String generateSummary(int indentLevel) { + final String indent = " ".repeat(indentLevel); + + if (hasProperties()) { + final String childSummaries = properties.stream() + .map(prop -> prop.generateSummary(indentLevel + 1)) + .collect(Collectors.joining("\n")); + return String.format("%sInput \"%s\" is an object with properties:\n%s", indent, name, childSummaries); + } + return indent + switch (sourceType) { case NODE -> String.format("Input \"%s\" will be provided by node \"%s\"", name, source); case CONSTANT -> String.format("Input \"%s\" will be assigned constant value \"%s\"", name, source); case EXPRESSION -> String.format("Input \"%s\" will be assigned expression value \"%s\"", name, source); diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java index 7c371f3..33bfc91 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java @@ -4,9 +4,10 @@ import com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver; import org.camunda.bpm.model.bpmn.BpmnModelInstance; import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; +import org.camunda.bpm.model.bpmn.instance.BaseElement; import org.camunda.bpm.model.bpmn.instance.ExtensionElements; import org.camunda.bpm.model.bpmn.instance.FlowNode; -import org.camunda.bpm.model.bpmn.instance.Task; +import org.rj.modelgen.bpmn.component.BpmnComponent; import org.rj.modelgen.bpmn.intrep.model.rendering.*; import org.rj.modelgen.llm.intrep.graph.GraphNode; @@ -143,6 +144,14 @@ public Optional findInput(String name) { .findFirst(); } + @JsonIgnore + public List findAllInputs(String name) { + if (name == null || inputs == null) return new ArrayList<>(); + return getInputs().stream() + .filter(input -> name.equals(input.getName())) + .toList(); + } + @JsonIgnore public Optional findOutput(String name) { if (name == null || outputs == null) return Optional.empty(); @@ -152,21 +161,21 @@ public Optional findOutput(String name) { } @JsonIgnore - public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, BpmnComponent elementDefinition, String namespace) { return builder.manualTask(id).name(name).done(); } @JsonIgnore - protected String getAttrName(ElementNodeInput input) { - return input.getName(); + protected String getAttrName(ElementNodeInput input, BpmnComponent elementDefinition) { + return elementDefinition.getInputVariableAlias(input.getName()); } @JsonIgnore - protected ExtensionElements getExtensionElements(Task task) { - ExtensionElements extensionElements = task.getExtensionElements(); + protected ExtensionElements getExtensionElements(BaseElement elementInstance) { + ExtensionElements extensionElements = elementInstance.getExtensionElements(); if (extensionElements == null) { - extensionElements = task.getModelInstance().newInstance(ExtensionElements.class); - task.setExtensionElements(extensionElements); + extensionElements = elementInstance.getModelInstance().newInstance(ExtensionElements.class); + elementInstance.setExtensionElements(extensionElements); } return extensionElements; } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java index a7c6cc9..c56cb07 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java @@ -1,16 +1,23 @@ package org.rj.modelgen.bpmn.intrep.model; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.List; +import java.util.Optional; + import static org.rj.modelgen.bpmn.component.common.BpmnComponentInputSourceType.*; -@JsonPropertyOrder({ "name", "value", "variableSource" }) +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ "name", "value", "variableSource", "properties" }) public class ElementNodeInput { private String name; private String value; private String variableSource; + private List properties; public ElementNodeInput() { } @@ -40,6 +47,51 @@ public void setVariableSource(String variableSource) { this.variableSource = variableSource; } + public List getProperties() { + return properties; + } + + public void setProperties(List properties) { + this.properties = properties; + } + + @JsonIgnore + public Boolean hasProperties() { + return properties != null && !properties.isEmpty(); + } + + @JsonIgnore + public Optional findProperty(String name) { + if (properties == null || name == null) { + return Optional.empty(); + } + return properties.stream() + .filter(prop -> prop.getName().equals(name)) + .findFirst(); + } + + @JsonIgnore + public String findPropertyValueOrDefault(String name, String defaultValue) { + if (properties == null || name == null) { + return defaultValue; + } + return properties.stream() + .filter(prop -> prop.getName().equals(name)) + .findFirst() + .map(ElementNodeInput::getValue) + .orElse(defaultValue); + } + + @JsonIgnore + public List findAllProperties(String name) { + if (properties == null || name == null) { + return List.of(); + } + return properties.stream() + .filter(prop -> prop.getName().equals(name)) + .toList(); + } + @JsonIgnore public static ElementNodeInput createConstant(String name, String value) { ElementNodeInput input = new ElementNodeInput(); diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeTypeRegistry.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeTypeRegistry.java index bb9d627..80675ce 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeTypeRegistry.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeTypeRegistry.java @@ -19,6 +19,7 @@ public class ElementNodeTypeRegistry { registerType(TASK_SEND_TASK, SendTaskNode.class); registerType(TASK_BUSINESS_RULE_TASK, BusinessRuleTaskNode.class); registerType(GATEWAY_EXCLUSIVE, ExclusiveGatewayNode.class); + registerType(GATEWAY_INCLUSIVE, InclusiveGatewayNode.class); registerType(PROCESS_CONFIG, ProcessConfigNode.class); } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/BusinessRuleTaskNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/BusinessRuleTaskNode.java index bedb512..298bc57 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/BusinessRuleTaskNode.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/BusinessRuleTaskNode.java @@ -5,21 +5,17 @@ import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; import org.camunda.bpm.model.bpmn.builder.BusinessRuleTaskBuilder; import org.camunda.bpm.model.bpmn.instance.*; +import org.camunda.bpm.model.xml.instance.ModelElementInstance; +import org.rj.modelgen.bpmn.component.BpmnComponent; import org.rj.modelgen.bpmn.intrep.model.ElementNode; -import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; - -import java.util.List; -import java.util.Map; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.CommonTaskConstants.OUTPUT_VAR_ATTR; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.CommonTaskConstants.RESPONSE_VAR; import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.TASK_BUSINESS_RULE_TASK; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.BusinessRuleTaskConstants.*; public class BusinessRuleTaskNode extends ElementNode { - protected final List attributes = List.of("executionEngine", "applicationId", "ruleName", "ruleVersion"); - protected final Map inputAliases = Map.ofEntries( - Map.entry("ruleName", "businessRuleName"), - Map.entry("ruleVersion", "businessRuleVersion")); - public BusinessRuleTaskNode() { super(); } @@ -30,25 +26,26 @@ public BusinessRuleTaskNode(String id, String name) { @JsonIgnore @Override - public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, BpmnComponent elementDefinition, String namespace) { BusinessRuleTaskBuilder taskBuilder = builder.businessRuleTask(id).name(name); BusinessRuleTask task = taskBuilder.getElement(); + // Set default value for output variable + task.setAttributeValueNs(namespace, OUTPUT_VAR_ATTR, RESPONSE_VAR); + if (inputs != null) { inputs.forEach(input -> { - if (attributes.contains(input.getName())) { - String attrName = getAttrName(input); + String attrName = getAttrName(input, elementDefinition); + if (ATTRIBUTES.contains(input.getName())) { task.setAttributeValueNs(namespace, attrName, input.getValue()); + } else if (EXTENSIONS.contains(input.getName())) { + ExtensionElements extensionElements = getExtensionElements(task); + ModelElementInstance extensionElement = extensionElements.addExtensionElement(namespace, attrName); + extensionElement.setTextContent(input.getValue()); } }); } return taskBuilder.done(); } - - @JsonIgnore - @Override - protected String getAttrName(ElementNodeInput input) { - return inputAliases.getOrDefault(input.getName(), input.getName()); - } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ConditionalGateway.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ConditionalGateway.java new file mode 100644 index 0000000..bf89054 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ConditionalGateway.java @@ -0,0 +1,24 @@ +package org.rj.modelgen.bpmn.intrep.model.rendering; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; +import org.camunda.bpm.model.bpmn.instance.FlowNode; +import org.rj.modelgen.bpmn.intrep.model.ElementConnection; + +import java.util.Map; + +public interface ConditionalGateway { + @JsonIgnore + String getDefaultTargetNodeId(); + + @JsonIgnore + Map getConditions(); + + @JsonIgnore + , E extends FlowNode> void renderConditionalConnections( + AbstractFlowNodeBuilder builder, + ElementConnection connection, + String connectionId, + B outboundConnection + ); +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ExclusiveGatewayNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ExclusiveGatewayNode.java index a2d6609..9c83cf5 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ExclusiveGatewayNode.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ExclusiveGatewayNode.java @@ -1,11 +1,10 @@ package org.rj.modelgen.bpmn.intrep.model.rendering; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import org.camunda.bpm.model.bpmn.BpmnModelInstance; import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; import org.camunda.bpm.model.bpmn.instance.FlowNode; +import org.rj.modelgen.bpmn.component.BpmnComponent; import org.rj.modelgen.bpmn.intrep.model.ElementConnection; import org.rj.modelgen.bpmn.intrep.model.ElementNode; import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; @@ -16,8 +15,9 @@ import java.util.Map; import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.GATEWAY_EXCLUSIVE; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.GatewayConstants.*; -public class ExclusiveGatewayNode extends ElementNode { +public class ExclusiveGatewayNode extends ElementNode implements ConditionalGateway { private static final Logger LOG = LoggerFactory.getLogger(ExclusiveGatewayNode.class); public ExclusiveGatewayNode() { @@ -30,28 +30,44 @@ public ExclusiveGatewayNode(String id, String name) { @JsonIgnore @Override - public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, BpmnComponent elementDefinition, String namespace) { return builder.exclusiveGateway(id).name(name).done(); } + @JsonIgnore public , E extends FlowNode> void renderConditionalConnections(AbstractFlowNodeBuilder builder, ElementConnection connection, String connectionId, B outboundConnection) { - String defaultTargetNodeId = findInput("default").map(ElementNodeInput::getValue).orElse(""); - String conditionsJson = findInput("conditions").map(ElementNodeInput::getValue).orElse("{}"); + String defaultTargetNodeId = getDefaultTargetNodeId(); + Map conditions = getConditions(); // Set default sequence flow on the gateway node if (connection.getTargetNode().equals(defaultTargetNodeId)) { - builder.getElement().setAttributeValue("default", connectionId); + builder.getElement().setAttributeValue(DEFAULT, connectionId); } - // Set condition expression on the sequence flow - Map conditions = new HashMap<>(); - try { - ObjectMapper mapper = new ObjectMapper(); - conditions = mapper.readValue(conditionsJson, new TypeReference>() {}); - } catch (Exception e) { - LOG.warn("Failed to parse conditions JSON: {}", e.getMessage()); + outboundConnection.condition(connection.getDescription(), conditions.getOrDefault(connection.getTargetNode(), "")); + } + + // Convenience methods + @JsonIgnore + public String getDefaultTargetNodeId() { + return findInput(DEFAULT) + .map(ElementNodeInput::getValue) + .orElse(""); + } + + @JsonIgnore + public Map getConditions() { + Map conditionsMap = new HashMap<>(); + + for (ElementNodeInput condition : findAllInputs(CONDITIONS)) { + var targetNodeId = condition.findProperty(TARGET_NODE_ID); + var conditionExpression = condition.findProperty(CONDITION_EXPRESSION); + + if (targetNodeId.isPresent() && conditionExpression.isPresent()) { + conditionsMap.put(targetNodeId.get().getValue(), conditionExpression.get().getValue()); + } } - outboundConnection.condition(connection.getDescription(), conditions.getOrDefault(connection.getTargetNode(), "")); + return conditionsMap; } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/InclusiveGatewayNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/InclusiveGatewayNode.java new file mode 100644 index 0000000..69f1e55 --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/InclusiveGatewayNode.java @@ -0,0 +1,75 @@ +package org.rj.modelgen.bpmn.intrep.model.rendering; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; +import org.camunda.bpm.model.bpmn.instance.FlowNode; +import org.rj.modelgen.bpmn.component.BpmnComponent; +import org.rj.modelgen.bpmn.intrep.model.ElementConnection; +import org.rj.modelgen.bpmn.intrep.model.ElementNode; +import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.Map; + +import static org.rj.modelgen.bpmn.generation.BpmnConstants.GatewayConstants.*; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.GatewayConstants.CONDITION_EXPRESSION; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.GATEWAY_INCLUSIVE; + +public class InclusiveGatewayNode extends ElementNode implements ConditionalGateway { + + private static final Logger LOG = LoggerFactory.getLogger(InclusiveGatewayNode.class); + + public InclusiveGatewayNode() { + super(); + } + + public InclusiveGatewayNode(String id, String name) { + super(id, name, GATEWAY_INCLUSIVE); + } + + @JsonIgnore + @Override + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, BpmnComponent elementDefinition, String namespace) { + return builder.inclusiveGateway(id).name(name).done(); + } + + @JsonIgnore + public , E extends FlowNode> void renderConditionalConnections(AbstractFlowNodeBuilder builder, ElementConnection connection, String connectionId, B outboundConnection) { + String defaultTargetNodeId = getDefaultTargetNodeId(); + Map conditions = getConditions(); + + // Set default sequence flow on the gateway node + if (connection.getTargetNode().equals(defaultTargetNodeId)) { + builder.getElement().setAttributeValue(DEFAULT, connectionId); + } + + outboundConnection.condition(connection.getDescription(), conditions.getOrDefault(connection.getTargetNode(), "")); + } + + // Convenience methods + @JsonIgnore + public String getDefaultTargetNodeId() { + return findInput(DEFAULT) + .map(ElementNodeInput::getValue) + .orElse(""); + } + + @JsonIgnore + public Map getConditions() { + Map conditionsMap = new HashMap<>(); + + for (ElementNodeInput condition : findAllInputs(CONDITIONS)) { + var targetNodeId = condition.findProperty(TARGET_NODE_ID); + var conditionExpression = condition.findProperty(CONDITION_EXPRESSION); + + if (targetNodeId.isPresent() && conditionExpression.isPresent()) { + conditionsMap.put(targetNodeId.get().getValue(), conditionExpression.get().getValue()); + } + } + + return conditionsMap; + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ProcessConfigNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ProcessConfigNode.java index 171b845..c331701 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ProcessConfigNode.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ProcessConfigNode.java @@ -5,26 +5,15 @@ import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; import org.camunda.bpm.model.bpmn.instance.FlowNode; import org.camunda.bpm.model.bpmn.instance.Process; +import org.rj.modelgen.bpmn.component.BpmnComponent; import org.rj.modelgen.bpmn.intrep.model.ElementNode; import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; -import java.util.List; -import java.util.Map; - import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.PROCESS_CONFIG; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.ProcessConfigConstants.*; public class ProcessConfigNode extends ElementNode { - protected final List attributes = List.of("processId", "processName", "processDescription", "sourceSystemName", "processTypeName", "processPriority", "processDeadline", "maximumActiveProcesses"); - protected final Map inputAliases = Map.ofEntries( - Map.entry("processName", "workItemName"), - Map.entry("processDescription", "workItemDescription"), - Map.entry("sourceSystemName", "appName"), - Map.entry("processTypeName", "workItemTypeName"), - Map.entry("processPriority", "workItemPriority"), - Map.entry("processDeadline", "workItemDeadline"), - Map.entry("maximumActiveProcesses", "maximumActiveProcessInstances")); - public ProcessConfigNode() { super(); } @@ -33,35 +22,29 @@ public ProcessConfigNode(String id, String name) { super(id, name, PROCESS_CONFIG); } - @JsonIgnore @Override - public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, BpmnComponent elementDefinition, String namespace) { // Process configuration is not rendered as a bpmn node so this is a no-op in the flow. return builder.done(); } - public void configure(BpmnModelInstance modelInstance, String namespace) { + public void configure(BpmnModelInstance modelInstance, BpmnComponent elementDefinition, String namespace) { Process process = modelInstance.getModelElementsByType(Process.class).iterator().next(); - String id = this.findInput("processId").map(ElementNodeInput::getValue).orElse("not_configured"); - String name = this.findInput("processName").map(ElementNodeInput::getValue).orElse("not_configured"); + String id = this.findInput(PROCESS_ID).map(ElementNodeInput::getValue).orElse(ATTR_NOT_CONFIGURED); + String name = this.findInput(PROCESS_NAME).map(ElementNodeInput::getValue).orElse(ATTR_NOT_CONFIGURED); process.setId(id); process.setName(name); + process.setAttributeValueNs(namespace, PROCESS_NAME_ATTR, name); if (inputs != null) { this.inputs.forEach(input -> { - if (attributes.contains(input.getName())) { - String attrName = getAttrName(input); + if (ATTRIBUTES.contains(input.getName())) { + String attrName = getAttrName(input, elementDefinition); process.setAttributeValueNs(namespace, attrName, input.getValue()); } }); } } - - @JsonIgnore - @Override - protected String getAttrName(ElementNodeInput input) { - return inputAliases.getOrDefault(input.getName(), input.getName()); - } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ReceiveTaskNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ReceiveTaskNode.java index 83db131..5834d33 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ReceiveTaskNode.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ReceiveTaskNode.java @@ -5,10 +5,12 @@ import org.camunda.bpm.model.bpmn.builder.AbstractFlowNodeBuilder; import org.camunda.bpm.model.bpmn.builder.ReceiveTaskBuilder; import org.camunda.bpm.model.bpmn.instance.*; +import org.rj.modelgen.bpmn.component.BpmnComponent; import org.rj.modelgen.bpmn.intrep.model.ElementNode; import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.TASK_RECEIVE_TASK; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.ReceiveTaskConstants.*; public class ReceiveTaskNode extends ElementNode { @@ -22,12 +24,12 @@ public ReceiveTaskNode(String id, String name) { @JsonIgnore @Override - public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, BpmnComponent elementDefinition, String namespace) { ReceiveTaskBuilder taskBuilder = builder.receiveTask(id).name(name); ReceiveTask task = taskBuilder.getElement(); BpmnModelInstance modelInstance = (BpmnModelInstance) task.getModelInstance(); - String messageId = findInput("messageId") + String messageId = findInput(MESSAGE_ID_INPUT_NAME) .map(ElementNodeInput::getValue) .orElse(null); @@ -37,7 +39,7 @@ public , E extends FlowNode> BpmnModelIn Definitions definitions = modelInstance.getDefinitions(); message = modelInstance.newInstance(Message.class); String randomId = java.util.UUID.randomUUID().toString().substring(0, 7); - message.setId("Message_" + randomId); + message.setId(MESSAGE_PREFIX + randomId); message.setName(messageId); definitions.addChildElement(message); @@ -46,11 +48,11 @@ public , E extends FlowNode> BpmnModelIn } // Set availability script - String availability = findInput("availabilityRuleScript") + String availability = findInput(AVAILABILITY_INPUT_NAME) .map(ElementNodeInput::getValue) - .orElse("// not configured"); + .orElse(SCRIPT_NOT_CONFIGURED); - task.setAttributeValueNs(namespace, "availability", availability); + task.setAttributeValueNs(namespace, AVAILABILITY_ATTR, availability); return taskBuilder.done(); } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ScriptTaskNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ScriptTaskNode.java index 3ba937e..accb756 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ScriptTaskNode.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ScriptTaskNode.java @@ -7,10 +7,12 @@ import org.camunda.bpm.model.bpmn.instance.FlowNode; import org.camunda.bpm.model.bpmn.instance.Script; import org.camunda.bpm.model.bpmn.instance.ScriptTask; +import org.rj.modelgen.bpmn.component.BpmnComponent; import org.rj.modelgen.bpmn.intrep.model.ElementNode; import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.TASK_SCRIPT_TASK; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.ScriptTaskConstants.*; public class ScriptTaskNode extends ElementNode { public ScriptTaskNode() { @@ -23,15 +25,15 @@ public ScriptTaskNode(String id, String name) { @JsonIgnore @Override - public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, BpmnComponent elementDefinition, String namespace) { ScriptTaskBuilder taskBuilder = builder.scriptTask(id).name(name); ScriptTask task = taskBuilder.getElement(); - String scriptContent = findInput("script") + String scriptContent = findInput(SCRIPT) .map(ElementNodeInput::getValue) .orElse(""); - task.setScriptFormat("groovy"); + task.setScriptFormat(SCRIPT_FORMAT_GROOVY); BpmnModelInstance modelInstance = (BpmnModelInstance) task.getModelInstance(); Script scriptElement = modelInstance.newInstance(Script.class); scriptElement.setTextContent(scriptContent); diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/SendTaskNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/SendTaskNode.java index ebd043a..e40f07e 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/SendTaskNode.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/SendTaskNode.java @@ -6,23 +6,14 @@ import org.camunda.bpm.model.bpmn.builder.SendTaskBuilder; import org.camunda.bpm.model.bpmn.instance.*; import org.camunda.bpm.model.xml.instance.ModelElementInstance; +import org.rj.modelgen.bpmn.component.BpmnComponent; import org.rj.modelgen.bpmn.intrep.model.ElementNode; -import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; - -import java.util.List; -import java.util.Map; import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.TASK_SEND_TASK; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.SendTaskConstants.*; public class SendTaskNode extends ElementNode { - protected final List attributes = List.of("serviceUrl", "uriPath", "httpMethod", "inputExpression", "outputVariable"); - protected final List extensions = List.of("inputScript", "outputScript"); - protected final Map inputAliases = Map.ofEntries( - Map.entry("serviceUrl", "httpRootUrl"), - Map.entry("uriPath", "httpPath"), - Map.entry("httpMethod", "httpServiceMethod")); - public SendTaskNode() { super(); } @@ -33,18 +24,18 @@ public SendTaskNode(String id, String name) { @JsonIgnore @Override - public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, BpmnComponent elementDefinition, String namespace) { SendTaskBuilder taskBuilder = builder.sendTask(id).name(name); SendTask task = taskBuilder.getElement(); if (inputs != null) { inputs.forEach(input -> { - if (attributes.contains(input.getName())) { - String attrName = getAttrName(input); + String attrName = getAttrName(input, elementDefinition); + if (ATTRIBUTES.contains(input.getName())) { task.setAttributeValueNs(namespace, attrName, input.getValue()); - } else if (extensions.contains(input.getName())) { + } else if (EXTENSIONS.contains(input.getName())) { ExtensionElements extensionElements = getExtensionElements(task); - ModelElementInstance extensionElement = extensionElements.addExtensionElement(namespace, input.getName()); + ModelElementInstance extensionElement = extensionElements.addExtensionElement(namespace, attrName); extensionElement.setTextContent(input.getValue()); } }); @@ -52,10 +43,4 @@ public , E extends FlowNode> BpmnModelIn return taskBuilder.done(); } - - @JsonIgnore - @Override - protected String getAttrName(ElementNodeInput input) { - return inputAliases.getOrDefault(input.getName(), input.getName()); - } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ServiceTaskNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ServiceTaskNode.java index 4964cc8..0431bfb 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ServiceTaskNode.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/ServiceTaskNode.java @@ -8,23 +8,15 @@ import org.camunda.bpm.model.bpmn.instance.FlowNode; import org.camunda.bpm.model.bpmn.instance.ServiceTask; import org.camunda.bpm.model.xml.instance.ModelElementInstance; +import org.rj.modelgen.bpmn.component.BpmnComponent; import org.rj.modelgen.bpmn.intrep.model.ElementNode; -import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; - -import java.util.List; -import java.util.Map; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.CommonTaskConstants.*; import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.TASK_SERVICE_TASK; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.ServiceTaskConstants.*; public class ServiceTaskNode extends ElementNode { - protected final List attributes = List.of("serviceUrl", "uriPath", "httpMethod", "inputExpression", "outputVariable"); - protected final List extensions = List.of("inputScript", "outputScript"); - protected final Map inputAliases = Map.ofEntries( - Map.entry("serviceUrl", "httpRootUrl"), - Map.entry("uriPath", "httpPath"), - Map.entry("httpMethod", "httpServiceMethod")); - public ServiceTaskNode() { super(); } @@ -35,19 +27,19 @@ public ServiceTaskNode(String id, String name) { @JsonIgnore @Override - public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, BpmnComponent elementDefinition, String namespace) { ServiceTaskBuilder taskBuilder = builder.serviceTask(id).name(name); ServiceTask task = taskBuilder.getElement(); // Set default value for output variable - task.setAttributeValueNs(namespace, "outputVariable", "response"); + task.setAttributeValueNs(namespace, OUTPUT_VAR_ATTR, RESPONSE_VAR); if (inputs != null) { inputs.forEach(input -> { - if (attributes.contains(input.getName())) { - String attrName = getAttrName(input); + if (ATTRIBUTES.contains(input.getName())) { + String attrName = getAttrName(input, elementDefinition); task.setAttributeValueNs(namespace, attrName, input.getValue()); - } else if (extensions.contains(input.getName())) { + } else if (EXTENSIONS.contains(input.getName())) { ExtensionElements extensionElements = getExtensionElements(task); ModelElementInstance extensionElement = extensionElements.addExtensionElement(namespace, input.getName()); extensionElement.setTextContent(input.getValue()); @@ -57,10 +49,4 @@ public , E extends FlowNode> BpmnModelIn return taskBuilder.done(); } - - @JsonIgnore - @Override - protected String getAttrName(ElementNodeInput input) { - return inputAliases.getOrDefault(input.getName(), input.getName()); - } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/UserTaskNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/UserTaskNode.java index c865591..ec60b73 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/UserTaskNode.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/rendering/UserTaskNode.java @@ -6,25 +6,14 @@ import org.camunda.bpm.model.bpmn.builder.UserTaskBuilder; import org.camunda.bpm.model.bpmn.instance.FlowNode; import org.camunda.bpm.model.bpmn.instance.UserTask; +import org.rj.modelgen.bpmn.component.BpmnComponent; import org.rj.modelgen.bpmn.intrep.model.ElementNode; -import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; - -import java.util.List; -import java.util.Map; import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.TASK_USER_TASK; +import static org.rj.modelgen.bpmn.generation.BpmnConstants.UserTaskConstants.*; public class UserTaskNode extends ElementNode { - protected final List attributes = List.of("taskName", "taskDescription", "sourceSystemName", "taskPriority", "taskDeadline", "maximumActiveTasks"); - protected final Map inputAliases = Map.ofEntries( - Map.entry("taskName", "workItemName"), - Map.entry("taskDescription", "workItemDescription"), - Map.entry("sourceSystemName", "appName"), - Map.entry("taskTypeName", "workItemTypeName"), - Map.entry("taskPriority", "workItemPriority"), - Map.entry("taskDeadline", "workItemDeadline")); - public UserTaskNode() { super(); } @@ -35,14 +24,14 @@ public UserTaskNode(String id, String name) { @JsonIgnore @Override - public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, String namespace) { + public , E extends FlowNode> BpmnModelInstance render(AbstractFlowNodeBuilder builder, BpmnComponent elementDefinition, String namespace) { UserTaskBuilder taskBuilder = builder.userTask(id).name(name); UserTask task = taskBuilder.getElement(); if (inputs != null) { inputs.forEach(input -> { - if (attributes.contains(input.getName())) { - String attrName = getAttrName(input); + if (ATTRIBUTES.contains(input.getName())) { + String attrName = getAttrName(input, elementDefinition); task.setAttributeValueNs(namespace, attrName, input.getValue()); } }); @@ -50,10 +39,4 @@ public , E extends FlowNode> BpmnModelIn return taskBuilder.done(); } - - @JsonIgnore - @Override - protected String getAttrName(ElementNodeInput input) { - return inputAliases.getOrDefault(input.getName(), input.getName()); - } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/BpmnGenerationExecutionModel.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/BpmnGenerationExecutionModel.java index a5f7779..d6e7b2d 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/BpmnGenerationExecutionModel.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/BpmnGenerationExecutionModel.java @@ -5,5 +5,5 @@ import java.util.Map; public interface BpmnGenerationExecutionModel { - Mono executeModel(String sessionId, String request, Map data); + Mono executeModel(String sessionId, String request, String canvasModel, Map data); } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/BpmnGenerationBaseExecutionModel.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/BpmnGenerationBaseExecutionModel.java index 0c74180..e951955 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/BpmnGenerationBaseExecutionModel.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/BpmnGenerationBaseExecutionModel.java @@ -74,10 +74,10 @@ private BpmnGenerationBaseExecutionModel(ModelInterface modelInterface, List executeModel(String sessionId, String request, Map data) { + public Mono executeModel(String sessionId, String request, String canvasModel, Map data) { final var initialState = ModelInterfaceState.defaultStateId(StartBpmnGeneration.class); - final var input = new BpmnGenerationModelInputPayload(sessionId, request); + final var input = new BpmnGenerationModelInputPayload(sessionId, request, canvasModel); input.setLlm("gpt-4"); input.setTemperature(0.7f); diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/data/BpmnGenerationModelInputPayload.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/data/BpmnGenerationModelInputPayload.java index 0130891..2e59f79 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/data/BpmnGenerationModelInputPayload.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/data/BpmnGenerationModelInputPayload.java @@ -3,7 +3,7 @@ import org.rj.modelgen.llm.state.ModelInterfaceInputPayload; public class BpmnGenerationModelInputPayload extends ModelInterfaceInputPayload { - public BpmnGenerationModelInputPayload(String sessionId, String request) { - super(sessionId, request); + public BpmnGenerationModelInputPayload(String sessionId, String request, String canvasModel) { + super(sessionId, request, canvasModel); } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java index 456ca26..82870d2 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java @@ -6,6 +6,8 @@ import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; import org.rj.modelgen.bpmn.component.synthetic.types.BpmnSyntheticUnknownElementNode; import org.rj.modelgen.bpmn.generation.BpmnModelGenerationFunction; +import org.rj.modelgen.bpmn.generation.BpmnReverseRenderFunction; +import org.rj.modelgen.bpmn.intrep.BpmnModelParser; import org.rj.modelgen.bpmn.intrep.model.BpmnHighLevelIntermediateModel; import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; import org.rj.modelgen.bpmn.intrep.validation.BpmnDetailLevelIntermediateModelSanitizer; @@ -20,6 +22,7 @@ import org.rj.modelgen.bpmn.models.generation.multilevel.schema.BpmnGenerationMultiLevelSchemaDetailLevel; import org.rj.modelgen.bpmn.models.generation.multilevel.schema.BpmnGenerationMultiLevelSchemaHighLevel; import org.rj.modelgen.bpmn.models.generation.multilevel.states.*; +import org.rj.modelgen.bpmn.models.generation.validation.ValidateBpmnModel; import org.rj.modelgen.bpmn.subproblem.BpmnCombineSubproblems; import org.rj.modelgen.bpmn.subproblem.BpmnGenerateSubproblems; import org.rj.modelgen.llm.component.DefaultComponentLibrarySelector; @@ -36,9 +39,11 @@ import org.rj.modelgen.llm.models.generation.multilevel.prompt.MultiLevelGenerationModelPromptGenerator; import org.rj.modelgen.llm.models.generation.multilevel.prompt.MultiLevelModelPromptType; +import org.rj.modelgen.llm.models.generation.multilevel.states.ReverseRenderFunction; import org.rj.modelgen.llm.state.ModelInterfaceState; import org.rj.modelgen.llm.state.ModelInterfaceStateMachineCustomization; import org.rj.modelgen.llm.state.ModelInterfaceTransitionRule; +import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; import org.rj.modelgen.llm.statemodel.signals.common.StandardErrorSignals; import org.rj.modelgen.llm.statemodel.states.common.PrepareAndSubmitLlmGenericRequest; import org.rj.modelgen.llm.subproblem.config.SubproblemDecompositionConfig; @@ -51,17 +56,18 @@ import java.util.function.Function; public class BpmnMultiLevelGenerationModel extends MultiLevelGenerationModel { + BpmnModelInstance, BpmnComponentLibrary, + BpmnGenerationResult> { private final BpmnComponentLibrary componentLibrary; public static BpmnMultiLevelGenerationModel create(ModelInterface modelInterface, BpmnMultiLevelGenerationModelOptions options) { - return create(modelInterface, options, new BpmnModelGenerationFunction(), BpmnComponentLibrary.defaultLibrary(), BpmnGlobalVariableLibrary.defaultLibrary()); + return create(modelInterface, options, new BpmnModelGenerationFunction(), new ValidateBpmnModel(BpmnComponentLibrary.defaultLibrary(), BpmnGlobalVariableLibrary.defaultLibrary()), + BpmnComponentLibrary.defaultLibrary(), BpmnGlobalVariableLibrary.defaultLibrary()); } public static BpmnMultiLevelGenerationModel create(ModelInterface modelInterface, BpmnMultiLevelGenerationModelOptions options, BpmnModelGenerationFunction modelGenerationFunction, - BpmnComponentLibrary componentLibrary, BpmnGlobalVariableLibrary globalVariableLibrary) { + ValidateBpmnModel bpmnModelValidator, BpmnComponentLibrary componentLibrary, BpmnGlobalVariableLibrary globalVariableLibrary) { final var promptGenerator = new BpmnGenerationMultiLevelPromptGenerator(); final var contextProvider = new DefaultContextProvider(); @@ -76,6 +82,8 @@ BpmnHighLevelIntermediateModel.class, new BpmnGenerationMultiLevelSchemaHighLeve params -> new PrepareBpmnMLHighLevelModelGenerationRequest<>(params, globalVariableLibrary), null); + final var reverseRenderFunction = new BpmnReverseRenderFunction(); + final var detailLevelConfig = new MultiLevelModelDetailPhaseConfig<>( // TODO BpmnIntermediateModel.class, new BpmnGenerationMultiLevelSchemaDetailLevel(), new BpmnDetailLevelIntermediateModelSanitizer(), new BpmnComponentLibraryDetailLevelSelector(), @@ -86,14 +94,23 @@ BpmnIntermediateModel.class, new BpmnGenerationMultiLevelSchemaDetailLevel(), final Function renderedModelSerializer = Bpmn::convertToString; final var subproblemDecompositionConfig = SubproblemDecompositionConfig.defaultConfig() - .withSubproblemGeneratorImplementation(BpmnGenerateSubproblems::new) - .withSubproblemCombinationImplementation(BpmnCombineSubproblems::new); + .withSubproblemGeneratorImplementation(BpmnGenerateSubproblems::new) + .withSubproblemCombinationImplementation(BpmnCombineSubproblems::new); + + final var reverseRenderSubproblemDecompositionConfig = SubproblemDecompositionConfig.defaultConfig() + .withSubproblemGeneratorImplementation(() -> new BpmnGenerateSubproblems() + .withInputKey(MultiLevelModelStandardPayloadData.SerializedReverseRender) + .withOutputKey(MultiLevelModelStandardPayloadData.SerializedReverseRender)) + .withSubproblemCombinationImplementation(BpmnCombineSubproblems::new); + final var completionState = new BpmnGenerationComplete(); + final var bpmnModelParser = new BpmnModelParser(); + return (BpmnMultiLevelGenerationModel) new BpmnMultiLevelGenerationModel(BpmnMultiLevelGenerationModel.class, modelInterface, promptGenerator, contextProvider, componentLibrary, preprocessingConfig, - highLevelConfig, detailLevelConfig, modelGenerationFunction, renderedModelSerializer, subproblemDecompositionConfig, completionState, options) - .withModelCustomization(data -> addBpmnModelCustomization(data, options, promptGenerator, contextProvider, componentLibrary, globalVariableLibrary)); + highLevelConfig, reverseRenderFunction, detailLevelConfig, modelGenerationFunction, renderedModelSerializer, subproblemDecompositionConfig, reverseRenderSubproblemDecompositionConfig, completionState, options, bpmnModelParser) + .withModelCustomization(data -> addBpmnModelCustomization(data, options, promptGenerator, contextProvider, componentLibrary, globalVariableLibrary, bpmnModelValidator)); } protected BpmnMultiLevelGenerationModel(Class modelClass, @@ -101,38 +118,41 @@ protected BpmnMultiLevelGenerationModel(Class preprocessingConfig, MultiLevelModelPhaseConfig highLevelPhaseConfig, + ReverseRenderFunction reverseRenderFunction, MultiLevelModelDetailPhaseConfig detailLevelPhaseConfig, ModelGenerationFunction modelGenerationFunction, Function renderedModelSerializer, SubproblemDecompositionConfig subproblemDecompositionConfig, + SubproblemDecompositionConfig reverseRenderSubproblemDecompositionConfig, ModelInterfaceState completionState, - BpmnMultiLevelGenerationModelOptions options) { + BpmnMultiLevelGenerationModelOptions options, + BpmnModelParser bpmnModelParser) { super(BpmnMultiLevelGenerationModel.class, modelInterface, promptGenerator, contextProvider, componentLibrary, preprocessingConfig, - highLevelPhaseConfig, detailLevelPhaseConfig, modelGenerationFunction, renderedModelSerializer, subproblemDecompositionConfig, - completionState, options); + highLevelPhaseConfig, reverseRenderFunction, detailLevelPhaseConfig, modelGenerationFunction, renderedModelSerializer, subproblemDecompositionConfig, + reverseRenderSubproblemDecompositionConfig, completionState, options, bpmnModelParser); this.componentLibrary = componentLibrary; } @Override - public Mono executeModel(String sessionId, String request, Map data) { + public Mono executeModel(String sessionId, String request, String canvasModel, Map data) { final var initialState = MultiLevelGenerationModelStates.StartMultiLevelGeneration.toString(); - BpmnGenerationModelInputPayload input = new BpmnGenerationModelInputPayload(sessionId, request); + BpmnGenerationModelInputPayload input = new BpmnGenerationModelInputPayload(sessionId, request, canvasModel); if (data != null) input.putAllIfAbsent(data); - return this.execute(initialState, getStartSignal(), input) + return this.execute(initialState, getStartSignal(canvasModel), input) .map(BpmnGenerationResult::fromModelExecutionResult); } - private static ModelInterfaceStateMachineCustomization addBpmnModelCustomization(ModelCustomizationData modelData, BpmnMultiLevelGenerationModelOptions options, - BpmnGenerationMultiLevelPromptGenerator promptGenerator, ContextProvider contextProvider, BpmnComponentLibrary componentLibrary, BpmnGlobalVariableLibrary globalVariableLibrary) { + private static ModelInterfaceStateMachineCustomization addBpmnModelCustomization(ModelCustomizationData modelData, BpmnMultiLevelGenerationModelOptions options, BpmnGenerationMultiLevelPromptGenerator promptGenerator, ContextProvider contextProvider, + BpmnComponentLibrary componentLibrary, BpmnGlobalVariableLibrary globalVariableLibrary, ValidateBpmnModel bpmnModelValidator) { final List> customizations = List.of( (customization, data) -> initializeBpmnPayload(customization, contextProvider, promptGenerator, componentLibrary), (customization, data) -> initializeBpmnData(customization, data, componentLibrary, globalVariableLibrary, options), (customization, data) -> preProcessingInsertSyntheticComponents(customization, data, options), (customization, data) -> processHighLevelModelDataForDetailLevelGeneration(customization, data, globalVariableLibrary), - (customization, data) -> validateDetailLevelModel(customization, data, globalVariableLibrary), + (customization, data) -> validateDetailLevelModel(customization, data, globalVariableLibrary, bpmnModelValidator), BpmnMultiLevelGenerationModel::postProcessingResolveSyntheticComponents, (customization, data) -> postProcessingPrepareForRendering(customization, data, globalVariableLibrary), BpmnMultiLevelGenerationModel::validateBpmnModelCorrectness @@ -165,7 +185,7 @@ private static ModelInterfaceStateMachineCustomization initializeBpmnData(ModelI } private static ModelInterfaceStateMachineCustomization preProcessingInsertSyntheticComponents(ModelInterfaceStateMachineCustomization customization, - ModelCustomizationData modelData, BpmnMultiLevelGenerationModelOptions options) { + ModelCustomizationData modelData, BpmnMultiLevelGenerationModelOptions options) { final var syntheticComponents = BpmnComponentLibrary.defaultSyntheticComponentsLibrary(); // Only include "unknown component" synthetic component if we have enabled insert of placeholders for unsupported components @@ -189,9 +209,9 @@ private static ModelInterfaceStateMachineCustomization processHighLevelModelData .withNewStateInsertedAfter(processHighLevelData, MultiLevelGenerationModelStates.ValidateHighLevel.toString()); } - private static ModelInterfaceStateMachineCustomization validateDetailLevelModel(ModelInterfaceStateMachineCustomization customization, ModelCustomizationData modelData, BpmnGlobalVariableLibrary globalVariableLibrary) { + private static ModelInterfaceStateMachineCustomization validateDetailLevelModel(ModelInterfaceStateMachineCustomization customization, ModelCustomizationData modelData, BpmnGlobalVariableLibrary globalVariableLibrary, ValidateBpmnModel bpmnModelValidator) { - final var validateBpmnDetailLevelIntermediateModel = new ValidateBpmnLlmDetailLevelIntermediateModelResponse(globalVariableLibrary) + final var validateBpmnDetailLevelIntermediateModel = new ValidateBpmnLlmDetailLevelIntermediateModelResponse(globalVariableLibrary, bpmnModelValidator) .withOverriddenId(BpmnAdditionalModelStates.DetailLevelBpmnIRModelValidation); validateBpmnDetailLevelIntermediateModel.setInvokeLimit(3); diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java index 5af9574..a7369b3 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java @@ -83,43 +83,55 @@ private void resolveInputs(BpmnIntermediateModel model) { for (final var node : model.getNodes()) { if (node.getInputs() == null) continue; for (final var input : node.getInputs()) { - var inputValue = input.getValue(); - var inputSource = input.getVariableSource(); - - if (inputSource.equals(SCRIPT.toString())) { - inputValue = resolveVariableWrites(inputValue); - inputValue = resolveVariableReads(inputValue, false); - inputValue = resolveGlobalVariableReads(inputValue, globalVariableLibrary, false); - - // Hook for subclasses to add custom post-processing - inputValue = postProcessScriptInput(input, inputValue); - } - - if (inputSource.equals(EXPRESSION.toString())) { - inputValue = inputValue - .replaceAll(INTERPOLATION_PATTERN.pattern(), "\\${payload.$1}") - .replaceAll(VAR_READ_PATTERN.pattern(), "\\${payload.$1}"); - inputValue = resolveGlobalVariableReads(inputValue, globalVariableLibrary, true); - } - - if (inputSource.equals(GLOBAL.toString())) { - inputValue = globalVariableLibrary.getVariableByName(input.getValue()) - .map(BpmnGlobalVariable::getResolveValue) - .orElse("global_not_found"); - } - - if (inputSource.equals(NODE.toString())) { - inputValue = model.getNodeById(inputValue) - .flatMap(x -> x.findOutput(input.getName())) - .map(ElementNodeOutput::getValue) - .orElse("node_not_found"); - } - - input.setValue(inputValue); + resolveInputValue(model, input); } } } + private void resolveInputValue(BpmnIntermediateModel model, ElementNodeInput input) { + // If the input has properties, resolve each property recursively + if (input.hasProperties()) { + for (var prop : input.getProperties()) { + resolveInputValue(model, prop); + } + } else { + var inputValue = input.getValue(); + var inputSource = input.getVariableSource(); + + if (inputSource.equals(SCRIPT.toString())) { + inputValue = resolveVariableWrites(inputValue); + inputValue = resolveVariableReads(inputValue,false, model, getComponentLibrary()); + inputValue = resolveGlobalVariableReads(inputValue, globalVariableLibrary, false); + + // Hook for subclasses to add custom post-processing + inputValue = postProcessScriptInput(input, inputValue); + } + + if (inputSource.equals(EXPRESSION.toString())) { + // edge case: LLM may return a string with interpolation syntax, but it should be resolved as a payload variable read + inputValue = inputValue.replaceAll(INTERPOLATION_PATTERN.pattern(), "\\${payload.$1}"); + + inputValue = resolveVariableReads(inputValue, true, model, getComponentLibrary()); + inputValue = resolveGlobalVariableReads(inputValue, globalVariableLibrary, true); + } + + if (inputSource.equals(GLOBAL.toString())) { + inputValue = globalVariableLibrary.getVariableByName(input.getValue()) + .map(BpmnGlobalVariable::getResolveValue) + .orElse("global_not_found"); + } + + if (inputSource.equals(NODE.toString())) { + inputValue = model.getNodeById(inputValue) + .flatMap(x -> x.findOutput(input.getName())) + .map(ElementNodeOutput::getValue) + .orElse("node_not_found"); + } + + input.setValue(inputValue); + } + } + protected String postProcessScriptInput(ElementNodeInput input, String inputValue) { inputValue = resolveErrorThrows(inputValue, "throw new Exception($1)"); return inputValue; diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java index 8e5315c..34e8313 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java @@ -1,8 +1,5 @@ package org.rj.modelgen.bpmn.models.generation.multilevel.states; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.rj.modelgen.bpmn.component.BpmnComponent; import org.rj.modelgen.bpmn.component.BpmnComponentLibrary; import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; @@ -30,10 +27,12 @@ public class ValidateBpmnLlmDetailLevelIntermediateModelResponse extends ModelIn private static final Logger LOG = LoggerFactory.getLogger(ValidateBpmnLlmDetailLevelIntermediateModelResponse.class); private final BpmnGlobalVariableLibrary globalVariableLibrary; + private final ValidateBpmnModel bpmnModelValidator; - public ValidateBpmnLlmDetailLevelIntermediateModelResponse(BpmnGlobalVariableLibrary globalVariableLibrary) { + public ValidateBpmnLlmDetailLevelIntermediateModelResponse(BpmnGlobalVariableLibrary globalVariableLibrary, ValidateBpmnModel bpmnModelValidator) { super(ValidateBpmnLlmDetailLevelIntermediateModelResponse.class); this.globalVariableLibrary = globalVariableLibrary; + this.bpmnModelValidator = bpmnModelValidator; } @Override @@ -54,7 +53,7 @@ protected Mono invokeAction(ModelInterfaceSignal modelInte Map> startingPayload = new HashMap<>(); startingPayload.put("startingPayload", getPayload().get(MultiLevelModelStandardPayloadData.ProcessVariables)); - List validations = new ValidateBpmnModel(model, globalVariableLibrary, componentLibrary).validate(startingPayload); + List validations = bpmnModelValidator.validate(model, startingPayload); List validationMessages = new ArrayList<>(); validations.stream().collect(Collectors.groupingBy(IntermediateModelValidationError::getLocation)) .forEach((nodeName, nodeValidations) -> { diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java index 7a0139f..e0caeca 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java @@ -1,20 +1,33 @@ package org.rj.modelgen.bpmn.models.generation.validation; +import org.apache.commons.lang3.StringUtils; +import org.rj.modelgen.bpmn.component.BpmnComponent; +import org.rj.modelgen.bpmn.component.BpmnComponentLibrary; import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariable; import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; +import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; -import java.util.regex.Pattern; import static org.rj.modelgen.bpmn.generation.BpmnConstants.Patterns.*; public class BpmnScriptUtils { - public static List retrieveVariablesWithPattern(String inputValue, Pattern pattern) { + public static List retrieveReadVariables(String inputValue) { List variables = new ArrayList<>(); - Matcher matcher = pattern.matcher(inputValue); + Matcher matcher = VAR_READ_PATTERN.matcher(inputValue); + while (matcher.find()) { + String variableName = matcher.group(1); + variables.add(new PayloadVariable(variableName, "string")); + } + return variables; + } + + public static List retrieveWriteVariables(String inputValue) { + List variables = new ArrayList<>(); + Matcher matcher = VAR_WRITE_PATTERN.matcher(inputValue); while (matcher.find()) { String variableName = matcher.group(1); String variableValue = matcher.group(2); @@ -35,11 +48,45 @@ public static List retrieveGlobalVariables(String inputValue, B return variables; } - public static String resolveVariableReads(String inputValue, boolean withInterpolation) { + // Resolves variable reads as payload variables. It ignores the source node ID and simply replaces the variable name with "payload.variableName". + public static String resolveVariableReadsAsPayloadVar(String inputValue, boolean withInterpolation) { String replacement = withInterpolation ? "\\${payload.$1}" : "payload.$1"; return inputValue.replaceAll(VAR_READ_PATTERN.pattern(), replacement); } + // Resolves variable reads as payload variables or component outputs. + public static String resolveVariableReads(String inputValue, boolean withInterpolation, BpmnIntermediateModel model, BpmnComponentLibrary componentLibrary) { + StringBuilder resolved = new StringBuilder(); + Matcher matcher = VAR_READ_PATTERN.matcher(inputValue); + + while (matcher.find()) { + String variableName = matcher.group(1); + String variableSource = matcher.groupCount() >= 2 ? matcher.group(2) : null; + + String replacement = withInterpolation + ? "${payload." + variableName + "}" + : "payload." + variableName; + + // If source node Id is provided, check if the variable is defined in a component's generated outputs + if (StringUtils.isNotBlank(variableSource)) { + var resolveValue = model.getNodeById(variableSource) + .flatMap(node -> componentLibrary.getComponentByName(node.getElementType())) + .flatMap(component -> component.getGeneratedOutputs().stream() + .filter(outputVar -> outputVar.getName().equals(variableName)) + .findFirst() + .map(BpmnComponent.Variable::getResolveValue)); + if (resolveValue.isPresent()) { + replacement = withInterpolation + ? "${" + resolveValue.get() + "}" + : resolveValue.get(); + } + } + matcher.appendReplacement(resolved, Matcher.quoteReplacement(replacement)); + } + matcher.appendTail(resolved); + return resolved.toString(); + } + public static String resolveVariableWrites(String inputValue) { return inputValue.replaceAll(VAR_WRITE_PATTERN.pattern(), "payload.$1 = $2"); } @@ -77,4 +124,11 @@ public static String resolveGlobalVariableReads(String inputValue, BpmnGlobalVar globalVarMatcher.appendTail(resolvedScript); return resolvedScript.toString(); } + + public static String stripInterpolationSyntax(String expression) { + if (expression.startsWith("${") && expression.endsWith("}")) { + return expression.substring(2, expression.length() - 1); // Remove ${ and } + } + return expression; + } } \ No newline at end of file diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java index f828681..e5f68be 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java @@ -11,9 +11,11 @@ import org.codehaus.groovy.control.*; import org.rj.modelgen.bpmn.component.BpmnComponent; import org.rj.modelgen.bpmn.component.BpmnComponentLibrary; +import org.rj.modelgen.bpmn.component.common.BpmnComponentVariableType; import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; import org.rj.modelgen.bpmn.component.common.BpmnComponentInputSourceType; import org.rj.modelgen.bpmn.intrep.model.*; +import org.rj.modelgen.bpmn.intrep.model.rendering.ConditionalGateway; import org.rj.modelgen.llm.validation.beans.IntermediateModelValidationError; import java.util.*; @@ -26,7 +28,6 @@ import static org.rj.modelgen.bpmn.component.common.BpmnComponentInputSourceType.*; import static org.rj.modelgen.bpmn.models.generation.validation.BpmnScriptUtils.*; import static org.rj.modelgen.llm.util.ValidationUtils.identifyNumberOfRoots; -import static org.rj.modelgen.llm.util.ValidationUtils.convertStringToMap; public class ValidateBpmnModel { @@ -37,16 +38,17 @@ public class ValidateBpmnModel { private BpmnIntermediateModel model; private BpmnGlobalVariableLibrary globalVariableLibrary; private BpmnComponentLibrary componentLibrary; - private List invalidMessages = new ArrayList<>(); + private List invalidMessages; private final GroovyShell shell = new GroovyShell(); - public ValidateBpmnModel(BpmnIntermediateModel model, BpmnGlobalVariableLibrary globalVariableLibrary, BpmnComponentLibrary componentLibrary) { - this.model = model; + public ValidateBpmnModel(BpmnComponentLibrary componentLibrary, BpmnGlobalVariableLibrary globalVariableLibrary) { this.globalVariableLibrary = globalVariableLibrary; this.componentLibrary = componentLibrary; } - public List validate(Map> startingPayload) { + public List validate(BpmnIntermediateModel model, Map> startingPayload) { + this.model = model; + invalidMessages = new ArrayList<>(); for (ElementNode node : model.getNodes()) { validateNodeNames(node); validateRequiredInputs(node); @@ -100,24 +102,102 @@ private void validateNodeNames(ElementNode node) { } } + private void validateNodeInputValuesAndVariableSourceExist(ElementNode node, ElementNodeInput input, Collection invalidInputMessages) { + if (input.hasProperties()) { + // Validate all properties of object type input + for (ElementNodeInput property : input.getProperties()) { + validateNodeInputValuesAndVariableSourceExist(node, property, invalidInputMessages); + } + } else { + // Validate primitive type input + if (StringUtils.isBlank(input.getName())) { + invalidInputMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has input with null or empty name", node.getId()), node.getId())); + } else { + if (input.getValue() == null) { + invalidInputMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has '%s' input with null value", node.getId(), input.getName()), node.getId())); + } + if (StringUtils.isBlank(input.getVariableSource())) { + invalidInputMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has '%s' input with null or empty variableSource. It should be CONSTANT, EXPRESSION, SCRIPT, NODE or GLOBAL.", node.getId(), input.getName()), node.getId())); + } + } + } + } + + private void validateNodeInputValuesMatchDefinition(ElementNode node, List inputs, BpmnComponent.InputVariable inputDefinition, String inputPath) { + final String path = (inputPath == null || inputPath.isBlank()) ? inputDefinition.getName() : inputPath; + + // If the input is mandatory, it must be present + if (inputs == null || inputs.isEmpty()) { + if (inputDefinition.isMandatory()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' is missing mandatory input '%s'", node.getId(), path), node.getId())); + } + return; + } + // Input must not be defined multiple times unless input definition is an array + if (inputs.size() > 1 && !inputDefinition.getType().equals(BpmnComponentVariableType.Array)) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has multiple definitions of input '%s'", node.getId(), path), node.getId())); + return; + } + + for (ElementNodeInput input : inputs) { + if (input.hasProperties()) { + // If input is an object, input definition has to be an object type as well + if (inputDefinition.getProperties().isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an object type input '%s' but the input definition is a primitive type", node.getId(), path), node.getId())); + continue; + } + // If input is an object, validate its properties recursively + for (var inputDefProp : inputDefinition.getProperties()) { + final String childPath = path + "." + inputDefProp.getName(); + var inputProperty = input.getProperties().stream() + .filter(x -> x.getName().equals(inputDefProp.getName())) + .findFirst(); + + if (inputProperty.isEmpty()) { + if (inputDefProp.isMandatory()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' is missing mandatory property '%s'", node.getId(), childPath), node.getId())); + } + continue; + } + validateNodeInputValuesMatchDefinition(node, List.of(inputProperty.get()), inputDefProp, childPath); + } + } else { // Primitive type input + // If input is primitive type, input definition hast to be primitive type as well + if (!inputDefinition.getProperties().isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has a primitive type input '%s' but the input definition is an object type with properties", node.getId(), path), node.getId())); + continue; + } + // Input value can be empty only if its default value is defined as empty + if (input.getValue().isEmpty() && (inputDefinition.getDefaultValue() == null || !inputDefinition.getDefaultValue().isEmpty())) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an empty value for input '%s'", node.getId(), path), node.getId())); + } + // If the input is enum and constant, it must have a valid value + if (inputDefinition.getAllowedValues() != null && !inputDefinition.getAllowedValues().isEmpty() && input.getVariableSource().equals(CONSTANT.toString()) && !inputDefinition.getAllowedValues().contains(input.getValue())) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an invalid value for input '%s'. Allowed values are: %s", node.getId(), path, String.join(", ", inputDefinition.getAllowedValues())), node.getId())); + } + // If the input's source type is GLOBAL, then global variable library must contain the input variable + if (input.getVariableSource().equals(GLOBAL.toString()) && globalVariableLibrary.getVariableByName(input.getValue()).isEmpty()) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an input '%s' which tries to use a global variable '%s' that does not exist in the global variable library", + node.getId(), path, input.getValue()), node.getId())); + } + // Input's source type must be among the component allowed source types + if (!inputDefinition.isAllowedInputSourceType(input.getVariableSource())) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an input '%s' with invalid variable source type '%s'. Allowed source types for this input are: %s", + node.getId(), path, input.getVariableSource(), String.join(", ", inputDefinition.getAllowedInputSourceTypes().stream().map(BpmnComponentInputSourceType::toString).toList())), node.getId())); + } + } + } + } + private void validateRequiredInputs(ElementNode node) { final Collection invalidInputMessages = new ArrayList<>(); final var component = componentLibrary.getComponentByName(node.getElementType()); if (component.isEmpty()) return; // Unknown action type, should probably never happen by the time we reach this point if (node.getInputs() == null) return; - node.getInputs().forEach(nodeInput -> { - if (StringUtils.isBlank(nodeInput.getName())) { - invalidInputMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has input with null or empty name", node.getId()), node.getId())); - } else { - if (StringUtils.isBlank(nodeInput.getValue())) { - invalidInputMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has '%s' input with null or empty value", node.getId(), nodeInput.getName()), node.getId())); - } - if (StringUtils.isBlank(nodeInput.getVariableSource())) { - invalidInputMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has '%s' input with null or empty variableSource. It should be CONSTANT, EXPRESSION, SCRIPT, NODE or GLOBAL.", node.getId(), nodeInput.getName()), node.getId())); - } - } - }); + for (ElementNodeInput nodeInput : node.getInputs()) { + validateNodeInputValuesAndVariableSourceExist(node, nodeInput, invalidInputMessages); + } if (!invalidInputMessages.isEmpty()) { // All inputs must have valid values before proceeding with further validation @@ -125,36 +205,15 @@ private void validateRequiredInputs(ElementNode node) { return; } - component.get().getRequiredInputs().forEach(requiredInput -> { + for (var inputDefinition : component.get().getRequiredInputs()) { List inputs = node.getInputs() == null - ? new ArrayList<>() - : node.getInputs().stream() - .filter(nodeInput -> nodeInput.getName().equals(requiredInput.getName())) - .toList(); - - // If the input is mandatory, it must be present - if (requiredInput.isMandatory() && inputs.isEmpty()) { - invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' is missing mandatory input '%s'", node.getId(), requiredInput.getName()), node.getId())); - } - // Input must not be defined multiple times - if (inputs.size() > 1) { - invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has multiple definitions of input '%s'", node.getId(), requiredInput.getName()), node.getId())); - } - // If the input is enum and constant, it must have a valid value - if (!inputs.isEmpty() && requiredInput.getAllowedValues() != null && !requiredInput.getAllowedValues().isEmpty() && inputs.get(0).getVariableSource().equals(CONSTANT.toString()) && !requiredInput.getAllowedValues().contains(inputs.get(0).getValue())) { - invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an invalid value for input '%s'. Allowed values are: %s", node.getId(), requiredInput.getName(), String.join(", ", requiredInput.getAllowedValues())), node.getId())); - } - // If the input's source type is GLOBAL, then global variable library must contain the input variable - if (!inputs.isEmpty() && inputs.get(0).getVariableSource().equals(GLOBAL.toString()) && globalVariableLibrary.getVariableByName(inputs.get(0).getValue()).isEmpty()) { - invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an input '%s' which tries to use a global variable '%s' that does not exist in the global variable library", - node.getId(), requiredInput.getName(), inputs.get(0).getValue()), node.getId())); - } - // Input's source type must be among the component allowed source types - if (!inputs.isEmpty() && !requiredInput.isAllowedInputSourceType(inputs.get(0).getVariableSource())) { - invalidMessages.add(new IntermediateModelValidationError(String.format("Node '%s' has an input '%s' with invalid variable source type '%s'. Allowed source types for this input are: %s", - node.getId(), requiredInput.getName(), inputs.get(0).getVariableSource(), String.join(", ", requiredInput.getAllowedInputSourceTypes().stream().map(BpmnComponentInputSourceType::toString).toList())), node.getId())); - } - }); + ? new ArrayList<>() + : node.getInputs().stream() + .filter(nodeInput -> nodeInput.getName().equals(inputDefinition.getName())) + .toList(); + + validateNodeInputValuesMatchDefinition(node, inputs, inputDefinition, inputDefinition.getName()); + } } private void validateNodeConnections(ElementNode node) { @@ -207,17 +266,23 @@ private void validateNodeConnectionsRules(ElementNode node) { if (incomingConnections.size() > 1 && node.getConnectedTo().size() > 1) { invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' has multiple incoming connections (%d) and multiple outgoing connections (%d). A gateway node can either be a split (one incoming, multiple outgoing) or a merge (multiple incoming, one outgoing), but not both at the same time. Create a separate gateway node for split and merge functionality.", node.getId(), incomingConnections.size(), node.getConnectedTo().size()), node.getId())); } - // Validate that default node and conditions are mapped to existing nodes - String defaultTargetNodeName = node.findInput("default").map(ElementNodeInput::getValue).orElse(null); - if(StringUtils.isBlank(defaultTargetNodeName)) { - invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' is missing a 'default' input specifying the default target node.", node.getId()), node.getId())); - } else if(node.getConnectedTo().stream().noneMatch(c -> c.getTargetNode().equals(defaultTargetNodeName))) { - invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' has a default target node '%s' which is not among its outgoing connections. The 'default' input must specify target node from one of the outgoing connections.", node.getId(), defaultTargetNodeName), node.getId())); - } - var conditions = convertStringToMap(node.findInput("conditions").map(ElementNodeInput::getValue).orElse("{}")); - for (String conditionTargetNode : conditions.keySet()) { - if (node.getConnectedTo().stream().noneMatch(c -> c.getTargetNode().equals(conditionTargetNode))) { - invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' has a condition target node '%s' which is not among its outgoing connections. All condition target nodes must be one of the outgoing connections.", node.getId(), conditionTargetNode), node.getId())); + if (node instanceof ConditionalGateway conditionalGateway) { + String defaultTargetNodeName = conditionalGateway.getDefaultTargetNodeId(); + Map conditions = conditionalGateway.getConditions(); + + // Validate that default node and conditions are mapped to existing nodes. Merge gateways with one outgoing connection do not need to have default node or conditions defined + if (node.getConnectedTo().size() > 1) { + if(StringUtils.isBlank(defaultTargetNodeName)) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' is missing a 'default' input specifying the default target node.", node.getId()), node.getId())); + } else if(node.getConnectedTo().stream().noneMatch(c -> c.getTargetNode().equals(defaultTargetNodeName))) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' has a default target node '%s' which is not among its outgoing connections. The 'default' input must specify target node from one of the outgoing connections.", node.getId(), defaultTargetNodeName), node.getId())); + } + } + + for (String conditionTargetNode : conditions.keySet()) { + if (node.getConnectedTo().stream().noneMatch(c -> c.getTargetNode().equals(conditionTargetNode))) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Gateway node '%s' has a condition target node '%s' which is not among its outgoing connections. All condition target nodes must be one of the outgoing connections.", node.getId(), conditionTargetNode), node.getId())); + } } } } else if (node.getElementType().equals(PROCESS_CONFIG)) { @@ -235,64 +300,50 @@ private void validateNodeConnectionsRules(ElementNode node) { } } - private void validateConstantInput(ElementNode node, ElementNodeInput input) { + private void validateConstantInput(ElementNode node, ElementNodeInput input, String inputPath) { String constantValue = input.getValue(); // Do not allow variable writes in constant inputs - List writtenVariables = retrieveVariablesWithPattern(constantValue, VAR_WRITE_PATTERN); + List writtenVariables = retrieveWriteVariables(constantValue); if (!writtenVariables.isEmpty()) { invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is a CONSTANT input but its value stores variables [%s] using setVariable(). CONSTANT inputs cannot write variables. Change its type to SCRIPT (if the input definition allows this type) or provide a valid CONSTANT value.", - input.getName(), node.getId(), String.join(", ", writtenVariables.stream().map(PayloadVariable::getName).toList())), node.getId())); + inputPath, node.getId(), String.join(", ", writtenVariables.stream().map(PayloadVariable::getName).toList())), node.getId())); } // Do not allow variable reads in constant inputs - List readVariables = retrieveVariablesWithPattern(constantValue, VAR_READ_PATTERN); + List readVariables = retrieveReadVariables(constantValue); if (!readVariables.isEmpty()) { invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is a CONSTANT input but its value reads variables [%s] using getVariable(). CONSTANT inputs cannot read variables. Change its type to EXPRESSION or SCRIPT (if the input definition allows this type) or provide a valid CONSTANT value.", - input.getName(), node.getId(), String.join(", ", readVariables.stream().map(PayloadVariable::getName).toList())), node.getId())); + inputPath, node.getId(), String.join(", ", readVariables.stream().map(PayloadVariable::getName).toList())), node.getId())); } // Do not allow global variable reads in constant inputs List readGlobalVariables = retrieveGlobalVariables(constantValue, globalVariableLibrary); if (!readGlobalVariables.isEmpty()) { invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is a CONSTANT input but its value reads global variables [%s] using getGlobalVariable(). CONSTANT inputs cannot read global variables. Change its type to EXPRESSION or SCRIPT (if the input definition allows this type) or provide a valid CONSTANT value.", - input.getName(), node.getId(), String.join(", ", readGlobalVariables.stream().map(PayloadVariable::getName).toList())), node.getId())); + inputPath, node.getId(), String.join(", ", readGlobalVariables.stream().map(PayloadVariable::getName).toList())), node.getId())); } } - private void validateExpressionInput(ElementNode node, ElementNodeInput input, Map> payload) { + private void validateExpressionInput(ElementNode node, ElementNodeInput input, String inputPath, Map> payload) { String expression = input.getValue(); // Do not allow variable writes in constant inputs - List writtenVariables = retrieveVariablesWithPattern(expression, VAR_WRITE_PATTERN); + List writtenVariables = retrieveWriteVariables(expression); if (!writtenVariables.isEmpty()) { invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is an EXPRESSION input but its value stores variables [%s] using setVariable(). EXPRESSION inputs cannot write variables. Change its type to SCRIPT (if the input definition allows this type) or provide a valid CONSTANT value.", - input.getName(), node.getId(), String.join(", ", writtenVariables.stream().map(PayloadVariable::getName).toList())), node.getId())); + inputPath, node.getId(), String.join(", ", writtenVariables.stream().map(PayloadVariable::getName).toList())), node.getId())); } - validateVariableReads(node, input, payload); - expression = resolveVariableReads(expression, true); + validateVariableReads(node, input, inputPath, payload); + expression = resolveVariableReadsAsPayloadVar(expression, true); - validateGlobalVariableReads(node, input); + validateGlobalVariableReads(node, input, inputPath); expression = resolveGlobalVariableReads(expression, globalVariableLibrary, true); - - List expressionsToValidate = new ArrayList<>(); - if (node.getElementType().endsWith(GATEWAY_SUFFIX) && input.getName().equals("conditions")) { - var gatewayConditions = convertStringToMap(expression).values(); - expressionsToValidate.addAll(gatewayConditions); - } else { - expressionsToValidate.add(expression); - } - - for (String expr : expressionsToValidate) { - if (StringUtils.isBlank(expr)) { - continue; - } - validateExpression(node, input, expr); - } + validateExpression(node, inputPath, expression); } - private void validateExpression(ElementNode node, ElementNodeInput input, String expression) { + private void validateExpression(ElementNode node, String inputPath, String expression) { if (expression.startsWith("return ")) { expression = expression.substring(7).trim(); } @@ -317,16 +368,16 @@ private void validateExpression(ElementNode node, ElementNodeInput input, String Expression expr = ((ExpressionStatement) statement).getExpression(); if (!isValidExpressionType(expr)) { invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is an EXPRESSION input but its value is a '%s' expression which is not allowed. EXPRESSION inputs must have single-line expressions. Change its source type to CONSTANT or SCRIPT, or provide a valid EXPRESSION value.", - input.getName(), node.getId(), expr.getClass().getSimpleName()), node.getId())); + inputPath, node.getId(), expr.getClass().getSimpleName()), node.getId())); } } } else { invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is an EXPRESSION input but its value appears to be a Groovy script. EXPRESSION inputs must have single-line expressions. Change its source type to SCRIPT or provide a valid EXPRESSION value.", - input.getName(), node.getId()), node.getId())); + inputPath, node.getId()), node.getId())); } } catch (Exception e) { invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is an EXPRESSION input but its value could not be parsed as a valid Groovy expression and threw an error: %s. EXPRESSION inputs must have single-line expressions. Change its source type to SCRIPT or provide a valid EXPRESSION value.", - input.getName(), node.getId(), e.getMessage()), node.getId())); + inputPath, node.getId(), e.getMessage()), node.getId())); } } @@ -339,16 +390,16 @@ private boolean isValidExpressionType(Expression expr) { expr instanceof ConstantExpression; } - private void validateScriptInput(ElementNode node, ElementNodeInput input, Map> payload) { + private void validateScriptInput(ElementNode node, ElementNodeInput input, String inputPath, Map> payload) { String script = input.getValue(); // Check for variable writes - List writtenVariables = retrieveVariablesWithPattern(script, VAR_WRITE_PATTERN); + List writtenVariables = retrieveWriteVariables(script); script = resolveVariableWrites(script); // Check for variable reads - boolean isScriptValid = validateVariableReads(node, input, payload) && validateGlobalVariableReads(node, input); - script = resolveVariableReads(script, false); + boolean isScriptValid = validateVariableReads(node, input, inputPath, payload) && validateGlobalVariableReads(node, input, inputPath); + script = resolveVariableReadsAsPayloadVar(script, false); script = resolveGlobalVariableReads(script, globalVariableLibrary, false); // Replace throw(...) but don't use valid Groovy exception syntax as it would throw actual exception during evaluation @@ -359,8 +410,8 @@ private void validateScriptInput(ElementNode node, ElementNodeInput input, Map> payload) { + private void validateNodeInput(ElementNode node, ElementNodeInput input, String inputPath, Map> payload) { String sourceNodeId = input.getValue(); - String variableName = input.getName(); if (!payload.containsKey(sourceNodeId)) { invalidMessages.add(new IntermediateModelValidationError( String.format("Input '%s' in node '%s' references source node '%s' which does not exist or has not been processed yet.", - variableName, node.getId(), sourceNodeId), node.getId())); + inputPath, node.getId(), sourceNodeId), node.getId())); return; } Set sourceNodeOutputs = payload.get(sourceNodeId); boolean variableExists = sourceNodeOutputs.stream() - .anyMatch(v -> v.getName().equals(variableName)); + .anyMatch(v -> v.getName().equals(input.getName())); if (!variableExists) { invalidMessages.add(new IntermediateModelValidationError( String.format("Input '%s' in node '%s' tries to read from node '%s' which does not output this variable. Available outputs: [%s]", - variableName, node.getId(), sourceNodeId, + inputPath, node.getId(), sourceNodeId, sourceNodeOutputs.stream().map(PayloadVariable::getName).collect(Collectors.joining(", "))), node.getId())); } } - private boolean validateVariableReads(ElementNode node, ElementNodeInput input, Map> payload) { + private boolean validateVariableReads(ElementNode node, ElementNodeInput input, String inputPath, Map> payload) { boolean isScriptValid = true; Matcher readMatcher = VAR_READ_PATTERN.matcher(input.getValue()); while (readMatcher.find()) { @@ -417,14 +467,14 @@ private boolean validateVariableReads(ElementNode node, ElementNodeInput input, ? "node '%s' which does not store or output this variable. " : "the starting payload which does not store it. ") + "Ensure this variable is provided in the starting payload, generated as a source node output, or written in a previous node's script using setVariable().", - input.getName(), node.getId(), variableName, sourceNodeId), node.getId())); + inputPath, node.getId(), variableName, sourceNodeId), node.getId())); isScriptValid = false; } } return isScriptValid; } - private boolean validateGlobalVariableReads(ElementNode node, ElementNodeInput input) { + private boolean validateGlobalVariableReads(ElementNode node, ElementNodeInput input, String inputPath) { boolean isScriptValid = true; Matcher globalVarMatcher = GLOBAL_VAR_READ_PATTERN.matcher(input.getValue()); while (globalVarMatcher.find()) { @@ -437,7 +487,7 @@ private boolean validateGlobalVariableReads(ElementNode node, ElementNodeInput i invalidMessages.add(new IntermediateModelValidationError( String.format("%s in node '%s' reads global variable '%s' which does not exist in the global variable library. " + "Change this input to a global variable which is in the library, or to another input type such as CONSTANT, EXPRESSION, SCRIPT or NODE if appropriate.", - input.getName(), node.getId(), variableName), node.getId())); + inputPath, node.getId(), variableName), node.getId())); isScriptValid = false; } else { // Verify that all required arguments are provided @@ -446,7 +496,7 @@ private boolean validateGlobalVariableReads(ElementNode node, ElementNodeInput i invalidMessages.add(new IntermediateModelValidationError( String.format("%s in node '%s' reads global variable '%s' but the number of provided arguments (%d) does not match the required number of arguments (%d). " + "Ensure to provide all required arguments when reading this global variable.", - input.getName(), node.getId(), variableName, arguments.trim().split(COMMA_DELIMITER).length, requiredArgs.size()), node.getId())); + inputPath, node.getId(), variableName, arguments.trim().split(COMMA_DELIMITER).length, requiredArgs.size()), node.getId())); isScriptValid = false; } } @@ -503,11 +553,17 @@ private String buildDummyPayload(ElementNodeInput input, Map> payload, Set initializedVars) { + return ""; + } + + private String buildGlobalVarsInitScript() { StringBuilder script = new StringBuilder(); Set processedLines = new HashSet<>(); @@ -526,23 +582,23 @@ public String buildGlobalVarsInitScript() { return script.toString(); } - private boolean parseGroovyScript(ElementNode node, String inputName, String script) { + private boolean parseGroovyScript(ElementNode node, String inputPath, String script) { try { shell.parse(script); return true; } catch (Exception e) { - invalidMessages.add(new IntermediateModelValidationError(String.format("%s code for node '%s' is not a valid Groovy code or expression. Exception: '%s'", inputName, node.getId(), e), node.getId())); + invalidMessages.add(new IntermediateModelValidationError(String.format("%s code for node '%s' is not a valid Groovy code or expression. Exception: '%s'", inputPath, node.getId(), e), node.getId())); return false; } } - private void validateGroovyScript(ElementNode node, String inputName, String script) { + private void validateGroovyScript(ElementNode node, String inputPath, String script) { try { shell.evaluate(script); } catch (Exception e) { invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' is a SCRIPT input but its value could not be evaluated. " + "SCRIPT inputs must contain executable code that may read or write variables using getVariable() and setVariable(). Exception: '%s'", - inputName, node.getId(), e.getMessage()), node.getId())); + inputPath, node.getId(), e.getMessage()), node.getId())); } } @@ -579,10 +635,7 @@ private void traverseGraphAndValidateInputs(Map> prede // Extract variables written by this node's inputs if (node.getInputs() != null) { for (ElementNodeInput input : node.getInputs()) { - if (input.getVariableSource().equals(SCRIPT.toString())) { - List writtenVars = retrieveVariablesWithPattern(input.getValue(), VAR_WRITE_PATTERN); - newOutVars.addAll(writtenVars); - } + extractWrittenVariables(input, newOutVars); } } @@ -621,22 +674,52 @@ private void traverseGraphAndValidateInputs(Map> prede for (ElementNode pred : allReachablePredecessors.get(node.getId())) { payload.put(pred.getId(), outVars.get(pred.getId())); } - + String inputPath = ""; for (ElementNodeInput input : node.getInputs()) { - if (input.getVariableSource().equals(CONSTANT.toString())) { - validateConstantInput(node, input); - } else if (input.getVariableSource().equals(EXPRESSION.toString())) { - validateExpressionInput(node, input, payload); - } else if (input.getVariableSource().equals(SCRIPT.toString())) { - validateScriptInput(node, input, payload); - } else if (input.getVariableSource().equals(NODE.toString())) { - validateNodeInput(node, input, payload); - } + validateInput(node, input, inputPath, payload); } } } } + private void extractWrittenVariables(ElementNodeInput input, Collection writtenVariables) { + if (input.hasProperties()) { + for (ElementNodeInput property : input.getProperties()) { + extractWrittenVariables(property, writtenVariables); + } + } else { + if (input.getVariableSource().equals(SCRIPT.toString())) { + writtenVariables.addAll(retrieveWriteVariables(input.getValue())); + } + } + } + + private void validateInput(ElementNode node, ElementNodeInput input, String path, Map> payload) { + if (input.getName().equals("conditionExpression")) { + var x = 0; + } + String childPath = path.isEmpty() ? input.getName() : path + "." + input.getName(); + if (input.hasProperties()) { + for (ElementNodeInput property : input.getProperties()) { + validateInput(node, property, childPath, payload); + } + } else { + validateInputValue(node, input, childPath, payload); + } + } + + private void validateInputValue(ElementNode node, ElementNodeInput input, String path, Map> payload) { + if (input.getVariableSource().equals(CONSTANT.toString())) { + validateConstantInput(node, input, path); + } else if (input.getVariableSource().equals(EXPRESSION.toString())) { + validateExpressionInput(node, input, path, payload); + } else if (input.getVariableSource().equals(SCRIPT.toString())) { + validateScriptInput(node, input, path, payload); + } else if (input.getVariableSource().equals(NODE.toString())) { + validateNodeInput(node, input, path, payload); + } + } + // Helper method to get all transitive predecessors private Set getAllReachablePredecessors(ElementNode node, Map> predecessors) { Set reachable = new HashSet<>(); diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json index eb0c0a3..8cee50d 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json @@ -2,12 +2,13 @@ "components": [ { "name": "userTask", - "description": "A task that requires human intervention. Users interact with 'user tasks' via a task management system named eTask.", + "description": "A task that requires human intervention. Users interact with 'user tasks' via a task management system named eTask", "usage": "Use this task type when a task in the process flow requires manual action by a user. It typically involves human interaction, such as reviewing a document, approving a request, or entering data.", "requiredInputs": [ { "name": "taskName", "description": "Name of the eTask for identification and display purposes", + "alias": "workItemName", "type": "string", "mandatory": true, "keyValue": true, @@ -16,6 +17,7 @@ { "name": "taskDescription", "description": "Detailed description of what the user needs to do in this task", + "alias": "workItemDescription", "type": "string", "mandatory": true, "keyValue": true, @@ -24,6 +26,7 @@ { "name": "sourceSystemName", "description": "Source system or process that generated this task", + "alias": "appName", "type": "string", "mandatory": true, "keyValue": true, @@ -31,19 +34,23 @@ }, { "name": "taskPriority", - "description": "Priority level of the task.", + "description": "Priority level of the task", + "alias": "workItemPriority", "type": "string", "mandatory": true, "keyValue": true, + "defaultValue": "MEDIUM", "allowedValues": ["CRITICAL", "HIGH", "MEDIUM", "LOW"], "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] }, { "name": "taskDeadline", "description": "Expected completion date and time for the task in date format (e.g. YYYY-MM-DDTHH:MM:SS) or duration (e.g. P{days}DT{hours}H{minutes}M)", + "alias": "workItemDeadline", "type": "string", "mandatory": true, "keyValue": true, + "defaultValue": "P7DT0H0M", "allowedInputSourceTypes": ["CONSTANT"] }, { @@ -51,7 +58,8 @@ "description": "Maximum number of active user tasks allowed to run concurrently", "type": "integer", "mandatory": true, - "keyValue": false, + "keyValue": true, + "defaultValue": "100", "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] } ], @@ -60,25 +68,22 @@ "name": "reasonCode", "description": "Reason code indicating how the task was completed. Useful for determining approval outcomes (e.g., 'APPROVED' vs 'REJECTED') or other completion reasons", "type": "string", - "keyValue": true + "keyValue": true, + "resolveValue": "taskCompletionPayload.reasonCode" }, { "name": "comment", - "description": "The comment entered by the user who completed the task.", - "type": "string", - "keyValue": true - }, - { - "name": "completionPayload", - "description": "Optional payload data containing additional information submitted when the task was completed. Use this to access custom data or form fields submitted by the user", + "description": "The comment entered by the user who completed the task", "type": "string", - "keyValue": true + "keyValue": true, + "resolveValue": "taskCompletionPayload.comment" }, { "name": "taskIdentifier", "description": "Unique reference identifier from taskCompletionPayload for the completed task instance. Useful for tracking, auditing, or correlating this specific task execution with external systems", "type": "string", - "keyValue": true + "keyValue": true, + "resolveValue": "taskCompletionPayload.taskIdentifier" } ] }, @@ -89,7 +94,8 @@ "requiredInputs": [ { "name": "serviceUrl", - "description": "Direct HTTP/HTTPS URL of the target service (e.g., https://api.example.com). Use this when the service endpoint is known and accessible via a direct URL. Choose either serviceUrl OR discoveryPath, not both.", + "description": "Direct HTTP/HTTPS URL of the target service (e.g., https://api.example.com). Use this when the service endpoint is known and accessible via a direct URL. Choose either serviceUrl OR discoveryPath, not both", + "alias": "httpRootUrl", "type": "string", "mandatory": false, "keyValue": true, @@ -98,6 +104,7 @@ { "name": "uriPath", "description": "Specific URI path to append to the location identifier", + "alias": "httpPath", "type": "string", "mandatory": true, "keyValue": true, @@ -106,6 +113,7 @@ { "name": "httpMethod", "description": "HTTP Method of the request to be invoked on the REST service called by this task", + "alias": "httpServiceMethod", "type": "string", "mandatory": true, "keyValue": true, @@ -114,19 +122,59 @@ }, { "name": "headers", - "description": "HTTP headers to include in the request. It's a stringified map where keys are header names and values are the corresponding header values", - "type": "string", + "description": "List of request headers to be used with the REST request", + "alias": "requestHeader", + "type": "array", "mandatory": false, "keyValue": false, - "allowedInputSourceTypes": ["CONSTANT"] + "properties": [ + { + "name": "headerName", + "description": "Name of the HTTP header", + "alias": "name", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT"] + }, + { + "name": "headerExpression", + "description": "Header value used for the HTTP request. Can be a constant value or an expression to be evaluated at runtime", + "alias": "expression", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + } + ] }, { "name": "queryParams", - "description": "Query parameters for the request URL. It's a stringified map where keys are parameter names and values are the corresponding parameter values", - "type": "string", + "description": "List of query parameters for the request URL", + "alias": "queryParameter", + "type": "array", "mandatory": false, "keyValue": false, - "allowedInputSourceTypes": ["CONSTANT"] + "properties": [ + { + "name": "parameterName", + "description": "Name of the query parameter", + "alias": "name", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT"] + }, + { + "name": "parameterExpression", + "description": "Parameter value used for the HTTP request. It has to be an expression to be evaluated at runtime", + "alias": "expression", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["EXPRESSION"] + } + ] }, { "name": "inputExpression", @@ -142,7 +190,7 @@ "type": "string", "mandatory": false, "keyValue": true, - "allowedInputSourceTypes": ["NODE", "SCRIPT"] + "allowedInputSourceTypes": ["SCRIPT"] } ], "generatedOutputs": [ @@ -150,13 +198,14 @@ "name": "statusCode", "description": "HTTP status code returned by the service", "type": "string", - "keyValue": true + "keyValue": true, + "resolveValue": "response.statusLine.statusCode" } ] }, { "name": "scriptTask", - "description": "A task that is performed based on scripted logic within the process.", + "description": "A task that is performed based on scripted logic within the process", "usage": "Use script tasks when a task in the process flow requires custom logic or algorithmic processing. It is suitable when the logic can be localized within the process (i.e. does not require external data or systems, which is where a service task is more appropriate). It allows you to define Groovy script scripts to perform specific actions or calculations within the process.", "requiredInputs": [ { @@ -168,32 +217,25 @@ "allowedInputSourceTypes": ["NODE", "SCRIPT"] } ], - "generatedOutputs": [ - { - "name": "result", - "description": "Name of the variable that stores the output of the script execution", - "type": "string", - "keyValue": true - } - ] + "generatedOutputs": [] }, { "name": "businessRuleTask", - "description": "A task that executes a business rule or decision logic.", + "description": "A task that executes a business rule or decision logic", "usage": "Use business rule tasks when a task in the process flow involves executing business rules or decision logic. It allows you to define and execute business rules or decision tables to determine the flow of the process based on certain conditions or criteria.", "requiredInputs": [ { "name": "executionEngine", - "description": "Execution engine for rule evaluation.", + "description": "Execution engine for rule evaluation", "type": "string", "mandatory": true, "keyValue": true, - "allowedValues": ["Sapiens", "Signavio", "DMN", "Droit", "Decision Tables"], + "allowedValues": ["Sapiens", "Signavio", "DMN", "Droit", "DecisionTables"], "allowedInputSourceTypes": ["CONSTANT"] }, { "name": "applicationId", - "description": "ID of the Application within Decision Services Platform", + "description": "ID of the Application", "type": "string", "mandatory": true, "keyValue": true, @@ -201,7 +243,8 @@ }, { "name": "ruleName", - "description": "Rule Name of the rule to be executed in Decision Services Platform", + "description": "Rule Name of the rule to be executed", + "alias": "businessRuleName", "type": "string", "mandatory": false, "keyValue": false, @@ -209,23 +252,67 @@ }, { "name": "ruleVersion", - "description": "Rule Version of the rule to be executed in Decision Services Platform", + "description": "Rule Version of the rule to be executed", + "alias": "businessRuleVersion", + "type": "string", + "mandatory": false, + "keyValue": false, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + }, + { + "name": "factTypesExpression", + "description": "Expression to be used to resolve the FactTypes of the rule. Specify either an FactTypes Expression or a FactTypes Script, but not both", + "alias": "inputExpression", "type": "string", "mandatory": false, "keyValue": false, "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + }, + { + "name": "factTypesScript", + "description": "Groovy script to resolve the FactTypes of the rule. Specify either an FactTypes Expression or a FactTypes Script, but not both", + "alias": "inputScript", + "type": "string", + "mandatory": false, + "keyValue": false, + "allowedInputSourceTypes": ["SCRIPT"] + }, + { + "name": "metadataExpression", + "description": "Expression to be used to resolve the Metadata of the rule. Specify either an Metadata Expression or a Metadata Script, but not both", + "type": "string", + "mandatory": false, + "keyValue": false, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + }, + { + "name": "metadataScript", + "description": "Groovy script to resolve the Metadata of the rule. Specify either an Metadata Expression or a Metadata Script, but not both", + "type": "string", + "mandatory": false, + "keyValue": false, + "allowedInputSourceTypes": ["SCRIPT"] + }, + { + "name": "outputScript", + "description": "Groovy script to process the response from the server (e.g handle status code or throw exceptions). The response object will be available in a `response` variable with response.statusLine.statusCode, response.request.uri and response.entity", + "type": "string", + "mandatory": false, + "keyValue": true, + "allowedInputSourceTypes": ["SCRIPT"] } ], "generatedOutputs": [] }, { "name": "sendTask", - "description": "A task that sends a message or signal to another process participant.", + "description": "A task that sends a message or signal to another process participant", "usage": "Use send tasks when a task in the process flow involves sending a message or signal to another process participant or external system. It initiates communication or triggers actions in other parts of the process or external systems.", "requiredInputs": [ { "name": "serviceUrl", - "description": "Direct HTTP/HTTPS URL of the target service (e.g., https://api.example.com). Use this when the service endpoint is known and accessible via a direct URL. Choose either serviceUrl OR discoveryPath, not both.", + "description": "Direct HTTP/HTTPS URL of the target service (e.g., https://api.example.com). Use this when the service endpoint is known and accessible via a direct URL. Choose either serviceUrl OR discoveryPath, not both", + "alias": "httpRootUrl", "type": "string", "mandatory": false, "keyValue": true, @@ -234,6 +321,7 @@ { "name": "uriPath", "description": "Specific URI path to append to the location identifier", + "alias": "httpPath", "type": "string", "mandatory": true, "keyValue": true, @@ -242,6 +330,7 @@ { "name": "httpMethod", "description": "HTTP Method of the request to be invoked on the REST service called by this task", + "alias": "httpServiceMethod", "type": "string", "mandatory": true, "keyValue": true, @@ -250,19 +339,59 @@ }, { "name": "headers", - "description": "HTTP headers to include in the request. It's a stringified map where keys are header names and values are the corresponding header values", - "type": "string", + "description": "List of request headers to be used with the REST request", + "alias": "requestHeader", + "type": "array", "mandatory": false, "keyValue": false, - "allowedInputSourceTypes": ["CONSTANT"] + "properties": [ + { + "name": "headerName", + "description": "Name of the HTTP header", + "alias": "name", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT"] + }, + { + "name": "headerExpression", + "description": "Header value used for the HTTP request. Can be a constant value or an expression to be evaluated at runtime", + "alias": "expression", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + } + ] }, { "name": "queryParams", - "description": "Query parameters for the request URL. It's a stringified map where keys are parameter names and values are the corresponding parameter values", - "type": "string", + "description": "List of query parameters for the request URL", + "alias": "queryParameter", + "type": "array", "mandatory": false, "keyValue": false, - "allowedInputSourceTypes": ["CONSTANT"] + "properties": [ + { + "name": "parameterName", + "description": "Name of the query parameter", + "alias": "name", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT"] + }, + { + "name": "parameterExpression", + "description": "Parameter value used for the HTTP request. It has to be an expression to be evaluated at runtime", + "alias": "expression", + "type": "string", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + } + ] }, { "name": "inputExpression", @@ -278,7 +407,7 @@ "type": "string", "mandatory": false, "keyValue": true, - "allowedInputSourceTypes": ["NODE", "SCRIPT"] + "allowedInputSourceTypes": ["SCRIPT"] } ], "generatedOutputs": [] @@ -299,6 +428,7 @@ { "name": "availabilityRuleScript", "description": "A Groovy script that specifies control of who can call this Receive Task", + "alias": "availability", "type": "string", "mandatory": false, "keyValue": false, @@ -323,61 +453,100 @@ }, { "name": "exclusiveGateway", - "description": "Allows branching based on a condition", + "description": "Allows branching based on a condition or merging from multiple paths", "usage": "Use when the process flow can branch to multiple nodes, but ONLY ONE of the paths can be followed. Each outgoing connection flow has a condition which must be met for the process to take that path", "requiredInputs": [ { "name": "default", - "description": "Identifier of a default target node if no conditions are met.", + "description": "Identifier of a default target node if no conditions are met", "type": "string", "mandatory": false, "keyValue": true, + "defaultValue": "", "allowedInputSourceTypes": ["CONSTANT"] }, { "name": "conditions", - "description": "Data used for condition evaluation. It's a stringified map where keys are target node identifiers and values are the corresponding conditions", - "type": "string", + "description": "List of conditions for each outgoing path. Each condition includes the target node identifier and the condition expression to evaluate. Merge gateways with one outgoing path can have empty condition expression", + "type": "array", "mandatory": true, "keyValue": false, - "allowedInputSourceTypes": ["EXPRESSION", "NODE"] + "properties": [ + { + "name": "targetNodeId", + "type": "string", + "description": "Identifier of the target node for this condition", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT"] + }, + { + "name": "conditionExpression", + "type": "string", + "description": "Boolean expression used to evaluate whether this path should be taken", + "mandatory": true, + "keyValue": true, + "defaultValue": "", + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + } + ] } ], "generatedOutputs": [] }, { "name": "inclusiveGateway", - "description": "Allows branching based on a condition", + "description": "Allows branching based on a condition or merging from multiple paths", "usage": "Use when the process flow can branch to multiple nodes, and MULTIPLE paths can be followed simultaneously. Each outgoing connection flow has a condition which must be met for the process to take that path.", "requiredInputs": [ { "name": "default", - "description": "Identifier of a default target node if no conditions are met", + "description": "Identifier of a default target node if no conditions are met.", "type": "string", "mandatory": false, - "keyValue": true + "keyValue": true, + "defaultValue": "", + "allowedInputSourceTypes": ["CONSTANT"] }, { "name": "conditions", - "description": "Data used for condition evaluation. It's a stringified map where keys are target node identifiers and values are the corresponding conditions", - "type": "string", + "description": "List of conditions for each outgoing path. Each condition includes the target node identifier and the condition expression to evaluate", + "type": "array", "mandatory": true, "keyValue": false, - "allowedInputSourceTypes": ["EXPRESSION", "NODE"] + "properties": [ + { + "name": "targetNodeId", + "type": "string", + "description": "Identifier of the target node for this condition", + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT"] + }, + { + "name": "conditionExpression", + "type": "string", + "description": "Boolean expression used to evaluate whether this path should be taken", + "mandatory": true, + "keyValue": true, + "defaultValue": "", + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + } + ] } ], "generatedOutputs": [] }, { "name": "parallelGateway", - "description": "Allows diverging into, or converging from, multiple parallel paths.", + "description": "Allows diverging into, or converging from, multiple parallel paths", "usage": "Use when the process flow should split into multiple parallel paths or merge from multiple parallel paths simultaneously. All outgoing sequence flows are followed in parallel, and all incoming sequence flows must complete before proceeding", "requiredInputs": [], "generatedOutputs": [] }, { "name": "processConfig", - "description": "Use this node to represent a configuration of the process. This node has no effect besides documentation. It should not have any inputs or outputs as it will not be rendered as a node in the executable model.", + "description": "Use this node to represent a configuration of the process. This node has no effect besides documentation. It should not have any inputs or outputs as it will not be rendered as a node in the executable model", "usage": "Use this node to represent a configuration of the process. This node has no effect besides documentation. It should not have any inputs or outputs as it will not be rendered as a node in the executable model.", "requiredInputs": [ { @@ -391,6 +560,7 @@ { "name": "processName", "description": "Name of the process appearing to the user. This should contain contextual information to allow instances of a process to be distinguished", + "alias": "workItemName", "type": "string", "mandatory": true, "keyValue": true, @@ -399,6 +569,7 @@ { "name": "processDescription", "description": "Name of the process appearing to the user. This should contain contextual information to allow instances of a process to be distinguished", + "alias": "workItemDescription", "type": "string", "mandatory": true, "keyValue": true, @@ -407,6 +578,7 @@ { "name": "sourceSystemName", "description": "Source system generated this process", + "alias": "appName", "type": "string", "mandatory": true, "keyValue": true, @@ -415,6 +587,7 @@ { "name": "processPriority", "description": "Priority level of the process.", + "alias": "workItemPriority", "type": "string", "mandatory": true, "keyValue": true, @@ -424,6 +597,7 @@ { "name": "processDeadline", "description": "Expected completion date and time for the process in date format (e.g. YYYY-MM-DDTHH:MM:SS) or duration (e.g. P{days}DT{hours}H{minutes}M)", + "alias": "workItemDeadline", "type": "string", "mandatory": true, "keyValue": true, @@ -432,9 +606,10 @@ { "name": "maximumActiveProcesses", "description": "Maximum number of active processes allowed before throttling", + "alias": "maximumActiveProcessInstances", "type": "integer", "mandatory": true, - "keyValue": false, + "keyValue": true, "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] } ], diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-synthetic-components.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-synthetic-components.json index 04d7a41..c06dc09 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-synthetic-components.json +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-synthetic-components.json @@ -1,69 +1,5 @@ { "components": [ - { - "name": "processConfig", - "description": "Use this node to represent a configuration of the process. This node has no effect besides documentation. It should not have any inputs or outputs as it will not be rendered as a node in the executable model.", - "usage": "Use this node to represent a configuration of the process. This node has no effect besides documentation. It should not have any inputs or outputs as it will not be rendered as a node in the executable model.", - "requiredInputs": [ - { - "name": "processId", - "description": "Unique identifier for the process instance", - "type": "string", - "mandatory": true, - "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT"] - }, - { - "name": "processName", - "description": "Name of the process appearing to the user. This should contain contextual information to allow instances of a process to be distinguished", - "type": "string", - "mandatory": true, - "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] - }, - { - "name": "processDescription", - "description": "Name of the process appearing to the user. This should contain contextual information to allow instances of a process to be distinguished", - "type": "string", - "mandatory": true, - "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] - }, - { - "name": "sourceSystemName", - "description": "Source system generated this process", - "type": "string", - "mandatory": true, - "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT"] - }, - { - "name": "processPriority", - "description": "Priority level of the process.", - "type": "string", - "mandatory": true, - "keyValue": true, - "allowedValues": ["CRITICAL", "HIGH", "MEDIUM", "LOW"], - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] - }, - { - "name": "processDeadline", - "description": "Expected completion date and time for the process in date format (e.g. YYYY-MM-DDTHH:MM:SS) or duration (e.g. P{days}DT{hours}H{minutes}M)", - "type": "string", - "mandatory": true, - "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT"] - }, - { - "name": "maximumActiveProcesses", - "description": "Maximum number of active processes allowed before throttling", - "type": "integer", - "mandatory": true, - "keyValue": false, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] - } - ] - }, { "name": "unknownElement", "description": "Use this node to represent a step if there is no applicable component in the rest of the library. This node has no effect besides documentation. Its single output should connect to the next node in the model. Do not use this for generic logic (checking values, parsing text etc.)", diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt index bbec7ce..a4ed6d0 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt @@ -85,25 +85,47 @@ RULES FOR THE DETAILED MODEL GENERATION 2. Input resolution a. For every node use only inputs listed in that component's requiredInputs (include all mandatory; optional only if clearly beneficial and resolvable). - b. Each mandatory input must have exactly one source object: { name, value, variableSource }. - c. Use only allowed variable source types for each input as per component definitions in the component library. - d. Available variableSource values: CONSTANT | SCRIPT | NODE | GLOBAL - - CONSTANT: Use for: - * Simple literal values that never change (e.g., "GET", "POST", "HIGH", 123, true, "This is short description."). - * Node IDs for gateway default paths. - * Do not use for values that require any computation, transformation, or retrieval from variables. - - EXPRESSION: Use for: - * Pure function calls and expressions that ONLY retrieve variables without transformation (e.g., "getVariable('baseUrl')/api/endpoint" or "getVariable('configValue.field'))" or "getVariable('counter') > 0". - * Make sure expressions adhere to best practices outlined in `CODE GENERATION & SCRIPTING INSTRUCTIONS` section below. - - SCRIPT: Use when the value requires: - * Groovy script computation or transformation. - * Complex logic with multiple statements. - * Control flow (if/else, loops, etc.). - * Make sure scripts adhere to best practices outlined in `CODE GENERATION & SCRIPTING INSTRUCTIONS` section below. - - NODE: Use when the value comes directly from a named output of any prior node in the process. Set `name` to the input variable name being satisfied and `value` to the source node ID. - - GLOBAL: Use when available in the global variables library. Global variables library is not the same as process shared state. - e. If any mandatory input cannot be satisfied with these rules, set their value to empty string. - f. Never add an input not defined in requiredInputs. Never guess enum values - only use allowedValues list. + - This rule applies recursively: within each input, all mandatory properties (and their nested mandatory properties) MUST also be provided. + - Optional properties at any nesting level should only be included if clearly beneficial and resolvable. + b. Inputs MUST follow the detail-level JSON schema `elementInput` which is an object: `{ "name": string, "value": string, "variableSource": string, "properties": elementInput[] }` + - There are exactly two valid shapes of the input object: + 1) Leaf input (direct assignment): + - REQUIRED: `name`, `value`, `variableSource` + - `properties` MUST be omitted or an empty array + 2) Object input (structured assignment): + - REQUIRED: `name`, `properties` (MUST have at least 1 item) + - `value` and `variableSource` SHOULD be ommited on object inputs + - Make sure the input shape matches the component library definition for that input (e.g., do not use stringified JSON for object inputs). + c. Non-empty rule: + - Every `elementInput` MUST be satisfied as either a leaf input or an object input. + - Every object input MUST contain at least one leaf input somewhere in its `properties` subtree (i.e., all branches eventually end in a leaf). + d. Nested inputs (object/array in the component library) + - Object input: + * There MUST be exactly ONE `elementInput` with this `name` in the parent `properties` list. + * Represent it as an object input (omit `value` and `variableSource`, include `properties` with field assignments). + - Array input (type = array/list): + * You MAY include MULTIPLE `elementInput` entries with the SAME `name`; each entry represents ONE array element. + * For arrays of OBJECTS: each array element MUST be an object input (has `properties`); each repeated object is one independent element. + * For arrays of PRIMITIVES: each array element MUST be a leaf input (has `value` and `variableSource`). + e. For any leaf input, `variableSource` MUST be present and MUST be one of: CONSTANT | EXPRESSION | SCRIPT | NODE | GLOBAL. + Use only values allowed by the component library for that specific input/property. + - CONSTANT: Use for: + * Simple literal values that never change (e.g., "GET", "POST", "HIGH", 123, true, "This is short description."). + * Node IDs for gateway default paths. + * Do not use for values that require any computation, transformation, or retrieval from variables. + - EXPRESSION: Use for: + * Pure function calls and expressions that ONLY retrieve variables without transformation (e.g., "getVariable('baseUrl')/api/endpoint" or "getVariable('configValue.field'))" or "getVariable('counter') > 0". + * Make sure expressions adhere to best practices outlined in `CODE GENERATION & SCRIPTING INSTRUCTIONS` section below. + - SCRIPT: Use when the value requires: + * Groovy script computation or transformation. + * Complex logic with multiple statements. + * Control flow (if/else, loops, etc.). + * Make sure scripts adhere to best practices outlined in `CODE GENERATION & SCRIPTING INSTRUCTIONS` section below. + - NODE: Use when the value comes directly from a named output of any prior node in the process. Set `name` to the input variable name being satisfied and `value` to the source node ID. + - GLOBAL: Use when available in the global variables library. Global variables library is not the same as process shared state. + f. If any mandatory input or input's property cannot be satisfied with these rules, use component's default if specified or provide a sensible constant value. + g. Inputs might have conditional rules explained in their descriptions that make them mandatory or forbidden based on other input values; ensure these conditions are met when deciding which inputs to include. + h. Never add an input not defined in requiredInputs. Never guess enum values - only use allowedValues list. 3. Outputs a. The "generated outputs" listed in the component definitions are all generated by the component. You must not provide values for them. They are available if you want to use them to satisfy inputs in subsequent nodes. diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json index 0d33086..383adc1 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json @@ -49,7 +49,7 @@ "items": { "$ref": "#/$defs/elementInput" }, - "description": "Array of required inputs, as specified for this component type in the 'component library'. Empty array if no inputs are required." + "description": "Array of required inputs, as specified for this component type in the 'component library'. Empty array if no inputs are required. Each entry may be a primitive type or an object." }, "outputs": { "type": "array", @@ -82,17 +82,33 @@ }, "value": { "type": "string", - "description": "Value to be assigned to the input. Either a constant value, expression, script or the name of an output variable from another node" + "description": "Value to be assigned to the input. Either a constant value, expression, script, name of a global variable or the name of an output variable from another node" }, "variableSource": { "type": "string", - "description": "A `CONSTANT` value if explicitly defined or `SCRIPT` if the value is a Groovy script or `NODE` if the value is sourced from another node's output or `GLOBAL` value if found in the global variable library" + "description": "A `CONSTANT` value if explicitly defined, or `EXPRESSION` if the value is a Groovy expression, or `SCRIPT` if the value is a Groovy script or `NODE` if the value is sourced from another node's output or `GLOBAL` value if found in the global variable library" + }, + "properties": { + "type": "array", + "items": { "$ref": "#/$defs/elementInput" }, + "description": "Nested properties for object\\-shaped inputs. A property can represent a primitive value or another object\\-shaped input." } }, - "required": [ - "name", - "value", - "variableSource" + "required": ["name"], + "oneOf": [ + { + "required": ["value", "variableSource"], + "properties": { + "properties": false + } + }, + { + "required": ["properties"], + "properties": { + "value": false, + "variableSource": false + } + } ] }, "elementOutput": { diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt index c1d337c..51dbc8c 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-prompt @@ -28,6 +28,17 @@ Each non-endEvent can make outbound connections to other nodes. These connection 3. A value from the output of a prior node in the process. `source` should be the id of the prior node, `sourceType` should be "NODE" 4. A global variable, from the list provided below. `source` should be the name of the variable, `sourceType` should be "GLOBAL" * The input values MUST be found in the 'requiredInputs' array for the node - do not include any inputs that are not part of this requiredInputs array for the node in question. +* Node inputs follow two valid shapes: + 1) **Leaf input** (direct assignment): Has `name`, `source`, and `sourceType`. No `properties`. + 2) **Object input** (structured assignment): Has `name` and `properties` (array of sub-inputs). No `source` or `sourceType`. + - Use object inputs when the component library defines an input with nested properties. + - Each property within `properties` is itself an input that follows these same two shapes recursively. + - Object inputs MUST contain at least one leaf input somewhere in their `properties` subtree. + 3) **Array input** (type = array): You MAY include MULTIPLE input entries with the SAME `name`; each entry represents ONE array element. + - For arrays of objects: each array element MUST be an object input (has `properties`). + - For arrays of primitives: each array element MUST be a leaf input (has `source` and `sourceType`). +* Do not use `source`/`sourceType` and `properties` on the same input — they are mutually exclusive +* ProcessConfig node must have inputs satisfied only with constant values, expressions or global variables and cannot read variables from other nodes. <#if GLOBAL_VARIABLE_LIBRARY?has_content> These are the global variables which can be used to satisfy inputs: diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-schema.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-schema.json index 1e091a1..1aef004 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-schema.json +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-high-level-generation-schema.json @@ -79,14 +79,32 @@ "description": "Source of data for the input; either the ID of another node which can provide it, a constant value, expression, Groovy script, or one of the explicitly-defined global variables" }, "sourceType": { - "enum": ["CONSTANT", "SCRIPT", "NODE", "GLOBAL"], - "description": "\"CONSTANT\" if `source` is constant value or expression to be evaluated or \"SCRIPT\" if `source` is a Groovy script or \"NODE\" if it is the name of a node which provides the value, or \"GLOBAL\" if it is a global variable" + "enum": ["CONSTANT", "EXPRESSION", "SCRIPT", "NODE", "GLOBAL"], + "description": "\"CONSTANT\" if `source` is constant value, \"EXPRESSION\" if `source` is an expression to be evaluated or \"SCRIPT\" if `source` is a Groovy script or \"NODE\" if it is the name of a node which provides the value, or \"GLOBAL\" if it is a global variable" + }, + "properties": { + "type": "array", + "items": { + "$ref": "#/$defs/elementInput" + }, + "description": "Nested properties for object\\-shaped inputs. Each property represents a sub-field of this input configured with its own source." } }, - "required": [ - "name", - "source", - "sourceType" + "required": ["name"], + "oneOf": [ + { + "required": ["source", "sourceType"], + "properties": { + "properties": false + } + }, + { + "required": ["properties"], + "properties": { + "source": false, + "sourceType": false + } + } ] }, "nodeConnection": { diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-preprocessing-payload-generation-prompt b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-preprocessing-payload-generation-prompt index dfcf551..491becd 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-preprocessing-payload-generation-prompt +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-preprocessing-payload-generation-prompt @@ -10,14 +10,14 @@ c. A variable should be excluded if it is written to or created before its first d. For complex objects, provide the full path to each field (e.g., user.address.street). e. If a variable path references payload, omit the payload. prefix (e.g., for payload.result, return result). -IMPORTANT: DO NOT return any other content or commentary. Only return a single JSON list as described below. Each object in the list must have a name and a type. Allowed types are: "string", "integer", "float" "boolean", "object, and "array". +IMPORTANT: DO NOT return any other content or commentary. Only return a single JSON list as described below. Each object in the list must have a name and a type. Name should be a valid groovy variable name with camel case format. Allowed types are: "string", "integer", "float" "boolean", "object, and "array". [ { "name": "status", "type": "string" } -} +] The process description that needs to be modeled is as follows: ``` diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/ModelParser.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/ModelParser.java new file mode 100644 index 0000000..aa86748 --- /dev/null +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/ModelParser.java @@ -0,0 +1,8 @@ +package org.rj.modelgen.llm.intrep; + +import org.rj.modelgen.llm.util.Result; + +public abstract class ModelParser { + + public abstract Result parse(String content); +} diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/graph/IntermediateGraphModel.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/graph/IntermediateGraphModel.java index 6d8dd41..de719db 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/graph/IntermediateGraphModel.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/graph/IntermediateGraphModel.java @@ -25,6 +25,10 @@ public void setNodes(List nodes) { this.nodes = nodes; } + public void addNode(TNode node) { + this.getNodes().add(node); + } + @JsonIgnore public Optional getNodeById(String nodeId) { return nodes.stream() diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/GenerationModel.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/GenerationModel.java index f35e62e..c8d9ab2 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/GenerationModel.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/GenerationModel.java @@ -22,5 +22,5 @@ public GenerationModel(Class modelClass, M * @param data Initial input data to be passed into the model in the input signal * @return Model execution result */ - public abstract Mono executeModel(String sessionId, String request, Map data); + public abstract Mono executeModel(String sessionId, String request, String canvasModel, Map data); } diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModel.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModel.java index f80a477..bd38839 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModel.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModel.java @@ -1,9 +1,9 @@ package org.rj.modelgen.llm.models.generation.multilevel; -import com.fasterxml.jackson.annotation.JsonIgnore; import org.rj.modelgen.llm.component.ComponentLibrary; import org.rj.modelgen.llm.context.provider.ContextProvider; import org.rj.modelgen.llm.generation.ModelGenerationFunction; +import org.rj.modelgen.llm.intrep.ModelParser; import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; import org.rj.modelgen.llm.model.ModelInterface; import org.rj.modelgen.llm.models.generation.GenerationModel; @@ -16,24 +16,23 @@ import org.rj.modelgen.llm.models.generation.multilevel.prompt.MultiLevelModelPromptType; import org.rj.modelgen.llm.models.generation.multilevel.signals.MultiLevelModelStandardSignals; import org.rj.modelgen.llm.models.generation.multilevel.states.*; +import org.rj.modelgen.llm.models.generation.multilevel.states.ReverseRenderIntermediateModel; import org.rj.modelgen.llm.state.ModelInterfaceState; import org.rj.modelgen.llm.state.ModelInterfaceTransitionRule; import org.rj.modelgen.llm.state.ModelInterfaceTransitionRules; import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; import org.rj.modelgen.llm.statemodel.signals.common.StandardSignals; import org.rj.modelgen.llm.statemodel.states.common.PrepareAndSubmitLlmGenericRequest; -import org.rj.modelgen.llm.statemodel.states.common.ValidateLlmIntermediateModelResponse; import org.rj.modelgen.llm.statemodel.states.common.impl.GenerateModelFromIntermediateModelTransformer; import org.rj.modelgen.llm.subproblem.config.SubproblemDecompositionConfig; import org.rj.modelgen.llm.subproblem.data.SubproblemDecompositionSignals; -import org.rj.modelgen.llm.subproblem.states.GenerateSubproblems; -import org.rj.modelgen.llm.subproblem.states.impl.CombineSubproblemsNaive; -import org.rj.modelgen.llm.subproblem.states.impl.GenerateSubproblemsNaive; import java.util.List; import java.util.Optional; import java.util.function.Function; -import java.util.function.Supplier; + +import static org.rj.modelgen.llm.models.generation.multilevel.signals.MultiLevelModelStandardSignals.UsePreprocessingFlow; +import static org.rj.modelgen.llm.models.generation.multilevel.signals.MultiLevelModelStandardSignals.UseReverseRenderingFlow; public abstract class MultiLevelGenerationModel preprocessingConfig, MultiLevelModelPhaseConfig highLevelPhaseConfig, + ReverseRenderFunction reverseRenderFunction, MultiLevelModelDetailPhaseConfig detailLevelPhaseConfig, ModelGenerationFunction modelGenerationFunction, Function renderedModelSerializer, SubproblemDecompositionConfig subproblemDecompositionConfig, + SubproblemDecompositionConfig reverseRenderSubproblemDecompositionConfig, ModelInterfaceState completionState, - MultiLevelGenerationModelOptions options) { - this(modelClass, modelInterface, buildModelData(promptGenerator, contextProvider, componentLibrary, preprocessingConfig, highLevelPhaseConfig, - detailLevelPhaseConfig, modelGenerationFunction, renderedModelSerializer, subproblemDecompositionConfig, completionState, options)); + MultiLevelGenerationModelOptions options, + ModelParser modelParser) { + this(modelClass, modelInterface, buildModelData(promptGenerator, contextProvider, componentLibrary, preprocessingConfig, highLevelPhaseConfig, reverseRenderFunction, + detailLevelPhaseConfig, modelGenerationFunction, renderedModelSerializer, subproblemDecompositionConfig, reverseRenderSubproblemDecompositionConfig, completionState, options, modelParser)); } private MultiLevelGenerationModel(Class> modelClass, @@ -72,12 +74,15 @@ ModelData buildModelData( ContextProvider contextProvider, TComponentLibrary componentLibrary, MultilevelModelPreprocessingConfig preprocessingConfig, MultiLevelModelPhaseConfig highLevelPhaseConfig, + ReverseRenderFunction reverseRenderFunction, MultiLevelModelDetailPhaseConfig detailLevelPhaseConfig, ModelGenerationFunction modelGenerationFunction, Function renderedModelSerializer, SubproblemDecompositionConfig subproblemDecompositionConfig, + SubproblemDecompositionConfig reverseRenderSubproblemDecompositionConfig, ModelInterfaceState completionState, - MultiLevelGenerationModelOptions options) { + MultiLevelGenerationModelOptions options, + ModelParser modelParser) { // Overrides from model options final var modelOptions = Optional.ofNullable(options).orElseGet(MultiLevelGenerationModelOptions::defaultOptions); @@ -115,6 +120,17 @@ ModelData buildModelData( .withModelInputKey(MultiLevelModelStandardPayloadData.HighLevelModel) .withOverriddenId(MultiLevelGenerationModelStates.ValidateHighLevel); + final var stateReverseRenderModelToIR = new ReverseRenderIntermediateModel<>( + modelParser, + reverseRenderFunction) + .withOverriddenId(MultiLevelGenerationModelStates.ReverseRender); + + final var stateGenerateSubproblemsForReverseRender = reverseRenderSubproblemDecompositionConfig.getSubproblemGeneratorImplementation().get() + .withInputKey(MultiLevelModelStandardPayloadData.SerializedReverseRender) + .withOutputKey(MultiLevelModelStandardPayloadData.SerializedReverseRender) + .withSubproblemDecompositionEnabled(modelOptions.shouldPerformSubproblemDecomposition()) + .withOverriddenId(MultiLevelGenerationModelStates.GenerateReverseRenderSubproblems); + final var stateExecuteDetailLevel = new PrepareAndSubmitMLRequestForDetailLevel<>( new PrepareAndSubmitMLRequestForDetailLevelParams<>(detailLevelPhaseConfig, contextProvider, modelPromptGenerator, MultiLevelModelPromptType.GenerateDetailLevel, componentLibrary)) .withResponseOutputKey(MultiLevelModelStandardPayloadData.DetailLevelModel) @@ -144,8 +160,8 @@ ModelData buildModelData( .withOverriddenId(MultiLevelGenerationModelStates.Complete); final var states = List.of(stateInit, stateSanitizingPrePass, statePreprocessing, stateGenerateSubproblems, - stateExecuteHighLevel, stateValidateHighLevel, stateExecuteDetailLevel, stateValidateDetailLevel, - stateCombineSubproblems, stateGenerateModel, stateComplete); + stateExecuteHighLevel, stateValidateHighLevel, stateReverseRenderModelToIR, stateGenerateSubproblemsForReverseRender, + stateExecuteDetailLevel, stateValidateDetailLevel, stateCombineSubproblems, stateGenerateModel, stateComplete); // Complete initialization, and apply any global model state that the states want to consume states.forEach(ModelInterfaceState::completeStateInitialization); @@ -153,7 +169,9 @@ ModelData buildModelData( // Transition rules between states final var rules = new ModelInterfaceTransitionRules(List.of( - new ModelInterfaceTransitionRule(stateInit, StandardSignals.SUCCESS, stateSanitizingPrePass), + + new ModelInterfaceTransitionRule(stateInit, UsePreprocessingFlow, stateSanitizingPrePass), + new ModelInterfaceTransitionRule(stateInit, UseReverseRenderingFlow, stateReverseRenderModelToIR), new ModelInterfaceTransitionRule(stateSanitizingPrePass, StandardSignals.SUCCESS, statePreprocessing), new ModelInterfaceTransitionRule(stateSanitizingPrePass, StandardSignals.SKIPPED, statePreprocessing), // Optional stage @@ -166,11 +184,19 @@ ModelData buildModelData( new ModelInterfaceTransitionRule(stateExecuteHighLevel, StandardSignals.SUCCESS, stateValidateHighLevel), new ModelInterfaceTransitionRule(stateValidateHighLevel, StandardSignals.SUCCESS, stateExecuteDetailLevel), + new ModelInterfaceTransitionRule(stateReverseRenderModelToIR, StandardSignals.SUCCESS, stateGenerateSubproblemsForReverseRender), + new ModelInterfaceTransitionRule(stateReverseRenderModelToIR, StandardSignals.SKIPPED, stateGenerateSubproblemsForReverseRender), // Optional stage + + new ModelInterfaceTransitionRule(stateGenerateSubproblemsForReverseRender, StandardSignals.SUCCESS, stateExecuteDetailLevel), + new ModelInterfaceTransitionRule(stateExecuteDetailLevel, StandardSignals.SUCCESS, stateValidateDetailLevel), - new ModelInterfaceTransitionRule(stateExecuteDetailLevel, MultiLevelModelStandardSignals.ReturnToHighLevel, stateExecuteHighLevel), // LLM-directed retry + new ModelInterfaceTransitionRule(stateExecuteDetailLevel, MultiLevelModelStandardSignals.ReturnToHighLevel, stateExecuteHighLevel), // LLM-directed retry for one-shot generation + new ModelInterfaceTransitionRule(stateExecuteDetailLevel, MultiLevelModelStandardSignals.RetryDetailLevel, stateExecuteDetailLevel), // LLM-directed retry for multi-shot generation new ModelInterfaceTransitionRule(stateValidateDetailLevel, StandardSignals.SUCCESS, stateCombineSubproblems), + new ModelInterfaceTransitionRule(stateCombineSubproblems, SubproblemDecompositionSignals.ProcessNextSubproblem, stateGenerateSubproblems), // Iterate back to process next subproblem + new ModelInterfaceTransitionRule(stateCombineSubproblems, SubproblemDecompositionSignals.ProcessNextIntermediateModelSubproblem, stateGenerateSubproblemsForReverseRender), new ModelInterfaceTransitionRule(stateCombineSubproblems, SubproblemDecompositionSignals.SubproblemDecompositionCompleted, stateGenerateModel), // All subproblems complete, so continue new ModelInterfaceTransitionRule(stateGenerateModel, StandardSignals.SUCCESS, stateComplete) @@ -183,8 +209,12 @@ protected Class getInitialState() { return StartMultiLevelGeneration.class; } - protected MultiLevelModelStandardSignals getStartSignal() { - return MultiLevelModelStandardSignals.StartGeneration; + protected MultiLevelModelStandardSignals getStartSignal(String canvasModel) { + if(canvasModel == null) { + return UsePreprocessingFlow; + } else { + return UseReverseRenderingFlow; + } } diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModelStates.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModelStates.java index 440abf8..9365eeb 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModelStates.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModelStates.java @@ -9,8 +9,11 @@ public enum MultiLevelGenerationModelStates implements StringSerializable { GenerateSubproblems, ExecuteHighLevel, ValidateHighLevel, + ReverseRender, + GenerateReverseRenderSubproblems, ExecuteDetailLevel, ValidateDetailLevel, + CombineReverseRenderSubproblems, CombineSubproblems, PostProcessing, GenerateModel, @@ -30,9 +33,12 @@ public String description() case GenerateSubproblems -> "Decomposing the input into sub-problems"; case ExecuteHighLevel -> "Generating high-level intermediate model"; case ValidateHighLevel -> "Validating high-level intermediate model"; + case ReverseRender -> "Translating the automation model to intermediate model"; + case GenerateReverseRenderSubproblems -> "Decomposing the intermediate model into sub-problems"; case ExecuteDetailLevel -> "Executing detail-level intermediate model"; case ValidateDetailLevel -> "Validating detail-level intermediate model"; case CombineSubproblems -> "Combining results from sub-problems"; + case CombineReverseRenderSubproblems -> "Combining results from sub-problems"; case PostProcessing -> "Processing final intermediate model"; case GenerateModel -> "Generating final workflow"; case Complete -> "Multi-level generation process complete"; diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/data/MultiLevelModelStandardPayloadData.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/data/MultiLevelModelStandardPayloadData.java index b7e07be..3c099c9 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/data/MultiLevelModelStandardPayloadData.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/data/MultiLevelModelStandardPayloadData.java @@ -1,12 +1,16 @@ package org.rj.modelgen.llm.models.generation.multilevel.data; public enum MultiLevelModelStandardPayloadData { + Model, Request, ProcessVariables, HighLevelModel, DetailLevelModel, LlmDirectedRetryReason, - AddPlaceholdersForUnknownActions; + LlmDirectedRetryCount, + AddPlaceholdersForUnknownActions, + SerializedReverseRender, + ReverseRenderedIntermediateModel; @Override public String toString() { diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/signals/MultiLevelModelStandardSignals.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/signals/MultiLevelModelStandardSignals.java index 2154239..3ae332d 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/signals/MultiLevelModelStandardSignals.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/signals/MultiLevelModelStandardSignals.java @@ -4,7 +4,10 @@ public enum MultiLevelModelStandardSignals implements StringSerializable { StartGeneration, - ReturnToHighLevel; + ReturnToHighLevel, + RetryDetailLevel, + UsePreprocessingFlow, + UseReverseRenderingFlow; @Override public String toString() { diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/ReverseRenderFunction.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/ReverseRenderFunction.java new file mode 100644 index 0000000..def2010 --- /dev/null +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/ReverseRenderFunction.java @@ -0,0 +1,8 @@ +package org.rj.modelgen.llm.models.generation.multilevel.states; + +import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; +import org.rj.modelgen.llm.util.Result; + +public interface ReverseRenderFunction { + Result reverseRenderModelToIR(TModel model); +} diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/ReverseRenderIntermediateModel.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/ReverseRenderIntermediateModel.java new file mode 100644 index 0000000..9e99a71 --- /dev/null +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/ReverseRenderIntermediateModel.java @@ -0,0 +1,71 @@ +package org.rj.modelgen.llm.models.generation.multilevel.states; + +import org.rj.modelgen.llm.intrep.ModelParser; +import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; +import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; +import org.rj.modelgen.llm.state.ModelInterfaceSignal; +import org.rj.modelgen.llm.state.ModelInterfaceState; +import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; +import org.rj.modelgen.llm.util.Result; +import reactor.core.publisher.Mono; + +public class ReverseRenderIntermediateModel extends ModelInterfaceState { + + private final ModelParser modelParser; + private final ReverseRenderFunction reverseRenderFunction; + + public ReverseRenderIntermediateModel(ModelParser modelParser, + ReverseRenderFunction reverseRenderFunction) { + this(ReverseRenderIntermediateModel.class, modelParser, reverseRenderFunction); + } + + public ReverseRenderIntermediateModel(Class cls, + ModelParser modelParser, + ReverseRenderFunction reverseRenderFunction) { + super(cls); + this.modelParser = modelParser; + this.reverseRenderFunction = reverseRenderFunction; + } + + @Override + protected Mono invokeAction(ModelInterfaceSignal inputSignal) { + String inputKey = StandardModelData.CanvasModel.toString(); + final String inputContent = getPayload().get(inputKey); + + if (inputContent == null || inputContent.isEmpty()) { + return error(String.format("No input content found at payload key '%s'", getPayload().get(inputKey))); + } + + final var model = modelParser.parse(inputContent); + if (model.isErr()) { + return error(String.format("Failed parsing model (%s)", model.getError())); + } + + final var generatedIntermediateModel = reverseRenderModel(model.getValue()); + if (generatedIntermediateModel.isErr()) { + final var errorMsg = String.format("Failed to generate intermediate model from model data (%s)", + generatedIntermediateModel.getError()); + recordAudit("reverse-render", errorMsg); + return error(errorMsg); + } + + final String serializedIntermediateModel = generatedIntermediateModel.getValue().serialize(); + recordAudit("reverse-render", serializedIntermediateModel); + + return outboundSignal(getSuccessSignalId()) + .withPayloadData(MultiLevelModelStandardPayloadData.Model, model.getValue()) + .withPayloadData(MultiLevelModelStandardPayloadData.ReverseRenderedIntermediateModel.toString(), generatedIntermediateModel.getValue()) + .withPayloadData(MultiLevelModelStandardPayloadData.SerializedReverseRender.toString(), serializedIntermediateModel) + .mono(); + } + + protected Result reverseRenderModel(TModel model) { + recordAudit("reverse-render-input-model", model.toString()); + return reverseRenderFunction.reverseRenderModelToIR(model); + } + + @Override + public String getDescription() { + return "Reverse Render the given model into its intermediate representation"; + } +} diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/StartMultiLevelGeneration.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/StartMultiLevelGeneration.java index 1468ab8..47f54bf 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/StartMultiLevelGeneration.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/StartMultiLevelGeneration.java @@ -1,5 +1,7 @@ package org.rj.modelgen.llm.models.generation.multilevel.states; +import org.rj.modelgen.llm.models.generation.multilevel.signals.MultiLevelModelStandardSignals; +import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; import org.rj.modelgen.llm.statemodel.signals.common.StandardSignals; import org.rj.modelgen.llm.statemodel.states.common.StartGeneration; @@ -10,6 +12,10 @@ public StartMultiLevelGeneration() { @Override public String getSuccessSignalId() { - return StandardSignals.SUCCESS; + if (getPayload().getData().get(StandardModelData.CanvasModel.toString()) != null) { + return MultiLevelModelStandardSignals.UseReverseRenderingFlow.toString(); + } else { + return MultiLevelModelStandardSignals.UsePreprocessingFlow.toString(); + } } } diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/state/ModelInterfaceInputPayload.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/state/ModelInterfaceInputPayload.java index 116416e..97233d9 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/state/ModelInterfaceInputPayload.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/state/ModelInterfaceInputPayload.java @@ -7,10 +7,11 @@ */ public class ModelInterfaceInputPayload extends ModelInterfacePayload { - public ModelInterfaceInputPayload(String sessionId, String request) { + public ModelInterfaceInputPayload(String sessionId, String request, String canvasModel) { // Mandatory values put(StandardModelData.SessionId, sessionId); put(StandardModelData.Request, request); + put(StandardModelData.CanvasModel, canvasModel); // Default values for optional parameters put(StandardModelData.Llm, "gpt-4o"); diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/state/ModelInterfaceState.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/state/ModelInterfaceState.java index ec8938d..5944ceb 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/state/ModelInterfaceState.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/state/ModelInterfaceState.java @@ -138,6 +138,10 @@ public void setInvokeLimit(Integer invokeLimit) { this.invokeLimit = invokeLimit; } + public void resetInvokeCount() { + this.invokeCount = 0; + } + public boolean isTerminal() { return type == ModelInterfaceStateType.TERMINAL_SUCCESS || type == ModelInterfaceStateType.TERMINAL_FAILURE; diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/data/common/StandardModelData.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/data/common/StandardModelData.java index 8330c80..74bfa5f 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/data/common/StandardModelData.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/data/common/StandardModelData.java @@ -16,6 +16,7 @@ public enum StandardModelData { ResponseContent, ValidationMessages, GeneratedModel, + CanvasModel, ModelValidationMessages; @Override diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ResolveSyntheticComponents.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ResolveSyntheticComponents.java index 66be667..4f55589 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ResolveSyntheticComponents.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ResolveSyntheticComponents.java @@ -10,6 +10,7 @@ import org.rj.modelgen.llm.util.StringSerializable; import reactor.core.publisher.Mono; +import java.util.List; import java.util.Optional; import java.util.function.Consumer; @@ -68,6 +69,17 @@ protected Result resolve(TModel model) { return Result.Ok(resolveAll(model)); } + /** + * Unresolves all node types back to synthetic nodes. Can be overridden by subclasses if necessary, for example in + * order to resolve only certain types, or enforce a certain resolution order + * + * @param model Current model state + * @return Modified model + */ + protected Result unresolve(TModel model) { + return Result.Ok(unresolveAll(model)); + } + protected final TModel resolveAll(TModel model) { resolver.getResolvableTypes() @@ -76,6 +88,13 @@ protected final TModel resolveAll(TModel model) { return model; } + protected final TModel unresolveAll(TModel model) { + resolver.getResolvableTypeNodes() + .forEach(type -> unresolveAllOfType(type, model)); + + return model; + } + protected final TModel resolveAllOfType(TSyntheticNodeTypeId type, TModel model) { return resolveAllOfType(Optional.ofNullable(type).map(StringSerializable::toString).orElse(null), model); } @@ -85,6 +104,20 @@ protected final TModel resolveAllOfType(String type, TModel model) { return model; } + protected final TModel unresolveAllOfType(Class type, TModel model) { + + // Specific mappings: only process nodes of the mapped types + final var resolvedTypes = resolver.getConfig() + .map(config -> config.getResolvedTypesForSyntheticType(type)) + .orElseGet(List::of); + + for (final var resolvedType : resolvedTypes) { + forEachNodeOfType(model, resolvedType, node -> resolver.unresolve(type.getTypeName(), node, model)); + } + + return model; + } + private void forEachNodeOfType(TModel model, TSyntheticNodeTypeId type, Consumer action) { forEachNodeOfType(model, type.toString(), action); } diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/SubmitDetailLevelGenerationRequestToLlm.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/SubmitDetailLevelGenerationRequestToLlm.java index 2fad825..eb901df 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/SubmitDetailLevelGenerationRequestToLlm.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/SubmitDetailLevelGenerationRequestToLlm.java @@ -5,17 +5,27 @@ import org.rj.modelgen.llm.prompt.StandardPromptPlaceholders; import org.rj.modelgen.llm.response.ModelResponse; import org.rj.modelgen.llm.state.ModelInterfaceSignal; +import org.rj.modelgen.llm.state.ModelInterfaceStandardSignals; +import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; import org.rj.modelgen.llm.validation.ResponseSanitizer; import java.util.Optional; public class SubmitDetailLevelGenerationRequestToLlm extends SubmitGenerationRequestToLlm { + private static final int MAX_LLM_DIRECTED_RETRIES = 3; + private final int maxLlmDirectedRetries; + public SubmitDetailLevelGenerationRequestToLlm(ResponseSanitizer modelSanitizer) { - this(SubmitDetailLevelGenerationRequestToLlm.class, modelSanitizer); + this(SubmitDetailLevelGenerationRequestToLlm.class, modelSanitizer, MAX_LLM_DIRECTED_RETRIES); } public SubmitDetailLevelGenerationRequestToLlm(Class cls, ResponseSanitizer modelSanitizer) { + this(cls, modelSanitizer, MAX_LLM_DIRECTED_RETRIES); + } + + public SubmitDetailLevelGenerationRequestToLlm(Class cls, ResponseSanitizer modelSanitizer, int maxLlmDirectedRetries) { super(cls, modelSanitizer); + this.maxLlmDirectedRetries = maxLlmDirectedRetries; } @Override @@ -30,7 +40,7 @@ protected Optional processRawResponse(ModelResponse respon if (!response.isSuccessful()) return Optional.empty(); if (response.getMessage() == null) return Optional.empty(); - // Handle LLM-directed retry signal from detail-level generation, which requires execution return to high-level + // Handle LLM-directed retry signal from detail-level generation final var content = response.getMessage(); final var retryMarker = StandardPromptPlaceholders.RETURN_TO_HIGH_LEVEL.getValue(); if (content.contains(retryMarker)) { @@ -40,7 +50,25 @@ protected Optional processRawResponse(ModelResponse respon .strip(); getPayload().put(MultiLevelModelStandardPayloadData.LlmDirectedRetryReason, reason); - return Optional.of(outboundSignal(MultiLevelModelStandardSignals.ReturnToHighLevel)); + final var currentRetryCount = (Integer) getPayload().getData().getOrDefault( + MultiLevelModelStandardPayloadData.LlmDirectedRetryCount.toString(), 0); + final var newRetryCount = currentRetryCount + 1; + + if (newRetryCount > maxLlmDirectedRetries) { + return Optional.of(new ModelInterfaceStandardSignals.FAIL_MAX_INVOCATIONS( + "Reached maximum number of retry invocations between states", + newRetryCount)); + } + + getPayload().put(MultiLevelModelStandardPayloadData.LlmDirectedRetryCount, newRetryCount); + + // Retry high-level generation when doing one-shot generation + // Retry detail-level generation when doing multi-shot generation + if (getPayload().hasData(StandardModelData.CanvasModel.toString())) { + return Optional.of(outboundSignal(MultiLevelModelStandardSignals.ReturnToHighLevel)); + } else { + return Optional.of(outboundSignal(MultiLevelModelStandardSignals.RetryDetailLevel)); + } } // Otherwise no special handling, so return to normal processing diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ValidateLlmIntermediateModelResponse.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ValidateLlmIntermediateModelResponse.java index 9e5ffda..90a78c8 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ValidateLlmIntermediateModelResponse.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ValidateLlmIntermediateModelResponse.java @@ -1,6 +1,8 @@ package org.rj.modelgen.llm.statemodel.states.common; import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; +import org.rj.modelgen.llm.models.generation.multilevel.MultiLevelGenerationModel; +import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; import org.rj.modelgen.llm.response.ModelResponse; import org.rj.modelgen.llm.schema.ModelSchema; import org.rj.modelgen.llm.state.ModelInterfaceSignal; diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/config/SubproblemDecompositionConfig.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/config/SubproblemDecompositionConfig.java index 5d7b199..f8b92f9 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/config/SubproblemDecompositionConfig.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/config/SubproblemDecompositionConfig.java @@ -42,7 +42,7 @@ public void setSubproblemCombinationImplementation(Supplier subproblemCombinationImplementation) { + public SubproblemDecompositionConfig withSubproblemCombinationImplementation(Supplier subproblemCombinationImplementation) { setSubproblemCombinationImplementation(subproblemCombinationImplementation); return this; } diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/data/SubproblemDecompositionSignals.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/data/SubproblemDecompositionSignals.java index 28009e8..e1261db 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/data/SubproblemDecompositionSignals.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/data/SubproblemDecompositionSignals.java @@ -2,5 +2,7 @@ public enum SubproblemDecompositionSignals { ProcessNextSubproblem, - SubproblemDecompositionCompleted; + SubproblemDecompositionCompleted, + + ProcessNextIntermediateModelSubproblem, } diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/CombineSubproblems.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/CombineSubproblems.java index 26ab1e8..2daa1af 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/CombineSubproblems.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/CombineSubproblems.java @@ -1,131 +1,138 @@ -package org.rj.modelgen.llm.subproblem.states; - -import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; -import org.rj.modelgen.llm.state.ModelInterfaceSignal; -import org.rj.modelgen.llm.subproblem.data.SubproblemDecompositionPayloadData; -import org.rj.modelgen.llm.subproblem.data.SubproblemDecompositionSignals; -import org.rj.modelgen.llm.subproblem.data.SubproblemDetails; -import org.rj.modelgen.llm.util.Result; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import reactor.core.publisher.Mono; - -import java.util.List; -import java.util.stream.IntStream; - -public abstract class CombineSubproblems extends SubproblemDecompositionBaseState { - private static final Logger LOG = LoggerFactory.getLogger(CombineSubproblems.class); - private String inputKey = MultiLevelModelStandardPayloadData.DetailLevelModel.toString(); - private String outputKey = MultiLevelModelStandardPayloadData.DetailLevelModel.toString(); - - public CombineSubproblems() { - super(CombineSubproblems.class); - } - - public CombineSubproblems(Class cls) { - super(cls); - } - - @Override - public String getDescription() { - return "Combine all subproblem solutions if complete, otherwise return to begin the next subproblem"; - } - - @Override - public String getSuccessSignalId() { - return SubproblemDecompositionSignals.SubproblemDecompositionCompleted.toString(); - } - - @Override - protected Mono execute(ModelInterfaceSignal inputSignal) { - // If problem decomposition is disabled we can just continue, since the full generation result will already - // be present in `ResponseContent` (and any explicit output key) for the rest of the model to work on - if (!shouldDecomposeIntoSubproblems()) { - LOG.info("Subproblem decomposition is disabled; continuing with full computed solution"); - return outboundSignal(SubproblemDecompositionSignals.SubproblemDecompositionCompleted, "Subproblem decomposition is not enabled").mono(); - } - - // We have a decomposition into subproblems. Process the subproblem we have just completed - final Integer currentSubproblemId = getPayload().getOrThrow(SubproblemDecompositionPayloadData.CurrentSubproblem, () -> new RuntimeException("No subproblem ID in payload")); - final String currentSubproblemResult = getPayload().getOrThrow(inputKey, () -> new RuntimeException("No current result present while processing subproblem " + currentSubproblemId)); - getPayload().put(subproblemResultContentKey(currentSubproblemId), currentSubproblemResult); - - // Do we have any more subproblems to solve? - final Integer subproblemCount = getPayload().getOrThrow(SubproblemDecompositionPayloadData.SubproblemCount, () -> new RuntimeException("No subproblem count in payload")); - if (currentSubproblemId < (subproblemCount - 1)) { - return outboundSignal(SubproblemDecompositionSignals.ProcessNextSubproblem, "Process next subproblem").mono(); - } - - // We have processed all subproblems - combine into a full solution - LOG.info("All {} subproblems have been processed; recombining into full problem solution", subproblemCount); - final var combineResult = triggerSubproblemCombination(); - if (combineResult.isErr()) { - return error("Subproblem recombination failed: " + combineResult.getError()); - } - - LOG.info("Successfully recombined all {} subproblems into full problem solution", subproblemCount); - return outboundSignal(SubproblemDecompositionSignals.SubproblemDecompositionCompleted, "Subproblem recombination was successful").mono(); - } - - private Result triggerSubproblemCombination() { - - // Collect all subproblem requests and solutions for recombination - final int subproblemCount = getSubproblemCount(); - final List subproblems = IntStream.range(0, subproblemCount) - .mapToObj(i -> new SubproblemDetails( - getPayload().getOrThrow(subproblemRequestContentKey(i), () -> new RuntimeException("No subproblem request for ID " + i + " during recombination")), - getPayload().getOrThrow(subproblemResultContentKey(i), () -> new RuntimeException("No subproblem result for ID " + i + " during recombination")) - )) - .toList(); - - // Delegate to the subclass for recombination logic. Store the result or return failure - final var result = combineSubproblems(subproblems); - if (result.isErr()) { - LOG.error("Failed when recombining {} subproblems following execution: {}", subproblemCount, result.getError()); - return Result.Err(result.getError()); - } - - // Successfully recombined all subproblems, so store as the regular model result expected by downstream stages - getPayload().put(outputKey, result.getValue()); - - recordAudit("combined-solution", result.getValue()); - return Result.Ok(); - } - - - /** - * Perform subproblem recombination. Accepts a list of subproblem details and recombines them into a single - * problem solution - * @param subproblems The set of subproblems to be recombined - */ - protected abstract Result combineSubproblems(List subproblems); - - - - public CombineSubproblems withInputKey(String inputKey) { - this.inputKey = inputKey; - return this; - } - - public> CombineSubproblems withInputKey(T inputKey) { - return withInputKey(inputKey != null ? inputKey.toString() : null); - } - - public String getInputKey() { - return inputKey; - } - - public CombineSubproblems withOutputKey(String outputKey) { - this.outputKey = outputKey; - return this; - } - - public> CombineSubproblems withOutputKey(T outputKey) { - return withOutputKey(outputKey != null ? outputKey.toString() : null); - } - - public String getOutputKey() { - return outputKey; - } - -} +package org.rj.modelgen.llm.subproblem.states; + +import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; +import org.rj.modelgen.llm.state.ModelInterfaceSignal; +import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; +import org.rj.modelgen.llm.subproblem.data.SubproblemDecompositionPayloadData; +import org.rj.modelgen.llm.subproblem.data.SubproblemDecompositionSignals; +import org.rj.modelgen.llm.subproblem.data.SubproblemDetails; +import org.rj.modelgen.llm.util.Result; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import reactor.core.publisher.Mono; + +import java.util.List; +import java.util.stream.IntStream; + +public abstract class CombineSubproblems extends SubproblemDecompositionBaseState { + private static final Logger LOG = LoggerFactory.getLogger(CombineSubproblems.class); + private String inputKey = MultiLevelModelStandardPayloadData.DetailLevelModel.toString(); + private String outputKey = MultiLevelModelStandardPayloadData.DetailLevelModel.toString(); + + public CombineSubproblems() { + super(CombineSubproblems.class); + } + + public CombineSubproblems(Class cls) { + super(cls); + } + + @Override + public String getDescription() { + return "Combine all subproblem solutions if complete, otherwise return to begin the next subproblem"; + } + + @Override + public String getSuccessSignalId() { + return SubproblemDecompositionSignals.SubproblemDecompositionCompleted.toString(); + } + + @Override + protected Mono execute(ModelInterfaceSignal inputSignal) { + // If problem decomposition is disabled we can just continue, since the full generation result will already + // be present in `ResponseContent` (and any explicit output key) for the rest of the model to work on + if (!shouldDecomposeIntoSubproblems()) { + LOG.info("Subproblem decomposition is disabled; continuing with full computed solution"); + return outboundSignal(SubproblemDecompositionSignals.SubproblemDecompositionCompleted, "Subproblem decomposition is not enabled").mono(); + } + + // We have a decomposition into subproblems. Process the subproblem we have just completed + if(getPayload().get(SubproblemDecompositionPayloadData.CurrentSubproblem) != null && getPayload().get(SubproblemDecompositionPayloadData.SubproblemCount) != null) { + + final Integer currentSubproblemId = getPayload().getOrThrow(SubproblemDecompositionPayloadData.CurrentSubproblem, () -> new RuntimeException("No subproblem ID in payload")); + final var currentSubproblemResult = getPayload().getOrThrow(inputKey, () -> new RuntimeException("No current result present while processing subproblem " + currentSubproblemId)); + getPayload().put(subproblemResultContentKey(currentSubproblemId), currentSubproblemResult); + + // Do we have any more subproblems to solve? + final Integer subproblemCount = getPayload().getOrThrow(SubproblemDecompositionPayloadData.SubproblemCount, () -> new RuntimeException("No subproblem count in payload")); + if (currentSubproblemId < (subproblemCount - 1)) { + resetInvokeCount(); + if (getPayload().getData().get(StandardModelData.CanvasModel.toString()) != null) { + return outboundSignal(SubproblemDecompositionSignals.ProcessNextIntermediateModelSubproblem, "Process next subproblem").mono(); + } else { + return outboundSignal(SubproblemDecompositionSignals.ProcessNextSubproblem, "Process next subproblem").mono(); + } + } + + // We have processed all subproblems - combine into a full solution + LOG.info("All {} subproblems have been processed; recombining into full problem solution", subproblemCount); + final var combineResult = triggerSubproblemCombination(); + if (combineResult.isErr()) { + return error("Subproblem recombination failed: " + combineResult.getError()); + } + + LOG.info("Successfully recombined all {} subproblems into full problem solution", subproblemCount); + } + return outboundSignal(SubproblemDecompositionSignals.SubproblemDecompositionCompleted, "Subproblem recombination was successful").mono(); + } + + private Result triggerSubproblemCombination() { + + // Collect all subproblem requests and solutions for recombination + final int subproblemCount = getSubproblemCount(); + final List subproblems = IntStream.range(0, subproblemCount) + .mapToObj(i -> new SubproblemDetails( + getPayload().getOrThrow(subproblemRequestContentKey(i), () -> new RuntimeException("No subproblem request for ID " + i + " during recombination")), + getPayload().getOrThrow(subproblemResultContentKey(i), () -> new RuntimeException("No subproblem result for ID " + i + " during recombination")) + )) + .toList(); + + // Delegate to the subclass for recombination logic. Store the result or return failure + final var result = combineSubproblems(subproblems); + if (result.isErr()) { + LOG.error("Failed when recombining {} subproblems following execution: {}", subproblemCount, result.getError()); + return Result.Err(result.getError()); + } + + // Successfully recombined all subproblems, so store as the regular model result expected by downstream stages + getPayload().put(outputKey, result.getValue()); + + recordAudit("combined-solution", result.getValue()); + return Result.Ok(); + } + + + /** + * Perform subproblem recombination. Accepts a list of subproblem details and recombines them into a single + * problem solution + * @param subproblems The set of subproblems to be recombined + */ + protected abstract Result combineSubproblems(List subproblems); + + public CombineSubproblems withInputKey(String inputKey) { + this.inputKey = inputKey; + return this; + } + + public> CombineSubproblems withInputKey(T inputKey) { + return withInputKey(inputKey != null ? inputKey.toString() : null); + } + + public String getInputKey() { + return inputKey; + } + + public CombineSubproblems withOutputKey(String outputKey) { + this.outputKey = outputKey; + return this; + } + + public> CombineSubproblems withOutputKey(T outputKey) { + return withOutputKey(outputKey != null ? outputKey.toString() : null); + } + + public String getOutputKey() { + return outputKey; + } + +} diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/GenerateSubproblems.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/GenerateSubproblems.java index 4847d9c..5838c2e 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/GenerateSubproblems.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/GenerateSubproblems.java @@ -1,6 +1,5 @@ package org.rj.modelgen.llm.subproblem.states; -import org.apache.logging.log4j.core.appender.rolling.OnStartupTriggeringPolicy; import org.rj.modelgen.llm.state.ModelInterfaceSignal; import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; import org.rj.modelgen.llm.subproblem.data.SubproblemDecompositionPayloadData; diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/IntermediateModelSubproblemDecompositionBaseState.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/IntermediateModelSubproblemDecompositionBaseState.java new file mode 100644 index 0000000..ce52860 --- /dev/null +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/IntermediateModelSubproblemDecompositionBaseState.java @@ -0,0 +1,61 @@ +package org.rj.modelgen.llm.subproblem.states; + +import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; +import org.rj.modelgen.llm.state.ModelInterfaceState; +import org.rj.modelgen.llm.statemodel.states.common.BasicNode; +import org.rj.modelgen.llm.subproblem.data.SubproblemDecompositionPayloadData; + +public abstract class IntermediateModelSubproblemDecompositionBaseState extends BasicNode { + private boolean subproblemDecompositionEnabled = true; + + public IntermediateModelSubproblemDecompositionBaseState() { + this(IntermediateModelSubproblemDecompositionBaseState.class); + } + + public IntermediateModelSubproblemDecompositionBaseState(Class cls) { + super(cls); + } + + /** + * If set, model will decompose a problem into subproblems, and later recombine the subproblem results into a full + * solution in the model payload. Model will iterate until each subproblem is completed and then combine them + */ + public boolean shouldDecomposeIntoSubproblems() { + return subproblemDecompositionEnabled; + } + + public void setSubproblemDecompositionEnabled(boolean subproblemDecompositionEnabled) { + this.subproblemDecompositionEnabled = subproblemDecompositionEnabled; + } + + public IntermediateModelSubproblemDecompositionBaseState withSubproblemDecompositionEnabled(boolean subproblemDecompositionEnabled) { + setSubproblemDecompositionEnabled(subproblemDecompositionEnabled); + return this; + } + + protected String subproblemRequestContentKey(int subproblemId) { + return String.format("%s-%d", SubproblemDecompositionPayloadData.SubproblemRequestContent, subproblemId); + } + + protected String subproblemResultContentKey(int subproblemId) { + return String.format("%s-%d", SubproblemDecompositionPayloadData.SubproblemResultContent, subproblemId); + } + + protected int getCurrentSubproblemId() { + return getPayload(). + getOrThrow(SubproblemDecompositionPayloadData.CurrentSubproblem, () -> new RuntimeException("No subproblem ID in payload")); + } + + protected void setCurrentSubproblemId(int id) { + getPayload().put(SubproblemDecompositionPayloadData.CurrentSubproblem, id); + } + + protected int getSubproblemCount() { + return getPayload(). + getOrThrow(SubproblemDecompositionPayloadData.SubproblemCount, () -> new RuntimeException("No subproblem count in payload")); + } + + protected void setSubproblemCount(int count) { + getPayload().put(SubproblemDecompositionPayloadData.SubproblemCount, count); + } +} diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/SubproblemDecompositionState.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/SubproblemDecompositionState.java deleted file mode 100644 index ea80eff..0000000 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/subproblem/states/SubproblemDecompositionState.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.rj.modelgen.llm.subproblem.states; - -import org.rj.modelgen.llm.state.ModelInterfacePayload; -import org.rj.modelgen.llm.subproblem.data.SubproblemDecompositionPayloadData; - -public interface SubproblemDecompositionState { - - default String subproblemRequestContentKey(int subproblemId) { - return String.format("%s-%d", SubproblemDecompositionPayloadData.SubproblemRequestContent, subproblemId); - } - - default String subproblemResultContentKey(int subproblemId) { - return String.format("%s-%d", SubproblemDecompositionPayloadData.SubproblemResultContent, subproblemId); - } - - // Implemented by subclasses to expose the model payload - ModelInterfacePayload getProblemDecompositionPayloadData(); - - default int getCurrentSubproblemId() { - return getProblemDecompositionPayloadData(). - getOrThrow(SubproblemDecompositionPayloadData.CurrentSubproblem, () -> new RuntimeException("No subproblem ID in payload")); - } - - default void setCurrentSubproblemId(int id) { - getProblemDecompositionPayloadData().put(SubproblemDecompositionPayloadData.CurrentSubproblem, id); - } - - default int getSubproblemCount() { - return getProblemDecompositionPayloadData(). - getOrThrow(SubproblemDecompositionPayloadData.SubproblemCount, () -> new RuntimeException("No subproblem count in payload")); - } - - default void setSubproblemCount(int count) { - getProblemDecompositionPayloadData().put(SubproblemDecompositionPayloadData.SubproblemCount, count); - } - -} diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/synthetic/SyntheticNode.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/synthetic/SyntheticNode.java index dc14004..8c5673b 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/synthetic/SyntheticNode.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/synthetic/SyntheticNode.java @@ -18,4 +18,13 @@ public interface SyntheticNode, - TNode extends GraphNode, - TModel extends IntermediateGraphModel, - TSyntheticNodeTypeId extends StringSerializable, - TSyntheticNode extends SyntheticNode, - TSelf extends SyntheticNodeConfig> { + TNodeName, + TConnection extends GraphConnection, + TNode extends GraphNode, + TModel extends IntermediateGraphModel, + TSyntheticNodeTypeId extends StringSerializable, + TSyntheticNode extends SyntheticNode, + TSelf extends SyntheticNodeConfig> { private final Map> syntheticNodes; + private final Map> resolvedToSyntheticTypeMapping; public SyntheticNodeConfig() { this(new HashMap<>()); @@ -28,6 +29,7 @@ public SyntheticNodeConfig(Map e.getKey().toString(), Map.Entry::getValue, (a, b) -> b, HashMap::new)); + this.resolvedToSyntheticTypeMapping = new HashMap<>(); } public Optional> getNode(TSyntheticNodeTypeId id) { @@ -54,13 +56,39 @@ public List> getSyntheticNodes() { public void add(TSyntheticNodeTypeId id, Class node) { Optional.ofNullable(id).map(StringSerializable::toString).ifPresent(nodeId -> - syntheticNodes.put(nodeId, node) + syntheticNodes.put(nodeId, node) ); } @SuppressWarnings("unchecked") public TSelf with(TSyntheticNodeTypeId id, Class node) { add(id, node); - return (TSelf)this; + return (TSelf) this; } + + /** + * Register a mapping from a resolved node type to its synthetic node type. + * This allows the unresolve operation to find nodes by their resolved type. + * + * @param resolvedType The type that nodes become after resolution + * @param syntheticType The original synthetic type + */ + public TSelf from(String resolvedType, Class syntheticType) { + resolvedToSyntheticTypeMapping.put(resolvedType, syntheticType); + return (TSelf) this; + } + + /** + * Get all resolved types that map to the given synthetic type. + * + * @param syntheticType The synthetic type + * @return List of resolved types + */ + public List getResolvedTypesForSyntheticType(Class syntheticType) { + return resolvedToSyntheticTypeMapping.entrySet().stream() + .filter(e -> syntheticType.equals(e.getValue())) + .map(Map.Entry::getKey) + .collect(Collectors.toList()); + } + } diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/synthetic/SyntheticNodeResolver.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/synthetic/SyntheticNodeResolver.java index 6761f2f..b21cde6 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/synthetic/SyntheticNodeResolver.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/synthetic/SyntheticNodeResolver.java @@ -1,51 +1,78 @@ -package org.rj.modelgen.llm.synthetic; - -import org.rj.modelgen.llm.intrep.graph.GraphConnection; -import org.rj.modelgen.llm.intrep.graph.GraphNode; -import org.rj.modelgen.llm.intrep.graph.IntermediateGraphModel; -import org.rj.modelgen.llm.util.StringSerializable; - -import java.util.List; -import java.util.Optional; - -public class SyntheticNodeResolver, - TNode extends GraphNode, - TModel extends IntermediateGraphModel, - TSyntheticNodeTypeId extends StringSerializable, - TSyntheticNode extends SyntheticNode, - TConfig extends SyntheticNodeConfig> { - - private final TConfig config; - - public SyntheticNodeResolver(TConfig config) { - this.config = config; - } - - public void resolve(TSyntheticNodeTypeId type, TNode node, TModel model) { - resolve(Optional.ofNullable(type).map(StringSerializable::toString).orElse(null), node, model); - } - - public void resolve(String type, TNode node, TModel model) { - if (config == null) return; - - final var syntheticNodeClass = config.getNode(type); - if (syntheticNodeClass.isEmpty()) return; - - try { - final var syntheticNode = syntheticNodeClass.get().getDeclaredConstructor().newInstance(); - syntheticNode.resolve(model, node); - } - catch (Exception ex) { - throw new RuntimeException("Failed to resolve synthetic node type '%s'".formatted(type), ex); - } - } - - public List getResolvableTypes() { - return Optional.ofNullable(config) - .map(SyntheticNodeConfig::getTypeNames) - .orElseGet(List::of); - } - -} +package org.rj.modelgen.llm.synthetic; + +import org.rj.modelgen.llm.intrep.graph.GraphConnection; +import org.rj.modelgen.llm.intrep.graph.GraphNode; +import org.rj.modelgen.llm.intrep.graph.IntermediateGraphModel; +import org.rj.modelgen.llm.util.StringSerializable; + +import java.util.List; +import java.util.Optional; + +public class SyntheticNodeResolver, + TNode extends GraphNode, + TModel extends IntermediateGraphModel, + TSyntheticNodeTypeId extends StringSerializable, + TSyntheticNode extends SyntheticNode, + TConfig extends SyntheticNodeConfig> { + + private final TConfig config; + + public SyntheticNodeResolver(TConfig config) { + this.config = config; + } + + public void resolve(TSyntheticNodeTypeId type, TNode node, TModel model) { + resolve(Optional.ofNullable(type).map(StringSerializable::toString).orElse(null), node, model); + } + + public void resolve(String type, TNode node, TModel model) { + if (config == null) return; + + final var syntheticNodeClass = config.getNode(type); + if (syntheticNodeClass.isEmpty()) return; + + try { + final var syntheticNode = syntheticNodeClass.get().getDeclaredConstructor().newInstance(); + syntheticNode.resolve(model, node); + } + catch (Exception ex) { + throw new RuntimeException("Failed to resolve synthetic node type '%s'".formatted(type), ex); + } + } + + public void unresolve(TSyntheticNodeTypeId type, TNode node, TModel model) { + unresolve(Optional.ofNullable(type).map(StringSerializable::toString).orElse(null), node, model); + } + + public void unresolve(String type, TNode node, TModel model) { + if (config == null) return; + + try { + final var syntheticNodeClass = (Class) Class.forName(type); + final var syntheticNode = syntheticNodeClass.getDeclaredConstructor().newInstance(); + syntheticNode.unresolve(model, node); + } + catch (Exception ex) { + throw new RuntimeException("Failed to unresolve node type '%s' to a synthetic action".formatted(type), ex); + } + } + + public List getResolvableTypes() { + return Optional.ofNullable(config) + .map(SyntheticNodeConfig::getTypeNames) + .orElseGet(List::of); + } + + public List> getResolvableTypeNodes() { + return Optional.ofNullable(config) + .map(SyntheticNodeConfig::getSyntheticNodes) + .orElseGet(List::of); + } + + public Optional getConfig() { + return Optional.ofNullable(config); + } + +} diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java index 290a0ad..7ed2711 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/util/ValidationUtils.java @@ -40,13 +40,4 @@ List identifyNumberOfRoots(TModel model, Predicate nodeFilter) { .map(Map.Entry::getKey) .toList(); } - - public static Map convertStringToMap(String jsonString) { - try { - ObjectMapper mapper = new ObjectMapper(); - return mapper.readValue(jsonString, new TypeReference<>() {}); - } catch (JsonProcessingException e) { - return Collections.emptyMap(); - } - } } diff --git a/codegen-service/llm-generation-service/src/main/java/org/rj/modelgen/service/CodegenServiceApplication.java b/codegen-service/llm-generation-service/src/main/java/org/rj/modelgen/service/CodegenServiceApplication.java index d42b9f9..3196401 100644 --- a/codegen-service/llm-generation-service/src/main/java/org/rj/modelgen/service/CodegenServiceApplication.java +++ b/codegen-service/llm-generation-service/src/main/java/org/rj/modelgen/service/CodegenServiceApplication.java @@ -95,7 +95,7 @@ public Mono prompt( @PathVariable("id") String id, @RequestBody BpmnGenerationPrompt prompt ) { - return bpmnGenerationModel.executeModel(id, prompt.getPrompt(), Map.of()) + return bpmnGenerationModel.executeModel(id, prompt.getPrompt(), null, Map.of()) .doOnSuccess(result -> { if (result.isSuccessful()) { System.out.println("Result.success = " + result.isSuccessful()); diff --git a/codegen-service/settings.xml b/codegen-service/settings.xml deleted file mode 100644 index af555bb..0000000 --- a/codegen-service/settings.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - default - - true - - - - central - Maven Central - http://gscentral.area.services.gs.com/maven/ - - - AREA-public - AREA Repository - http://area.services.gs.com/area/repo/cbkmaventest - - - - - central - Maven Central - http://gscentral.area.services.gs.com/maven/ - - - AREA-public - http://area.services.gs.com/area/repo/cbkmaventest - - - - - - default - - \ No newline at end of file diff --git a/codegen-ui/package-lock.json b/codegen-ui/package-lock.json index 8cd43ce..27901fd 100644 --- a/codegen-ui/package-lock.json +++ b/codegen-ui/package-lock.json @@ -15358,15 +15358,16 @@ } }, "node_modules/rollup": { - "version": "2.79.2", - "resolved": "http://npmscopes.site.gs.com/repository/npm/rollup/-/rollup-2.79.2.tgz", - "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "version": "2.80.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/rollup/-/rollup-2.80.0.tgz", + "integrity": "sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==", "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=10.0.0" + "node": ">=14.18.0", + "npm": ">=8.0.0" }, "optionalDependencies": { "fsevents": "~2.3.2" diff --git a/codegen-ui/package.json b/codegen-ui/package.json index c618891..9dc3e3d 100644 --- a/codegen-ui/package.json +++ b/codegen-ui/package.json @@ -26,8 +26,10 @@ }, "overrides": { "react-scripts": { - "tough-cookie": "4.1.3" + "tough-cookie": "4.1.3", + "rollup": "2.80.0" }, + "rollup": "^3.29.5", "form-data": "3.0.4" }, "scripts": { From 75c1f6da29f04eb0a8dfd7bd56a3cab96ee99c4f Mon Sep 17 00:00:00 2001 From: "Jenks, Rob A [Engineering]" Date: Thu, 12 Mar 2026 12:37:25 +0000 Subject: [PATCH 09/10] Merge latest version into master From f48a02fb5b5a19c31223a697764ac7a8303ec85e Mon Sep 17 00:00:00 2001 From: "Liput, Milosz [Engineering]" Date: Mon, 16 Mar 2026 14:40:42 +0000 Subject: [PATCH 10/10] Default inputs and IR model assets --- .../bpmn/component/BpmnComponent.java | 37 +- .../bpmn/component/BpmnComponentLibrary.java | 14 +- .../bpmn/intrep/model/ElementNode.java | 4 +- .../bpmn/intrep/model/ElementNodeInput.java | 11 +- .../assets/BpmnIntermediateModelAssets.java | 10 + .../assets/ElementNodeUnresolvedInput.java | 70 +++ .../generation/BpmnGenerationResult.java | 45 +- .../base/states/BpmnGenerationComplete.java | 101 ++-- .../BpmnMultiLevelGenerationModel.java | 11 +- ...mnMLDetailLevelModelGenerationRequest.java | 2 +- ...BpmnMLHighLevelModelGenerationRequest.java | 2 +- .../PrepareBpmnMLModelGenerationRequest.java | 2 +- .../states/PrepareBpmnModelForRendering.java | 72 ++- ...mDetailLevelIntermediateModelResponse.java | 3 +- .../validation/BpmnScriptUtils.java | 8 + .../validation/ValidateBpmnModel.java | 206 ++++---- .../components/bpmn-component-library.json | 174 ++++--- ...-multilevel-detail-level-generation-prompt | 52 +- ...ilevel-detail-level-generation-schema.json | 9 +- .../ComponentInputResolutionStrategy.java | 28 ++ .../assets/IntermediateModelAssets.java | 28 ++ .../assets/IntermediateModelAssetsParser.java | 26 + .../intrep/assets/NodeUnresolvedInput.java | 52 ++ .../models/generation/GenerationResult.java | 56 ++- .../multilevel/MultiLevelGenerationModel.java | 445 +++++++++--------- .../MultiLevelModelDetailPhaseConfig.java | 26 +- .../config/MultiLevelModelPhaseConfig.java | 52 +- ...pareAndSubmitMLGenericRequestForLevel.java | 10 +- ...epareAndSubmitMLRequestForDetailLevel.java | 12 +- ...ndSubmitMLRequestForDetailLevelParams.java | 9 +- .../PrepareAndSubmitMLRequestForLevel.java | 28 +- ...epareAndSubmitMLRequestForLevelParams.java | 10 +- .../data/common/StandardModelData.java | 1 + .../states/common/ExecuteLogic.java | 25 +- .../GenerateModelFromIntermediateModel.java | 16 +- ...ModelFromIntermediateModelTransformer.java | 11 +- .../service/CodegenServiceApplication.java | 2 +- codegen-ui/package-lock.json | 145 ++---- codegen-ui/package.json | 1 + 39 files changed, 1089 insertions(+), 727 deletions(-) create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/assets/BpmnIntermediateModelAssets.java create mode 100644 codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/assets/ElementNodeUnresolvedInput.java create mode 100644 codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/component/ComponentInputResolutionStrategy.java create mode 100644 codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/assets/IntermediateModelAssets.java create mode 100644 codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/assets/IntermediateModelAssetsParser.java create mode 100644 codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/assets/NodeUnresolvedInput.java diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java index fe7df4e..220a8a7 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponent.java @@ -6,6 +6,7 @@ import org.rj.modelgen.bpmn.component.common.BpmnComponentVariableType; import org.rj.modelgen.bpmn.component.common.BpmnComponentInputSourceType; import org.rj.modelgen.llm.component.Component; +import org.rj.modelgen.llm.component.ComponentInputResolutionStrategy; import java.util.List; import java.util.ArrayList; @@ -143,9 +144,6 @@ private String buildInlineInputDetails(InputVariable input) { if (StringUtils.isNotBlank(input.getDescription())) { components.add(input.getDescription().trim()); } - if (StringUtils.isNotBlank(input.getDefaultValue())) { - components.add("Default value: " + input.getDefaultValue()); - } if (input.getAllowedValues() != null && !input.getAllowedValues().isEmpty()) { components.add("Allowed values: " + String.join(", ", input.getAllowedValues())); } @@ -164,15 +162,14 @@ public String defaultSerialize() { } @JsonIgnore - public String getInputVariableAlias(String inputVarName) { + public Optional getInputVariable(String inputVarName) { if (StringUtils.isBlank(inputVarName)) { - return inputVarName; + return Optional.empty(); } - return findInputVariableAlias(requiredInputs, inputVarName) - .orElse(inputVarName); + return findInputVariable(requiredInputs, inputVarName); } - private Optional findInputVariableAlias(List inputs, String inputVarName) { + private Optional findInputVariable(List inputs, String inputVarName) { if (inputs == null || inputs.isEmpty()) { return Optional.empty(); } @@ -180,11 +177,11 @@ private Optional findInputVariableAlias(List inputs, Stri for (InputVariable input : inputs) { if (input == null) continue; if (inputVarName.equals(input.getName())) { - return Optional.ofNullable(input.getAlias()); + return Optional.of(input); } - final Optional nested = findInputVariableAlias(input.getProperties(), inputVarName); - if (nested.isPresent()) { - return nested; + var nestedInput = findInputVariable(input.getProperties(), inputVarName); + if (nestedInput.isPresent()) { + return nestedInput; } } return Optional.empty(); @@ -280,16 +277,19 @@ public static class InputVariable extends Variable { private List properties; private List allowedValues; private List allowedInputSourceTypes; + private ComponentInputResolutionStrategy resolutionStrategy; public InputVariable() { this(null, null); } public InputVariable(String name, String description) { - this(name, description, BpmnComponentVariableType.String, false, null, null, List.of(), List.of(), List.of()); + this(name, description, BpmnComponentVariableType.String, false, null, null, List.of(), List.of(), List.of(), null); } - public InputVariable(String name, String description, BpmnComponentVariableType type, boolean mandatory, String defaultValue, String alias, List properties, List allowedValues, List allowedInputSourceTypes) { + public InputVariable(String name, String description, BpmnComponentVariableType type, boolean mandatory, String defaultValue, String alias, + List properties, List allowedValues, List allowedInputSourceTypes, + ComponentInputResolutionStrategy resolutionStrategy) { super(name, description, type); this.mandatory = mandatory; this.defaultValue = defaultValue; @@ -297,6 +297,7 @@ public InputVariable(String name, String description, BpmnComponentVariableType this.properties = properties; this.allowedValues = allowedValues; this.allowedInputSourceTypes = allowedInputSourceTypes; + this.resolutionStrategy = resolutionStrategy; } public boolean isMandatory() { @@ -354,5 +355,13 @@ public Boolean isAllowedInputSourceType(String type) { return allowedInputSourceTypes.stream() .anyMatch(t -> t.name().equalsIgnoreCase(type)); } + + public ComponentInputResolutionStrategy getResolutionStrategy() { + return resolutionStrategy; + } + + public void setResolutionStrategy(ComponentInputResolutionStrategy resolutionStrategy) { + this.resolutionStrategy = resolutionStrategy; + } } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrary.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrary.java index 0d35ebd..a91eb4d 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrary.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/component/BpmnComponentLibrary.java @@ -4,10 +4,7 @@ import org.rj.modelgen.llm.component.ComponentLibrary; import org.rj.modelgen.llm.util.Util; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; public class BpmnComponentLibrary extends ComponentLibrary { @@ -90,6 +87,15 @@ public BpmnComponentLibrary merge(BpmnComponentLibrary other) { return new BpmnComponentLibrary(mergedComponents); } + @JsonIgnore + public Map> getAutoGeneratedOutputs() { + Map> autoGeneratedOutputs = new HashMap<>(); + for (BpmnComponent component : components) { + autoGeneratedOutputs.put(component.getName(), component.getGeneratedOutputs()); + } + return autoGeneratedOutputs; + } + public static BpmnComponentLibrary defaultLibrary() { return fromResource("content/components/bpmn-component-library.json"); } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java index 33bfc91..0096d00 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNode.java @@ -167,7 +167,9 @@ public , E extends FlowNode> BpmnModelIn @JsonIgnore protected String getAttrName(ElementNodeInput input, BpmnComponent elementDefinition) { - return elementDefinition.getInputVariableAlias(input.getName()); + return elementDefinition.getInputVariable(input.getName()) + .map(BpmnComponent.InputVariable::getAlias) + .orElse(input.getName()); } @JsonIgnore diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java index c56cb07..3f2a325 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/ElementNodeInput.java @@ -12,12 +12,13 @@ @JsonIgnoreProperties(ignoreUnknown = true) @JsonInclude(JsonInclude.Include.NON_NULL) -@JsonPropertyOrder({ "name", "value", "variableSource", "properties" }) +@JsonPropertyOrder({ "name", "value", "variableSource", "isProvided", "properties" }) public class ElementNodeInput { private String name; private String value; private String variableSource; private List properties; + private Boolean isProvided; public ElementNodeInput() { } @@ -55,6 +56,14 @@ public void setProperties(List properties) { this.properties = properties; } + public Boolean getIsProvided() { + return isProvided; + } + + public void setIsProvided(Boolean isProvided) { + this.isProvided = isProvided; + } + @JsonIgnore public Boolean hasProperties() { return properties != null && !properties.isEmpty(); diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/assets/BpmnIntermediateModelAssets.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/assets/BpmnIntermediateModelAssets.java new file mode 100644 index 0000000..4f79c3a --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/assets/BpmnIntermediateModelAssets.java @@ -0,0 +1,10 @@ +package org.rj.modelgen.bpmn.intrep.model.assets; + +import org.rj.modelgen.llm.intrep.assets.IntermediateModelAssets; + +public class BpmnIntermediateModelAssets extends IntermediateModelAssets { + + public BpmnIntermediateModelAssets() { + super(); + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/assets/ElementNodeUnresolvedInput.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/assets/ElementNodeUnresolvedInput.java new file mode 100644 index 0000000..4dfe36f --- /dev/null +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/intrep/model/assets/ElementNodeUnresolvedInput.java @@ -0,0 +1,70 @@ +package org.rj.modelgen.bpmn.intrep.model.assets; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.rj.modelgen.llm.component.ComponentInputResolutionStrategy; +import org.rj.modelgen.llm.intrep.assets.NodeUnresolvedInput; + +public class ElementNodeUnresolvedInput extends NodeUnresolvedInput { + + private String name; + private String defaultValue; + private String path; + private String message; + + public ElementNodeUnresolvedInput() { } + + public ElementNodeUnresolvedInput(String nodeId, String elementType, String name, String value, String defaultValue, String path, ComponentInputResolutionStrategy resolutionStrategy) { + super(nodeId, elementType, value, resolutionStrategy); + this.name = name; + this.defaultValue = defaultValue; + this.path = path; + this.message = constructMessage(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDefaultValue() { + return defaultValue; + } + + public void setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + @JsonIgnore + public String constructMessage() { + return switch (getResolutionStrategy()) { + case USER_REQUIRED -> String.format("Input '%s' is required for element '%s' (%s) but missing in your process description and could not be inferred from context. Please provide a value.", path, getNodeId(), getType()); + case INFERRED_CONFIRM -> String.format( + "Input '%s' is required for element '%s' (%s) but is missing in your process description, therefore it was " + + (defaultValue != null + ? "defaulted to '" + defaultValue + : "inferred from context to be '" + getValue()) + + "'. Please review the provided value.", + path, getNodeId(), getType()); + default -> "";// Not needed for other resolution strategies, as they will be filled in with inferred values by LLM + }; + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/BpmnGenerationResult.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/BpmnGenerationResult.java index bbc8eca..491940c 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/BpmnGenerationResult.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/BpmnGenerationResult.java @@ -1,68 +1,37 @@ package org.rj.modelgen.bpmn.models.generation; -import com.fasterxml.jackson.annotation.JsonIgnore; import org.camunda.bpm.model.bpmn.BpmnModelInstance; import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; +import org.rj.modelgen.bpmn.intrep.model.assets.BpmnIntermediateModelAssets; import org.rj.modelgen.bpmn.models.generation.base.states.BpmnGenerationComplete; import org.rj.modelgen.llm.models.generation.GenerationResult; import org.rj.modelgen.llm.state.ModelInterfaceExecutionResult; -import org.rj.modelgen.llm.state.ModelInterfaceState; -import java.util.ArrayList; import java.util.List; import java.util.Optional; -public class BpmnGenerationResult extends GenerationResult { - private final boolean successful; - private final BpmnIntermediateModel intermediateModel; +public class BpmnGenerationResult extends GenerationResult { + private final BpmnModelInstance generatedBpmn; - private final List bpmnValidationMessages; - private final ModelInterfaceExecutionResult executionResults; public static BpmnGenerationResult fromModelExecutionResult(ModelInterfaceExecutionResult result) { final var successResult = Optional.ofNullable(result).map(ModelInterfaceExecutionResult::getResult) .flatMap(state -> state.getAs(BpmnGenerationComplete.class)); return successResult.map(res -> - new BpmnGenerationResult(true, res.getIntermediateModel(), res.getGeneratedBpmn(), res.getBpmnValidationMessages(), result) + new BpmnGenerationResult(true, res.getIntermediateModel(), res.getIntermediateModelAssets(), res.getGeneratedBpmn(), res.getBpmnValidationMessages(), result) ).orElseGet(() -> - new BpmnGenerationResult(false, null, null, null, result) + new BpmnGenerationResult(false, null, null, null, null, result) ); } - private BpmnGenerationResult(boolean successful, BpmnIntermediateModel intermediateModel, BpmnModelInstance generatedBpmn, + private BpmnGenerationResult(boolean successful, BpmnIntermediateModel intermediateModel, BpmnIntermediateModelAssets intermediateModelMetadata, BpmnModelInstance generatedBpmn, List bpmnValidationMessages, ModelInterfaceExecutionResult executionResults) { - this.successful = successful; - this.intermediateModel = intermediateModel; + super(successful, intermediateModel, intermediateModelMetadata, bpmnValidationMessages, executionResults); this.generatedBpmn = generatedBpmn; - this.bpmnValidationMessages = Optional.ofNullable(bpmnValidationMessages).orElseGet(ArrayList::new); - this.executionResults = executionResults; - } - - public boolean isSuccessful() { - return successful; - } - - public BpmnIntermediateModel getIntermediateModel() { - return intermediateModel; } public BpmnModelInstance getGeneratedBpmn() { return generatedBpmn; } - - public List getBpmnValidationMessages() { - return bpmnValidationMessages; - } - - public ModelInterfaceExecutionResult getExecutionResults() { - return executionResults; - } - - @JsonIgnore - public Optional getLastError() { - return Optional.ofNullable(executionResults) - .map(ModelInterfaceExecutionResult::getResult) - .map(ModelInterfaceState::getLastError); - } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/states/BpmnGenerationComplete.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/states/BpmnGenerationComplete.java index 5b8254e..bd66e7a 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/states/BpmnGenerationComplete.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/base/states/BpmnGenerationComplete.java @@ -1,47 +1,54 @@ -package org.rj.modelgen.bpmn.models.generation.base.states; - -import org.camunda.bpm.model.bpmn.BpmnModelInstance; -import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; -import org.rj.modelgen.llm.state.GenerationComplete; -import org.rj.modelgen.llm.state.ModelInterfaceSignal; -import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; -import reactor.core.publisher.Mono; - -import java.util.List; - -public class BpmnGenerationComplete extends GenerationComplete { - private BpmnIntermediateModel intermediateModel; - private BpmnModelInstance generatedBpmn; - private List bpmnValidationMessages = List.of(); - - public BpmnGenerationComplete() { - super(BpmnGenerationComplete.class); - } - - @Override - public String getDescription() { - return "BPMN generation complete"; - } - - @Override - protected Mono invokeAction(ModelInterfaceSignal inputSignal) { - - this.intermediateModel = getPayload().get(StandardModelData.IntermediateModel); - this.generatedBpmn = getPayload().get(StandardModelData.GeneratedModel); - this.bpmnValidationMessages = getPayload().get(StandardModelData.ModelValidationMessages); - - return terminalSignal(); - } - - public BpmnIntermediateModel getIntermediateModel() { - return intermediateModel; - } - - public BpmnModelInstance getGeneratedBpmn() { - return generatedBpmn; - } - - public List getBpmnValidationMessages() { - return bpmnValidationMessages; - } -} +package org.rj.modelgen.bpmn.models.generation.base.states; + +import org.camunda.bpm.model.bpmn.BpmnModelInstance; +import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; +import org.rj.modelgen.bpmn.intrep.model.assets.BpmnIntermediateModelAssets; +import org.rj.modelgen.llm.state.GenerationComplete; +import org.rj.modelgen.llm.state.ModelInterfaceSignal; +import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; +import reactor.core.publisher.Mono; + +import java.util.List; + +public class BpmnGenerationComplete extends GenerationComplete { + private BpmnIntermediateModel intermediateModel; + private BpmnIntermediateModelAssets intermediateModelAssets; + private BpmnModelInstance generatedBpmn; + private List bpmnValidationMessages = List.of(); + + public BpmnGenerationComplete() { + super(BpmnGenerationComplete.class); + } + + @Override + public String getDescription() { + return "BPMN generation complete"; + } + + @Override + protected Mono invokeAction(ModelInterfaceSignal inputSignal) { + + this.intermediateModel = getPayload().get(StandardModelData.IntermediateModel); + this.intermediateModelAssets = getPayload().get(StandardModelData.IntermediateModelAssets); + this.generatedBpmn = getPayload().get(StandardModelData.GeneratedModel); + this.bpmnValidationMessages = getPayload().get(StandardModelData.ModelValidationMessages); + + return terminalSignal(); + } + + public BpmnIntermediateModel getIntermediateModel() { + return intermediateModel; + } + + public BpmnIntermediateModelAssets getIntermediateModelAssets() { + return intermediateModelAssets; + } + + public BpmnModelInstance getGeneratedBpmn() { + return generatedBpmn; + } + + public List getBpmnValidationMessages() { + return bpmnValidationMessages; + } +} diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java index 82870d2..8184651 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/BpmnMultiLevelGenerationModel.java @@ -10,6 +10,7 @@ import org.rj.modelgen.bpmn.intrep.BpmnModelParser; import org.rj.modelgen.bpmn.intrep.model.BpmnHighLevelIntermediateModel; import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; +import org.rj.modelgen.bpmn.intrep.model.assets.BpmnIntermediateModelAssets; import org.rj.modelgen.bpmn.intrep.validation.BpmnDetailLevelIntermediateModelSanitizer; import org.rj.modelgen.bpmn.intrep.validation.BpmnHighLevelIntermediateModelSanitizer; import org.rj.modelgen.bpmn.models.generation.BpmnGenerationResult; @@ -55,7 +56,7 @@ import java.util.function.BiFunction; import java.util.function.Function; -public class BpmnMultiLevelGenerationModel extends MultiLevelGenerationModel { @@ -76,7 +77,7 @@ public static BpmnMultiLevelGenerationModel create(ModelInterface modelInterface new BpmnComponentLibraryPreprocessingLevelSerializer()); final var highLevelConfig = new MultiLevelModelPhaseConfig<>( - BpmnHighLevelIntermediateModel.class, new BpmnGenerationMultiLevelSchemaHighLevel(), + BpmnHighLevelIntermediateModel.class, BpmnIntermediateModelAssets.class, new BpmnGenerationMultiLevelSchemaHighLevel(), new BpmnHighLevelIntermediateModelSanitizer(), new DefaultComponentLibrarySelector<>(), new BpmnComponentLibraryHighLevelSerializer(), params -> new PrepareBpmnMLHighLevelModelGenerationRequest<>(params, globalVariableLibrary), @@ -85,7 +86,7 @@ BpmnHighLevelIntermediateModel.class, new BpmnGenerationMultiLevelSchemaHighLeve final var reverseRenderFunction = new BpmnReverseRenderFunction(); final var detailLevelConfig = new MultiLevelModelDetailPhaseConfig<>( // TODO - BpmnIntermediateModel.class, new BpmnGenerationMultiLevelSchemaDetailLevel(), + BpmnIntermediateModel.class, BpmnIntermediateModelAssets.class, new BpmnGenerationMultiLevelSchemaDetailLevel(), new BpmnDetailLevelIntermediateModelSanitizer(), new BpmnComponentLibraryDetailLevelSelector(), new BpmnComponentLibraryDetailLevelSerializer(), params -> new PrepareBpmnMLDetailLevelModelGenerationRequest<>(params, globalVariableLibrary), @@ -117,9 +118,9 @@ protected BpmnMultiLevelGenerationModel(Class preprocessingConfig, - MultiLevelModelPhaseConfig highLevelPhaseConfig, + MultiLevelModelPhaseConfig highLevelPhaseConfig, ReverseRenderFunction reverseRenderFunction, - MultiLevelModelDetailPhaseConfig detailLevelPhaseConfig, + MultiLevelModelDetailPhaseConfig detailLevelPhaseConfig, ModelGenerationFunction modelGenerationFunction, Function renderedModelSerializer, SubproblemDecompositionConfig subproblemDecompositionConfig, diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLDetailLevelModelGenerationRequest.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLDetailLevelModelGenerationRequest.java index 1f42479..91086cd 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLDetailLevelModelGenerationRequest.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLDetailLevelModelGenerationRequest.java @@ -7,7 +7,7 @@ public class PrepareBpmnMLDetailLevelModelGenerationRequest> extends PrepareBpmnMLModelGenerationRequest { - public PrepareBpmnMLDetailLevelModelGenerationRequest(PrepareAndSubmitMLRequestForLevelParams params, BpmnGlobalVariableLibrary globalVariableLibrary) { + public PrepareBpmnMLDetailLevelModelGenerationRequest(PrepareAndSubmitMLRequestForLevelParams params, BpmnGlobalVariableLibrary globalVariableLibrary) { super(params, globalVariableLibrary); } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLHighLevelModelGenerationRequest.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLHighLevelModelGenerationRequest.java index 9deaa5b..65a16e7 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLHighLevelModelGenerationRequest.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLHighLevelModelGenerationRequest.java @@ -7,7 +7,7 @@ public class PrepareBpmnMLHighLevelModelGenerationRequest> extends PrepareBpmnMLModelGenerationRequest { - public PrepareBpmnMLHighLevelModelGenerationRequest(PrepareAndSubmitMLRequestForLevelParams params, BpmnGlobalVariableLibrary globalVariableLibrary) { + public PrepareBpmnMLHighLevelModelGenerationRequest(PrepareAndSubmitMLRequestForLevelParams params, BpmnGlobalVariableLibrary globalVariableLibrary) { super(params, globalVariableLibrary); } } diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLModelGenerationRequest.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLModelGenerationRequest.java index 7109526..4e93677 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLModelGenerationRequest.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnMLModelGenerationRequest.java @@ -21,7 +21,7 @@ public class PrepareBpmnMLModelGenerationRequest params, BpmnGlobalVariableLibrary globalVariableLibrary) { + public PrepareBpmnMLModelGenerationRequest(PrepareAndSubmitMLRequestForLevelParams params, BpmnGlobalVariableLibrary globalVariableLibrary) { this(params.getConfig().getModelSchema(), params.getContextProvider(), params.getComponentLibrary(), params.getConfig().getComponentLibrarySelector(), params.getConfig().getComponentLibrarySerializer(), params.getPromptGenerator(), params.getSelectedPrompt(), globalVariableLibrary); diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java index a7369b3..a1b1ec4 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/PrepareBpmnModelForRendering.java @@ -1,14 +1,20 @@ package org.rj.modelgen.bpmn.models.generation.multilevel.states; +import org.rj.modelgen.bpmn.component.BpmnComponent; import org.rj.modelgen.bpmn.component.BpmnComponentLibrary; import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariable; import org.rj.modelgen.bpmn.component.globalvars.library.BpmnGlobalVariableLibrary; import org.rj.modelgen.bpmn.intrep.model.BpmnIntermediateModel; +import org.rj.modelgen.bpmn.intrep.model.ElementNode; import org.rj.modelgen.bpmn.intrep.model.ElementNodeInput; import org.rj.modelgen.bpmn.intrep.model.ElementNodeOutput; +import org.rj.modelgen.bpmn.intrep.model.assets.BpmnIntermediateModelAssets; +import org.rj.modelgen.bpmn.intrep.model.assets.ElementNodeUnresolvedInput; import org.rj.modelgen.bpmn.models.generation.multilevel.BpmnMultiLevelGenerationModel; +import org.rj.modelgen.llm.component.ComponentInputResolutionStrategy; import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; import org.rj.modelgen.llm.models.generation.multilevel.states.PrepareModelForRendering; +import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; import org.rj.modelgen.llm.util.Result; import org.rj.modelgen.llm.util.Util; import org.slf4j.Logger; @@ -48,6 +54,7 @@ protected Mono> executeLogic() { final var findModel = getModelData(); if (findModel.isErr()) return Mono.just(Result.Err(findModel.getError())); final var model = findModel.getValue(); + final var modelAssets = getModelAssets(); final var componentLibrary = getComponentLibrary(); if (componentLibrary == null) return Mono.just(Result.Err("Cannot prepare model for rendering; no component library available")); @@ -57,10 +64,11 @@ protected Mono> executeLogic() { () -> removeInvalidNullNodes(model), () -> eliminateDuplicateConnections(model), () -> identifyOrphanedSubgraphs(model, node -> !NODES_TO_IGNORE.contains(node.getElementType())), - () -> resolveInputs(model) + () -> resolveInputs(model), + () -> identifyUnresolvableInputs(model, modelAssets) ); - return execute(model, operations); + return execute(model, modelAssets, operations); } // Identify any cases where a node is connected to another node via multiple edges, and remove the duplicate edges @@ -83,21 +91,29 @@ private void resolveInputs(BpmnIntermediateModel model) { for (final var node : model.getNodes()) { if (node.getInputs() == null) continue; for (final var input : node.getInputs()) { - resolveInputValue(model, input); + resolveInputValue(model, node, input); } } } - private void resolveInputValue(BpmnIntermediateModel model, ElementNodeInput input) { + private void resolveInputValue(BpmnIntermediateModel model, ElementNode node, ElementNodeInput input) { // If the input has properties, resolve each property recursively if (input.hasProperties()) { for (var prop : input.getProperties()) { - resolveInputValue(model, prop); + resolveInputValue(model, node, prop); } } else { + var inputDefinition = getComponentLibrary() + .getComponentByName(node.getElementType()) + .flatMap(component -> component.getInputVariable(input.getName())); + var inputValue = input.getValue(); var inputSource = input.getVariableSource(); + if (!input.getIsProvided() && inputDefinition.isPresent() && inputDefinition.get().getDefaultValue() != null) { + inputValue = inputDefinition.get().getDefaultValue(); + } + if (inputSource.equals(SCRIPT.toString())) { inputValue = resolveVariableWrites(inputValue); inputValue = resolveVariableReads(inputValue,false, model, getComponentLibrary()); @@ -113,6 +129,7 @@ private void resolveInputValue(BpmnIntermediateModel model, ElementNodeInput inp inputValue = resolveVariableReads(inputValue, true, model, getComponentLibrary()); inputValue = resolveGlobalVariableReads(inputValue, globalVariableLibrary, true); + inputValue = stripQuotes(inputValue); } if (inputSource.equals(GLOBAL.toString())) { @@ -132,6 +149,40 @@ private void resolveInputValue(BpmnIntermediateModel model, ElementNodeInput inp } } + private void identifyUnresolvableInputs(BpmnIntermediateModel model, BpmnIntermediateModelAssets modelAssets) { + List unresolvedInputs = new ArrayList<>(); + for (final var node : model.getNodes()) { + if (node.getInputs() == null) continue; + var component = getComponentLibrary() + .getComponentByName(node.getElementType()); + if (component.isEmpty()) continue; + + for (final var input : node.getInputs()) { + String path = input.getName(); + identifyUnresolvableInputsProperties(component.get(), node, input, path, unresolvedInputs); + } + } + modelAssets.setUnresolvedInputs(unresolvedInputs); + } + + private void identifyUnresolvableInputsProperties(BpmnComponent component, ElementNode node, ElementNodeInput input, String path, List unresolvedInputs) { + if (input.hasProperties()) { + for (var prop : input.getProperties()) { + identifyUnresolvableInputsProperties(component, node, prop, path + "." + prop.getName(), unresolvedInputs); + } + } else if (!input.getIsProvided()) { + var inputDefinition = component.getInputVariable(input.getName()); + if (inputDefinition.isEmpty()) return; + + ComponentInputResolutionStrategy resolutionStrategy = inputDefinition.get().getResolutionStrategy(); + String defaultValue = inputDefinition.get().getDefaultValue(); + + if (resolutionStrategy.requiresUserInvolvement()) { + unresolvedInputs.add(new ElementNodeUnresolvedInput(node.getId(), node.getElementType(), input.getName(), input.getValue(), defaultValue, path, resolutionStrategy)); + } + } + } + protected String postProcessScriptInput(ElementNodeInput input, String inputValue) { inputValue = resolveErrorThrows(inputValue, "throw new Exception($1)"); return inputValue; @@ -155,6 +206,17 @@ private Result getModelData() { .orElseGet(() -> Result.Err("No valid input model found")); } + private BpmnIntermediateModelAssets getModelAssets() { + final var existingAssets = getPayload().get(StandardModelData.IntermediateModelAssets.toString()); + if (existingAssets != null) { + return existingAssets; + } + // Otherwise, create and persist a new model assets object + final var assets = new BpmnIntermediateModelAssets(); + getPayload().put(StandardModelData.IntermediateModelAssets.toString(), assets); + return assets; + } + @Override public String getDescription() { return "Clean up BPMN model for rendering"; diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java index 34e8313..ec85584 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/multilevel/states/ValidateBpmnLlmDetailLevelIntermediateModelResponse.java @@ -50,8 +50,7 @@ protected Mono invokeAction(ModelInterfaceSignal modelInte final var model = parser.parse(content).orElseThrow(e -> new LlmGenerationModelException(String.format( "Validate BPMN Detail Level Intermediate Model Response could not parse detail-level intermediate model: %s (content: %s)", e, content))); - Map> startingPayload = new HashMap<>(); - startingPayload.put("startingPayload", getPayload().get(MultiLevelModelStandardPayloadData.ProcessVariables)); + Set startingPayload = getPayload().get(MultiLevelModelStandardPayloadData.ProcessVariables); List validations = bpmnModelValidator.validate(model, startingPayload); List validationMessages = new ArrayList<>(); diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java index e0caeca..434b03b 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/BpmnScriptUtils.java @@ -131,4 +131,12 @@ public static String stripInterpolationSyntax(String expression) { } return expression; } + + public static String stripQuotes(String expression) { + expression = expression.strip(); + if ((expression.startsWith("\"") && expression.endsWith("\"")) || (expression.startsWith("'") && expression.endsWith("'"))) { + return expression.substring(1, expression.length() - 1); + } + return expression; + } } \ No newline at end of file diff --git a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java index e5f68be..7d66c09 100644 --- a/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java +++ b/codegen-service/llm-generation-bpmn/src/main/java/org/rj/modelgen/bpmn/models/generation/validation/ValidateBpmnModel.java @@ -19,9 +19,9 @@ import org.rj.modelgen.llm.validation.beans.IntermediateModelValidationError; import java.util.*; -import java.util.function.Consumer; import java.util.regex.Matcher; import java.util.stream.Collectors; +import java.util.stream.Stream; import static org.rj.modelgen.bpmn.generation.BpmnConstants.NodeTypes.*; import static org.rj.modelgen.bpmn.generation.BpmnConstants.Patterns.*; @@ -46,7 +46,7 @@ public ValidateBpmnModel(BpmnComponentLibrary componentLibrary, BpmnGlobalVariab this.componentLibrary = componentLibrary; } - public List validate(BpmnIntermediateModel model, Map> startingPayload) { + public List validate(BpmnIntermediateModel model, Set startingPayload) { this.model = model; invalidMessages = new ArrayList<>(); for (ElementNode node : model.getNodes()) { @@ -167,8 +167,8 @@ private void validateNodeInputValuesMatchDefinition(ElementNode node, List writtenVariables = retrieveWriteVariables(constantValue); @@ -325,8 +325,8 @@ private void validateConstantInput(ElementNode node, ElementNodeInput input, Str } } - private void validateExpressionInput(ElementNode node, ElementNodeInput input, String inputPath, Map> payload) { - String expression = input.getValue(); + private void validateExpressionInput(ElementNode node, ElementNodeInput input, String inputPath, Set startingPayload, Set nodePayload) { + String expression = input.getValue().strip(); // Do not allow variable writes in constant inputs List writtenVariables = retrieveWriteVariables(expression); @@ -335,7 +335,7 @@ private void validateExpressionInput(ElementNode node, ElementNodeInput input, S inputPath, node.getId(), String.join(", ", writtenVariables.stream().map(PayloadVariable::getName).toList())), node.getId())); } - validateVariableReads(node, input, inputPath, payload); + validateVariableReads(node, input, inputPath, startingPayload, nodePayload); expression = resolveVariableReadsAsPayloadVar(expression, true); validateGlobalVariableReads(node, input, inputPath); @@ -351,7 +351,7 @@ private void validateExpression(ElementNode node, String inputPath, String expre expression = expression.substring(1); } // If the expression contains interpolation syntax or it is a json object, wrap it with additional quotes to parse it as a GString or PropertyExpression - if (expression.contains("${") || expression.startsWith("{") && expression.endsWith("}")) { + if (!expression.startsWith("\"") && !expression.endsWith("\"") && (expression.contains("${") || expression.startsWith("{") && expression.endsWith("}"))) { expression = "\"" + expression + "\""; } @@ -390,7 +390,7 @@ private boolean isValidExpressionType(Expression expr) { expr instanceof ConstantExpression; } - private void validateScriptInput(ElementNode node, ElementNodeInput input, String inputPath, Map> payload) { + private void validateScriptInput(ElementNode node, ElementNodeInput input, String inputPath, Set startingPayload, Set nodePayload) { String script = input.getValue(); // Check for variable writes @@ -398,7 +398,7 @@ private void validateScriptInput(ElementNode node, ElementNodeInput input, Strin script = resolveVariableWrites(script); // Check for variable reads - boolean isScriptValid = validateVariableReads(node, input, inputPath, payload) && validateGlobalVariableReads(node, input, inputPath); + boolean isScriptValid = validateVariableReads(node, input, inputPath, startingPayload, nodePayload) && validateGlobalVariableReads(node, input, inputPath); script = resolveVariableReadsAsPayloadVar(script, false); script = resolveGlobalVariableReads(script, globalVariableLibrary, false); @@ -408,70 +408,73 @@ private void validateScriptInput(ElementNode node, ElementNodeInput input, Strin // Groovy script validation will fail if there are variable read errors so only proceed if there are no such errors if (isScriptValid) { String globalVarInitScript = buildGlobalVarsInitScript(); - script = globalVarInitScript + buildDummyPayload(input, payload) + script; + script = globalVarInitScript + buildDummyPayload(input, startingPayload, nodePayload) + script; if (parseGroovyScript(node, inputPath, script)) { validateGroovyScript(node, inputPath, script); } } - - // Store written variables per node - do it after building dummy payload to avoid including vars stored in the current node in the dummy payload - Set currentNodeOutputs = payload.getOrDefault(node.getId(), new HashSet<>()); - currentNodeOutputs.addAll(writtenVariables); - payload.put(node.getId(), currentNodeOutputs); } - private void validateNodeInput(ElementNode node, ElementNodeInput input, String inputPath, Map> payload) { + private void validateNodeInput(ElementNode node, ElementNodeInput input, String inputPath, Set nodePayload) { String sourceNodeId = input.getValue(); - if (!payload.containsKey(sourceNodeId)) { - invalidMessages.add(new IntermediateModelValidationError( - String.format("Input '%s' in node '%s' references source node '%s' which does not exist or has not been processed yet.", - inputPath, node.getId(), sourceNodeId), node.getId())); - return; - } - - Set sourceNodeOutputs = payload.get(sourceNodeId); - boolean variableExists = sourceNodeOutputs.stream() - .anyMatch(v -> v.getName().equals(input.getName())); - - if (!variableExists) { - invalidMessages.add(new IntermediateModelValidationError( - String.format("Input '%s' in node '%s' tries to read from node '%s' which does not output this variable. Available outputs: [%s]", - inputPath, node.getId(), sourceNodeId, - sourceNodeOutputs.stream().map(PayloadVariable::getName).collect(Collectors.joining(", "))), + boolean foundInPayload = nodePayload.stream().anyMatch(payloadVar -> payloadVar.getName().equals(input.getName())); + if (!foundInPayload) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' tries to read variable '%s' sourced from node '%s', but this variable is not available or the source node hasn't been processed yet.", + inputPath, node.getId(), input.getName(), sourceNodeId), node.getId())); } } - private boolean validateVariableReads(ElementNode node, ElementNodeInput input, String inputPath, Map> payload) { - boolean isScriptValid = true; + private boolean validateVariableReads(ElementNode node, ElementNodeInput input, String inputPath, Set startingPayload, Set nodePayload) { + boolean isInputValid = true; Matcher readMatcher = VAR_READ_PATTERN.matcher(input.getValue()); while (readMatcher.find()) { String variableName = readMatcher.group(1); String sourceNodeId = readMatcher.group(2); - // If reading from a specific node (sourceNodeId specified), validate if input exists in payload or in source node outputs - boolean foundInSourceNode = false; - if (StringUtils.isNotBlank(sourceNodeId)) { - Set sourceNodeOutputs = payload.getOrDefault(sourceNodeId, Set.of()); - foundInSourceNode = sourceNodeOutputs.stream().anyMatch(x -> x.getName().equals(variableName) || variableName.startsWith(x.getName() + ".")); - } - // Fallback: check if variable exists in the starting payload - Set startingPayload = payload.get("startingPayload"); - boolean foundInStartingPayload = startingPayload.stream().anyMatch(x -> x.getName().equals(variableName) || variableName.startsWith(x.getName() + ".")); + // Validate if the current node has access to the variable + boolean foundInPayload = nodePayload.stream() + .anyMatch(payloadVar -> payloadVar.getName().equals(variableName) || variableName.startsWith(payloadVar.getName() + ".")); + + // Automatically generated outputs are only available to immediate successor nodes, so nodePayload will not contain them (unless it's an immediate successor) + // Therefore, if variable not found in nodePayload, check if source node produces this variable to provide more specific error message + boolean foundInSourceOutputs = StringUtils.isNotBlank(sourceNodeId) && + model.getNodeById(sourceNodeId) + .map(ElementNode::getElementType) + .map(this::getGeneratedOutputsByElementType) + .map(generatedOutputs -> generatedOutputs.stream() + .map(BpmnComponent.Variable::getName) + .anyMatch(outputName -> outputName.equals(variableName))) + .orElse(false); - if (!foundInSourceNode && !foundInStartingPayload) { - invalidMessages.add(new IntermediateModelValidationError( - String.format("%s in node '%s' reads variable '%s' from " + (StringUtils.isNotBlank(sourceNodeId) - ? "node '%s' which does not store or output this variable. " - : "the starting payload which does not store it. ") + - "Ensure this variable is provided in the starting payload, generated as a source node output, or written in a previous node's script using setVariable().", - inputPath, node.getId(), variableName, sourceNodeId), node.getId())); - isScriptValid = false; + // Fallback: check if variable exists in the starting payload + boolean foundInStartingPayload = startingPayload.stream() + .anyMatch(payloadVar -> payloadVar.getName().equals(variableName) || variableName.startsWith(payloadVar.getName() + ".")); + + if (!foundInPayload) { + if (foundInSourceOutputs) { + invalidMessages.add(new IntermediateModelValidationError(String.format("Input '%s' in node '%s' tries to read variable '%s' from node '%s' which produces this variable as an automatically generated output, but '%s' is not an immediate successor of '%s'. " + + "Automatically generated outputs are only available to the node directly after the producing node. " + + "To use this value in '%s', add a scriptTask immediately after node '%s' that stores the value in shared state using setVariable(...) syntax.", + inputPath, node.getId(), variableName, sourceNodeId, + node.getId(), sourceNodeId, + node.getId(), sourceNodeId), + node.getId())); + isInputValid = false; + + } else if (!foundInStartingPayload) { + invalidMessages.add(new IntermediateModelValidationError(String.format("%s in node '%s' reads variable '%s' from " + (StringUtils.isNotBlank(sourceNodeId) + ? "node '%s' which does not store or output this variable. " + : "the starting payload which does not store it. ") + + "Ensure this variable is provided in the starting payload, generated as a source node output, or written in a previous node's script using setVariable().", + inputPath, node.getId(), variableName, sourceNodeId), node.getId())); + isInputValid = false; + } } } - return isScriptValid; + return isInputValid; } private boolean validateGlobalVariableReads(ElementNode node, ElementNodeInput input, String inputPath) { @@ -504,13 +507,12 @@ private boolean validateGlobalVariableReads(ElementNode node, ElementNodeInput i return isScriptValid; } - private String buildDummyPayload(ElementNodeInput input, Map> payload) { + private String buildDummyPayload(ElementNodeInput input, Set startingPayload, Set nodePayload) { StringBuilder fullScript = new StringBuilder("def payload = [:];\n"); // Accumulate variables from the starting payload with current payload // Sort by depth to ensure parent objects are created before child properties - List sortedPayloadVariables = payload.entrySet().stream() - .flatMap(entry -> entry.getValue().stream()) + List sortedPayloadVariables = Stream.concat(startingPayload.stream(), nodePayload.stream()) .sorted(Comparator.comparingInt(var -> var.getName().split("\\.").length)) .toList(); @@ -549,17 +551,17 @@ private String buildDummyPayload(ElementNodeInput input, Map> payload, Set initializedVars) { + protected String buildAdditionalDummyPayload(ElementNodeInput input, Set startingPayload, Set nodePayload, Set initializedVars) { return ""; } @@ -606,31 +608,43 @@ private void validateGroovyScript(ElementNode node, String inputPath, String scr private void traverseGraphAndValidateInputs(Map> predecessors, Map> inVars, Map> outVars, - Map> payload) { + Set startingPayload) { List roots = identifyNumberOfRoots(model, node -> !NODES_TO_IGNORE.contains(node.getElementType())); // Ignore processConfig node if (roots.size() == 1) { model.getNodeById(roots.get(0)).ifPresent(startNode -> { - Set startingVars = new HashSet<>(payload.getOrDefault("startingPayload", Set.of())); - inVars.put(startNode.getId(), startingVars); + inVars.put(startNode.getId(), startingPayload); }); } + // Track which variables are automatically generated outputs per node type + Map> generatedOutputsByElementType = new HashMap<>(); + for (BpmnComponent component : componentLibrary.getComponents()) { + var outputs = getGeneratedOutputsByElementType(component.getName()) + .stream() + .map(outVar -> new PayloadVariable(outVar.getName(), outVar.getType().toString())) + .collect(Collectors.toSet()); + generatedOutputsByElementType.put(component.getName(), outputs); + } + boolean changed; int maxIterations = 1_000_000; int iter = 0; do { changed = false; for (ElementNode node : model.getNodes()) { - // IN[node] = union of OUT[predecessor] for all predecessors + // IN[node] = union of OUT[predecessor] and autoGenOut[predecessor] for all predecessors Set newInVars = new HashSet<>(); + // OUT[node] = union of OUT[predecessor] for all predecessors + variables written by this node + Set newOutVars = new HashSet<>(); for (ElementNode pred : predecessors.getOrDefault(node.getId(), List.of())) { newInVars.addAll(outVars.get(pred.getId())); - } + // Add generated outputs only from immediate predecessors and not propagate to successors down the line, as they are only available to immediate successor nodes + newInVars.addAll(generatedOutputsByElementType.getOrDefault(pred.getElementType(), Set.of())); - // OUT[node] = IN[node] + variables written by this node - Set newOutVars = new HashSet<>(newInVars); + newOutVars.addAll(outVars.get(pred.getId())); + } // Extract variables written by this node's inputs if (node.getInputs() != null) { @@ -639,15 +653,6 @@ private void traverseGraphAndValidateInputs(Map> prede } } - // Add component-generated outputs - componentLibrary.getComponentByName(node.getElementType()) - .map(BpmnComponent::getGeneratedOutputs) - .ifPresent(outputs -> { - newOutVars.addAll(outputs.stream() - .map(out -> new PayloadVariable(out.getName(), out.getType().toString())) - .toList()); - }); - // Check if anything changed if (!newInVars.equals(inVars.get(node.getId())) || !newOutVars.equals(outVars.get(node.getId()))) { inVars.put(node.getId(), newInVars); @@ -662,21 +667,13 @@ private void traverseGraphAndValidateInputs(Map> prede throw new RuntimeException("Bpmn model validation failed: Data flow analysis did not converge within the maximum number of iterations."); } - Map> allReachablePredecessors = new HashMap<>(); - for (ElementNode node : model.getNodes()) { - allReachablePredecessors.put(node.getId(), getAllReachablePredecessors(node, predecessors)); - } - - // Now validate using the computed IN sets for (ElementNode node : model.getNodes()) { if (node.getInputs() != null) { - // Build payload structure for THIS NODE only - for (ElementNode pred : allReachablePredecessors.get(node.getId())) { - payload.put(pred.getId(), outVars.get(pred.getId())); - } + var nodePayload = inVars.get(node.getId()); + String inputPath = ""; for (ElementNodeInput input : node.getInputs()) { - validateInput(node, input, inputPath, payload); + validateInput(node, input, inputPath, startingPayload, nodePayload); } } } @@ -694,47 +691,30 @@ private void extractWrittenVariables(ElementNodeInput input, Collection> payload) { - if (input.getName().equals("conditionExpression")) { - var x = 0; - } + private void validateInput(ElementNode node, ElementNodeInput input, String path, Set startingPayload, Set nodePayload) { String childPath = path.isEmpty() ? input.getName() : path + "." + input.getName(); if (input.hasProperties()) { for (ElementNodeInput property : input.getProperties()) { - validateInput(node, property, childPath, payload); + validateInput(node, property, childPath, startingPayload, nodePayload); } } else { - validateInputValue(node, input, childPath, payload); + validateInputValue(node, input, childPath, startingPayload, nodePayload); } } - private void validateInputValue(ElementNode node, ElementNodeInput input, String path, Map> payload) { + private void validateInputValue(ElementNode node, ElementNodeInput input, String path, Set startingPayload, Set nodePayload) { if (input.getVariableSource().equals(CONSTANT.toString())) { validateConstantInput(node, input, path); } else if (input.getVariableSource().equals(EXPRESSION.toString())) { - validateExpressionInput(node, input, path, payload); + validateExpressionInput(node, input, path, startingPayload, nodePayload); } else if (input.getVariableSource().equals(SCRIPT.toString())) { - validateScriptInput(node, input, path, payload); + validateScriptInput(node, input, path, startingPayload, nodePayload); } else if (input.getVariableSource().equals(NODE.toString())) { - validateNodeInput(node, input, path, payload); + validateNodeInput(node, input, path, nodePayload); } } - // Helper method to get all transitive predecessors - private Set getAllReachablePredecessors(ElementNode node, Map> predecessors) { - Set reachable = new HashSet<>(); - Queue queue = new LinkedList<>(); - queue.add(node); - - while (!queue.isEmpty()) { - ElementNode current = queue.poll(); - for (ElementNode pred : predecessors.getOrDefault(current.getId(), List.of())) { - if (reachable.add(pred)) { // Returns true if not already visited - queue.add(pred); - } - } - } - - return reachable; + private Set getGeneratedOutputsByElementType(String elementType) { + return new HashSet<>(componentLibrary.getAutoGeneratedOutputs().getOrDefault(elementType, Set.of())); } } diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json index 8cee50d..becd0ce 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/components/bpmn-component-library.json @@ -2,7 +2,7 @@ "components": [ { "name": "userTask", - "description": "A task that requires human intervention. Users interact with 'user tasks' via a task management system named eTask", + "description": "A task that requires human intervention. Users interact with 'user tasks' via a task management system", "usage": "Use this task type when a task in the process flow requires manual action by a user. It typically involves human interaction, such as reviewing a document, approving a request, or entering data.", "requiredInputs": [ { @@ -12,7 +12,8 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"], + "resolutionStrategy": "INFERRED" }, { "name": "taskDescription", @@ -21,7 +22,8 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"], + "resolutionStrategy": "INFERRED" }, { "name": "sourceSystemName", @@ -30,7 +32,8 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT"] + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "INFERRED_CONFIRM" }, { "name": "taskPriority", @@ -41,7 +44,8 @@ "keyValue": true, "defaultValue": "MEDIUM", "allowedValues": ["CRITICAL", "HIGH", "MEDIUM", "LOW"], - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"], + "resolutionStrategy": "INFERRED" }, { "name": "taskDeadline", @@ -51,7 +55,8 @@ "mandatory": true, "keyValue": true, "defaultValue": "P7DT0H0M", - "allowedInputSourceTypes": ["CONSTANT"] + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "INFERRED_CONFIRM" }, { "name": "maximumActiveTasks", @@ -60,7 +65,8 @@ "mandatory": true, "keyValue": true, "defaultValue": "100", - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"], + "resolutionStrategy": "INFERRED" } ], "generatedOutputs": [ @@ -76,7 +82,7 @@ "description": "The comment entered by the user who completed the task", "type": "string", "keyValue": true, - "resolveValue": "taskCompletionPayload.comment" + "resolveValue": "taskCompletionPayload.comment" }, { "name": "taskIdentifier", @@ -94,12 +100,14 @@ "requiredInputs": [ { "name": "serviceUrl", - "description": "Direct HTTP/HTTPS URL of the target service (e.g., https://api.example.com). Use this when the service endpoint is known and accessible via a direct URL. Choose either serviceUrl OR discoveryPath, not both", + "description": "Direct HTTP/HTTPS URL of the target service (e.g., https://api.example.com). Use this when the service endpoint is known and accessible via a direct URL", "alias": "httpRootUrl", "type": "string", "mandatory": false, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + "defaultValue": "", + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"], + "resolutionStrategy": "USER_REQUIRED" }, { "name": "uriPath", @@ -108,7 +116,9 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + "defaultValue": "", + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"], + "resolutionStrategy": "USER_REQUIRED" }, { "name": "httpMethod", @@ -118,7 +128,8 @@ "mandatory": true, "keyValue": true, "allowedValues": ["GET", "POST", "PUT", "DELETE"], - "allowedInputSourceTypes": ["CONSTANT"] + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "INFERRED" }, { "name": "headers", @@ -135,7 +146,8 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT"] + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "INFERRED" }, { "name": "headerExpression", @@ -144,7 +156,8 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"], + "resolutionStrategy": "INFERRED" } ] }, @@ -163,7 +176,8 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT"] + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "INFERRED" }, { "name": "parameterExpression", @@ -172,17 +186,19 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["EXPRESSION"] + "allowedInputSourceTypes": ["EXPRESSION"], + "resolutionStrategy": "INFERRED" } ] }, { "name": "inputExpression", - "description": "Provide an expression or a Groovy script to be used to resolve the body of the HTTP request. Not required for GET requests", + "description": "Provide an expression or a Groovy script to be used to resolve the body of the HTTP request (e.g ${payload.requestDetails}). Not required for GET requests", "type": "string", "mandatory": false, "keyValue": false, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "SCRIPT", "NODE"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "SCRIPT", "NODE"], + "resolutionStrategy": "INFERRED" }, { "name": "outputScript", @@ -190,7 +206,8 @@ "type": "string", "mandatory": false, "keyValue": true, - "allowedInputSourceTypes": ["SCRIPT"] + "allowedInputSourceTypes": ["SCRIPT"], + "resolutionStrategy": "INFERRED" } ], "generatedOutputs": [ @@ -214,7 +231,8 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["NODE", "SCRIPT"] + "allowedInputSourceTypes": ["NODE", "SCRIPT"], + "resolutionStrategy": "INFERRED" } ], "generatedOutputs": [] @@ -231,7 +249,8 @@ "mandatory": true, "keyValue": true, "allowedValues": ["Sapiens", "Signavio", "DMN", "Droit", "DecisionTables"], - "allowedInputSourceTypes": ["CONSTANT"] + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "USER_REQUIRED" }, { "name": "applicationId", @@ -239,25 +258,28 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"], + "resolutionStrategy": "USER_REQUIRED" }, { "name": "ruleName", "description": "Rule Name of the rule to be executed", "alias": "businessRuleName", "type": "string", - "mandatory": false, - "keyValue": false, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"], + "resolutionStrategy": "USER_REQUIRED" }, { "name": "ruleVersion", "description": "Rule Version of the rule to be executed", "alias": "businessRuleVersion", "type": "string", - "mandatory": false, - "keyValue": false, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + "mandatory": true, + "keyValue": true, + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"], + "resolutionStrategy": "USER_REQUIRED" }, { "name": "factTypesExpression", @@ -266,7 +288,8 @@ "type": "string", "mandatory": false, "keyValue": false, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"], + "resolutionStrategy": "INFERRED" }, { "name": "factTypesScript", @@ -275,7 +298,8 @@ "type": "string", "mandatory": false, "keyValue": false, - "allowedInputSourceTypes": ["SCRIPT"] + "allowedInputSourceTypes": ["SCRIPT"], + "resolutionStrategy": "INFERRED" }, { "name": "metadataExpression", @@ -283,7 +307,8 @@ "type": "string", "mandatory": false, "keyValue": false, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"], + "resolutionStrategy": "INFERRED" }, { "name": "metadataScript", @@ -291,7 +316,8 @@ "type": "string", "mandatory": false, "keyValue": false, - "allowedInputSourceTypes": ["SCRIPT"] + "allowedInputSourceTypes": ["SCRIPT"], + "resolutionStrategy": "INFERRED" }, { "name": "outputScript", @@ -299,7 +325,8 @@ "type": "string", "mandatory": false, "keyValue": true, - "allowedInputSourceTypes": ["SCRIPT"] + "allowedInputSourceTypes": ["SCRIPT"], + "resolutionStrategy": "INFERRED" } ], "generatedOutputs": [] @@ -311,12 +338,13 @@ "requiredInputs": [ { "name": "serviceUrl", - "description": "Direct HTTP/HTTPS URL of the target service (e.g., https://api.example.com). Use this when the service endpoint is known and accessible via a direct URL. Choose either serviceUrl OR discoveryPath, not both", + "description": "Direct HTTP/HTTPS URL of the target service (e.g., https://api.example.com). Use this when the service endpoint is known and accessible via a direct URL", "alias": "httpRootUrl", "type": "string", "mandatory": false, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"], + "resolutionStrategy": "USER_REQUIRED" }, { "name": "uriPath", @@ -325,17 +353,19 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "NODE"], + "resolutionStrategy": "USER_REQUIRED" }, { "name": "httpMethod", "description": "HTTP Method of the request to be invoked on the REST service called by this task", - "alias": "httpServiceMethod", + "alias": "httpSendMethod", "type": "string", "mandatory": true, "keyValue": true, "allowedValues": ["GET", "POST", "PUT", "DELETE"], - "allowedInputSourceTypes": ["CONSTANT"] + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "INFERRED" }, { "name": "headers", @@ -352,7 +382,8 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT"] + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "INFERRED" }, { "name": "headerExpression", @@ -361,7 +392,8 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"], + "resolutionStrategy": "INFERRED" } ] }, @@ -380,7 +412,8 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT"] + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "INFERRED" }, { "name": "parameterExpression", @@ -389,17 +422,19 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"], + "resolutionStrategy": "INFERRED" } ] }, { "name": "inputExpression", - "description": "Provide an expression or a Groovy script to be used to resolve the body of the HTTP request. Not required for GET requests", + "description": "Provide an expression or a Groovy script to be used to resolve the body of the HTTP request (e.g ${payload.requestDetails}). Not required for GET requests", "type": "string", "mandatory": false, "keyValue": false, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "SCRIPT", "NODE"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION", "SCRIPT", "NODE"], + "resolutionStrategy": "INFERRED" }, { "name": "outputScript", @@ -407,7 +442,8 @@ "type": "string", "mandatory": false, "keyValue": true, - "allowedInputSourceTypes": ["SCRIPT"] + "allowedInputSourceTypes": ["SCRIPT"], + "resolutionStrategy": "INFERRED" } ], "generatedOutputs": [] @@ -423,7 +459,8 @@ "type": "string", "mandatory": true, "keyValue": false, - "allowedInputSourceTypes": ["CONSTANT", "NODE"] + "allowedInputSourceTypes": ["CONSTANT", "NODE"], + "resolutionStrategy": "USER_REQUIRED" }, { "name": "availabilityRuleScript", @@ -432,7 +469,8 @@ "type": "string", "mandatory": false, "keyValue": false, - "allowedInputSourceTypes": ["NODE", "SCRIPT"] + "allowedInputSourceTypes": ["NODE", "SCRIPT"], + "resolutionStrategy": "INFERRED" } ], "generatedOutputs": [] @@ -463,7 +501,8 @@ "mandatory": false, "keyValue": true, "defaultValue": "", - "allowedInputSourceTypes": ["CONSTANT"] + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "INFERRED" }, { "name": "conditions", @@ -478,7 +517,8 @@ "description": "Identifier of the target node for this condition", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT"] + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "INFERRED" }, { "name": "conditionExpression", @@ -487,7 +527,8 @@ "mandatory": true, "keyValue": true, "defaultValue": "", - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"], + "resolutionStrategy": "INFERRED" } ] } @@ -506,7 +547,8 @@ "mandatory": false, "keyValue": true, "defaultValue": "", - "allowedInputSourceTypes": ["CONSTANT"] + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "INFERRED" }, { "name": "conditions", @@ -521,7 +563,8 @@ "description": "Identifier of the target node for this condition", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT"] + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "INFERRED" }, { "name": "conditionExpression", @@ -530,7 +573,8 @@ "mandatory": true, "keyValue": true, "defaultValue": "", - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"], + "resolutionStrategy": "INFERRED" } ] } @@ -555,7 +599,8 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT"] + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "INFERRED" }, { "name": "processName", @@ -564,7 +609,8 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"], + "resolutionStrategy": "INFERRED" }, { "name": "processDescription", @@ -573,7 +619,8 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"], + "resolutionStrategy": "INFERRED" }, { "name": "sourceSystemName", @@ -582,7 +629,8 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT"] + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "INFERRED_CONFIRM" }, { "name": "processPriority", @@ -591,8 +639,10 @@ "type": "string", "mandatory": true, "keyValue": true, + "defaultValue": "MEDIUM", "allowedValues": ["CRITICAL", "HIGH", "MEDIUM", "LOW"], - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"], + "resolutionStrategy": "INFERRED" }, { "name": "processDeadline", @@ -601,7 +651,9 @@ "type": "string", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT"] + "defaultValue": "P7DT0H0M", + "allowedInputSourceTypes": ["CONSTANT"], + "resolutionStrategy": "INFERRED" }, { "name": "maximumActiveProcesses", @@ -610,7 +662,9 @@ "type": "integer", "mandatory": true, "keyValue": true, - "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"] + "defaultValue": "100", + "allowedInputSourceTypes": ["CONSTANT", "EXPRESSION"], + "resolutionStrategy": "INFERRED" } ], "generatedOutputs": [] diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt index a4ed6d0..3f2557d 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-prompt @@ -87,27 +87,26 @@ RULES FOR THE DETAILED MODEL GENERATION a. For every node use only inputs listed in that component's requiredInputs (include all mandatory; optional only if clearly beneficial and resolvable). - This rule applies recursively: within each input, all mandatory properties (and their nested mandatory properties) MUST also be provided. - Optional properties at any nesting level should only be included if clearly beneficial and resolvable. - b. Inputs MUST follow the detail-level JSON schema `elementInput` which is an object: `{ "name": string, "value": string, "variableSource": string, "properties": elementInput[] }` - - There are exactly two valid shapes of the input object: - 1) Leaf input (direct assignment): - - REQUIRED: `name`, `value`, `variableSource` - - `properties` MUST be omitted or an empty array - 2) Object input (structured assignment): - - REQUIRED: `name`, `properties` (MUST have at least 1 item) - - `value` and `variableSource` SHOULD be ommited on object inputs - - Make sure the input shape matches the component library definition for that input (e.g., do not use stringified JSON for object inputs). - c. Non-empty rule: - - Every `elementInput` MUST be satisfied as either a leaf input or an object input. - - Every object input MUST contain at least one leaf input somewhere in its `properties` subtree (i.e., all branches eventually end in a leaf). - d. Nested inputs (object/array in the component library) + b. Inputs MUST follow the detail-level JSON schema `elementInput` which is an object with exactly one of two valid shapes: + 1) Primitive type input (no nested properties) + * Shape: `{ "name": string, "value": string, "variableSource": string, "isProvided": boolean }` + * Set `isProvided `to `true` ONLY if the value is literally specified in the process runbook OR explicitly names the exact variable/global/node output to use for that input. + * Set `isProvided` to `false` for anything inferred, defaulted, guessed, derived, mapped, resolved from context (even if the concept is mentioned). + 2) Object input (has nested properties) + * Shape: `{ "name": string, "properties": elementInput[] }` + Additional rules for inputs: + - Make sure the input shape matches the component library definition for that input (e.g., do not use stringified JSON for object inputs). + - Every `elementInput` MUST be satisfied as either a primitive type input or an object input. + - Every object input MUST contain at least one primitive type input somewhere in its `properties` subtree (i.e., all branches eventually end in a [primitive type input]). + c. Nested inputs (object/array in the component library) - Object input: * There MUST be exactly ONE `elementInput` with this `name` in the parent `properties` list. - * Represent it as an object input (omit `value` and `variableSource`, include `properties` with field assignments). + * Represent it as an object input (with ONLY `name` and `properties` field assignments). - Array input (type = array/list): * You MAY include MULTIPLE `elementInput` entries with the SAME `name`; each entry represents ONE array element. - * For arrays of OBJECTS: each array element MUST be an object input (has `properties`); each repeated object is one independent element. - * For arrays of PRIMITIVES: each array element MUST be a leaf input (has `value` and `variableSource`). - e. For any leaf input, `variableSource` MUST be present and MUST be one of: CONSTANT | EXPRESSION | SCRIPT | NODE | GLOBAL. + * For arrays of OBJECTS: each array element MUST be an object input; each repeated object is one independent element. + * For arrays of PRIMITIVES: each array element MUST be a primitive type input. + d. For any primitive type input, `variableSource` MUST be present and MUST be one of: CONSTANT | EXPRESSION | SCRIPT | NODE | GLOBAL. Use only values allowed by the component library for that specific input/property. - CONSTANT: Use for: * Simple literal values that never change (e.g., "GET", "POST", "HIGH", 123, true, "This is short description."). @@ -123,13 +122,13 @@ RULES FOR THE DETAILED MODEL GENERATION * Make sure scripts adhere to best practices outlined in `CODE GENERATION & SCRIPTING INSTRUCTIONS` section below. - NODE: Use when the value comes directly from a named output of any prior node in the process. Set `name` to the input variable name being satisfied and `value` to the source node ID. - GLOBAL: Use when available in the global variables library. Global variables library is not the same as process shared state. - f. If any mandatory input or input's property cannot be satisfied with these rules, use component's default if specified or provide a sensible constant value. - g. Inputs might have conditional rules explained in their descriptions that make them mandatory or forbidden based on other input values; ensure these conditions are met when deciding which inputs to include. - h. Never add an input not defined in requiredInputs. Never guess enum values - only use allowedValues list. + e. Inputs might have conditional rules explained in their descriptions that make them mandatory or forbidden based on other input values; ensure these conditions are met when deciding which inputs to include. + f. Never add an input not defined in requiredInputs. Never guess enum values - only use allowedValues list. 3. Outputs - a. The "generated outputs" listed in the component definitions are all generated by the component. You must not provide values for them. They are available if you want to use them to satisfy inputs in subsequent nodes. - b. Any additional variables that need to be accessible in subsequent nodes must be stored in the shared state using setVariable('keyName', 'value', 'valueType') within scripts. + a. The "generated outputs" listed in the component definitions are all generated by the component. You must not provide values for them. They are available if you want to use them to satisfy inputs ONLY in the subsequent node. + b. If you want to use any of the generated outputs beyond the immediate next node, you must add a script task in the immediate next node to store those outputs in the shared state using setVariable('keyName', 'value', 'valueType') for access in later nodes. + c. Any additional variables that need to be accessible in subsequent nodes must be stored in the shared state using setVariable('keyName', 'value', 'valueType') within scripts. 4. Payload variable access API a. Variables are stored individually in a payload object that works as a shared state map across the process @@ -141,7 +140,7 @@ RULES FOR THE DETAILED MODEL GENERATION c. To read a variable from a previous node: use getVariable('keyName.subfield', 'sourceNodeId'). - Use this when referencing: * Any variable stored by a previous node using setVariable('keyName', 'value', 'valueType'). - * Any output variable from that node's generatedOutputs (e.g taskCompletionPayload, statusCode, result). + * Any output variable from that node's generatedOutputs (e.g taskCompletionPayload, statusCode, result). These generated outputs are ONLY available for immediate next nodes, so you should add a scriptTask to store them in the shared state if you want to access them beyond immediate next nodes. - keyName is the name of the variable to read. - sourceNodeId is the ID of the node that produced/set this variable. - Example: getVariable('reasonCode', 'resolveErrorTask') reads the reason code variable from resolveErrorTask node. @@ -155,12 +154,13 @@ RULES FOR THE DETAILED MODEL GENERATION 5. Global variable access API a. Global variables are predefined utility functions or constants available for use in scripts and inputs. - b. To read a global variable use getGlobalVariable('globalVarName', [arg1, arg2]). + b. To read a global variable directly in an input, set `variableSource` to "GLOBAL" and `name` to the global variable name. This is only applicable for global variables that are simple constants or functions that do not require arguments. + c. To read a global variable in a script or expression use getGlobalVariable('globalVarName', [arg1, arg2]). - globalVarName is the name of the global variable to read. - If the global variable requires arguments, provide them as an array in the second parameter. Otherwise, provide empty array. - Example: getGlobalVariable('parseJsonString', [jsonString]) calls the parseJsonString global function with jsonString as argument. - c. DO NOT perform any computations, transformations, or logic inside getGlobalVariable() calls. These calls should only read global variables directly. - d. DO NOT use getGlobalVariable() inside getVariable() or setVariable() or vice versa. Use intermediate variables in scripts if needed. + d. DO NOT perform any computations, transformations, or logic inside getGlobalVariable() calls. These calls should only read global variables directly. + e. DO NOT use getGlobalVariable() inside getVariable() or setVariable() or vice versa. Use intermediate variables in scripts if needed. 6. Gateways and branching a. Use a gateway if you want to branch execution into several options based on conditions. Use another gateway later to merge multiple flows back into one. diff --git a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json index 383adc1..644789d 100644 --- a/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json +++ b/codegen-service/llm-generation-bpmn/src/main/resources/content/models/multilevel/bpmn-multilevel-detail-level-generation-schema.json @@ -88,6 +88,10 @@ "type": "string", "description": "A `CONSTANT` value if explicitly defined, or `EXPRESSION` if the value is a Groovy expression, or `SCRIPT` if the value is a Groovy script or `NODE` if the value is sourced from another node's output or `GLOBAL` value if found in the global variable library" }, + "isProvided": { + "type": "boolean", + "description": "true if value is directly provided in the runbook; false if it is inferred from context or defaulted" + }, "properties": { "type": "array", "items": { "$ref": "#/$defs/elementInput" }, @@ -97,7 +101,7 @@ "required": ["name"], "oneOf": [ { - "required": ["value", "variableSource"], + "required": ["value", "variableSource", "isProvided"], "properties": { "properties": false } @@ -106,7 +110,8 @@ "required": ["properties"], "properties": { "value": false, - "variableSource": false + "variableSource": false, + "isProvided": false } } ] diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/component/ComponentInputResolutionStrategy.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/component/ComponentInputResolutionStrategy.java new file mode 100644 index 0000000..d8c9aab --- /dev/null +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/component/ComponentInputResolutionStrategy.java @@ -0,0 +1,28 @@ +package org.rj.modelgen.llm.component; + +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * Defines how an input should be resolved when the user's runbook does not explicitly specify a value. + */ +public enum ComponentInputResolutionStrategy { + + // LLM inferred a value from runbook context or defaulted; no confirmation needed. + INFERRED, + + // LLM proposed a value but it should be reviewed by the user. + INFERRED_CONFIRM, + + //Value could not be determined. User must supply it. + USER_REQUIRED; + + @JsonValue + @Override + public String toString() { + return name(); + } + + public Boolean requiresUserInvolvement() { + return this == INFERRED_CONFIRM || this == USER_REQUIRED; + } +} diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/assets/IntermediateModelAssets.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/assets/IntermediateModelAssets.java new file mode 100644 index 0000000..587c6f8 --- /dev/null +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/assets/IntermediateModelAssets.java @@ -0,0 +1,28 @@ +package org.rj.modelgen.llm.intrep.assets; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.rj.modelgen.llm.util.Util; + +import java.util.List; + +public class IntermediateModelAssets { + + List unresolvedInputs; + + public IntermediateModelAssets() { + } + + public List getUnresolvedInputs() { + return unresolvedInputs; + } + + public void setUnresolvedInputs(List unresolvedInputs) { + this.unresolvedInputs = unresolvedInputs; + } + + @JsonIgnore + public String serialize() { + return Util.serializeOrThrow(this); + } + +} diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/assets/IntermediateModelAssetsParser.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/assets/IntermediateModelAssetsParser.java new file mode 100644 index 0000000..61f8261 --- /dev/null +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/assets/IntermediateModelAssetsParser.java @@ -0,0 +1,26 @@ +package org.rj.modelgen.llm.intrep.assets; + +import org.apache.commons.lang3.StringUtils; +import org.rj.modelgen.llm.util.Result; +import org.rj.modelgen.llm.util.Util; + +public class IntermediateModelAssetsParser { + private final Class modelAssetsClass; + + public IntermediateModelAssetsParser(Class modelAssetsClass) { + this.modelAssetsClass = modelAssetsClass; + } + + public Result parse(String content) { + if (StringUtils.isBlank(content)) return Result.Err("Cannot build intermediate model assets from null content"); + + try { + return Result.Ok(Util.getObjectMapper().readValue(content, modelAssetsClass)); + } + catch (Exception ex) { + return Result.Err(String.format("Cannot build IR model assets; content does not conform to required IR schema (%s)", ex.getMessage())); + } + } + + +} diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/assets/NodeUnresolvedInput.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/assets/NodeUnresolvedInput.java new file mode 100644 index 0000000..f53d894 --- /dev/null +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/intrep/assets/NodeUnresolvedInput.java @@ -0,0 +1,52 @@ +package org.rj.modelgen.llm.intrep.assets; + +import org.rj.modelgen.llm.component.ComponentInputResolutionStrategy; + +public class NodeUnresolvedInput { + + private String nodeId; + private String type; + private String value; + private ComponentInputResolutionStrategy resolutionStrategy; + + public NodeUnresolvedInput() { } + + public NodeUnresolvedInput(String nodeId, String type, String value, ComponentInputResolutionStrategy resolutionStrategy) { + this.nodeId = nodeId; + this.type = type; + this.value = value; + this.resolutionStrategy = resolutionStrategy; + } + + public String getNodeId() { + return nodeId; + } + + public void setNodeId(String nodeId) { + this.nodeId = nodeId; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public ComponentInputResolutionStrategy getResolutionStrategy() { + return resolutionStrategy; + } + + public void setResolutionStrategy(ComponentInputResolutionStrategy resolutionStrategy) { + this.resolutionStrategy = resolutionStrategy; + } +} diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/GenerationResult.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/GenerationResult.java index d7d04cb..b1d8c18 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/GenerationResult.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/GenerationResult.java @@ -1,4 +1,58 @@ package org.rj.modelgen.llm.models.generation; -public abstract class GenerationResult { +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.rj.modelgen.llm.intrep.assets.IntermediateModelAssets; +import org.rj.modelgen.llm.intrep.graph.IntermediateGraphModel; +import org.rj.modelgen.llm.state.ModelInterfaceExecutionResult; +import org.rj.modelgen.llm.state.ModelInterfaceState; + +import java.util.List; +import java.util.Optional; + +public abstract class GenerationResult, TIntermediateModelAssets extends IntermediateModelAssets> { + private boolean successful; + private TIntermediateModel intermediateModel; + private TIntermediateModelAssets intermediateModelAssets; + private List validationMessages; + private ModelInterfaceExecutionResult executionResults; + + public GenerationResult() { + + } + + public GenerationResult(boolean successful, TIntermediateModel intermediateModel, TIntermediateModelAssets intermediateModelAssets, + List validationMessages, ModelInterfaceExecutionResult executionResults) { + this.successful = successful; + this.intermediateModel = intermediateModel; + this.intermediateModelAssets = intermediateModelAssets; + this.validationMessages = validationMessages; + this.executionResults = executionResults; + } + + public boolean isSuccessful() { + return successful; + } + + public TIntermediateModel getIntermediateModel() { + return intermediateModel; + } + + public TIntermediateModelAssets getIntermediateModelAssets() { + return intermediateModelAssets; + } + + public List getValidationMessages() { + return validationMessages; + } + + public ModelInterfaceExecutionResult getExecutionResults() { + return executionResults; + } + + @JsonIgnore + public Optional getLastError() { + return Optional.ofNullable(executionResults) + .map(ModelInterfaceExecutionResult::getResult) + .map(ModelInterfaceState::getLastError); + } } diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModel.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModel.java index bd38839..76b8187 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModel.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/MultiLevelGenerationModel.java @@ -1,221 +1,224 @@ -package org.rj.modelgen.llm.models.generation.multilevel; - -import org.rj.modelgen.llm.component.ComponentLibrary; -import org.rj.modelgen.llm.context.provider.ContextProvider; -import org.rj.modelgen.llm.generation.ModelGenerationFunction; -import org.rj.modelgen.llm.intrep.ModelParser; -import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; -import org.rj.modelgen.llm.model.ModelInterface; -import org.rj.modelgen.llm.models.generation.GenerationModel; -import org.rj.modelgen.llm.models.generation.GenerationResult; -import org.rj.modelgen.llm.models.generation.multilevel.config.MultiLevelModelDetailPhaseConfig; -import org.rj.modelgen.llm.models.generation.multilevel.config.MultiLevelModelPhaseConfig; -import org.rj.modelgen.llm.models.generation.multilevel.config.MultilevelModelPreprocessingConfig; -import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; -import org.rj.modelgen.llm.models.generation.multilevel.prompt.MultiLevelGenerationModelPromptGenerator; -import org.rj.modelgen.llm.models.generation.multilevel.prompt.MultiLevelModelPromptType; -import org.rj.modelgen.llm.models.generation.multilevel.signals.MultiLevelModelStandardSignals; -import org.rj.modelgen.llm.models.generation.multilevel.states.*; -import org.rj.modelgen.llm.models.generation.multilevel.states.ReverseRenderIntermediateModel; -import org.rj.modelgen.llm.state.ModelInterfaceState; -import org.rj.modelgen.llm.state.ModelInterfaceTransitionRule; -import org.rj.modelgen.llm.state.ModelInterfaceTransitionRules; -import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; -import org.rj.modelgen.llm.statemodel.signals.common.StandardSignals; -import org.rj.modelgen.llm.statemodel.states.common.PrepareAndSubmitLlmGenericRequest; -import org.rj.modelgen.llm.statemodel.states.common.impl.GenerateModelFromIntermediateModelTransformer; -import org.rj.modelgen.llm.subproblem.config.SubproblemDecompositionConfig; -import org.rj.modelgen.llm.subproblem.data.SubproblemDecompositionSignals; - -import java.util.List; -import java.util.Optional; -import java.util.function.Function; - -import static org.rj.modelgen.llm.models.generation.multilevel.signals.MultiLevelModelStandardSignals.UsePreprocessingFlow; -import static org.rj.modelgen.llm.models.generation.multilevel.signals.MultiLevelModelStandardSignals.UseReverseRenderingFlow; - -public abstract class MultiLevelGenerationModel, - TResult extends GenerationResult> - extends GenerationModel { - - public MultiLevelGenerationModel(Class> modelClass, - ModelInterface modelInterface, MultiLevelGenerationModelPromptGenerator promptGenerator, - ContextProvider contextProvider, TComponentLibrary componentLibrary, - MultilevelModelPreprocessingConfig preprocessingConfig, - MultiLevelModelPhaseConfig highLevelPhaseConfig, - ReverseRenderFunction reverseRenderFunction, - MultiLevelModelDetailPhaseConfig detailLevelPhaseConfig, - ModelGenerationFunction modelGenerationFunction, - Function renderedModelSerializer, - SubproblemDecompositionConfig subproblemDecompositionConfig, - SubproblemDecompositionConfig reverseRenderSubproblemDecompositionConfig, - ModelInterfaceState completionState, - MultiLevelGenerationModelOptions options, - ModelParser modelParser) { - this(modelClass, modelInterface, buildModelData(promptGenerator, contextProvider, componentLibrary, preprocessingConfig, highLevelPhaseConfig, reverseRenderFunction, - detailLevelPhaseConfig, modelGenerationFunction, renderedModelSerializer, subproblemDecompositionConfig, reverseRenderSubproblemDecompositionConfig, completionState, options, modelParser)); - } - - private MultiLevelGenerationModel(Class> modelClass, - ModelInterface modelInterface, ModelData modelData) { - super(modelClass, modelInterface, modelData.getStates(), modelData.getRules()); - } - - - private static> - ModelData buildModelData( - MultiLevelGenerationModelPromptGenerator promptGenerator, - ContextProvider contextProvider, TComponentLibrary componentLibrary, - MultilevelModelPreprocessingConfig preprocessingConfig, - MultiLevelModelPhaseConfig highLevelPhaseConfig, - ReverseRenderFunction reverseRenderFunction, - MultiLevelModelDetailPhaseConfig detailLevelPhaseConfig, - ModelGenerationFunction modelGenerationFunction, - Function renderedModelSerializer, - SubproblemDecompositionConfig subproblemDecompositionConfig, - SubproblemDecompositionConfig reverseRenderSubproblemDecompositionConfig, - ModelInterfaceState completionState, - MultiLevelGenerationModelOptions options, - ModelParser modelParser) { - - // Overrides from model options - final var modelOptions = Optional.ofNullable(options).orElseGet(MultiLevelGenerationModelOptions::defaultOptions); - final var modelPromptGenerator = modelOptions.applyPromptGeneratorCustomization(promptGenerator); - - Optional.ofNullable(modelOptions.getHighLevelSchemaOverride()).ifPresent(highLevelPhaseConfig::setModelSchema); - Optional.ofNullable(modelOptions.getDetailLevelSchemaOverride()).ifPresent(detailLevelPhaseConfig::setModelSchema); - - // Build each model state - final var stateInit = new StartMultiLevelGeneration() - .withOverriddenId(MultiLevelGenerationModelStates.StartMultiLevelGeneration); - - final var stateSanitizingPrePass = new PrepareAndSubmitLlmGenericRequest<>(contextProvider, promptGenerator, MultiLevelModelPromptType.SanitizingPrePass, componentLibrary) - .withResponseOutputKey(StandardModelData.Request) - .withOverriddenId(MultiLevelGenerationModelStates.SanitizingPrePass); - - final var statePreprocessing = new PrepareAndSubmitLlmGenericRequest<>(contextProvider, promptGenerator, MultiLevelModelPromptType.PreProcessing, - componentLibrary, preprocessingConfig.getComponentLibrarySelector(), preprocessingConfig.getComponentLibrarySerializer()) - .withResponseOutputKey(StandardModelData.Request) - .withOverriddenId(MultiLevelGenerationModelStates.PreProcessing); - - final var stateGenerateSubproblems = subproblemDecompositionConfig.getSubproblemGeneratorImplementation().get() - .withInputKey(StandardModelData.Request) - .withOutputKey(StandardModelData.Request) - .withSubproblemDecompositionEnabled(modelOptions.shouldPerformSubproblemDecomposition()) - .withOverriddenId(MultiLevelGenerationModelStates.GenerateSubproblems); - - final var stateExecuteHighLevel = new PrepareAndSubmitMLRequestForLevel<>( - new PrepareAndSubmitMLRequestForLevelParams<>(highLevelPhaseConfig, contextProvider, modelPromptGenerator, MultiLevelModelPromptType.GenerateHighLevel, componentLibrary)) - .withResponseOutputKey(MultiLevelModelStandardPayloadData.HighLevelModel) - .withOverriddenId(MultiLevelGenerationModelStates.ExecuteHighLevel); - - final var stateValidateHighLevel = highLevelPhaseConfig.createValidationStage( - highLevelPhaseConfig.getModelSchema(), highLevelPhaseConfig.getIntermediateModelClass()) - .withModelInputKey(MultiLevelModelStandardPayloadData.HighLevelModel) - .withOverriddenId(MultiLevelGenerationModelStates.ValidateHighLevel); - - final var stateReverseRenderModelToIR = new ReverseRenderIntermediateModel<>( - modelParser, - reverseRenderFunction) - .withOverriddenId(MultiLevelGenerationModelStates.ReverseRender); - - final var stateGenerateSubproblemsForReverseRender = reverseRenderSubproblemDecompositionConfig.getSubproblemGeneratorImplementation().get() - .withInputKey(MultiLevelModelStandardPayloadData.SerializedReverseRender) - .withOutputKey(MultiLevelModelStandardPayloadData.SerializedReverseRender) - .withSubproblemDecompositionEnabled(modelOptions.shouldPerformSubproblemDecomposition()) - .withOverriddenId(MultiLevelGenerationModelStates.GenerateReverseRenderSubproblems); - - final var stateExecuteDetailLevel = new PrepareAndSubmitMLRequestForDetailLevel<>( - new PrepareAndSubmitMLRequestForDetailLevelParams<>(detailLevelPhaseConfig, contextProvider, modelPromptGenerator, MultiLevelModelPromptType.GenerateDetailLevel, componentLibrary)) - .withResponseOutputKey(MultiLevelModelStandardPayloadData.DetailLevelModel) - .withOverriddenId(MultiLevelGenerationModelStates.ExecuteDetailLevel); - - final var stateValidateDetailLevel = detailLevelPhaseConfig.createValidationStage( - detailLevelPhaseConfig.getModelSchema(), detailLevelPhaseConfig.getIntermediateModelClass()) - .withModelInputKey(MultiLevelModelStandardPayloadData.DetailLevelModel) - .withOverriddenId(MultiLevelGenerationModelStates.ValidateDetailLevel); - - final var stateCombineSubproblems = subproblemDecompositionConfig.getSubproblemCombinationImplementation().get() - .withInputKey(MultiLevelModelStandardPayloadData.DetailLevelModel) - .withOutputKey(MultiLevelModelStandardPayloadData.DetailLevelModel) - .withSubproblemDecompositionEnabled(modelOptions.shouldPerformSubproblemDecomposition()) - .withOverriddenId(MultiLevelGenerationModelStates.CombineSubproblems); - - final var stateGenerateModel = new GenerateModelFromIntermediateModelTransformer<>( - GenerateModelFromIntermediateModelTransformer.class, - detailLevelPhaseConfig.getIntermediateModelClass(), - MultiLevelModelStandardPayloadData.DetailLevelModel.toString(), // Input - StandardModelData.GeneratedModel.toString(), // Output - modelGenerationFunction, renderedModelSerializer) - .withOverriddenId(MultiLevelGenerationModelStates.GenerateModel); - - // final var stateValidateModelCorrectness = new { ... } // TODO - final var stateComplete = completionState - .withOverriddenId(MultiLevelGenerationModelStates.Complete); - - final var states = List.of(stateInit, stateSanitizingPrePass, statePreprocessing, stateGenerateSubproblems, - stateExecuteHighLevel, stateValidateHighLevel, stateReverseRenderModelToIR, stateGenerateSubproblemsForReverseRender, - stateExecuteDetailLevel, stateValidateDetailLevel, stateCombineSubproblems, stateGenerateModel, stateComplete); - - // Complete initialization, and apply any global model state that the states want to consume - states.forEach(ModelInterfaceState::completeStateInitialization); - states.forEach(state -> state.applyModelOptions(options)); - - // Transition rules between states - final var rules = new ModelInterfaceTransitionRules(List.of( - - new ModelInterfaceTransitionRule(stateInit, UsePreprocessingFlow, stateSanitizingPrePass), - new ModelInterfaceTransitionRule(stateInit, UseReverseRenderingFlow, stateReverseRenderModelToIR), - - new ModelInterfaceTransitionRule(stateSanitizingPrePass, StandardSignals.SUCCESS, statePreprocessing), - new ModelInterfaceTransitionRule(stateSanitizingPrePass, StandardSignals.SKIPPED, statePreprocessing), // Optional stage - - new ModelInterfaceTransitionRule(statePreprocessing, StandardSignals.SUCCESS, stateGenerateSubproblems), - new ModelInterfaceTransitionRule(statePreprocessing, StandardSignals.SKIPPED, stateGenerateSubproblems), // Optional stage - - new ModelInterfaceTransitionRule(stateGenerateSubproblems, StandardSignals.SUCCESS, stateExecuteHighLevel), - - new ModelInterfaceTransitionRule(stateExecuteHighLevel, StandardSignals.SUCCESS, stateValidateHighLevel), - new ModelInterfaceTransitionRule(stateValidateHighLevel, StandardSignals.SUCCESS, stateExecuteDetailLevel), - - new ModelInterfaceTransitionRule(stateReverseRenderModelToIR, StandardSignals.SUCCESS, stateGenerateSubproblemsForReverseRender), - new ModelInterfaceTransitionRule(stateReverseRenderModelToIR, StandardSignals.SKIPPED, stateGenerateSubproblemsForReverseRender), // Optional stage - - new ModelInterfaceTransitionRule(stateGenerateSubproblemsForReverseRender, StandardSignals.SUCCESS, stateExecuteDetailLevel), - - new ModelInterfaceTransitionRule(stateExecuteDetailLevel, StandardSignals.SUCCESS, stateValidateDetailLevel), - new ModelInterfaceTransitionRule(stateExecuteDetailLevel, MultiLevelModelStandardSignals.ReturnToHighLevel, stateExecuteHighLevel), // LLM-directed retry for one-shot generation - new ModelInterfaceTransitionRule(stateExecuteDetailLevel, MultiLevelModelStandardSignals.RetryDetailLevel, stateExecuteDetailLevel), // LLM-directed retry for multi-shot generation - new ModelInterfaceTransitionRule(stateValidateDetailLevel, StandardSignals.SUCCESS, stateCombineSubproblems), - - - new ModelInterfaceTransitionRule(stateCombineSubproblems, SubproblemDecompositionSignals.ProcessNextSubproblem, stateGenerateSubproblems), // Iterate back to process next subproblem - new ModelInterfaceTransitionRule(stateCombineSubproblems, SubproblemDecompositionSignals.ProcessNextIntermediateModelSubproblem, stateGenerateSubproblemsForReverseRender), - new ModelInterfaceTransitionRule(stateCombineSubproblems, SubproblemDecompositionSignals.SubproblemDecompositionCompleted, stateGenerateModel), // All subproblems complete, so continue - - new ModelInterfaceTransitionRule(stateGenerateModel, StandardSignals.SUCCESS, stateComplete) - )); - - return new ModelData(states, rules); - } - - protected Class getInitialState() { - return StartMultiLevelGeneration.class; - } - - protected MultiLevelModelStandardSignals getStartSignal(String canvasModel) { - if(canvasModel == null) { - return UsePreprocessingFlow; - } else { - return UseReverseRenderingFlow; - } - } - - -} +package org.rj.modelgen.llm.models.generation.multilevel; + +import org.rj.modelgen.llm.component.ComponentLibrary; +import org.rj.modelgen.llm.context.provider.ContextProvider; +import org.rj.modelgen.llm.generation.ModelGenerationFunction; +import org.rj.modelgen.llm.intrep.ModelParser; +import org.rj.modelgen.llm.intrep.assets.IntermediateModelAssets; +import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; +import org.rj.modelgen.llm.model.ModelInterface; +import org.rj.modelgen.llm.models.generation.GenerationModel; +import org.rj.modelgen.llm.models.generation.GenerationResult; +import org.rj.modelgen.llm.models.generation.multilevel.config.MultiLevelModelDetailPhaseConfig; +import org.rj.modelgen.llm.models.generation.multilevel.config.MultiLevelModelPhaseConfig; +import org.rj.modelgen.llm.models.generation.multilevel.config.MultilevelModelPreprocessingConfig; +import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; +import org.rj.modelgen.llm.models.generation.multilevel.prompt.MultiLevelGenerationModelPromptGenerator; +import org.rj.modelgen.llm.models.generation.multilevel.prompt.MultiLevelModelPromptType; +import org.rj.modelgen.llm.models.generation.multilevel.signals.MultiLevelModelStandardSignals; +import org.rj.modelgen.llm.models.generation.multilevel.states.*; +import org.rj.modelgen.llm.models.generation.multilevel.states.ReverseRenderIntermediateModel; +import org.rj.modelgen.llm.state.ModelInterfaceState; +import org.rj.modelgen.llm.state.ModelInterfaceTransitionRule; +import org.rj.modelgen.llm.state.ModelInterfaceTransitionRules; +import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; +import org.rj.modelgen.llm.statemodel.signals.common.StandardSignals; +import org.rj.modelgen.llm.statemodel.states.common.PrepareAndSubmitLlmGenericRequest; +import org.rj.modelgen.llm.statemodel.states.common.impl.GenerateModelFromIntermediateModelTransformer; +import org.rj.modelgen.llm.subproblem.config.SubproblemDecompositionConfig; +import org.rj.modelgen.llm.subproblem.data.SubproblemDecompositionSignals; + +import java.util.List; +import java.util.Optional; +import java.util.function.Function; + +import static org.rj.modelgen.llm.models.generation.multilevel.signals.MultiLevelModelStandardSignals.UsePreprocessingFlow; +import static org.rj.modelgen.llm.models.generation.multilevel.signals.MultiLevelModelStandardSignals.UseReverseRenderingFlow; + +public abstract class MultiLevelGenerationModel, + TResult extends GenerationResult> + extends GenerationModel { + + public MultiLevelGenerationModel(Class> modelClass, + ModelInterface modelInterface, MultiLevelGenerationModelPromptGenerator promptGenerator, + ContextProvider contextProvider, TComponentLibrary componentLibrary, + MultilevelModelPreprocessingConfig preprocessingConfig, + MultiLevelModelPhaseConfig highLevelPhaseConfig, + ReverseRenderFunction reverseRenderFunction, + MultiLevelModelDetailPhaseConfig detailLevelPhaseConfig, + ModelGenerationFunction modelGenerationFunction, + Function renderedModelSerializer, + SubproblemDecompositionConfig subproblemDecompositionConfig, + SubproblemDecompositionConfig reverseRenderSubproblemDecompositionConfig, + ModelInterfaceState completionState, + MultiLevelGenerationModelOptions options, + ModelParser modelParser) { + this(modelClass, modelInterface, buildModelData(promptGenerator, contextProvider, componentLibrary, preprocessingConfig, highLevelPhaseConfig, reverseRenderFunction, + detailLevelPhaseConfig, modelGenerationFunction, renderedModelSerializer, subproblemDecompositionConfig, reverseRenderSubproblemDecompositionConfig, completionState, options, modelParser)); + } + + private MultiLevelGenerationModel(Class> modelClass, + ModelInterface modelInterface, ModelData modelData) { + super(modelClass, modelInterface, modelData.getStates(), modelData.getRules()); + } + + + private static> + ModelData buildModelData( + MultiLevelGenerationModelPromptGenerator promptGenerator, + ContextProvider contextProvider, TComponentLibrary componentLibrary, + MultilevelModelPreprocessingConfig preprocessingConfig, + MultiLevelModelPhaseConfig highLevelPhaseConfig, + ReverseRenderFunction reverseRenderFunction, + MultiLevelModelDetailPhaseConfig detailLevelPhaseConfig, + ModelGenerationFunction modelGenerationFunction, + Function renderedModelSerializer, + SubproblemDecompositionConfig subproblemDecompositionConfig, + SubproblemDecompositionConfig reverseRenderSubproblemDecompositionConfig, + ModelInterfaceState completionState, + MultiLevelGenerationModelOptions options, + ModelParser modelParser) { + + // Overrides from model options + final var modelOptions = Optional.ofNullable(options).orElseGet(MultiLevelGenerationModelOptions::defaultOptions); + final var modelPromptGenerator = modelOptions.applyPromptGeneratorCustomization(promptGenerator); + + Optional.ofNullable(modelOptions.getHighLevelSchemaOverride()).ifPresent(highLevelPhaseConfig::setModelSchema); + Optional.ofNullable(modelOptions.getDetailLevelSchemaOverride()).ifPresent(detailLevelPhaseConfig::setModelSchema); + + // Build each model state + final var stateInit = new StartMultiLevelGeneration() + .withOverriddenId(MultiLevelGenerationModelStates.StartMultiLevelGeneration); + + final var stateSanitizingPrePass = new PrepareAndSubmitLlmGenericRequest<>(contextProvider, promptGenerator, MultiLevelModelPromptType.SanitizingPrePass, componentLibrary) + .withResponseOutputKey(StandardModelData.Request) + .withOverriddenId(MultiLevelGenerationModelStates.SanitizingPrePass); + + final var statePreprocessing = new PrepareAndSubmitLlmGenericRequest<>(contextProvider, promptGenerator, MultiLevelModelPromptType.PreProcessing, + componentLibrary, preprocessingConfig.getComponentLibrarySelector(), preprocessingConfig.getComponentLibrarySerializer()) + .withResponseOutputKey(StandardModelData.Request) + .withOverriddenId(MultiLevelGenerationModelStates.PreProcessing); + + final var stateGenerateSubproblems = subproblemDecompositionConfig.getSubproblemGeneratorImplementation().get() + .withInputKey(StandardModelData.Request) + .withOutputKey(StandardModelData.Request) + .withSubproblemDecompositionEnabled(modelOptions.shouldPerformSubproblemDecomposition()) + .withOverriddenId(MultiLevelGenerationModelStates.GenerateSubproblems); + + final var stateExecuteHighLevel = new PrepareAndSubmitMLRequestForLevel<>( + new PrepareAndSubmitMLRequestForLevelParams<>(highLevelPhaseConfig, contextProvider, modelPromptGenerator, MultiLevelModelPromptType.GenerateHighLevel, componentLibrary)) + .withResponseOutputKey(MultiLevelModelStandardPayloadData.HighLevelModel) + .withOverriddenId(MultiLevelGenerationModelStates.ExecuteHighLevel); + + final var stateValidateHighLevel = highLevelPhaseConfig.createValidationStage( + highLevelPhaseConfig.getModelSchema(), highLevelPhaseConfig.getIntermediateModelClass()) + .withModelInputKey(MultiLevelModelStandardPayloadData.HighLevelModel) + .withOverriddenId(MultiLevelGenerationModelStates.ValidateHighLevel); + + final var stateReverseRenderModelToIR = new ReverseRenderIntermediateModel<>( + modelParser, + reverseRenderFunction) + .withOverriddenId(MultiLevelGenerationModelStates.ReverseRender); + + final var stateGenerateSubproblemsForReverseRender = reverseRenderSubproblemDecompositionConfig.getSubproblemGeneratorImplementation().get() + .withInputKey(MultiLevelModelStandardPayloadData.SerializedReverseRender) + .withOutputKey(MultiLevelModelStandardPayloadData.SerializedReverseRender) + .withSubproblemDecompositionEnabled(modelOptions.shouldPerformSubproblemDecomposition()) + .withOverriddenId(MultiLevelGenerationModelStates.GenerateReverseRenderSubproblems); + + final var stateExecuteDetailLevel = new PrepareAndSubmitMLRequestForDetailLevel<>( + new PrepareAndSubmitMLRequestForDetailLevelParams<>(detailLevelPhaseConfig, contextProvider, modelPromptGenerator, MultiLevelModelPromptType.GenerateDetailLevel, componentLibrary)) + .withResponseOutputKey(MultiLevelModelStandardPayloadData.DetailLevelModel) + .withOverriddenId(MultiLevelGenerationModelStates.ExecuteDetailLevel); + + final var stateValidateDetailLevel = detailLevelPhaseConfig.createValidationStage( + detailLevelPhaseConfig.getModelSchema(), detailLevelPhaseConfig.getIntermediateModelClass()) + .withModelInputKey(MultiLevelModelStandardPayloadData.DetailLevelModel) + .withOverriddenId(MultiLevelGenerationModelStates.ValidateDetailLevel); + + final var stateCombineSubproblems = subproblemDecompositionConfig.getSubproblemCombinationImplementation().get() + .withInputKey(MultiLevelModelStandardPayloadData.DetailLevelModel) + .withOutputKey(MultiLevelModelStandardPayloadData.DetailLevelModel) + .withSubproblemDecompositionEnabled(modelOptions.shouldPerformSubproblemDecomposition()) + .withOverriddenId(MultiLevelGenerationModelStates.CombineSubproblems); + + final var stateGenerateModel = new GenerateModelFromIntermediateModelTransformer<>( + GenerateModelFromIntermediateModelTransformer.class, + detailLevelPhaseConfig.getIntermediateModelClass(), + MultiLevelModelStandardPayloadData.DetailLevelModel.toString(), // Input + StandardModelData.GeneratedModel.toString(), // Output + modelGenerationFunction, renderedModelSerializer) + .withOverriddenId(MultiLevelGenerationModelStates.GenerateModel); + + // final var stateValidateModelCorrectness = new { ... } // TODO + final var stateComplete = completionState + .withOverriddenId(MultiLevelGenerationModelStates.Complete); + + final var states = List.of(stateInit, stateSanitizingPrePass, statePreprocessing, stateGenerateSubproblems, + stateExecuteHighLevel, stateValidateHighLevel, stateReverseRenderModelToIR, stateGenerateSubproblemsForReverseRender, + stateExecuteDetailLevel, stateValidateDetailLevel, stateCombineSubproblems, stateGenerateModel, stateComplete); + + // Complete initialization, and apply any global model state that the states want to consume + states.forEach(ModelInterfaceState::completeStateInitialization); + states.forEach(state -> state.applyModelOptions(options)); + + // Transition rules between states + final var rules = new ModelInterfaceTransitionRules(List.of( + + new ModelInterfaceTransitionRule(stateInit, UsePreprocessingFlow, stateSanitizingPrePass), + new ModelInterfaceTransitionRule(stateInit, UseReverseRenderingFlow, stateReverseRenderModelToIR), + + new ModelInterfaceTransitionRule(stateSanitizingPrePass, StandardSignals.SUCCESS, statePreprocessing), + new ModelInterfaceTransitionRule(stateSanitizingPrePass, StandardSignals.SKIPPED, statePreprocessing), // Optional stage + + new ModelInterfaceTransitionRule(statePreprocessing, StandardSignals.SUCCESS, stateGenerateSubproblems), + new ModelInterfaceTransitionRule(statePreprocessing, StandardSignals.SKIPPED, stateGenerateSubproblems), // Optional stage + + new ModelInterfaceTransitionRule(stateGenerateSubproblems, StandardSignals.SUCCESS, stateExecuteHighLevel), + + new ModelInterfaceTransitionRule(stateExecuteHighLevel, StandardSignals.SUCCESS, stateValidateHighLevel), + new ModelInterfaceTransitionRule(stateValidateHighLevel, StandardSignals.SUCCESS, stateExecuteDetailLevel), + + new ModelInterfaceTransitionRule(stateReverseRenderModelToIR, StandardSignals.SUCCESS, stateGenerateSubproblemsForReverseRender), + new ModelInterfaceTransitionRule(stateReverseRenderModelToIR, StandardSignals.SKIPPED, stateGenerateSubproblemsForReverseRender), // Optional stage + + new ModelInterfaceTransitionRule(stateGenerateSubproblemsForReverseRender, StandardSignals.SUCCESS, stateExecuteDetailLevel), + + new ModelInterfaceTransitionRule(stateExecuteDetailLevel, StandardSignals.SUCCESS, stateValidateDetailLevel), + new ModelInterfaceTransitionRule(stateExecuteDetailLevel, MultiLevelModelStandardSignals.ReturnToHighLevel, stateExecuteHighLevel), // LLM-directed retry for one-shot generation + new ModelInterfaceTransitionRule(stateExecuteDetailLevel, MultiLevelModelStandardSignals.RetryDetailLevel, stateExecuteDetailLevel), // LLM-directed retry for multi-shot generation + new ModelInterfaceTransitionRule(stateValidateDetailLevel, StandardSignals.SUCCESS, stateCombineSubproblems), + + + new ModelInterfaceTransitionRule(stateCombineSubproblems, SubproblemDecompositionSignals.ProcessNextSubproblem, stateGenerateSubproblems), // Iterate back to process next subproblem + new ModelInterfaceTransitionRule(stateCombineSubproblems, SubproblemDecompositionSignals.ProcessNextIntermediateModelSubproblem, stateGenerateSubproblemsForReverseRender), + new ModelInterfaceTransitionRule(stateCombineSubproblems, SubproblemDecompositionSignals.SubproblemDecompositionCompleted, stateGenerateModel), // All subproblems complete, so continue + + new ModelInterfaceTransitionRule(stateGenerateModel, StandardSignals.SUCCESS, stateComplete) + )); + + return new ModelData(states, rules); + } + + protected Class getInitialState() { + return StartMultiLevelGeneration.class; + } + + protected MultiLevelModelStandardSignals getStartSignal(String canvasModel) { + if(canvasModel == null) { + return UsePreprocessingFlow; + } else { + return UseReverseRenderingFlow; + } + } + + +} diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/config/MultiLevelModelDetailPhaseConfig.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/config/MultiLevelModelDetailPhaseConfig.java index decd85c..2bbb06b 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/config/MultiLevelModelDetailPhaseConfig.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/config/MultiLevelModelDetailPhaseConfig.java @@ -3,34 +3,33 @@ import org.rj.modelgen.llm.component.ComponentLibrary; import org.rj.modelgen.llm.component.ComponentLibrarySelector; import org.rj.modelgen.llm.component.ComponentLibrarySerializer; +import org.rj.modelgen.llm.intrep.assets.IntermediateModelAssets; import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; import org.rj.modelgen.llm.models.generation.multilevel.states.PrepareAndSubmitMLRequestForLevelParams; import org.rj.modelgen.llm.schema.ModelSchema; import org.rj.modelgen.llm.statemodel.states.common.SubmitDetailLevelGenerationRequestToLlm; -import org.rj.modelgen.llm.statemodel.states.common.SubmitGenerationRequestToLlm; import org.rj.modelgen.llm.statemodel.states.common.ValidateLlmIntermediateModelResponse; import org.rj.modelgen.llm.statemodel.states.common.impl.PrepareSpecificModelGenerationRequestPromptWithComponents; import org.rj.modelgen.llm.validation.impl.IntermediateModelSanitizer; -import java.util.Optional; -import java.util.function.BiFunction; import java.util.function.Function; -public class MultiLevelModelDetailPhaseConfig, +public class MultiLevelModelDetailPhaseConfig, TPrepareImpl extends PrepareSpecificModelGenerationRequestPromptWithComponents, TSubmitImpl extends SubmitDetailLevelGenerationRequestToLlm, TValidateImpl extends ValidateLlmIntermediateModelResponse> - extends MultiLevelModelPhaseConfig { + extends MultiLevelModelPhaseConfig { - public MultiLevelModelDetailPhaseConfig(Class intermediateModelClass, + public MultiLevelModelDetailPhaseConfig(Class intermediateModelClass, Class intermediateModelAssetsClass, ModelSchema modelSchema, IntermediateModelSanitizer modelSanitizer, ComponentLibrarySelector componentLibrarySelector, ComponentLibrarySerializer componentLibrarySerializer, - Function, TPrepareImpl> customPrepareImplementation, - Function, TSubmitImpl> customSubmitImplementation) { - super(intermediateModelClass, modelSchema, modelSanitizer, componentLibrarySelector, componentLibrarySerializer, customPrepareImplementation, customSubmitImplementation); + Function, TPrepareImpl> customPrepareImplementation, + Function, TSubmitImpl> customSubmitImplementation) { + super(intermediateModelClass, intermediateModelAssetsClass, modelSchema, modelSanitizer, componentLibrarySelector, componentLibrarySerializer, customPrepareImplementation, customSubmitImplementation); } /** @@ -38,15 +37,16 @@ public MultiLevelModelDetailPhaseConfig(Class intermediateMo * @param * @param */ - public static class Basic> - extends MultiLevelModelDetailPhaseConfig, + public static class Basic> + extends MultiLevelModelDetailPhaseConfig, SubmitDetailLevelGenerationRequestToLlm, ValidateLlmIntermediateModelResponse> { - public Basic(Class intermediateModelClass, ModelSchema modelSchema, + public Basic(Class intermediateModelClass, Class intermediateModelAssetsClass, + ModelSchema modelSchema, IntermediateModelSanitizer modelSanitizer, ComponentLibrarySelector componentLibrarySelector, ComponentLibrarySerializer componentLibrarySerializer) { - super(intermediateModelClass, modelSchema, modelSanitizer, componentLibrarySelector, componentLibrarySerializer, null, null); + super(intermediateModelClass, intermediateModelAssetsClass, modelSchema, modelSanitizer, componentLibrarySelector, componentLibrarySerializer, null, null); } } } diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/config/MultiLevelModelPhaseConfig.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/config/MultiLevelModelPhaseConfig.java index 6fc60ea..38bc377 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/config/MultiLevelModelPhaseConfig.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/config/MultiLevelModelPhaseConfig.java @@ -3,8 +3,8 @@ import org.rj.modelgen.llm.component.ComponentLibrary; import org.rj.modelgen.llm.component.ComponentLibrarySelector; import org.rj.modelgen.llm.component.ComponentLibrarySerializer; +import org.rj.modelgen.llm.intrep.assets.IntermediateModelAssets; import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; -import org.rj.modelgen.llm.models.generation.multilevel.states.PrepareAndSubmitMLRequestForLevel; import org.rj.modelgen.llm.models.generation.multilevel.states.PrepareAndSubmitMLRequestForLevelParams; import org.rj.modelgen.llm.schema.ModelSchema; import org.rj.modelgen.llm.statemodel.states.common.SubmitGenerationRequestToLlm; @@ -15,9 +15,9 @@ import java.util.Optional; import java.util.function.BiFunction; import java.util.function.Function; -import java.util.function.Supplier; -public class MultiLevelModelPhaseConfig, +public class MultiLevelModelPhaseConfig, TPrepareImpl extends PrepareSpecificModelGenerationRequestPromptWithComponents, TSubmitImpl extends SubmitGenerationRequestToLlm, TValidateImpl extends ValidateLlmIntermediateModelResponse> { @@ -27,36 +27,40 @@ public class MultiLevelModelPhaseConfig * @param */ - public static class Basic> - extends MultiLevelModelPhaseConfig, SubmitGenerationRequestToLlm, ValidateLlmIntermediateModelResponse> { - - public Basic(Class intermediateModelClass, ModelSchema modelSchema, - IntermediateModelSanitizer modelSanitizer, - ComponentLibrarySelector componentLibrarySelector, - ComponentLibrarySerializer componentLibrarySerializer) { - super(intermediateModelClass, modelSchema, modelSanitizer, componentLibrarySelector, componentLibrarySerializer, null, null); + public static class Basic> + extends MultiLevelModelPhaseConfig, SubmitGenerationRequestToLlm, ValidateLlmIntermediateModelResponse> { + + public Basic(Class intermediateModelClass, Class intermediateModelAssetsClass, + ModelSchema modelSchema, + IntermediateModelSanitizer modelSanitizer, + ComponentLibrarySelector componentLibrarySelector, + ComponentLibrarySerializer componentLibrarySerializer) { + super(intermediateModelClass, intermediateModelAssetsClass, modelSchema, modelSanitizer, componentLibrarySelector, componentLibrarySerializer, null, null); } } private Class intermediateModelClass; + private Class intermediateModelAssetsClass; private ModelSchema modelSchema; private IntermediateModelSanitizer modelSanitizer; private ComponentLibrarySelector componentLibrarySelector; private ComponentLibrarySerializer componentLibrarySerializer; - private Function, TPrepareImpl> customPrepareImplementation; - private Function, TSubmitImpl> customSubmitImplementation; + private Function, TPrepareImpl> customPrepareImplementation; + private Function, TSubmitImpl> customSubmitImplementation; private BiFunction, TValidateImpl> customValidateImplementation; public MultiLevelModelPhaseConfig() { } - public MultiLevelModelPhaseConfig(Class intermediateModelClass, ModelSchema modelSchema, + public MultiLevelModelPhaseConfig(Class intermediateModelClass, Class intermediateModelAssetsClass, + ModelSchema modelSchema, IntermediateModelSanitizer modelSanitizer, ComponentLibrarySelector componentLibrarySelector, ComponentLibrarySerializer componentLibrarySerializer, - Function, TPrepareImpl> customPrepareImplementation, - Function, TSubmitImpl> customSubmitImplementation) { + Function, TPrepareImpl> customPrepareImplementation, + Function, TSubmitImpl> customSubmitImplementation) { this.intermediateModelClass = intermediateModelClass; + this.intermediateModelAssetsClass = intermediateModelAssetsClass; this.modelSchema = modelSchema; this.modelSanitizer = modelSanitizer; this.componentLibrarySelector = componentLibrarySelector; @@ -73,6 +77,14 @@ public void setIntermediateModelClass(Class intermediateMode this.intermediateModelClass = intermediateModelClass; } + public Class getIntermediateModelAssetsClass() { + return intermediateModelAssetsClass; + } + + public void setIntermediateModelAssetsClass(Class intermediateModelAssetsClass) { + this.intermediateModelAssetsClass = intermediateModelAssetsClass; + } + public ModelSchema getModelSchema() { return modelSchema; } @@ -105,19 +117,19 @@ public void setComponentLibrarySerializer(ComponentLibrarySerializer, TPrepareImpl> getCustomPrepareImplementation() { + public Function, TPrepareImpl> getCustomPrepareImplementation() { return customPrepareImplementation; } - public void setCustomPrepareImplementation(Function, TPrepareImpl> customPrepareImplementation) { + public void setCustomPrepareImplementation(Function, TPrepareImpl> customPrepareImplementation) { this.customPrepareImplementation = customPrepareImplementation; } - public Function, TSubmitImpl> getCustomSubmitImplementation() { + public Function, TSubmitImpl> getCustomSubmitImplementation() { return customSubmitImplementation; } - public void setCustomSubmitImplementation(Function, TSubmitImpl> customSubmitImplementation) { + public void setCustomSubmitImplementation(Function, TSubmitImpl> customSubmitImplementation) { this.customSubmitImplementation = customSubmitImplementation; } diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLGenericRequestForLevel.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLGenericRequestForLevel.java index 2bbbddd..1b9bf3d 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLGenericRequestForLevel.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLGenericRequestForLevel.java @@ -1,6 +1,7 @@ package org.rj.modelgen.llm.models.generation.multilevel.states; import org.rj.modelgen.llm.component.ComponentLibrary; +import org.rj.modelgen.llm.intrep.assets.IntermediateModelAssets; import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; import org.rj.modelgen.llm.statemodel.signals.common.StandardSignals; import org.rj.modelgen.llm.statemodel.states.common.PrepareAndSubmitLlmGenerationRequest; @@ -9,10 +10,11 @@ import java.util.Optional; -public class PrepareAndSubmitMLGenericRequestForLevel, +public class PrepareAndSubmitMLGenericRequestForLevel, TPrepareImpl extends PrepareSpecificModelGenerationRequestPromptWithComponents, TSubmitImpl extends SubmitGenerationRequestToLlm> extends PrepareAndSubmitLlmGenerationRequest { - public PrepareAndSubmitMLGenericRequestForLevel(PrepareAndSubmitMLRequestForLevelParams params) { + public PrepareAndSubmitMLGenericRequestForLevel(PrepareAndSubmitMLRequestForLevelParams params) { super(PrepareAndSubmitMLGenericRequestForLevel.class, createPrepareImpl(params), createSubmitImpl(params) @@ -25,7 +27,7 @@ public String getSuccessSignalId() { } private static , TPrepareImpl extends PrepareSpecificModelGenerationRequestPromptWithComponents> - PrepareSpecificModelGenerationRequestPromptWithComponents createPrepareImpl(PrepareAndSubmitMLRequestForLevelParams params) { + PrepareSpecificModelGenerationRequestPromptWithComponents createPrepareImpl(PrepareAndSubmitMLRequestForLevelParams params) { return Optional.ofNullable(params.getConfig().getCustomPrepareImplementation()) .map(generator -> (PrepareSpecificModelGenerationRequestPromptWithComponents) generator.apply(params)) @@ -35,7 +37,7 @@ PrepareSpecificModelGenerationRequestPromptWithComponents cre } private static - SubmitGenerationRequestToLlm createSubmitImpl(PrepareAndSubmitMLRequestForLevelParams params) { + SubmitGenerationRequestToLlm createSubmitImpl(PrepareAndSubmitMLRequestForLevelParams params) { return Optional.ofNullable(params.getConfig().getCustomSubmitImplementation()) .map(generator -> (SubmitGenerationRequestToLlm) generator.apply(params)) diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForDetailLevel.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForDetailLevel.java index 5bae1b3..2f2c1dd 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForDetailLevel.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForDetailLevel.java @@ -1,25 +1,27 @@ package org.rj.modelgen.llm.models.generation.multilevel.states; import org.rj.modelgen.llm.component.ComponentLibrary; +import org.rj.modelgen.llm.intrep.assets.IntermediateModelAssets; import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; import org.rj.modelgen.llm.statemodel.states.common.PrepareAndSubmitLlmGenerationRequest; import org.rj.modelgen.llm.statemodel.states.common.SubmitDetailLevelGenerationRequestToLlm; import org.rj.modelgen.llm.statemodel.states.common.impl.PrepareSpecificModelGenerationRequestPromptWithComponents; -public class PrepareAndSubmitMLRequestForDetailLevel, +public class PrepareAndSubmitMLRequestForDetailLevel, TPrepareImpl extends PrepareSpecificModelGenerationRequestPromptWithComponents, TSubmitImpl extends SubmitDetailLevelGenerationRequestToLlm> - extends PrepareAndSubmitMLRequestForLevel { + extends PrepareAndSubmitMLRequestForLevel { - public PrepareAndSubmitMLRequestForDetailLevel(PrepareAndSubmitMLRequestForLevelParams params) { + public PrepareAndSubmitMLRequestForDetailLevel(PrepareAndSubmitMLRequestForLevelParams params) { this(PrepareAndSubmitMLRequestForDetailLevel.class, params); } public PrepareAndSubmitMLRequestForDetailLevel(Class cls, - PrepareAndSubmitMLRequestForLevelParams params) { + PrepareAndSubmitMLRequestForLevelParams params) { super(cls, params, PrepareAndSubmitMLRequestForLevel::defaultPrepareImpl, PrepareAndSubmitMLRequestForDetailLevel::defaultDetailLevelSubmitImpl @@ -27,7 +29,7 @@ public PrepareAndSubmitMLRequestForDetailLevel(Class - SubmitDetailLevelGenerationRequestToLlm defaultDetailLevelSubmitImpl(PrepareAndSubmitMLRequestForLevelParams params) { + SubmitDetailLevelGenerationRequestToLlm defaultDetailLevelSubmitImpl(PrepareAndSubmitMLRequestForLevelParams params) { return new SubmitDetailLevelGenerationRequestToLlm(params.getConfig().getModelSanitizer()); } diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForDetailLevelParams.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForDetailLevelParams.java index 82f85b7..83cfedf 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForDetailLevelParams.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForDetailLevelParams.java @@ -2,23 +2,24 @@ import org.rj.modelgen.llm.component.ComponentLibrary; import org.rj.modelgen.llm.context.provider.ContextProvider; +import org.rj.modelgen.llm.intrep.assets.IntermediateModelAssets; import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; import org.rj.modelgen.llm.models.generation.multilevel.config.MultiLevelModelPhaseConfig; import org.rj.modelgen.llm.models.generation.multilevel.prompt.MultiLevelGenerationModelPromptGenerator; import org.rj.modelgen.llm.models.generation.multilevel.prompt.MultiLevelModelPromptType; import org.rj.modelgen.llm.statemodel.states.common.SubmitDetailLevelGenerationRequestToLlm; -import org.rj.modelgen.llm.statemodel.states.common.SubmitGenerationRequestToLlm; import org.rj.modelgen.llm.statemodel.states.common.ValidateLlmIntermediateModelResponse; import org.rj.modelgen.llm.statemodel.states.common.impl.PrepareSpecificModelGenerationRequestPromptWithComponents; -public class PrepareAndSubmitMLRequestForDetailLevelParams, +public class PrepareAndSubmitMLRequestForDetailLevelParams, TPrepareImpl extends PrepareSpecificModelGenerationRequestPromptWithComponents, TSubmitImpl extends SubmitDetailLevelGenerationRequestToLlm, TValidateImpl extends ValidateLlmIntermediateModelResponse> - extends PrepareAndSubmitMLRequestForLevelParams { + extends PrepareAndSubmitMLRequestForLevelParams { - public PrepareAndSubmitMLRequestForDetailLevelParams(MultiLevelModelPhaseConfig config, + public PrepareAndSubmitMLRequestForDetailLevelParams(MultiLevelModelPhaseConfig config, ContextProvider contextProvider, MultiLevelGenerationModelPromptGenerator promptGenerator, MultiLevelModelPromptType selectedPrompt, TComponentLibrary componentLibrary) { super(config, contextProvider, promptGenerator, selectedPrompt, componentLibrary); diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForLevel.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForLevel.java index d83af0f..bb49623 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForLevel.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForLevel.java @@ -1,6 +1,7 @@ package org.rj.modelgen.llm.models.generation.multilevel.states; import org.rj.modelgen.llm.component.ComponentLibrary; +import org.rj.modelgen.llm.intrep.assets.IntermediateModelAssets; import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; import org.rj.modelgen.llm.statemodel.signals.common.StandardSignals; import org.rj.modelgen.llm.statemodel.states.common.PrepareAndSubmitLlmGenerationRequest; @@ -10,15 +11,16 @@ import java.util.Optional; import java.util.function.Function; -public class PrepareAndSubmitMLRequestForLevel, +public class PrepareAndSubmitMLRequestForLevel, TPrepareImpl extends PrepareSpecificModelGenerationRequestPromptWithComponents, TSubmitImpl extends SubmitGenerationRequestToLlm> extends PrepareAndSubmitLlmGenerationRequest { - public PrepareAndSubmitMLRequestForLevel(PrepareAndSubmitMLRequestForLevelParams params) { + public PrepareAndSubmitMLRequestForLevel(PrepareAndSubmitMLRequestForLevelParams params) { this(PrepareAndSubmitMLRequestForLevel.class, params); } public PrepareAndSubmitMLRequestForLevel(Class cls, - PrepareAndSubmitMLRequestForLevelParams params) { + PrepareAndSubmitMLRequestForLevelParams params) { this(PrepareAndSubmitMLRequestForLevel.class, params, PrepareAndSubmitMLRequestForLevel::defaultPrepareImpl, @@ -27,10 +29,10 @@ public PrepareAndSubmitMLRequestForLevel(Class cls, - PrepareAndSubmitMLRequestForLevelParams params, - Function, + PrepareAndSubmitMLRequestForLevelParams params, + Function, ? extends PrepareSpecificModelGenerationRequestPromptWithComponents> defaultPrepareImplFactory, - Function, + Function, ? extends SubmitGenerationRequestToLlm> defaultSubmitImplFactory) { super(PrepareAndSubmitMLRequestForLevel.class, createPrepareImpl(params, defaultPrepareImplFactory), @@ -43,10 +45,10 @@ public String getSuccessSignalId() { return StandardSignals.SUCCESS; } - private static , + private static , TPrepareImpl extends PrepareSpecificModelGenerationRequestPromptWithComponents> - PrepareSpecificModelGenerationRequestPromptWithComponents createPrepareImpl(PrepareAndSubmitMLRequestForLevelParams params, - Function, + PrepareSpecificModelGenerationRequestPromptWithComponents createPrepareImpl(PrepareAndSubmitMLRequestForLevelParams params, + Function, ? extends PrepareSpecificModelGenerationRequestPromptWithComponents> defaultPrepareImplFactory) { return Optional.ofNullable(params.getConfig().getCustomPrepareImplementation()) @@ -55,8 +57,8 @@ PrepareSpecificModelGenerationRequestPromptWithComponents cre } private static , TSubmitImpl extends SubmitGenerationRequestToLlm> - SubmitGenerationRequestToLlm createSubmitImpl(PrepareAndSubmitMLRequestForLevelParams params, - Function, + SubmitGenerationRequestToLlm createSubmitImpl(PrepareAndSubmitMLRequestForLevelParams params, + Function, ? extends SubmitGenerationRequestToLlm> defaultSubmitImplFactory) { return Optional.ofNullable(params.getConfig().getCustomSubmitImplementation()) @@ -65,14 +67,14 @@ SubmitGenerationRequestToLlm createSubmitImpl(PrepareAndSubmitMLRequestForLevelP } protected static , TPrepareImpl extends PrepareSpecificModelGenerationRequestPromptWithComponents> - PrepareSpecificModelGenerationRequestPromptWithComponents defaultPrepareImpl(PrepareAndSubmitMLRequestForLevelParams params) { + PrepareSpecificModelGenerationRequestPromptWithComponents defaultPrepareImpl(PrepareAndSubmitMLRequestForLevelParams params) { return new PrepareSpecificModelGenerationRequestPromptWithComponents<>(params.getConfig().getModelSchema(), params.getContextProvider(), params.getComponentLibrary(), params.getConfig().getComponentLibrarySelector(), params.getConfig().getComponentLibrarySerializer(), params.getPromptGenerator(), params.getSelectedPrompt()); } protected static - SubmitGenerationRequestToLlm defaultSubmitImpl(PrepareAndSubmitMLRequestForLevelParams params) { + SubmitGenerationRequestToLlm defaultSubmitImpl(PrepareAndSubmitMLRequestForLevelParams params) { return new SubmitGenerationRequestToLlm(params.getConfig().getModelSanitizer()); } diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForLevelParams.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForLevelParams.java index 3d88f71..337271a 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForLevelParams.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/models/generation/multilevel/states/PrepareAndSubmitMLRequestForLevelParams.java @@ -2,6 +2,7 @@ import org.rj.modelgen.llm.component.ComponentLibrary; import org.rj.modelgen.llm.context.provider.ContextProvider; +import org.rj.modelgen.llm.intrep.assets.IntermediateModelAssets; import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; import org.rj.modelgen.llm.models.generation.multilevel.config.MultiLevelModelPhaseConfig; import org.rj.modelgen.llm.models.generation.multilevel.prompt.MultiLevelGenerationModelPromptGenerator; @@ -10,18 +11,19 @@ import org.rj.modelgen.llm.statemodel.states.common.ValidateLlmIntermediateModelResponse; import org.rj.modelgen.llm.statemodel.states.common.impl.PrepareSpecificModelGenerationRequestPromptWithComponents; -public class PrepareAndSubmitMLRequestForLevelParams, +public class PrepareAndSubmitMLRequestForLevelParams, TPrepareImpl extends PrepareSpecificModelGenerationRequestPromptWithComponents, TSubmitImpl extends SubmitGenerationRequestToLlm, TValidateImpl extends ValidateLlmIntermediateModelResponse> { - private final MultiLevelModelPhaseConfig config; + private final MultiLevelModelPhaseConfig config; private final ContextProvider contextProvider; private final MultiLevelGenerationModelPromptGenerator promptGenerator; private final MultiLevelModelPromptType selectedPrompt; private final TComponentLibrary componentLibrary; - public PrepareAndSubmitMLRequestForLevelParams(MultiLevelModelPhaseConfig config, + public PrepareAndSubmitMLRequestForLevelParams(MultiLevelModelPhaseConfig config, ContextProvider contextProvider, MultiLevelGenerationModelPromptGenerator promptGenerator, MultiLevelModelPromptType selectedPrompt, TComponentLibrary componentLibrary) { this.config = config; @@ -31,7 +33,7 @@ public PrepareAndSubmitMLRequestForLevelParams(MultiLevelModelPhaseConfig getConfig() { + public MultiLevelModelPhaseConfig getConfig() { return config; } diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/data/common/StandardModelData.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/data/common/StandardModelData.java index 74bfa5f..5f1003f 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/data/common/StandardModelData.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/data/common/StandardModelData.java @@ -12,6 +12,7 @@ public enum StandardModelData { Temperature, Prompt, IntermediateModel, + IntermediateModelAssets, ModelResponse, ResponseContent, ValidationMessages, diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ExecuteLogic.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ExecuteLogic.java index 0de9dfc..b574d25 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ExecuteLogic.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/ExecuteLogic.java @@ -1,11 +1,14 @@ package org.rj.modelgen.llm.statemodel.states.common; +import org.rj.modelgen.llm.intrep.assets.IntermediateModelAssets; +import org.rj.modelgen.llm.intrep.assets.NodeUnresolvedInput; import org.rj.modelgen.llm.intrep.graph.GraphConnection; import org.rj.modelgen.llm.intrep.graph.GraphNode; import org.rj.modelgen.llm.intrep.graph.IntermediateGraphModel; import org.rj.modelgen.llm.models.generation.multilevel.data.MultiLevelModelStandardPayloadData; import org.rj.modelgen.llm.state.ModelInterfaceSignal; import org.rj.modelgen.llm.state.ModelInterfaceState; +import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; import org.rj.modelgen.llm.util.Result; import org.rj.modelgen.llm.util.Util; import org.slf4j.Logger; @@ -41,8 +44,12 @@ protected Mono invokeAction(ModelInterfaceSignal inputSign .orElse(this::error)); } - protected , TNode extends GraphNode, TModel extends IntermediateGraphModel> - Mono> execute(TModel model, List operations) { + protected , + TNode extends GraphNode, + TModel extends IntermediateGraphModel, + TNodeUnresolvedInput extends NodeUnresolvedInput, + TIntermediateModelAssets extends IntermediateModelAssets> + Mono> execute(TModel model, TIntermediateModelAssets modelAssets, List operations) { // Apply all operations; catch and propagate any unhandled exceptions for (final var operation : operations) { try { @@ -59,6 +66,11 @@ Mono> execute(TModel model, List operations) { return Mono.just(Result.Err("Failed to save model during render preparation: " + saveResult.getError())); } + final var saveAssetsResult = saveModelAssets(modelAssets); + if (saveAssetsResult.isErr()) { + return Mono.just(Result.Err("Failed to save model assets during render preparation: " + saveAssetsResult.getError())); + } + return Mono.just(Result.Ok()); } @@ -77,6 +89,15 @@ Result saveModelData(TModel model) { return Result.Ok(); } + private > + Result saveModelAssets(TIntermediateModelAssets modelAssets) { + if (modelAssets == null) return Result.Err("Cannot save null model assets"); + + getPayload().put(StandardModelData.IntermediateModelAssets.toString(), modelAssets); + return Result.Ok(); + } + /** * Must be implemented by subclasses. Execute custom logic and return a result which will * determine the outbound signal sent back to the model diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/GenerateModelFromIntermediateModel.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/GenerateModelFromIntermediateModel.java index 28bb7aa..9dac939 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/GenerateModelFromIntermediateModel.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/GenerateModelFromIntermediateModel.java @@ -1,29 +1,32 @@ package org.rj.modelgen.llm.statemodel.states.common; import org.rj.modelgen.llm.intrep.IntermediateModelParser; +import org.rj.modelgen.llm.intrep.assets.IntermediateModelAssets; import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; import org.rj.modelgen.llm.state.ModelInterfaceSignal; import org.rj.modelgen.llm.state.ModelInterfaceState; import org.rj.modelgen.llm.state.ModelInterfaceStateMachine; import org.rj.modelgen.llm.statemodel.data.common.StandardModelData; import org.rj.modelgen.llm.util.Result; +import org.rj.modelgen.llm.util.Util; import reactor.core.publisher.Mono; import java.util.function.Function; -public abstract class GenerateModelFromIntermediateModel extends ModelInterfaceState { +public abstract class GenerateModelFromIntermediateModel extends ModelInterfaceState { private final IntermediateModelParser intermediateModelParser; private final String inputModelKey; private final String outputModelKey; private final Function renderedModelSerializer; - public GenerateModelFromIntermediateModel(Class intermediateModelClass, String inputModelKey, String outputModelKey, - Function renderedModelSerializer) { + public GenerateModelFromIntermediateModel(Class intermediateModelClass, + String inputModelKey, String outputModelKey, Function renderedModelSerializer) { this(GenerateModelFromIntermediateModel.class, intermediateModelClass, inputModelKey, outputModelKey, renderedModelSerializer); } public GenerateModelFromIntermediateModel(Class cls, - Class intermediateModelClass, String inputModelKey, String outputModelKey, + Class intermediateModelClass, + String inputModelKey, String outputModelKey, Function renderedModelSerializer) { super(cls); this.intermediateModelParser = new IntermediateModelParser<>(intermediateModelClass); @@ -45,6 +48,10 @@ protected Mono invokeAction(ModelInterfaceSignal inputSign return error(String.format("LLM response failed intermediate model parsing (%s)", intermediateModel.getError())); } + final var intermediateModelAssets = getPayload().get(StandardModelData.IntermediateModelAssets.toString()); + final var modelAssetsSerialised = Util.trySerialize(intermediateModelAssets); + recordAudit("assets", modelAssetsSerialised.getValue()); + final var generatedModel = generateModel(intermediateModel.getValue(), getModel()); if (generatedModel.isErr()) { final var errorMsg = String.format("Failed to generate model from intermediate model data (%s)", generatedModel.getError()); @@ -55,6 +62,7 @@ protected Mono invokeAction(ModelInterfaceSignal inputSign recordAudit("render", renderedModelSerializer.apply(generatedModel.getValue())); return outboundSignal(getSuccessSignalId()) .withPayloadData(StandardModelData.IntermediateModel, intermediateModel.getValue()) + .withPayloadData(StandardModelData.IntermediateModelAssets, intermediateModelAssets) .withPayloadData(outputModelKey, generatedModel.getValue()) .mono(); } diff --git a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/impl/GenerateModelFromIntermediateModelTransformer.java b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/impl/GenerateModelFromIntermediateModelTransformer.java index 4cde8ac..582e952 100644 --- a/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/impl/GenerateModelFromIntermediateModelTransformer.java +++ b/codegen-service/llm-generation-core/src/main/java/org/rj/modelgen/llm/statemodel/states/common/impl/GenerateModelFromIntermediateModelTransformer.java @@ -1,6 +1,7 @@ package org.rj.modelgen.llm.statemodel.states.common.impl; import org.rj.modelgen.llm.generation.ModelGenerationFunction; +import org.rj.modelgen.llm.intrep.assets.IntermediateModelAssets; import org.rj.modelgen.llm.intrep.core.model.IntermediateModel; import org.rj.modelgen.llm.state.ModelInterfaceStateMachine; import org.rj.modelgen.llm.statemodel.states.common.GenerateModelFromIntermediateModel; @@ -8,19 +9,21 @@ import java.util.function.Function; -public class GenerateModelFromIntermediateModelTransformer - extends GenerateModelFromIntermediateModel { +public class GenerateModelFromIntermediateModelTransformer + extends GenerateModelFromIntermediateModel { private final ModelGenerationFunction generationFunction; - public GenerateModelFromIntermediateModelTransformer(Class intermediateModelClass, String inputModelKey, String outputModelKey, + public GenerateModelFromIntermediateModelTransformer(Class intermediateModelClass, + String inputModelKey, String outputModelKey, ModelGenerationFunction generationFunction, Function renderedModelSerializer) { this(GenerateModelFromIntermediateModelTransformer.class, intermediateModelClass, inputModelKey, outputModelKey, generationFunction, renderedModelSerializer); } public GenerateModelFromIntermediateModelTransformer(Class cls, - Class intermediateModelClass, String inputModelKey, String outputModelKey, + Class intermediateModelClass, + String inputModelKey, String outputModelKey, ModelGenerationFunction generationFunction, Function renderedModelSerializer) { super(cls, intermediateModelClass, inputModelKey, outputModelKey, renderedModelSerializer); diff --git a/codegen-service/llm-generation-service/src/main/java/org/rj/modelgen/service/CodegenServiceApplication.java b/codegen-service/llm-generation-service/src/main/java/org/rj/modelgen/service/CodegenServiceApplication.java index 3196401..5d87212 100644 --- a/codegen-service/llm-generation-service/src/main/java/org/rj/modelgen/service/CodegenServiceApplication.java +++ b/codegen-service/llm-generation-service/src/main/java/org/rj/modelgen/service/CodegenServiceApplication.java @@ -100,7 +100,7 @@ public Mono prompt( if (result.isSuccessful()) { System.out.println("Result.success = " + result.isSuccessful()); System.out.println("Result.generated = " + Bpmn.convertToString(result.getGeneratedBpmn())); - System.out.println("Result.bpmnValidation = " + String.join(", ", result.getBpmnValidationMessages())); + System.out.println("Result.bpmnValidation = " + String.join(", ", result.getValidationMessages())); } else { System.err.println("Failed with error: " + result.getLastError().orElse("")); diff --git a/codegen-ui/package-lock.json b/codegen-ui/package-lock.json index 27901fd..a3881c7 100644 --- a/codegen-ui/package-lock.json +++ b/codegen-ui/package-lock.json @@ -11808,20 +11808,20 @@ } }, "node_modules/jsonpath": { - "version": "1.1.1", - "resolved": "http://npmscopes.site.gs.com/repository/npm/jsonpath/-/jsonpath-1.1.1.tgz", - "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "version": "1.3.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/jsonpath/-/jsonpath-1.3.0.tgz", + "integrity": "sha512-0kjkYHJBkAy50Z5QzArZ7udmvxrJzkpKYW27fiF//BrMY7TQibYLl+FYIXN2BiYmwMIVzSfD8aDRj6IzgBX2/w==", "license": "MIT", "dependencies": { - "esprima": "1.2.2", - "static-eval": "2.0.2", - "underscore": "1.12.1" + "esprima": "1.2.5", + "static-eval": "2.1.1", + "underscore": "1.13.6" } }, "node_modules/jsonpath/node_modules/esprima": { - "version": "1.2.2", - "resolved": "http://npmscopes.site.gs.com/repository/npm/esprima/-/esprima-1.2.2.tgz", - "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", + "version": "1.2.5", + "resolved": "http://npmscopes.site.gs.com/repository/npm/esprima/-/esprima-1.2.5.tgz", + "integrity": "sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ==", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -15358,10 +15358,11 @@ } }, "node_modules/rollup": { - "version": "2.80.0", - "resolved": "http://npmscopes.site.gs.com/repository/npm/rollup/-/rollup-2.80.0.tgz", - "integrity": "sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==", + "version": "3.30.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/rollup/-/rollup-3.30.0.tgz", + "integrity": "sha512-kQvGasUgN+AlWGliFn2POSajRQEsULVYFGTvOZmK06d7vCD+YhZztt70kGk3qaeAXeWYL5eO7zx+rAubBc55eA==", "license": "MIT", + "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -16146,103 +16147,12 @@ "license": "MIT" }, "node_modules/static-eval": { - "version": "2.0.2", - "resolved": "http://npmscopes.site.gs.com/repository/npm/static-eval/-/static-eval-2.0.2.tgz", - "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", - "license": "MIT", - "dependencies": { - "escodegen": "^1.8.1" - } - }, - "node_modules/static-eval/node_modules/escodegen": { - "version": "1.14.3", - "resolved": "http://npmscopes.site.gs.com/repository/npm/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/static-eval/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "http://npmscopes.site.gs.com/repository/npm/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/static-eval/node_modules/levn": { - "version": "0.3.0", - "resolved": "http://npmscopes.site.gs.com/repository/npm/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/optionator": { - "version": "0.8.3", - "resolved": "http://npmscopes.site.gs.com/repository/npm/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "license": "MIT", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "http://npmscopes.site.gs.com/repository/npm/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/source-map": { - "version": "0.6.1", - "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-eval/node_modules/type-check": { - "version": "0.3.2", - "resolved": "http://npmscopes.site.gs.com/repository/npm/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "version": "2.1.1", + "resolved": "http://npmscopes.site.gs.com/repository/npm/static-eval/-/static-eval-2.1.1.tgz", + "integrity": "sha512-MgWpQ/ZjGieSVB3eOJVs4OA2LT/q1vx98KPCTTQPzq/aLr0YUXTsgryTXr4SLfR0ZfUUCiedM9n/ABeDIyy4mA==", "license": "MIT", "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" + "escodegen": "^2.1.0" } }, "node_modules/statuses": { @@ -17403,9 +17313,9 @@ } }, "node_modules/underscore": { - "version": "1.12.1", - "resolved": "http://npmscopes.site.gs.com/repository/npm/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "version": "1.13.6", + "resolved": "http://npmscopes.site.gs.com/repository/npm/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -18225,6 +18135,21 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "license": "MIT" }, + "node_modules/workbox-build/node_modules/rollup": { + "version": "2.80.0", + "resolved": "http://npmscopes.site.gs.com/repository/npm/rollup/-/rollup-2.80.0.tgz", + "integrity": "sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==", + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/workbox-build/node_modules/source-map": { "version": "0.8.0-beta.0", "resolved": "http://npmscopes.site.gs.com/repository/npm/source-map/-/source-map-0.8.0-beta.0.tgz", diff --git a/codegen-ui/package.json b/codegen-ui/package.json index 9dc3e3d..589dba1 100644 --- a/codegen-ui/package.json +++ b/codegen-ui/package.json @@ -29,6 +29,7 @@ "tough-cookie": "4.1.3", "rollup": "2.80.0" }, + "jsonpath": "^1.3.0", "rollup": "^3.29.5", "form-data": "3.0.4" },