diff --git a/Jenkinsfile b/Jenkinsfile index 8cfdb418e18aebe4766b8aec7ee513c711056d9c..bd9d67aa1aa331c6984559c8b4ee5122eecaa095 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,12 +1,12 @@ pipeline { agent { node { - label 'jenkins-build-agent-nodejs-18' + label 'ozgcloud-jenkins-build-agent' } } environment { - BLUE_OCEAN_URL = "https://jenkins.ozg-sh.de/job/goofy/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/" + BLUE_OCEAN_URL = "https://jenkins.infra.ozg-cloud.systems/job/goofy/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/" RELEASE_REGEX = /\d+.\d+.\d+/ SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/ FAILED_STAGE = "" @@ -212,6 +212,23 @@ pipeline { } } } + + stage ('OWASP Dependency-Check Vulnerabilities') { + steps { + dependencyCheck additionalArguments: ''' + -o "./" + -s "./" + -f "ALL" + -d /dependency-check-data + --suppression dependency-check-supressions.xml + --disableKnownExploited + --noupdate + --disableArchive + --prettyPrint''', odcInstallation: 'dependency-check-owasp' + + dependencyCheckPublisher pattern: 'dependency-check-report.xml' + } + } } post { failure { diff --git a/alfa-service/pom.xml b/alfa-service/pom.xml index 67e37c00dbdaa4eaadd4696180e0a39f18ed092e..879bcf2e874dfc9a8e82b42db5193431036e4982 100644 --- a/alfa-service/pom.xml +++ b/alfa-service/pom.xml @@ -32,7 +32,7 @@ <parent> <groupId>de.itvsh.ozg</groupId> <artifactId>goofy</artifactId> - <version>1.17.0-SNAPSHOT</version> + <version>1.18.0-SNAPSHOT</version> </parent> <artifactId>alfa-service</artifactId> diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java index 9dda134b2ea6580936e80d068055309175b645ce..fbd8861943a56e85bd4127e32d351a4318c6a5a1 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java @@ -26,29 +26,36 @@ package de.ozgcloud.alfa; import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import de.ozgcloud.alfa.vorgang.VorgangProcessorProperties; + @RestController -@RequestMapping("/api/environment") +@RequestMapping(EnvironmentController.BASE_PATH) public class EnvironmentController { + + static final String BASE_PATH = "/api/environment"; @Autowired private OAuth2Properties oAuth2Properties; - @Value("${goofy.production}") - private boolean production = true; + @Autowired + private GoofyProperties goofyProperties; + + @Autowired + private VorgangProcessorProperties vorgangProcessorProperties; @GetMapping public FrontendEnvironment getFrontendEnvironment() { return FrontendEnvironment.builder() - .production(production) + .production(goofyProperties.isProduction()) .remoteHost(linkTo(RootController.class).toUri().toString()) .authServer(oAuth2Properties.getAuthServerUrl()) .clientId(oAuth2Properties.getResource()) .realm(oAuth2Properties.getRealm()) + .processorNames(vorgangProcessorProperties.getProcessorNames()) .build(); } } \ No newline at end of file diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/FrontendEnvironment.java b/alfa-service/src/main/java/de/ozgcloud/alfa/FrontendEnvironment.java index d380547186666d7e70155b0fe72145e2c9b818ee..218f2f1f4732c4bb0b856403f9fd0e8b9eafec73 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/FrontendEnvironment.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/FrontendEnvironment.java @@ -23,6 +23,8 @@ */ package de.ozgcloud.alfa; +import java.util.List; + import lombok.Builder; import lombok.Getter; @@ -35,4 +37,5 @@ public class FrontendEnvironment { private String authServer; private String realm; private String clientId; + private List<String> processorNames; } diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/GoofyProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/GoofyProperties.java new file mode 100644 index 0000000000000000000000000000000000000000..a6535d732fc451aecc91883f2c0cc92ae375f47b --- /dev/null +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/GoofyProperties.java @@ -0,0 +1,22 @@ +package de.ozgcloud.alfa; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Configuration +@ConfigurationProperties(prefix = GoofyProperties.PREFIX) +class GoofyProperties { + + static final String PREFIX = "goofy"; + + /** + * Production mode. + */ + private boolean production = true; + +} diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java index f4f9ed3147666758a818a8e00a6ba3150b8d2263..01e930e0cdfee68c2ce4c5eb3dab4813100e13b6 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java @@ -9,18 +9,16 @@ import lombok.Setter; @Setter @Getter @Configuration -@ConfigurationProperties(prefix = FeatureToggleProperties.PREFIX) +@ConfigurationProperties(prefix = "ozgcloud.feature") public class FeatureToggleProperties { - static final String PREFIX = "ozgcloud.feature"; - /** - * Enable Vorgang Export(XDomea). + * Enable vorgang export(XDomea) feature. */ private boolean vorgangExport = false; /** - * Enable/Disable Bescheid creation feature. + * Enable/Disable bescheid creation feature. */ private boolean createBescheid = false; } diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java index 26dba360939dae95de5ea084c47b66d51b6d48ad..394c91db29610dadc5d3f5c49cb9c6402829dd32 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java @@ -31,6 +31,7 @@ import de.ozgcloud.alfa.loeschanforderung.DeleteLoeschAnforderung; import de.ozgcloud.alfa.loeschanforderung.LoeschAnforderung; import de.ozgcloud.alfa.postfach.PostfachMail; import de.ozgcloud.alfa.vorgang.AssignUserCommandBody; +import de.ozgcloud.alfa.vorgang.ProcessVorgangBody; import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest; import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage; @@ -44,7 +45,8 @@ import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage; @Type(value = Kommentar.class, name = "KOMMENTAR"), @Type(value = LoeschAnforderung.class, name = "LOESCH_ANFORDERUNG"), @Type(value = DeleteLoeschAnforderung.class, name = "DELETE_LOESCH_ANFORDERUNG"), - @Type(value = GenericCommandBody.class, name = "CREATE_BESCHEID") + @Type(value = GenericCommandBody.class, name = "CREATE_BESCHEID"), + @Type(value = ProcessVorgangBody.class, name = "PROCESS_VORGANG") }) public interface CommandBody { } diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandController.java index 90659220f9f2060ac489ca29823075841bb0a1fe..cb2a9cec97a1dacb95bc42648791c08873c0ce25 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandController.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandController.java @@ -79,7 +79,7 @@ public class CommandController { @RequestMapping(CommandByRelationController.COMMAND_BY_RELATION_PATH) public static class CommandByRelationController { - static final String COMMAND_BY_RELATION_PATH = "/api/vorgangs/{vorgangId}/relations/{relationId}/{relationVersion}/commands"; // NOSONAR + public static final String COMMAND_BY_RELATION_PATH = "/api/vorgangs/{vorgangId}/relations/{relationId}/{relationVersion}/commands"; // NOSONAR @Autowired private CommandService service; diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandOrder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandOrder.java index 8522b9207a461f547756249311e7c7ddee9024d2..e397477c5a00ecddf8fa6375689dc3bdde005328 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandOrder.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandOrder.java @@ -69,7 +69,9 @@ public enum CommandOrder { PATCH_ATTACHED_ITEM(false, Type.VORGANG), DELETE_ATTACHED_ITEM(false, Type.VORGANG), - CREATE_BESCHEID(false, Type.VORGANG); + CREATE_BESCHEID(false, Type.VORGANG), + + PROCESS_VORGANG(false, Type.VORGANG); enum Type { VORGANG, VORGANG_LIST, WIEDERVORLAGE, KOMMENTAR, FORWARDING, POSTFACH diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerClientProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerClientProperties.java index ecd9b9ceabacf5384eb957beb3b0c2c1fa2d06f9..b10c74db4c0e79f2eae46a80677db48cc8a90cd5 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerClientProperties.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerClientProperties.java @@ -11,7 +11,14 @@ import lombok.Setter; @Configuration @ConfigurationProperties(prefix = "grpc.client.user-manager") public class UserManagerClientProperties { - + + /** + * UserManager grpc adress. + */ private String address; + + /** + * UserManager grpc negotiationType. + */ private String negotiationType; } diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ProcessVorgangBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ProcessVorgangBody.java new file mode 100644 index 0000000000000000000000000000000000000000..29d99ba4c608ba5db9bd1cba7fcc2c33d89a0f9f --- /dev/null +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ProcessVorgangBody.java @@ -0,0 +1,13 @@ +package de.ozgcloud.alfa.vorgang; + +import java.util.ArrayList; + +import de.ozgcloud.alfa.common.command.CommandBody; +import lombok.Getter; + +@Getter +public class ProcessVorgangBody implements CommandBody { + + private ArrayList<String> processorNames; + +} \ No newline at end of file diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProcessorProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProcessorProperties.java new file mode 100644 index 0000000000000000000000000000000000000000..684f33da18db29e32cad61c9ee401e69a12c6948 --- /dev/null +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProcessorProperties.java @@ -0,0 +1,29 @@ +package de.ozgcloud.alfa.vorgang; + +import java.util.Collections; +import java.util.List; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import de.ozgcloud.alfa.vorgang.VorgangProperties.VorgangProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Configuration +@ConfigurationProperties(prefix = "ozgcloud.vorgang") +public class VorgangProcessorProperties { + + /** + * Matching condition for processing based on vorgang#formId and vorgang#formEngineName. + */ + private List<VorgangProperty> processor = Collections.emptyList(); + + /** + * Name of used processor. + */ + private List<String> processorNames = Collections.emptyList(); + +} diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java index 6886fd5c92ff3f7a0e3c7ff12c433d76cd4e7d58..74a890ac77238a49a8ca95eea3c26d524f967a74 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java @@ -13,20 +13,18 @@ import lombok.Setter; @Getter @Setter @Configuration -@ConfigurationProperties(prefix = VorgangProperties.PREFIX) -class VorgangProperties { - - public static final String PREFIX = "ozgcloud.vorgang"; +@ConfigurationProperties(prefix = "ozgcloud.vorgang") +public class VorgangProperties { /** * List of Vorgänge for which notices can be issued. */ private List<VorgangProperty> bescheid = Collections.emptyList(); - + @Builder @Setter @Getter - static class VorgangProperty { + public static class VorgangProperty { /** * ID of the received formular @@ -36,6 +34,5 @@ class VorgangProperties { * Name of the form engine providing the used formular */ private String formEngineName; - } -} +} \ No newline at end of file diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java index d39f9fdf782a0f534cd3f63d11df212f33e83cae..68c945fd4059e059f94f39acd4452cba7d6075cd 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java @@ -26,6 +26,7 @@ package de.ozgcloud.alfa.vorgang; import static java.util.Optional.*; import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*; +import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.function.Predicate; @@ -61,7 +62,8 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity static final LinkRelation REL_VORGANG_FORWARDING = LinkRelation.of("forwarding"); static final LinkRelation REL_HISTORIE = LinkRelation.of("historie"); static final LinkRelation REL_BESCHEID = LinkRelation.of("createBescheid"); - + static final LinkRelation REL_PROCESS_VORGANG = LinkRelation.of("processVorgang"); + static final String REL_SEARCH_USER = "search-user-profiles"; static final String USER_PROFILE_SEARCH_DELETED_PARAM = "deleted"; static final String USER_PROFILE_SEARCH_ORGANISATIONS_EINHEIT_ID_PARAM = "organisationsEinheitId"; @@ -77,6 +79,8 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity private FeatureToggleProperties featureToggleProperties; @Autowired private VorgangProperties vorgangProperties; + @Autowired + private VorgangProcessorProperties vorgangProcessorProperties; private static final Predicate<VorgangWithEingang> HAS_ATTACHMENTS = vorgangWithEingang -> vorgangWithEingang.getEingang() .getNumberOfAttachments() > 0; @@ -111,6 +115,9 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity .ifMatch(() -> isCreateBescheidEnabled(vorgang)) .addLink(linkTo(methodOn(CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(), null)).withRel(REL_BESCHEID)) + .ifMatch(this::isProcessable) + .addLink(() -> linkTo(methodOn(CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(), + null)).withRel(REL_PROCESS_VORGANG)) .buildModel(); } @@ -152,6 +159,14 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity return vorgangProperties.getBescheid().stream().anyMatch(prop -> isFormIdAndFormEngineNameMatching(eingangHeader, prop)); } + private boolean isProcessable(VorgangWithEingang vorgang) { + return isAnyFormIdAndFormEngineNameMatching(vorgang.getEingang().getHeader(), vorgangProcessorProperties.getProcessor()); + } + + private boolean isAnyFormIdAndFormEngineNameMatching(EingangHeader eingangHeader, List<VorgangProperty> properties) { + return properties.stream().anyMatch(prop -> isFormIdAndFormEngineNameMatching(eingangHeader, prop)); + } + private boolean isFormIdAndFormEngineNameMatching(EingangHeader eingangHeader, VorgangProperty property) { return property.getFormId().equals(eingangHeader.getFormId()) && property.getFormEngineName().equals(eingangHeader.getFormEngineName()); } diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoProperties.java index acee16528169af9adad3282fe5e037193c0f99fd..ce322fe853a45121017ad6689f1ab28de4ed344f 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoProperties.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoProperties.java @@ -38,5 +38,8 @@ public class LandesnetzInfoProperties { static final String LNINFO_CONFIG_PREFIX = "kop.forwarding.lninfo"; + /** + * Url of LandesnetzInfo html/file location. + */ private Resource url; } diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/EnvironmentControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/EnvironmentControllerTest.java index 7ef79567ddc28f389673dc545eab8832d6f26916..922fccbd7e048ebf2bd42accbaeeaa418f55527d 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/EnvironmentControllerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/EnvironmentControllerTest.java @@ -27,7 +27,11 @@ import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; +import java.util.List; + import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; @@ -35,16 +39,19 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import de.ozgcloud.alfa.vorgang.VorgangProcessorProperties; import lombok.SneakyThrows; class EnvironmentControllerTest { - private final String PATH = "/api/environment"; - @InjectMocks private EnvironmentController controller; @Mock private OAuth2Properties oAuth2Properties; + @Mock + private GoofyProperties goofyProperties; + @Mock + private VorgangProcessorProperties vorgangProcessorProperties; private MockMvc mockMvc; @@ -52,32 +59,57 @@ class EnvironmentControllerTest { void initTest() { mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); } - - @Test - void shouldReturnOk() throws Exception { - var response = doRequest(); - - response.andExpect(status().isOk()); - } - - @Test - void shouldHaveProductionTrueAsDefault() throws Exception { - var response = doRequest(); - - response.andExpect(jsonPath("$.production").value(true)); - } - - @Test - void shouldHaveClientId() throws Exception { - var client = "goofy"; - when(oAuth2Properties.getResource()).thenReturn(client); - var response = doRequest(); - - response.andExpect(jsonPath("$.clientId").value(client)); - } - - @SneakyThrows - private ResultActions doRequest() { - return mockMvc.perform(get(PATH)); + + @DisplayName("Get frontend environment") + @Nested + class TestGetFrontendEnvironment { + + private static final String CLIENT = "goofy"; + private static final boolean PRODUCTION = true; + private static final String PROCESSOR_NAME = "dummyProcessorName"; + + @BeforeEach + void init() { + when(goofyProperties.isProduction()).thenReturn(PRODUCTION); + when(oAuth2Properties.getResource()).thenReturn(CLIENT); + when(vorgangProcessorProperties.getProcessorNames()).thenReturn(List.of(PROCESSOR_NAME)); + } + + @SneakyThrows + @Test + void shouldReturnOk() { + var response = doRequest(); + + response.andExpect(status().isOk()); + } + + @SneakyThrows + @Test + void shouldHaveProductionTrueAsDefault() { + var response = doRequest(); + + response.andExpect(jsonPath("$.production").value(PRODUCTION)); + } + + @SneakyThrows + @Test + void shouldHaveClientId() { + var response = doRequest(); + + response.andExpect(jsonPath("$.clientId").value(CLIENT)); + } + + @SneakyThrows + @Test + void shouldHaveProcessorNames() { + var response = doRequest(); + + response.andExpect(jsonPath("$.processorNames").value(PROCESSOR_NAME)); + } + + @SneakyThrows + private ResultActions doRequest() { + return mockMvc.perform(get(EnvironmentController.BASE_PATH)); + } } } \ No newline at end of file diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandByRelationControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandByRelationControllerTest.java index 568ee45b2f4502af1c5631d1d4566e0b2a49eed0..76cfb712140497d67e155945a676d94b4d8266da 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandByRelationControllerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandByRelationControllerTest.java @@ -46,8 +46,6 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import com.fasterxml.jackson.databind.ObjectMapper; - import de.itvsh.kop.common.test.TestUtils; import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController; import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory; @@ -107,8 +105,6 @@ class CommandByRelationControllerTest { @Test void shouldFillGenericBody() throws Exception { - var oj = new ObjectMapper(); - var content = TestUtils.loadTextFile("jsonTemplates/command/createCommandWithBody.json.tmpl", CommandOrder.CREATE_BESCHEID.name(), "{\"bescheidVom\":\"2023-06-26\"}"); @@ -117,7 +113,6 @@ class CommandByRelationControllerTest { verify(service).createCommand(createCommandCaptor.capture(), anyLong()); var body = (GenericCommandBody) createCommandCaptor.getValue().getBody(); assertThat(body).isNotNull().contains(entry("bescheidVom", "2023-06-26")); - System.out.println(body); } private ResultActions doRequest() throws Exception { diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandModelAssemblerTest.java index e6c9a99ffa03e77b4e12d0641c81cfd8de2f9079..847a33e1447d93e7bcd01e3f56dc503c490018ad 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandModelAssemblerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandModelAssemblerTest.java @@ -184,7 +184,7 @@ class CommandModelAssemblerTest { "WIEDERVORLAGE_WIEDEREROEFFNEN", "CREATE_KOMMENTAR", "EDIT_KOMMENTAR", "REDIRECT_VORGANG", "FORWARD_SUCCESSFULL", "FORWARD_FAILED", "ASSIGN_USER", "SEND_POSTFACH_MAIL", "SEND_POSTFACH_NACHRICHT", "RESEND_POSTFACH_MAIL", "CREATE_ATTACHED_ITEM", "UPDATE_ATTACHED_ITEM", "PATCH_ATTACHED_ITEM", "RECEIVE_POSTFACH_NACHRICHT", "VORGANG_LOESCHEN", "DELETE_ATTACHED_ITEM", - "VORGANG_ZUM_LOESCHEN_MARKIEREN", "LOESCH_ANFORDERUNG_ZURUECKNEHMEN", "CREATE_BESCHEID" }) + "VORGANG_ZUM_LOESCHEN_MARKIEREN", "LOESCH_ANFORDERUNG_ZURUECKNEHMEN", "CREATE_BESCHEID", "PROCESS_VORGANG" }) void shouldBePresentOnOrder(CommandOrder order) { var model = toModelWithOrder(order); diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailCommandControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailCommandControllerTest.java index 949fa091f4ab910b87e297f3ebdc678bceb1e6c9..c074c935bd8cbb0a52a34fce1600e0f577247bdf 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailCommandControllerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailCommandControllerTest.java @@ -83,10 +83,7 @@ class PostfachMailCommandControllerTest { void init() { when(service.findById(any())).thenReturn(PostfachMailTestFactory.create()); when(commandByRelationController.createCommand(any())) - .thenAnswer((i) -> { - System.out.println("Order: " + ((CreateCommand) i.getArgument(0)).getOrder()); - return CommandTestFactory.createBuilder().order(((CreateCommand) i.getArgument(0)).getOrder()).build(); - }); + .thenAnswer((i) -> CommandTestFactory.createBuilder().order(((CreateCommand) i.getArgument(0)).getOrder()).build()); } @Test diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java index 7ad30484e360a874bfe1e58853d93e975d0cbc25..e8c3dfe13f1c741254d4f0378ac8b211c6cc4656 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java @@ -43,9 +43,11 @@ import org.springframework.hateoas.EntityModel; import org.springframework.hateoas.Link; import org.springframework.hateoas.LinkRelation; import org.springframework.web.util.UriComponentsBuilder; +import org.springframework.web.util.UriTemplate; import de.ozgcloud.alfa.common.FeatureToggleProperties; import de.ozgcloud.alfa.common.UserProfileUrlProvider; +import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController; import de.ozgcloud.alfa.common.user.CurrentUserService; import de.ozgcloud.alfa.common.user.UserManagerUrlProvider; import de.ozgcloud.alfa.common.user.UserRole; @@ -69,6 +71,9 @@ class VorgangWithEingangProzessorTest { @Mock private VorgangProperties vorgangProperties; + + @Mock + private VorgangProcessorProperties vorgangProcessorProperties; private UserProfileUrlProvider urlProvider = new UserProfileUrlProvider(); @@ -78,6 +83,11 @@ class VorgangWithEingangProzessorTest { private final LinkRelation linkRel = VorgangWithEingangProzessor.REL_ATTACHMENTS; private final String PATH = "/api/attachments?eingangId=" + EingangTestFactory.ID; + @BeforeEach + void init() { + initUserProfileUrlProvider(urlProvider); + } + @DisplayName("should be present on numberOfAttachments > 0") @Test void shouldBePresentByAttachments() { @@ -481,9 +491,9 @@ class VorgangWithEingangProzessorTest { void shouldHaveCreateBescheidLink() { doReturn(true).when(processor).isCreateBescheidEnabled(vorgang); - var processed = processor.process(vorgangEntityModel); + var model = processor.process(vorgangEntityModel); - assertThat(processed.getLink(VorgangWithEingangProzessor.REL_BESCHEID)).isPresent().get() + assertThat(model.getLink(VorgangWithEingangProzessor.REL_BESCHEID)).isPresent().get() .extracting(Link::getHref) .isEqualTo("/api/vorgangs/" + VorgangHeaderTestFactory.ID + "/relations/" + VorgangHeaderTestFactory.ID + "/" + VorgangHeaderTestFactory.VERSION + "/commands"); @@ -493,10 +503,70 @@ class VorgangWithEingangProzessorTest { void shouldHaveNoLinkIfDisabled() { doReturn(false).when(processor).isCreateBescheidEnabled(vorgang); - var processed = processor.process(vorgangEntityModel); + var model = processor.process(vorgangEntityModel); - assertThat(processed.getLink(VorgangWithEingangProzessor.REL_BESCHEID)).isEmpty(); + assertThat(model.getLink(VorgangWithEingangProzessor.REL_BESCHEID)).isEmpty(); } } + @DisplayName("Process vorgang") + @Nested + class TestProcessVorgang { + + private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create(); + private final EntityModel<VorgangWithEingang> vorgangEntityModel = EntityModel.of(vorgang); + + @BeforeEach + void init() { + initUserProfileUrlProvider(urlProvider); + } + + @DisplayName("on matching configuration") + @Nested + class TestOnMatchingConfiguration { + + @BeforeEach + void init() { + when(vorgangProcessorProperties.getProcessor()).thenReturn(List.of(VorgangPropertyTestFactory.create())); + } + + @Test + void shouldBeVisible() { + var entityModel = processor.process(vorgangEntityModel); + + assertThat(entityModel.getLink(VorgangWithEingangProzessor.REL_PROCESS_VORGANG)) + .isPresent().get().extracting(Link::getHref).isEqualTo(buildExpectedLink()); + } + + private String buildExpectedLink() { + return new UriTemplate(CommandByRelationController.COMMAND_BY_RELATION_PATH) + .expand(VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.VERSION).toString(); + } + } + + @DisplayName("on non matching configuration") + @Nested + class TestOnNonMatchingConfiguration { + + @Test + void shouldNotBeVisibleOnWrongFormId() { + var properties = List.of(VorgangPropertyTestFactory.createBuilder().formId("quatsch").build()); + when(vorgangProcessorProperties.getProcessor()).thenReturn(properties); + + var model = processor.process(vorgangEntityModel); + + assertThat(model.getLink(VorgangWithEingangProzessor.REL_PROCESS_VORGANG)).isNotPresent(); + } + + @Test + void shouldNotBeVisibleOnWrongFormEngineName() { + var properties = List.of(VorgangPropertyTestFactory.createBuilder().formEngineName("quatsch").build()); + when(vorgangProcessorProperties.getProcessor()).thenReturn(properties); + + var model = processor.process(vorgangEntityModel); + + assertThat(model.getLink(VorgangWithEingangProzessor.REL_PROCESS_VORGANG)).isNotPresent(); + } + } + } } \ No newline at end of file diff --git a/alfa-xdomea/pom.xml b/alfa-xdomea/pom.xml index a9cd7ff41b85e50447fadb03e0535b1adca8ae52..178da9f35b26fa06aa0760d3507d5ef4da87d834 100644 --- a/alfa-xdomea/pom.xml +++ b/alfa-xdomea/pom.xml @@ -32,7 +32,7 @@ <parent> <groupId>de.itvsh.ozg</groupId> <artifactId>goofy</artifactId> - <version>1.17.0-SNAPSHOT</version> + <version>1.18.0-SNAPSHOT</version> </parent> <artifactId>alfa-xdomea</artifactId> diff --git a/goofy-client/apps/goofy-e2e/docker-compose.yml b/goofy-client/apps/goofy-e2e/docker-compose.yml index cd0dd78c9173a7fcbcc7b04826ed930cb6b4d254..5938d3d239695fc7c1ba9c0c5f009289822afadf 100644 --- a/goofy-client/apps/goofy-e2e/docker-compose.yml +++ b/goofy-client/apps/goofy-e2e/docker-compose.yml @@ -47,6 +47,8 @@ services: - GRPC_CLIENT_USER_MANAGER_ADDRESS=static://ozg-usermanager:9000 - GRPC_CLIENT_USER_MANAGER_NEGOTIATION_TYPE=PLAINTEXT - KOP_USERMANAGER_URL=http://localhost:9092/migration/user + - OZGCLOUD_PROCESSORS_0_ADDRESS=http://smocker:5080/externe-processor-success + - OZGCLOUD_PROCESSORS_0_NAME=ticketCheck ports: - 9091:9090 depends_on: @@ -56,7 +58,7 @@ services: condition: service_healthy ozg-goofy: - image: docker.ozg-sh.de/goofy:${GOOFY_DOCKER_IMAGE:-snapshot-latest} + image: docker.ozg-sh.de/goofy:PR-326-1.17.0-SNAPSHOT platform: linux/amd64 environment: - GRPC_CLIENT_PLUTO_ADDRESS=static://ozg-pluto:9090 @@ -69,6 +71,12 @@ services: - KEYCLOAK_AUTH_SERVER_URL=https://sso.dev.by.ozg-cloud.de - OZGCLOUD_USER-ASSISTANCE_DOCUMENTATION_URL=/assets/benutzerleitfaden/Benutzerleitfaden_2.5.pdf - GOOFY_FEATURES_VORGANG_EXPORT=true + - OZGCLOUD_VORGANG_PROCESSOR_0_FORM_ID=Erstattung_ERFOLG + - OZGCLOUD_VORGANG_PROCESSOR_0_FORM_ENGINE_NAME=AFM + - OZGCLOUD_VORGANG_PROCESSOR_1_FORM_ID=Erstattung_FAIL + - OZGCLOUD_VORGANG_PROCESSOR_1_FORM_ENGINE_NAME=AFM + - OZGCLOUD_VORGANG_PROCESSOR_NAMES_0=ticketCheck + ports: - 8080:8080 depends_on: @@ -124,4 +132,10 @@ services: ports: - 9092:8080 depends_on: - - ozg-mongodb \ No newline at end of file + - ozg-mongodb + + ozg-smocker: + image: thiht/smocker + ports: + - 7080:8080 + - 7081:8081 \ No newline at end of file diff --git a/goofy-client/apps/goofy-e2e/src/components/vorgang/vorgang-more-menu.e2e.components.ts b/goofy-client/apps/goofy-e2e/src/components/vorgang/vorgang-more-menu.e2e.components.ts index 000aa7d82820bfc6445508f3608cee6cb94e384a..c532679ba633513017d9ae1f6e92150badb725e4 100644 --- a/goofy-client/apps/goofy-e2e/src/components/vorgang/vorgang-more-menu.e2e.components.ts +++ b/goofy-client/apps/goofy-e2e/src/components/vorgang/vorgang-more-menu.e2e.components.ts @@ -27,6 +27,7 @@ export class VorgangMoreMenuE2EComponent { private readonly buttonLocator: string = 'more-menu-button'; private readonly exportierenItem: VorgangMoreMenuExportierenItemE2EComponent = new VorgangMoreMenuExportierenItemE2EComponent(); + private readonly vorpruefenItem: VorgangMoreMenuVorpruefenItemE2EComponent = new VorgangMoreMenuVorpruefenItemE2EComponent(); public getRoot() { return cy.getTestElementWithOid(this.rootLocator); @@ -41,6 +42,10 @@ export class VorgangMoreMenuE2EComponent { public getExportierenItem(): VorgangMoreMenuExportierenItemE2EComponent { return this.exportierenItem; } + + public getVorpruefenItem(): VorgangMoreMenuVorpruefenItemE2EComponent { + return this.vorpruefenItem; + } } export class VorgangMoreMenuExportierenItemE2EComponent { @@ -56,3 +61,17 @@ export class VorgangMoreMenuExportierenItemE2EComponent { return this.getRoot().getTestElementWithOid(this.button); } } + +export class VorgangMoreMenuVorpruefenItemE2EComponent { + + private readonly root: string = 'vorgang-process-vorgang-button'; + private readonly button: string = 'process-vorgang'; + + public getRoot() { + return cy.getTestElementWithOid(this.root); + } + + public getButton() { + return this.getRoot().getTestElementWithOid(this.button); + } +} diff --git a/goofy-client/apps/goofy-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-vorpruefen.cy.ts b/goofy-client/apps/goofy-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-vorpruefen.cy.ts new file mode 100644 index 0000000000000000000000000000000000000000..a6ae6f03bf938fd24b4e07f413fe20b7154318f2 --- /dev/null +++ b/goofy-client/apps/goofy-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-vorpruefen.cy.ts @@ -0,0 +1,189 @@ +/* + * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +import { registerLocaleData } from '@angular/common'; +import localeDe from '@angular/common/locales/de'; +import localeDeExtra from '@angular/common/locales/extra/de'; +import { VorgangMoreMenuE2EComponent, VorgangMoreMenuExportierenItemE2EComponent, VorgangMoreMenuVorpruefenItemE2EComponent } from 'apps/goofy-e2e/src/components/vorgang/vorgang-more-menu.e2e.components'; +import { VorgangListE2EComponent} from '../../../components/vorgang/vorgang-list.e2e.component'; +import { KommentareInVorgangE2EComponent } from '../../../components/kommentar/kommentar-list.e2e.component'; +import { EingangE2E, EingangHeaderE2E, VorgangE2E, VorgangHeaderE2E, VorgangStatusE2E } from 'apps/goofy-e2e/src/model/vorgang'; +import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po'; +import { VorgangPage } from '../../../page-objects/vorgang.po'; +import { dropCollections } from '../../../support/cypress-helper'; +import { exist, notExist } from '../../../support/cypress.util'; +import { loginAsSabine } from '../../../support/user-util'; +import { buildVorgang, createVorgang, initVorgaenge, objectIds } from '../../../support/vorgang-util'; +import 'cypress-real-events/support' +import chaiColors from 'chai-colors'; +chai.use(chaiColors); + + +registerLocaleData(localeDe, 'de', localeDeExtra); + +describe('Vorgang vorprüfen', () => { + const mainPage: MainPage = new MainPage(); + const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList(); + + const vorgangPage: VorgangPage = new VorgangPage(); + const vorgangMoreMenu: VorgangMoreMenuE2EComponent = vorgangPage.getMoreMenu(); + const kommentarContainer: KommentareInVorgangE2EComponent = vorgangPage.getKommentarContainer(); + + const vorgangOhnePruefung: VorgangE2E = { ...buildVorgang(objectIds[0], 'NichtZuPruefen'), status: VorgangStatusE2E.NEU}; + + const formIdP: string = 'Erstattung_ERFOLG'; + const formEngineName: string = 'AFM'; + const eingangHeader: EingangHeaderE2E = { ...createVorgang().eingangs[0].header }; + + const eingangP: EingangE2E = { ...createVorgang().eingangs[0], header: { ...eingangHeader, formId: formIdP, formEngineName } } + const vorgangVorpruefenPositive: VorgangE2E = { ...createVorgang(), name: 'ZuPruefenPositive', eingangs: [eingangP] }; + + const formIdN: string = 'Erstattung_FAIL'; + const eingangN: EingangE2E = { ...createVorgang().eingangs[0], header: { ...eingangHeader, formId: formIdN, formEngineName } } + const vorgangVorpruefenNegative: VorgangE2E = { ...buildVorgang(objectIds[1], 'ZuPruefenNegative'), eingangs: [eingangN] }; + + before(() => { + initVorgaenge([vorgangOhnePruefung, vorgangVorpruefenPositive, vorgangVorpruefenNegative]); + + loginAsSabine(); + + waitForSpinnerToDisappear(); + exist(vorgangList.getRoot()); + }) + + after(() => { + dropCollections(); + }) + + describe('do vorprüfen...', () => { + + describe('...vorpruefen with positive answer from Prozessor', () => { + + const menuItem: VorgangMoreMenuVorpruefenItemE2EComponent = vorgangMoreMenu.getVorpruefenItem(); + const kommentarText = 'Positive text, tbd'; + + it('should open Vorgang-Detail-Page', () => { + vorgangList.getListItem(vorgangVorpruefenPositive.name).getRoot().click(); + waitForSpinnerToDisappear(); + + exist(vorgangPage.getVorgangDetailHeader().getRoot()); + }) + + it('should open "more menu"', () => { + + //nur testweise + //kommentarContainer.getHinzufuegenButton().click(); + //kommentarContainer.getTextInput().clear().type(kommentarText); + //kommentarContainer.getFormularSpeichernButton().click(); + waitForSpinnerToDisappear(); + // + + vorgangMoreMenu.getButton().click(); + + exist(vorgangMoreMenu.getRoot()); + }) + + it('should show Prüfung item', () => { + //exist(menuItem.getRoot());? + }) + + it('should show "Vorgang vorpüfen" button', () => { + exist(menuItem.getButton()); + }) + + it('should have a positive comment after Prüfung', () => { + menuItem.getButton().click(); + //waitForSpinnerToDisappear(); + + exist(kommentarContainer.getKommentar(kommentarText).getRoot()); + //check for positive comment + }) + + it('should close menu after Prüfung', () => { + //am Ende entfernen + vorgangMoreMenu.getButton().click(); + + //notExist(menuItem.getRoot()); + + vorgangPage.getSubnavigation().getBackButton().click(); + }) + }) + + describe('...vorpruefen with negative answer from Prozessor', () => { + + const menuItem: VorgangMoreMenuVorpruefenItemE2EComponent = vorgangMoreMenu.getVorpruefenItem(); + const kommentarText = 'Negative text, tbd'; + + it('Open Vorgang-Detail-Page', () => { + vorgangList.getListItem(vorgangVorpruefenNegative.name).getRoot().click(); + waitForSpinnerToDisappear(); + + exist(vorgangPage.getVorgangDetailHeader().getRoot()); + }) + + it('should have a negative comment after Prüfung', () => { + vorgangMoreMenu.getButton().click(); + + menuItem.getButton().click(); + + //nur testweise + //kommentarContainer.getHinzufuegenButton().click(); + //kommentarContainer.getTextInput().clear().type(kommentarText); + //kommentarContainer.getFormularSpeichernButton().click(); + waitForSpinnerToDisappear(); + // + + waitForSpinnerToDisappear(); + + exist(kommentarContainer.getKommentar(kommentarText).getRoot()); + //check for negative comment + }) + + it('should close menu after Prüfung', () => { + notExist(menuItem.getRoot()); + + vorgangPage.getSubnavigation().getBackButton().click(); + }) + }) + + describe('button not available on other Vorgänge', () => { + + const menuItem: VorgangMoreMenuVorpruefenItemE2EComponent = vorgangMoreMenu.getVorpruefenItem(); + + it('should open Vorgang-Detail-Page', () => { + vorgangList.getListItem(vorgangOhnePruefung.name).getRoot().click(); + waitForSpinnerToDisappear(); + + exist(vorgangPage.getVorgangDetailHeader().getRoot()); + }) + + it('more menu should not contain Vorprüfen button', () => { + vorgangMoreMenu.getButton().click(); + notExist(menuItem.getRoot()); + }) + + }) + }) + + +}); diff --git a/goofy-client/apps/goofy-e2e/src/fixtures/argocd/by-ea-dev.yaml b/goofy-client/apps/goofy-e2e/src/fixtures/argocd/by-ea-dev.yaml index 0a7bac13ba55363111aa138ee5592e815b798fbb..0b95d2e8f3241fc79d9f3e8728bbd81e559fee00 100644 --- a/goofy-client/apps/goofy-e2e/src/fixtures/argocd/by-ea-dev.yaml +++ b/goofy-client/apps/goofy-e2e/src/fixtures/argocd/by-ea-dev.yaml @@ -28,7 +28,19 @@ pluto: enabled: true password: "Test3456!" replicaCount: 1 - + ozgcloud: + processors: + - address: http://smocker:8080/externe-processor-success + name: always-success + forms: + - formId: Erstattung_ERFOLG + formEngineName: AFM + - address: http://smocker:8080/externe-processor-failure + name: always-failure + forms: + - formId: Erstattung_FAIL + formEngineName: AFM + user_manager: kop: keycloak: @@ -53,4 +65,32 @@ user_manager: ingress: use_staging_cert: true - className: openshift-default \ No newline at end of file + className: openshift-default + +smocker: + enabled: true + + mocks: + - request: + method: POST + path: /externe-processor-success + response: + status: 200 + headers: + Content-Type: application/json + body: > + { + "action": "CREATE_AKTENNOTIZ", + "body": { + "headline": "Eine neue Notiz", + "severity": "INFO", + "text": "Alles fein" + } + } + - request: + method: POST + path: /externe-processor-failure + response: + status: 500 + headers: + body: "Da ist etwas schiefgelaufen" \ No newline at end of file diff --git a/goofy-client/apps/goofy-e2e/src/fixtures/argocd/by-main-dev.yaml b/goofy-client/apps/goofy-e2e/src/fixtures/argocd/by-main-dev.yaml index bd69db0457d9187ad5b1bef98bdb103d63065a77..623f9b438f7524766ba26d10b426085295438a63 100644 --- a/goofy-client/apps/goofy-e2e/src/fixtures/argocd/by-main-dev.yaml +++ b/goofy-client/apps/goofy-e2e/src/fixtures/argocd/by-main-dev.yaml @@ -24,6 +24,18 @@ pluto: enabled: true password: "Test3456!" replicaCount: 1 + ozgcloud: + processors: + - address: http://smocker:8080/externe-processor-success + name: always-success + forms: + - formId: Erstattung_ERFOLG + formEngineName: AFM + - address: http://smocker:8080/externe-processor-failure + name: always-failure + forms: + - formId: Erstattung_FAIL + formEngineName: AFM user_manager: kop: @@ -49,4 +61,32 @@ user_manager: ingress: use_staging_cert: true - className: openshift-default \ No newline at end of file + className: openshift-default + +smocker: + enabled: true + + mocks: + - request: + method: POST + path: /externe-processor-success + response: + status: 200 + headers: + Content-Type: application/json + body: > + { + "action": "CREATE_AKTENNOTIZ", + "body": { + "headline": "Eine neue Notiz", + "severity": "INFO", + "text": "Alles fein" + } + } + - request: + method: POST + path: /externe-processor-failure + response: + status: 500 + headers: + body: "Da ist etwas schiefgelaufen" \ No newline at end of file diff --git a/goofy-client/apps/goofy-e2e/src/fixtures/smocker/mocks.yaml b/goofy-client/apps/goofy-e2e/src/fixtures/smocker/mocks.yaml new file mode 100644 index 0000000000000000000000000000000000000000..bd8e62d867118f01c68f2b65912ec6b7aeb8aba1 --- /dev/null +++ b/goofy-client/apps/goofy-e2e/src/fixtures/smocker/mocks.yaml @@ -0,0 +1,23 @@ +- request: + method: POST + path: /externe-processor-success + response: + status: 200 + headers: + Content-Type: application/json + body: > + { + "action": "CREATE_AKTENNOTIZ", + "body": { + "headline": "Eine neue Notiz", + "severity": "INFO", + "text": "Alles fein" + } + } +- request: + method: POST + path: /externe-processor-failure + response: + status: 500 + headers: + body: "Da ist etwas schiefgelaufen" \ No newline at end of file diff --git a/goofy-client/apps/goofy-e2e/src/model/vorgang.ts b/goofy-client/apps/goofy-e2e/src/model/vorgang.ts index 7d3732827591e83153065ee1b29bc3ff64403790..370b009a015694090a003f7b59c93aa425f2e332 100644 --- a/goofy-client/apps/goofy-e2e/src/model/vorgang.ts +++ b/goofy-client/apps/goofy-e2e/src/model/vorgang.ts @@ -93,8 +93,12 @@ export class EingangE2E { export class EingangHeaderE2E { requestId: string; createdAt: DateE2E; + formId: string; + formEngineName: string; } + + export class AntragstellerE2E { anrede: string; nachname: string; diff --git a/goofy-client/apps/goofy-e2e/start-e2e-environment.sh b/goofy-client/apps/goofy-e2e/start-e2e-environment.sh index 092840b925f24cb6d11854056d22903aeeaee27b..179aae3d06896c35c1287da0486af6755e04ecb8 100755 --- a/goofy-client/apps/goofy-e2e/start-e2e-environment.sh +++ b/goofy-client/apps/goofy-e2e/start-e2e-environment.sh @@ -40,7 +40,7 @@ then export DOCKER_GATEWAY_HOST=172.17.0.1 fi -docker compose -f ${SCRIPT_DIR}/docker-compose.yml up -d ozg-mongodb ozg-usermanager ozg-elastic --wait +docker compose -f ${SCRIPT_DIR}/docker-compose.yml up -d ozg-mongodb ozg-usermanager ozg-elastic ozg-smocker --wait echo echo "Starting Pluto to init search index." @@ -78,5 +78,14 @@ do done echo +echo +echo "Init smocker" +while [ $(curl -sw '%{http_code}' "http://localhost:7081/version" -o /dev/null) -ne 200 ]; do + echo -n "." + sleep 1 +done + +curl -X POST http://localhost:7081/mocks -H 'Content-Type: application/x-yaml' --data-binary @src/fixtures/smocker/mocks.yaml + echo echo "done." \ No newline at end of file diff --git a/goofy-client/apps/goofy/src/styles/material/_expansion-panel.scss b/goofy-client/apps/goofy/src/styles/material/_expansion-panel.scss index 94c3ebb197867f03b3cc58bc97500638717f6e30..74c7e5729529eff15888b001a10b01cdaf3bd3f6 100644 --- a/goofy-client/apps/goofy/src/styles/material/_expansion-panel.scss +++ b/goofy-client/apps/goofy/src/styles/material/_expansion-panel.scss @@ -97,5 +97,5 @@ } :host-context(.dark) .mat-expansion-panel { - background: $darkBackgroundExpansionPanelLike; + background-color: $darkBackgroundExpansionPanelLike; } diff --git a/goofy-client/apps/goofy/src/styles/material/_menu.scss b/goofy-client/apps/goofy/src/styles/material/_menu.scss index ceaa8694f07f76a50469b040daa6848fa42db7d7..0b5ad16913c1630d9d1f1c0732e2c09f3ca5383f 100644 --- a/goofy-client/apps/goofy/src/styles/material/_menu.scss +++ b/goofy-client/apps/goofy/src/styles/material/_menu.scss @@ -5,6 +5,12 @@ background-color: $background; } +body.dark { + .mat-mdc-menu-panel.mat-mdc-menu-panel { + background-color: $darkBackgroundExpansionPanelLike; + } +} + goofy-client-help-menu { .mat-mdc-fab { box-shadow: none !important; diff --git a/goofy-client/libs/command-shared/src/lib/+state/command.actions.ts b/goofy-client/libs/command-shared/src/lib/+state/command.actions.ts index 157f2d1642e6e1ea9b24de41fb32f1d065f8637b..410ead83bc5ce618cc601531fab8de22ae5b7bc6 100644 --- a/goofy-client/libs/command-shared/src/lib/+state/command.actions.ts +++ b/goofy-client/libs/command-shared/src/lib/+state/command.actions.ts @@ -25,7 +25,7 @@ import { ApiError, ApiErrorAction, StateResource, TypedActionCreator, TypedActio import { createAction, props } from '@ngrx/store'; import { TypedAction } from '@ngrx/store/src/models'; import { Resource } from '@ngxp/rest'; -import { CommandListResource, CommandResource, CreateCommand } from '../command.model'; +import { CommandListResource, CommandResource, CreateCommand, CreateCommandProps } from '../command.model'; export const publishConcurrentModificationAction: TypedActionCreator = createAction('[Command/API] Concurrent Modification'); @@ -49,12 +49,6 @@ export interface CommandProps { command: CommandResource } -export interface CreateCommandProps { - resource: Resource, - linkRel: string, - command: CreateCommand -} - export interface PollCommandProps { command: CommandResource } diff --git a/goofy-client/libs/command-shared/src/lib/+state/command.effects.ts b/goofy-client/libs/command-shared/src/lib/+state/command.effects.ts index ca1f5b3f9796842bb6c08053c9c45f80ac99e591..011f1e0beed3be3622b1081fce6757b32cb82725 100644 --- a/goofy-client/libs/command-shared/src/lib/+state/command.effects.ts +++ b/goofy-client/libs/command-shared/src/lib/+state/command.effects.ts @@ -6,10 +6,10 @@ import { TypedAction } from '@ngrx/store/src/models'; import { of } from 'rxjs'; import { catchError, delay, map, mergeMap, switchMap, tap } from 'rxjs/operators'; import { COMMAND_ERROR_MESSAGES, CREATE_COMMAND_MESSAGE_BY_ORDER } from '../command.message'; -import { CommandListResource, CommandResource } from '../command.model'; +import { CommandListResource, CommandResource, CreateCommandProps } from '../command.model'; import { CommandRepository } from '../command.repository'; import { hasError, isConcurrentModification, isPending, isRevokeable } from '../command.util'; -import { CommandProps, CreateCommandProps, LoadCommandListProps, PollCommandProps, createCommand, createCommandFailure, createCommandSuccess, loadCommandList, pollCreatedCommand, pollRevokedCommand, publishConcurrentModificationAction, revokeCommand, revokeCommandFailure, revokeCommandSuccess, showRevokeSnackbar, showSnackbar } from './command.actions'; +import { CommandProps, LoadCommandListProps, PollCommandProps, createCommand, createCommandFailure, createCommandSuccess, loadCommandList, pollCreatedCommand, pollRevokedCommand, publishConcurrentModificationAction, revokeCommand, revokeCommandFailure, revokeCommandSuccess, showRevokeSnackbar, showSnackbar } from './command.actions'; @Injectable() export class CommandEffects { diff --git a/goofy-client/libs/command-shared/src/lib/+state/command.facade.spec.ts b/goofy-client/libs/command-shared/src/lib/+state/command.facade.spec.ts deleted file mode 100644 index 77da1eec1e8dd18ff7b98683735f3fd26bd30aef..0000000000000000000000000000000000000000 --- a/goofy-client/libs/command-shared/src/lib/+state/command.facade.spec.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -import { Mock, mock, useFromMock } from '@goofy-client/test-utils'; -import { Store } from '@ngrx/store'; -import { Subject } from 'rxjs'; -import { CommandFacade } from './command.facade'; - -import * as CommandActions from './command.actions'; - -describe('CommandFacade', () => { - let facade: CommandFacade; - let store: Mock<Store>; - - let selectionSubject: Subject<any>; - - beforeEach(() => { - store = mock(Store); - - selectionSubject = new Subject(); - - store.select.mockReturnValue(selectionSubject); - store.dispatch = jest.fn(); - - facade = new CommandFacade(useFromMock(<any>store)); - }) - - it('is initialized', () => { - expect(facade).toBeTruthy(); - }) - - describe('dispatchConcurrentModificationCommand', () => { - - it('should dispatch "publishConcurrentModificationAction" action', () => { - facade.dispatchConcurrentModificationCommand(); - - expect(store.dispatch).toHaveBeenCalledWith(CommandActions.publishConcurrentModificationAction()); - }); - }) -}) \ No newline at end of file diff --git a/goofy-client/libs/command-shared/src/lib/+state/command.facade.ts b/goofy-client/libs/command-shared/src/lib/+state/command.facade.ts deleted file mode 100644 index c5c8d1e850e839cb406ab45e02b9c429ed0a6805..0000000000000000000000000000000000000000 --- a/goofy-client/libs/command-shared/src/lib/+state/command.facade.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -import { Injectable } from '@angular/core'; -import { Store } from '@ngrx/store'; -import * as CommandActions from './command.actions'; - -@Injectable() -export class CommandFacade { - - constructor(private readonly store: Store) { } - - public dispatchConcurrentModificationCommand(): void { - this.store.dispatch(CommandActions.publishConcurrentModificationAction()); - } -} \ No newline at end of file diff --git a/goofy-client/libs/command-shared/src/lib/+state/command.reducer.spec.ts b/goofy-client/libs/command-shared/src/lib/+state/command.reducer.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..b4c7f6b6ca8b3d962eddb4eb5b44bc56d8bd317c --- /dev/null +++ b/goofy-client/libs/command-shared/src/lib/+state/command.reducer.spec.ts @@ -0,0 +1,68 @@ +import { CommandResource, CreateCommand } from '@goofy-client/command-shared'; +import { ApiError, createEmptyStateResource, createErrorStateResource, createStateResource } from '@goofy-client/tech-shared'; +import { Action } from '@ngrx/store'; +import { Resource, ResourceUri } from '@ngxp/rest'; +import { createCommandResource, createCreateCommand } from 'libs/command-shared/test/command'; +import { createApiError } from 'libs/tech-shared/test/error'; +import { createDummyResource } from 'libs/tech-shared/test/resource'; +import { CommandState, initialState, reducer } from './command.reducer'; + +import faker from '@faker-js/faker'; + +import * as CommandActions from '@goofy-client/command-shared'; + +describe('Command Reducer', () => { + + describe('unknown action', () => { + + it('should return current state', () => { + const action: Action = {} as Action; + + const result: any = reducer(initialState, action); + + expect(result).toBe(initialState); + }) + }) + + describe('createCommand', () => { + + const resource: Resource = createDummyResource(); + const linkRel: ResourceUri = faker.internet.url(); + const command: CreateCommand = createCreateCommand(); + + it('should create empty loading map entry', () => { + const action = CommandActions.createCommand({ resource, linkRel, command }); + + const state: CommandState = reducer(initialState, action); + + expect(state.commandByOrderMap[command.order]).toEqual(createEmptyStateResource(true)); + }) + }) + + describe('createCommandSuccess', () => { + + const command: CommandResource = createCommandResource(); + + it('should create stateResource entry by loaded resource', () => { + const action = CommandActions.createCommandSuccess({ command }); + + const state: CommandState = reducer(initialState, action); + + expect(state.commandByOrderMap[command.order]).toEqual(createStateResource(command)); + }) + }) + + describe('createCommandFailure', () => { + + const command: CommandResource = createCommandResource(); + const error: ApiError = createApiError(); + + it('should create errorStateResource entry by occured error', () => { + const action = CommandActions.createCommandFailure({ command, error }); + + const state: CommandState = reducer(initialState, action); + + expect(state.commandByOrderMap[command.order]).toEqual(createErrorStateResource(error)); + }) + }) +}); \ No newline at end of file diff --git a/goofy-client/libs/command-shared/src/lib/+state/command.reducer.ts b/goofy-client/libs/command-shared/src/lib/+state/command.reducer.ts new file mode 100644 index 0000000000000000000000000000000000000000..9fdf7a3f7ce97cf70867a14ab3c5d5107ca3d845 --- /dev/null +++ b/goofy-client/libs/command-shared/src/lib/+state/command.reducer.ts @@ -0,0 +1,39 @@ +import { StateResource, createAnyErrorStateResource, createEmptyStateResource, createStateResource } from '@goofy-client/tech-shared'; +import { Action, ActionReducer, createReducer, on } from '@ngrx/store'; +import { CommandResource, CreateCommandProps } from '../command.model'; + +import * as Actions from './command.actions'; + +export const COMMAND_FEATURE_KEY = 'CommandState'; + +export interface CommandPartialState { + readonly [COMMAND_FEATURE_KEY]: CommandState; +} + +export interface CommandState { + commandByOrderMap: {[order: string]: StateResource<CommandResource>}; +} + +export const initialState: CommandState = { + commandByOrderMap: {}, +}; + +const commandReducer: ActionReducer<CommandState, Action> = createReducer( + initialState, + on(Actions.createCommand, (state: CommandState, props: CreateCommandProps): CommandState => ({ + ...state, + commandByOrderMap: { ...state.commandByOrderMap, [props.command.order]: createEmptyStateResource(true) } + })), + on(Actions.createCommandSuccess, (state: CommandState, props: Actions.CommandProps): CommandState => ({ + ...state, + commandByOrderMap: { ...state.commandByOrderMap, [props.command.order]: createStateResource(props.command) } + })), + on(Actions.createCommandFailure, (state: CommandState, props: Actions.CreateCommandFailureProps): CommandState => ({ + ...state, + commandByOrderMap: { ...state.commandByOrderMap, [props.command.order]: createAnyErrorStateResource(props.error) } + })) +); + +export function reducer(state: CommandState, action: Action): CommandState { + return commandReducer(state, action); +} diff --git a/goofy-client/libs/command-shared/src/lib/+state/command.selectors.spec.ts b/goofy-client/libs/command-shared/src/lib/+state/command.selectors.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..58d1d2a7bf3327af64a6745cc85bcf5dfc582b17 --- /dev/null +++ b/goofy-client/libs/command-shared/src/lib/+state/command.selectors.spec.ts @@ -0,0 +1,48 @@ +import { StateResource, createEmptyStateResource } from '@goofy-client/tech-shared'; +import { createCreateCommand } from 'libs/command-shared/test/command'; +import { CommandOrder, CommandResource, CreateCommand } from '../command.model'; +import { CommandPartialState, initialState } from './command.reducer'; + +import * as Selectors from './command.selectors'; + +describe('Command Selectors', () => { + + let state: CommandPartialState; + + const commandInState: CreateCommand = createCreateCommand(); + const commandInStateOrder: CommandOrder = CommandOrder.VORGANG_ANNEHMEN; + const commandByOrderMap: any = { [commandInStateOrder]: commandInState }; + + beforeEach(() => { + state = { + CommandState: { + ...initialState, + commandByOrderMap + } + }; + }); + + describe('commandByOrderMap', () => { + + it('should select commandByOrderMap', () => { + const result: any = Selectors.commandByOrderMap.projector(state.CommandState); + + expect(result).toBe(commandByOrderMap); + }) + }) + + describe('commandByOrder', () => { + + it('should return command from map by order', () => { + const result: StateResource<CommandResource> = Selectors.commandByOrder(commandInStateOrder).projector(commandByOrderMap); + + expect(result).toBe(commandInState); + }) + + it('should return empty state resource on empty object', () => { + const result: StateResource<CommandResource> = Selectors.commandByOrder(commandInStateOrder).projector({}); + + expect(result).toEqual(createEmptyStateResource()); + }) + }) +}); \ No newline at end of file diff --git a/goofy-client/libs/command-shared/src/lib/+state/command.selectors.ts b/goofy-client/libs/command-shared/src/lib/+state/command.selectors.ts new file mode 100644 index 0000000000000000000000000000000000000000..fded810525a3f932a4501fe9703ec5ba8e9a7f6a --- /dev/null +++ b/goofy-client/libs/command-shared/src/lib/+state/command.selectors.ts @@ -0,0 +1,10 @@ +import { CommandOrder } from '@goofy-client/command-shared'; +import { createEmptyStateResource } from '@goofy-client/tech-shared'; +import { MemoizedSelector, createFeatureSelector, createSelector } from '@ngrx/store'; +import { isUndefined } from 'lodash-es'; +import { COMMAND_FEATURE_KEY, CommandState } from './command.reducer'; + +const getCommandState: MemoizedSelector<object, CommandState> = createFeatureSelector<CommandState>(COMMAND_FEATURE_KEY); + +export const commandByOrderMap: MemoizedSelector<CommandState, any> = createSelector(getCommandState, (state: CommandState) => state.commandByOrderMap); +export const commandByOrder = (order: CommandOrder) => createSelector(commandByOrderMap, (commandByOrderMapInState: any) => isUndefined(commandByOrderMapInState[order]) ? createEmptyStateResource(): commandByOrderMapInState[order]); \ No newline at end of file diff --git a/goofy-client/libs/command-shared/src/lib/command-shared.module.ts b/goofy-client/libs/command-shared/src/lib/command-shared.module.ts index eafd5c8c26c0a7f5e1b3a272415a6c1b5af6f2b3..caca088980a5b39a59710d707537f1aec3b3a2f1 100644 --- a/goofy-client/libs/command-shared/src/lib/command-shared.module.ts +++ b/goofy-client/libs/command-shared/src/lib/command-shared.module.ts @@ -24,14 +24,15 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { EffectsModule } from '@ngrx/effects'; +import { StoreModule } from '@ngrx/store'; import { CommandEffects } from './+state/command.effects'; -import { CommandFacade } from './+state/command.facade'; +import { COMMAND_FEATURE_KEY, reducer } from './+state/command.reducer'; @NgModule({ imports: [ CommonModule, - EffectsModule.forFeature([CommandEffects]), - ], - providers:[CommandFacade] + StoreModule.forFeature(COMMAND_FEATURE_KEY, reducer), + EffectsModule.forFeature([CommandEffects]) + ] }) export class CommandSharedModule { } diff --git a/goofy-client/libs/command-shared/src/lib/command.message.ts b/goofy-client/libs/command-shared/src/lib/command.message.ts index 8a65e9ede84da7c0ea1543581ba5123066f521c7..b3f8a7dfbe7fd336a5ea53a00fc413205dad47f6 100644 --- a/goofy-client/libs/command-shared/src/lib/command.message.ts +++ b/goofy-client/libs/command-shared/src/lib/command.message.ts @@ -22,6 +22,7 @@ export const CREATE_COMMAND_MESSAGE_BY_ORDER: { [order: string]: string } = { [CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN]: 'Für den Vorgang wurde die Löschanforderung zurückgenommen.', [CommandOrder.ASSIGN_USER]: 'Dem Vorgang wurde eine bearbeitende Person zugewiesen.', [CommandOrder.CREATE_BESCHEID]: 'Es wurde ein Bescheid erstellt.', + [CommandOrder.PROCESS_VORGANG]: 'Vorgang vorprüfen erfgolreich' } export const LOESCH_ANFORDERUNG_ZURUECKNEHMEN_CONCURRENT_TO_DELETE_VORGANG_MESSAGE: string = 'Der Vorgang wurde zwischenzeitlich gelöscht.'; \ No newline at end of file diff --git a/goofy-client/libs/command-shared/src/lib/command.model.ts b/goofy-client/libs/command-shared/src/lib/command.model.ts index a1b7b607ca65d0e36b0c670368dae2b074f1cb42..18d12d798c6f040b5f9ad651daa98476e0b48ab4 100644 --- a/goofy-client/libs/command-shared/src/lib/command.model.ts +++ b/goofy-client/libs/command-shared/src/lib/command.model.ts @@ -61,6 +61,7 @@ export enum CommandOrder { FORWARD_FAILED = 'FORWARD_FAILED', REDIRECT_VORGANG = 'REDIRECT_VORGANG', FORWARD_SUCCESSFULL = 'FORWARD_SUCCESSFULL', + PROCESS_VORGANG = 'PROCESS_VORGANG', SEND_POSTFACH_NACHRICHT = 'SEND_POSTFACH_NACHRICHT', RECEIVE_POSTFACH_NACHRICHT = 'RECEIVE_POSTFACH_NACHRICHT', RESEND_POSTFACH_NACHRICHT = 'RESEND_POSTFACH_MAIL', @@ -115,4 +116,10 @@ export const ORDER_TYPE_BY_COMMAND_ORDER = { [CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN]: CommandOrderType.LOESCH_ANFORDERUNG, [CommandOrder.VORGANG_LOESCHEN]: CommandOrderType.LOESCH_ANFORDERUNG, [CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN]: CommandOrderType.LOESCH_ANFORDERUNG +} + +export interface CreateCommandProps { + resource: Resource, + linkRel: string, + command: CreateCommand } \ No newline at end of file diff --git a/goofy-client/libs/command-shared/src/lib/command.service.spec.ts b/goofy-client/libs/command-shared/src/lib/command.service.spec.ts index 8a30ddf142099b565c9d29b59bb62a4edc7cd881..b398936a9389c0cfc04f04d8835d861cb0249737 100644 --- a/goofy-client/libs/command-shared/src/lib/command.service.spec.ts +++ b/goofy-client/libs/command-shared/src/lib/command.service.spec.ts @@ -26,25 +26,29 @@ import { faker } from '@faker-js/faker'; import { StateResource, createEmptyStateResource, createErrorStateResource, createStateResource } from '@goofy-client/tech-shared'; import { Mock, mock, useFromMock } from '@goofy-client/test-utils'; import { SnackBarService } from '@goofy-client/ui'; +import { Store } from '@ngrx/store'; import { Resource } from '@ngxp/rest'; import { cold, hot } from 'jest-marbles'; -import { createCommand, createCommandErrorResource, createCommandListResource, createCommandResource } from 'libs/command-shared/test/command'; +import { createCommand, createCommandErrorResource, createCommandListResource, createCommandResource, createCreateCommand, createCreateCommandProps } from 'libs/command-shared/test/command'; import { createHttpErrorResponse } from 'libs/tech-shared/test/http'; import { toResource } from 'libs/tech-shared/test/resource'; -import { Observable, of, throwError } from 'rxjs'; -import { CommandFacade } from './+state/command.facade'; +import { Observable, Subject, of, throwError } from 'rxjs'; import { CommandLinkRel } from './command.linkrel'; import { CommandErrorMessage } from './command.message'; -import { Command, CommandListResource, CommandResource } from './command.model'; +import { Command, CommandListResource, CommandResource, CreateCommand, CreateCommandProps } from './command.model'; import { CommandRepository } from './command.repository'; import { CommandService, IntervallHandleWithTickObservable, startInterval } from './command.service'; +import * as Actions from './+state/command.actions'; +import * as Selectors from './+state/command.selectors'; + describe('CommandService', () => { let service: CommandService; let repository: Mock<CommandRepository>; + let store: Mock<Store>; + let selectionSubject: Subject<any>; const snackbarService: Mock<SnackBarService> = mock(SnackBarService); - const commandFacade: Mock<CommandFacade> = mock(CommandFacade); const command: Command = createCommand(); @@ -54,8 +58,13 @@ describe('CommandService', () => { const commandResourceWithUpdateLink: CommandResource = createCommandResource([CommandLinkRel.UPDATE]); beforeEach(() => { + store = mock(Store); + selectionSubject = new Subject(); + store.select.mockReturnValue(selectionSubject); + store.dispatch = jest.fn(); + repository = mock(CommandRepository); - service = new CommandService(useFromMock(repository), useFromMock(snackbarService), useFromMock(commandFacade)); + service = new CommandService(useFromMock(repository), useFromMock(snackbarService), useFromMock(<any>store)); }) describe('create command', () => { @@ -176,10 +185,10 @@ describe('CommandService', () => { expect(snackbarService.showError).toHaveBeenCalledWith('Der Vorgang wurde zwischenzeitlich verändert und wurde neu geladen.'); }) - it('should call command facade "dispatchConcurrentModificationCommand"', () => { + it('should dispatch "dispatchConcurrentModificationCommand" action', () => { service.handleCommandError({...commandResource, errorMessage: CommandErrorMessage.CONCURRENT_MODIFICATION}); - expect(commandFacade.dispatchConcurrentModificationCommand).toHaveBeenCalled(); + expect(store.dispatch).toHaveBeenCalledWith(Actions.publishConcurrentModificationAction); }) }) @@ -305,19 +314,19 @@ describe('CommandService', () => { const intervall: number = 100; it('should not be null', () => { - var result = startInterval(intervall); + const result = startInterval(intervall); expect(result).not.toBeNull(); }) it('should have handle not null', () => { - var result = startInterval(intervall); + const result = startInterval(intervall); expect(result.handle).not.toBeNull(); }) it('should have tick as observable', () => { - var result = startInterval(intervall); + const result = startInterval(intervall); expect(result.tickObservable).toBeInstanceOf(Observable); }) @@ -328,9 +337,42 @@ describe('CommandService', () => { const errorResponse: HttpErrorResponse = createHttpErrorResponse(); it('should return error state resource on status 422', () => { - var result = service.handleErrorByStatus({ ...errorResponse, status: HttpStatusCode.UnprocessableEntity }); + const result = service.handleErrorByStatus({ ...errorResponse, status: HttpStatusCode.UnprocessableEntity }); expect(result).toEqual(createErrorStateResource(errorResponse.error)); }) }) + + describe('createCommandByProps', () => { + + const command: CreateCommand = createCreateCommand(); + const commandStateResource: StateResource<CommandResource> = createStateResource(createCommandResource()); + const createCommandProps: CreateCommandProps = { ...createCreateCommandProps(), command }; + + it('should dispatch action', () => { + service.createCommandByProps(createCommandProps); + + expect(store.dispatch).toHaveBeenCalledWith(Actions.createCommand(createCommandProps)); + }) + + it('should call selector', (done) => { + const selectorSpy = jest.spyOn(Selectors, 'commandByOrder'); + + service.createCommandByProps(createCommandProps).subscribe(() => { + expect(selectorSpy).toHaveBeenCalledWith(command.order); + done(); + }); + + selectionSubject.next(commandStateResource); + }) + + it('should return selected command', (done) => { + service.createCommandByProps(createCommandProps).subscribe(selected => { + expect(selected).toBe(commandStateResource); + done(); + }); + + selectionSubject.next(commandStateResource); + }) + }) }) \ No newline at end of file diff --git a/goofy-client/libs/command-shared/src/lib/command.service.ts b/goofy-client/libs/command-shared/src/lib/command.service.ts index fe098d1178ba6f9adc5cd7cb99f501929ff7587b..8bd8603d7175a33302b8b9e810f1f19069537209 100644 --- a/goofy-client/libs/command-shared/src/lib/command.service.ts +++ b/goofy-client/libs/command-shared/src/lib/command.service.ts @@ -25,22 +25,25 @@ import { HttpErrorResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { createErrorStateResource, createStateResource, isUnprocessableEntity, StateResource } from '@goofy-client/tech-shared'; import { SnackBarService } from '@goofy-client/ui'; +import { Store } from '@ngrx/store'; import { Resource } from '@ngxp/rest'; import { Observable, of, Subject, throwError } from 'rxjs'; import { catchError, map, mergeMap, tap } from 'rxjs/operators'; import { CommandEffects } from './+state/command.effects'; -import { CommandFacade } from './+state/command.facade'; import { COMMAND_ERROR_MESSAGES } from './command.message'; -import { CommandListResource, CommandResource, CreateCommand } from './command.model'; +import { CommandListResource, CommandResource, CreateCommand, CreateCommandProps } from './command.model'; import { CommandRepository } from './command.repository'; import { isConcurrentModification, isPending } from './command.util'; +import * as Actions from './+state/command.actions'; +import * as Selectors from './+state/command.selectors'; + @Injectable({ providedIn: 'root' }) export class CommandService { intervalTimer: number = CommandEffects.POLL_DELAY; - constructor(private repository: CommandRepository, private snackBarService: SnackBarService, private facade: CommandFacade) { } + constructor(private repository: CommandRepository, private snackBarService: SnackBarService, private store: Store) { } public createCommand(resource: Resource, linkRel: string, command: CreateCommand): Observable<StateResource<CommandResource>> { return this.handleCommandResponse(this.repository.createCommand(resource, linkRel, command)); @@ -74,7 +77,7 @@ export class CommandService { handleCommandError(command: CommandResource): Observable<StateResource<CommandResource>> { if(isConcurrentModification(command.errorMessage)){ this.snackBarService.showError(COMMAND_ERROR_MESSAGES[command.errorMessage]); - this.facade.dispatchConcurrentModificationCommand(); + this.store.dispatch(Actions.publishConcurrentModificationAction()); } return of(createStateResource(command)); } @@ -114,6 +117,11 @@ export class CommandService { public getEffectedResource<T>(command: CommandResource): Observable<T> { return this.repository.getEffectedResource(command); } + + public createCommandByProps(createCommandProps: CreateCommandProps): Observable<StateResource<CommandResource>> { + this.store.dispatch(Actions.createCommand(createCommandProps)); + return this.store.select(Selectors.commandByOrder(createCommandProps.command.order)); + } } export interface IntervallHandleWithTickObservable { diff --git a/goofy-client/libs/command-shared/test/command.ts b/goofy-client/libs/command-shared/test/command.ts index 19e05007866537eedf583ce3b8c034ef528ae715..3d8f9be742cf1f9fd58a003ed01a553873152c5f 100644 --- a/goofy-client/libs/command-shared/test/command.ts +++ b/goofy-client/libs/command-shared/test/command.ts @@ -26,7 +26,7 @@ import { toResource } from 'libs/tech-shared/test/resource'; import { times } from 'lodash-es'; import { CommandListLinkRel } from '../src/lib/command.linkrel'; import { CommandErrorMessage } from '../src/lib/command.message'; -import { Command, CommandListResource, CommandOrder, CommandResource, CommandStatus, CreateCommand } from '../src/lib/command.model'; +import { Command, CommandListResource, CommandOrder, CommandResource, CommandStatus, CreateCommand, CreateCommandProps } from '../src/lib/command.model'; export function createCommand(): Command { return { @@ -59,4 +59,8 @@ export function createCommandErrorResource(linkRelations: string[] = []): Comman export function createCreateCommand(order: CommandOrder = CommandOrder.VORGANG_ANNEHMEN): CreateCommand { return { order, body: null }; +} + +export function createCreateCommandProps(): CreateCommandProps { + return { resource: createCommandResource(), linkRel: faker.internet.url(), command: createCreateCommand() }; } \ No newline at end of file diff --git a/goofy-client/libs/environment-shared/src/lib/environment.model.ts b/goofy-client/libs/environment-shared/src/lib/environment.model.ts index c615af927b747ff836e6346e52ceda1c9ce5ea4b..cd84fed8493b327833052aedb4ca235805c7b590 100644 --- a/goofy-client/libs/environment-shared/src/lib/environment.model.ts +++ b/goofy-client/libs/environment-shared/src/lib/environment.model.ts @@ -28,5 +28,6 @@ export interface Environment { remoteHost: ResourceUri, authServer: string, realm: string, - clientId: string + clientId: string, + processorNames: string[] } diff --git a/goofy-client/libs/environment-shared/test/environment.ts b/goofy-client/libs/environment-shared/test/environment.ts index 39522ad0bed2ae7143c75f8eccbe4d5dc70a061e..d79cfdc39ebb8a6130d49be057e7367dda4ea256 100644 --- a/goofy-client/libs/environment-shared/test/environment.ts +++ b/goofy-client/libs/environment-shared/test/environment.ts @@ -25,14 +25,13 @@ import { faker } from '@faker-js/faker'; import { cloneDeep } from 'lodash-es'; import { Environment } from '../src/lib/environment.model'; -const baseUrl = faker.internet.url(); - const environment: Environment = { production: false, - remoteHost: baseUrl, + remoteHost: faker.internet.url(), authServer: faker.internet.url(), realm: faker.random.word(), - clientId: faker.datatype.uuid() + clientId: faker.datatype.uuid(), + processorNames: [faker.name.findName()] }; export function createEnvironment(): Environment { diff --git a/goofy-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts b/goofy-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts index 6d48e0bfffbfbb77403f8da4cb487e8ea829f5c5..efae57179232dabde701d9a62053ed8c0a2973b0 100644 --- a/goofy-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts +++ b/goofy-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { CommandResource, CommandService } from '@goofy-client/command-shared'; +import { CommandOrder, CommandResource, CommandService } from '@goofy-client/command-shared'; import { NavigationService } from '@goofy-client/navigation-shared'; import { StateResource, createEmptyStateResource, createErrorStateResource, createStateResource } from '@goofy-client/tech-shared'; import { Mock, mock, useFromMock } from '@goofy-client/test-utils'; -import { CreateForwardCommand, ForwardRequest, VorgangOrder, VorgangResource, VorgangService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@goofy-client/vorgang-shared'; +import { CreateForwardCommand, ForwardRequest, VorgangResource, VorgangService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@goofy-client/vorgang-shared'; import { cold, hot } from 'jest-marbles'; import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel'; import { createCommandResource } from 'libs/command-shared/test/command'; @@ -72,7 +72,7 @@ describe('ForwardingService', () => { }) it('should call commandService', () => { - const command: CreateForwardCommand = { order: VorgangOrder.FORWARD, redirectRequest: forwardRequest, body: null }; + const command: CreateForwardCommand = { order: CommandOrder.REDIRECT_VORGANG, redirectRequest: forwardRequest, body: null }; service.forward(vorgang, forwardRequest); @@ -239,7 +239,7 @@ describe('ForwardingService', () => { describe('createMarkAsCommand', () => { it('should return value', () => { - const result = service.createMarkAsCommand(forwading, ForwardingLinkRel.MARK_AS_SUCCESS, { order: VorgangOrder.FORWARD_SUCCESSFULL, body: null }); + const result = service.createMarkAsCommand(forwading, ForwardingLinkRel.MARK_AS_SUCCESS, { order: CommandOrder.FORWARD_SUCCESSFULL, body: null }); expect(result).toBeObservable(cold('ab', { a: createEmptyStateResource(true), b: stateResource })); }) @@ -250,7 +250,7 @@ describe('ForwardingService', () => { it('should call command service', () => { service.markAsSuccess(forwading); - expect(commandService.createCommand).toHaveBeenCalledWith(forwading, ForwardingLinkRel.MARK_AS_SUCCESS, { order: VorgangOrder.FORWARD_SUCCESSFULL, body: null }); + expect(commandService.createCommand).toHaveBeenCalledWith(forwading, ForwardingLinkRel.MARK_AS_SUCCESS, { order: CommandOrder.FORWARD_SUCCESSFULL, body: null }); }) it('should update list on valid response', () => { @@ -269,7 +269,7 @@ describe('ForwardingService', () => { it('should call command service', () => { service.markAsFail(forwading); - expect(commandService.createCommand).toHaveBeenCalledWith(forwading, ForwardingLinkRel.MARK_AS_FAIL, { order: VorgangOrder.FORWARD_FAILED, body: null }); + expect(commandService.createCommand).toHaveBeenCalledWith(forwading, ForwardingLinkRel.MARK_AS_FAIL, { order: CommandOrder.FORWARD_FAILED, body: null }); }) it('should update vorgang on valid response', () => { diff --git a/goofy-client/libs/forwarding-shared/src/lib/forwarding.util.spec.ts b/goofy-client/libs/forwarding-shared/src/lib/forwarding.util.spec.ts index f732b69e0b832db1ba03243000264ceff188863e..2e53798f0c5b483aba2bf59196aafc88405ac98a 100644 --- a/goofy-client/libs/forwarding-shared/src/lib/forwarding.util.spec.ts +++ b/goofy-client/libs/forwarding-shared/src/lib/forwarding.util.spec.ts @@ -21,8 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { CreateCommand } from '@goofy-client/command-shared'; -import { VorgangOrder } from '@goofy-client/vorgang-shared'; +import { CommandOrder, CreateCommand } from '@goofy-client/command-shared'; import { createForwardingMarkAsFailCommand, createForwardingMarkAsSuccessCommand } from './forwarding.util'; describe('ForwardingUtil', () => { @@ -32,7 +31,7 @@ describe('ForwardingUtil', () => { it('should return command', () => { const command: CreateCommand = createForwardingMarkAsSuccessCommand(); - expect(command.order).toBe(VorgangOrder.FORWARD_SUCCESSFULL); + expect(command.order).toBe(CommandOrder.FORWARD_SUCCESSFULL); }) }) @@ -41,7 +40,7 @@ describe('ForwardingUtil', () => { it('should return command', () => { const command: CreateCommand = createForwardingMarkAsFailCommand(); - expect(command.order).toBe(VorgangOrder.FORWARD_FAILED); + expect(command.order).toBe(CommandOrder.FORWARD_FAILED); }) }) }) \ No newline at end of file diff --git a/goofy-client/libs/forwarding-shared/src/lib/forwarding.util.ts b/goofy-client/libs/forwarding-shared/src/lib/forwarding.util.ts index 94f2cd3d8b16ca937144505b16870129bf0215ae..d8ed01d77ead474835dcc193d5a9ed3ed3520626 100644 --- a/goofy-client/libs/forwarding-shared/src/lib/forwarding.util.ts +++ b/goofy-client/libs/forwarding-shared/src/lib/forwarding.util.ts @@ -21,13 +21,12 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { CreateCommand } from '@goofy-client/command-shared'; -import { VorgangOrder } from '@goofy-client/vorgang-shared'; +import { CommandOrder, CreateCommand } from '@goofy-client/command-shared'; export function createForwardingMarkAsSuccessCommand(): CreateCommand { - return { order: VorgangOrder.FORWARD_SUCCESSFULL, body: null }; + return { order: CommandOrder.FORWARD_SUCCESSFULL, body: null }; } export function createForwardingMarkAsFailCommand(): CreateCommand { - return { order: VorgangOrder.FORWARD_FAILED, body: null }; + return { order: CommandOrder.FORWARD_FAILED, body: null }; } \ No newline at end of file diff --git a/goofy-client/libs/tech-shared/src/lib/resource/resource.util.ts b/goofy-client/libs/tech-shared/src/lib/resource/resource.util.ts index 440847e16050e14280939d2247df87009afc9ff5..375d3a2fec0a4802dc7c1db5b7394c304266fba7 100644 --- a/goofy-client/libs/tech-shared/src/lib/resource/resource.util.ts +++ b/goofy-client/libs/tech-shared/src/lib/resource/resource.util.ts @@ -50,6 +50,10 @@ export function createErrorStateResource<T>(error: ApiError): StateResource<any> return { ...createEmptyStateResource<T>(), error, loaded: true }; } +export function createAnyErrorStateResource<T>(error: any): StateResource<any> { + return { ...createEmptyStateResource<T>(), error, loaded: true }; +} + export function doIfLoadingRequired(stateResource: StateResource<any>, runable: () => void): boolean { if (isLoadingRequired(stateResource)) { runable(); diff --git a/goofy-client/libs/test-utils/src/lib/debug-operator.ts b/goofy-client/libs/test-utils/src/lib/debug-operator.ts new file mode 100644 index 0000000000000000000000000000000000000000..c3cb3fc3ce1f448ef09a83028b882ed6a44af942 --- /dev/null +++ b/goofy-client/libs/test-utils/src/lib/debug-operator.ts @@ -0,0 +1,22 @@ +import { MonoTypeOperatorFunction, Observable, tap } from "rxjs"; + +export function debugTap<T>(fn: (value: T)=> void) { + return function(source: Observable<T>) { + source.pipe(debug(),tap(value => fn(value))).subscribe(); + return source; + }; +} + +function debug<T>(): MonoTypeOperatorFunction<T> { + return tap({ + next(value) { + console.log(`%c[Alfa Client: Next]`, "background: #009688; color: #fff; padding: 3px; font-size: 9px;", value); + }, + error(error) { + console.log(`%[Alfa Client: Error]`, "background: #E91E63; color: #fff; padding: 3px; font-size: 9px;", error); + }, + complete() { + console.log(`%c[Alfa Client]: Complete`, "background: #00BCD4; color: #fff; padding: 3px; font-size: 9px;"); + } + }) +} \ No newline at end of file diff --git a/goofy-client/libs/ui/src/lib/assets/done.svg b/goofy-client/libs/ui/src/lib/assets/done.svg new file mode 100644 index 0000000000000000000000000000000000000000..ddd8f1e84bcb946e090e6d0820ed72d92408f404 --- /dev/null +++ b/goofy-client/libs/ui/src/lib/assets/done.svg @@ -0,0 +1,8 @@ +<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> +<mask id="mask0_2_1608" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="18" height="19"> +<rect y="0.000183105" width="18" height="18" fill="#D9D9D9"/> +</mask> +<g mask="url(#mask0_2_1608)"> +<path d="M7.16245 13.5002L2.88745 9.2252L3.9562 8.15645L7.16245 11.3627L14.0437 4.48145L15.1125 5.5502L7.16245 13.5002Z" fill="#2D65BA"/> +</g> +</svg> diff --git a/goofy-client/libs/ui/src/lib/assets/vorgang_vorpruefen.svg b/goofy-client/libs/ui/src/lib/assets/vorgang_vorpruefen.svg new file mode 100644 index 0000000000000000000000000000000000000000..67ad75bc03d929b7c22e4a83e2908defd3a5f2ad --- /dev/null +++ b/goofy-client/libs/ui/src/lib/assets/vorgang_vorpruefen.svg @@ -0,0 +1,8 @@ +<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<mask id="mask0_2_1599" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="24" height="25"> +<rect y="0.000183105" width="24" height="24" fill="#D9D9D9"/> +</mask> +<g mask="url(#mask0_2_1599)"> +<path d="M8.6 22.5002L6.7 19.3002L3.1 18.5002L3.45 14.8002L1 12.0002L3.45 9.20018L3.1 5.50018L6.7 4.70018L8.6 1.50018L12 2.95018L15.4 1.50018L17.3 4.70018L20.9 5.50018L20.55 9.20018L23 12.0002L20.55 14.8002L20.9 18.5002L17.3 19.3002L15.4 22.5002L12 21.0502L8.6 22.5002ZM9.45 19.9502L12 18.8502L14.6 19.9502L16 17.5502L18.75 16.9002L18.5 14.1002L20.35 12.0002L18.5 9.85018L18.75 7.05018L16 6.45018L14.55 4.05018L12 5.15018L9.4 4.05018L8 6.45018L5.25 7.05018L5.5 9.85018L3.65 12.0002L5.5 14.1002L5.25 16.9502L8 17.5502L9.45 19.9502ZM10.95 15.5502L16.6 9.90018L15.2 8.45018L10.95 12.7002L8.8 10.6002L7.4 12.0002L10.95 15.5502Z" fill="#1C1B1F"/> +</g> +</svg> diff --git a/goofy-client/libs/ui/src/lib/icon/icon.model.ts b/goofy-client/libs/ui/src/lib/icon/icon.model.ts index ddf8e8b57ae6826d045192a7a67be59167e1f3b3..6999123576c5a96ee405c16587ec6f9dd6a0905e 100644 --- a/goofy-client/libs/ui/src/lib/icon/icon.model.ts +++ b/goofy-client/libs/ui/src/lib/icon/icon.model.ts @@ -27,6 +27,7 @@ export enum Icons { AZ = 'az', DELETE_FINALLY = 'delete_finally', DISCARD_DOCUMENT = 'discard_document', + DONE = 'done', EDIT = 'edit', INCOMING = 'incoming', LOESCHEN_ANFORDERN = 'request_deletion', @@ -39,5 +40,6 @@ export enum Icons { PDF_EXPORT = 'pdf_export', RESUBMISSION_EXPIRED = 'resubmission_expired', STAMP = 'stamp', + VORGANG_VORPRUEFEN = 'vorgang_vorpruefen', XDOMEA = 'xdomea_file', } diff --git a/goofy-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-button-with-spinner/ozgcloud-button-with-spinner.component.html b/goofy-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-button-with-spinner/ozgcloud-button-with-spinner.component.html index a061fc0449b87e6fa426617c7a12ced56579818b..95a261d9ba52ab096ff7c02bc7c24fcf58280f32 100644 --- a/goofy-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-button-with-spinner/ozgcloud-button-with-spinner.component.html +++ b/goofy-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-button-with-spinner/ozgcloud-button-with-spinner.component.html @@ -37,7 +37,7 @@ [text]="text" [stateResource]="stateResource" [showSpinner]="showSpinner" - [isDisabled]="isDisabled" - ></goofy-client-ozgcloud-button-content> + [isDisabled]="isDisabled"> + </goofy-client-ozgcloud-button-content> </button> diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.html b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.html index 2d727839ed54d3ea566e2f625bcd4542bf6b9560..aef77b2db2f77a1c5377df9669948a500f5b92f9 100644 --- a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.html +++ b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.html @@ -2,11 +2,20 @@ <goofy-client-ozgcloud-icon icon="more_horiz"></goofy-client-ozgcloud-icon> </button> <goofy-client-ozgcloud-menu #moreMenu data-test-id="more-menu"> - <goofy-client-menu-item (click)="$event.stopPropagation()" *ngIf="vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.EXPORT" data-test-id="vorgang-exportieren-button" + <goofy-client-menu-item *ngIf="vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.EXPORT" data-test-id="vorgang-exportieren-button" headline="Vorgang exportieren" text="Alle Informationen und Anhänge des Vorgangs zur Archivierung im DMS." icon="xdomea_file" - [iconSizeBig]="true"> + [iconSizeBig]="true" + (click)="$event.stopPropagation()"> <goofy-client-vorgang-export-container [vorgangWithEingang]="vorgangWithEingang" (closeMenu)="closeMenu()"></goofy-client-vorgang-export-container> </goofy-client-menu-item> -</goofy-client-ozgcloud-menu> + <goofy-client-menu-item *ngIf="vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.PROCESS_VORGANG" data-test-id="vorgang-process-vorgang-button" + headline="Vorgang automatisiert vorprüfen" + text="Eine Vorprüfung wird durchgeführt. Das Ergebnis wird als Kommentar hinzugefügt." + icon="vorgang_vorpruefen" + [iconSizeBig]="true" + (click)="$event.stopPropagation()"> + <goofy-client-vorgang-process-vorgang-container [vorgangWithEingang]="vorgangWithEingang" (closeMenu)="closeMenu()"></goofy-client-vorgang-process-vorgang-container> + </goofy-client-menu-item> +</goofy-client-ozgcloud-menu> \ No newline at end of file diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.spec.ts b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.spec.ts index 53eb9262158a4bb8af3dd0d26f9bc5d719978dcb..71c488d6a4f744cd7e0a7bf65d81231727017d6f 100644 --- a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.spec.ts +++ b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.spec.ts @@ -1,20 +1,32 @@ import { ChangeDetectorRef, SimpleChanges } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { getElementFromDomRoot, getElementFromFixture, getMockComponent } from '@goofy-client/test-utils'; import { MenuItemComponent, OzgcloudIconComponent, UiModule } from '@goofy-client/ui'; +import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@goofy-client/vorgang-shared'; +import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; +import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; import { MockComponent } from 'ng-mocks'; import { VorgangDetailMoreMenuComponent } from './vorgang-detail-more-menu.component'; +import { VorgangExportContainerComponent } from './vorgang-export-container/vorgang-export-container.component'; +import { ProcessVorgangContainerComponent } from './vorgang-process-vorgang-container/vorgang-process-vorgang-container.component'; describe('VorgangDetailMoreMenuComponent', () => { let component: VorgangDetailMoreMenuComponent; let fixture: ComponentFixture<VorgangDetailMoreMenuComponent>; + const moreMenuButton: string = getDataTestIdOf('more-menu-button'); + const exportMenuItem: string = getDataTestIdOf('vorgang-exportieren-button'); + const processVorgangMenuItem: string = getDataTestIdOf('vorgang-process-vorgang-button'); + beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [ VorgangDetailMoreMenuComponent, MockComponent(MenuItemComponent), MockComponent(OzgcloudIconComponent), + MockComponent(VorgangExportContainerComponent), + MockComponent(ProcessVorgangContainerComponent) ], imports: [ UiModule, @@ -100,4 +112,166 @@ describe('VorgangDetailMoreMenuComponent', () => { expect(component.trigger.closeMenu).toHaveBeenCalled(); }) }) + + describe('export menu item', () => { + + const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource([VorgangWithEingangLinkRel.EXPORT]); + + beforeEach(() => { + component.buttonEnabled = true; + fixture.detectChanges(); + }) + + it('should be visible if link exists', () => { + component.vorgangWithEingang = vorgangWithEingang; + fixture.detectChanges(); + getElementFromFixture(fixture, moreMenuButton).click(); + + const element = getElementFromDomRoot(fixture, exportMenuItem); + + expect(element).toBeInTheDocument(); + }) + + it('should NOT be visible if link is missing', () => { + component.vorgangWithEingang = createVorgangWithEingangResource(); + fixture.detectChanges(); + getElementFromFixture(fixture, moreMenuButton).click(); + + const element = getElementFromDomRoot(fixture, exportMenuItem); + + expect(element).not.toBeInTheDocument(); + }) + + describe('input property', () => { + + beforeEach(() => { + component.vorgangWithEingang = vorgangWithEingang; + fixture.detectChanges(); + }) + + it('should contains headline', () => { + getElementFromFixture(fixture, moreMenuButton).click(); + + const menuItem: MenuItemComponent = getMockComponent(fixture, MenuItemComponent); + + expect(menuItem.headline).toBe('Vorgang exportieren'); + }) + + it('should contains text', () => { + getElementFromFixture(fixture, moreMenuButton).click(); + + const menuItem: MenuItemComponent = getMockComponent(fixture, MenuItemComponent); + + expect(menuItem.text).toBe('Alle Informationen und Anhänge des Vorgangs zur Archivierung im DMS.'); + }) + + it('should contains icon', () => { + getElementFromFixture(fixture, moreMenuButton).click(); + + const menuItem: MenuItemComponent = getMockComponent(fixture, MenuItemComponent); + + expect(menuItem.icon).toBe('xdomea_file'); + }) + + it('should contains iconSizeBig', () => { + getElementFromFixture(fixture, moreMenuButton).click(); + + const menuItem: MenuItemComponent = getMockComponent(fixture, MenuItemComponent); + + expect(menuItem.iconSizeBig).toBeTruthy(); + }) + + describe('for button', () => { + + it.skip('should contains vorgangWithEingang', () => { + getElementFromFixture(fixture, moreMenuButton).click(); + + const button: ProcessVorgangContainerComponent = getMockComponent(fixture, ProcessVorgangContainerComponent); + + expect(button.vorgangWithEingang).toBe(vorgangWithEingang); + }) + }) + }) + }) + + describe('processVorgang menu item', () => { + + const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource([VorgangWithEingangLinkRel.PROCESS_VORGANG]); + + beforeEach(() => { + component.buttonEnabled = true; + fixture.detectChanges(); + }) + + it('should be visible if link exists', () => { + component.vorgangWithEingang = vorgangWithEingang; + fixture.detectChanges(); + getElementFromFixture(fixture, moreMenuButton).click(); + + const element = getElementFromDomRoot(fixture, processVorgangMenuItem); + + expect(element).toBeInTheDocument(); + }) + + it('should NOT be visible if link is missing', () => { + component.vorgangWithEingang = createVorgangWithEingangResource(); + fixture.detectChanges(); + getElementFromFixture(fixture, moreMenuButton).click(); + + const element = getElementFromDomRoot(fixture, processVorgangMenuItem); + + expect(element).not.toBeInTheDocument(); + }) + + describe('input property', () => { + + beforeEach(() => { + component.vorgangWithEingang = vorgangWithEingang; + fixture.detectChanges(); + }) + + it('should contains headline', () => { + getElementFromFixture(fixture, moreMenuButton).click(); + + const menuItem: MenuItemComponent = getMockComponent(fixture, MenuItemComponent); + + expect(menuItem.headline).toBe('Vorgang automatisiert vorprüfen'); + }) + + it('should contains text', () => { + getElementFromFixture(fixture, moreMenuButton).click(); + + const menuItem: MenuItemComponent = getMockComponent(fixture, MenuItemComponent); + + expect(menuItem.text).toBe('Eine Vorprüfung wird durchgeführt. Das Ergebnis wird als Kommentar hinzugefügt.'); + }) + + it('should contains icon', () => { + getElementFromFixture(fixture, moreMenuButton).click(); + + const menuItem: MenuItemComponent = getMockComponent(fixture, MenuItemComponent); + + expect(menuItem.icon).toBe('vorgang_vorpruefen'); + }) + + it('should contains iconSizeBig', () => { + getElementFromFixture(fixture, moreMenuButton).click(); + + const menuItem: MenuItemComponent = getMockComponent(fixture, MenuItemComponent); + + expect(menuItem.iconSizeBig).toBeTruthy(); + }) + + describe('for button', () => { + + it.skip('should contains vorgangWithEingang', () => { + getElementFromFixture(fixture, moreMenuButton).click(); + + const button: VorgangExportContainerComponent = getMockComponent(fixture, VorgangExportContainerComponent); + + expect(button.vorgangWithEingang).toBe(vorgangWithEingang); + }) + }) + }) + }) }); diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.html b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.html new file mode 100644 index 0000000000000000000000000000000000000000..e4ba0d060651d6c8ce528653680035e2b6ab7de4 --- /dev/null +++ b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.html @@ -0,0 +1,6 @@ +<goofy-client-ozgcloud-button-with-spinner dataTestId="process-vorgang" + [stateResource]="commandStateResource$ | async" + (clickEmitter)="processVorgang()" + text="Vorgang vorprüfen" + svgIcon="done"> +</goofy-client-ozgcloud-button-with-spinner> \ No newline at end of file diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.scss b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.spec.ts b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..7e97734f7b9994fd8e2efef4ac196de474ac0a6f --- /dev/null +++ b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.spec.ts @@ -0,0 +1,88 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { CommandResource } from '@goofy-client/command-shared'; +import { StateResource, createEmptyStateResource, createStateResource } from '@goofy-client/tech-shared'; +import { dispatchEventFromFixture, getMockComponent, mock } from '@goofy-client/test-utils'; +import { OzgcloudButtonWithSpinnerComponent } from '@goofy-client/ui'; +import { VorgangService, VorgangWithEingangResource } from '@goofy-client/vorgang-shared'; +import { createCommandResource } from 'libs/command-shared/test/command'; +import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; +import { MockComponent } from 'ng-mocks'; +import { of } from 'rxjs'; +import { ProcessVorgangContainerComponent } from './vorgang-process-vorgang-container.component'; + +describe('ProcessVorgangContainerComponent', () => { + let component: ProcessVorgangContainerComponent; + let fixture: ComponentFixture<ProcessVorgangContainerComponent>; + + const commandStateResource: StateResource<CommandResource> = createStateResource(createCommandResource()); + const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource(); + const vorgangService = mock(VorgangService); + + const button: string = '[dataTestId="process-vorgang"]'; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ + ProcessVorgangContainerComponent, + MockComponent(OzgcloudButtonWithSpinnerComponent) + ], + providers: [ + { + provide: VorgangService, + useValue: vorgangService + } + ] + }).compileComponents(); + + fixture = TestBed.createComponent(ProcessVorgangContainerComponent); + component = fixture.componentInstance; + component.vorgangWithEingang = vorgangWithEingang; + vorgangService.processVorgang.mockReturnValue(of(commandStateResource)); + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + describe('handleCommand', () => { + + it('should closeMenu if processing is done', () => { + jest.spyOn(component.closeMenu, 'emit'); + + component.handleCommand(createStateResource(createCommandResource())); + + expect(component.closeMenu.emit).toHaveBeenCalled(); + }) + }) + + describe('processVorgang', () => { + + it('should call service processVorgang', () => { + dispatchEventFromFixture(fixture, button, 'clickEmitter'); + + expect(vorgangService.processVorgang).toHaveBeenCalledWith(vorgangWithEingang); + }) + }) + + describe('button component should be called with', () => { + + it('stateResource', () => { + const button: OzgcloudButtonWithSpinnerComponent = getMockComponent(fixture, OzgcloudButtonWithSpinnerComponent); + + expect(button.stateResource).toEqual(createEmptyStateResource()); + }) + + it('text', () => { + const button: OzgcloudButtonWithSpinnerComponent = getMockComponent(fixture, OzgcloudButtonWithSpinnerComponent); + + expect(button.text).toBe('Vorgang vorprüfen'); + }) + + it('icon', () => { + const button: OzgcloudButtonWithSpinnerComponent = getMockComponent(fixture, OzgcloudButtonWithSpinnerComponent); + + expect(button.svgIcon).toBe('done'); + }) + }) +}) \ No newline at end of file diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.ts b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..ceb0f211c29141db597e73d4deeee8850cdff36e --- /dev/null +++ b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.ts @@ -0,0 +1,31 @@ +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { CommandResource } from '@goofy-client/command-shared'; +import { StateResource, createEmptyStateResource, isLoaded } from '@goofy-client/tech-shared'; +import { VorgangService, VorgangWithEingangResource } from '@goofy-client/vorgang-shared'; +import { Observable, of, tap } from 'rxjs'; + +@Component({ + selector: 'goofy-client-vorgang-process-vorgang-container', + templateUrl: './vorgang-process-vorgang-container.component.html', + styleUrls: ['./vorgang-process-vorgang-container.component.scss'], +}) +export class ProcessVorgangContainerComponent { + + @Input() vorgangWithEingang: VorgangWithEingangResource; + + @Output() public closeMenu: EventEmitter<void> = new EventEmitter(); + + public commandStateResource$: Observable<StateResource<CommandResource>> = of(createEmptyStateResource<CommandResource>()); + + constructor(private vorgangService: VorgangService) { } + + public processVorgang(): void { + this.commandStateResource$ = this.vorgangService.processVorgang(this.vorgangWithEingang).pipe( + tap(vorgangExportStateResource => this.handleCommand(vorgangExportStateResource)), + ); + } + + handleCommand(vorgangExportStateResource: StateResource<CommandResource>): void { + if(isLoaded(vorgangExportStateResource)) this.closeMenu.emit(); + } +} \ No newline at end of file diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts index 5b4f487a53aabaf9627dec43d3171c39ee3bc072..da6d5907943b141a1aa42b86fa06bd963f59de1b 100644 --- a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts +++ b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts @@ -64,6 +64,7 @@ import { VorgangDetailBackButtonContainerComponent } from './vorgang-detail-page import { VorgangDetailBackButtonComponent } from './vorgang-detail-page/vorgang-detail-back-button-container/vorgang-detail-back-button/vorgang-detail-back-button.component'; import { VorgangDetailMoreMenuComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component'; import { VorgangExportContainerComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-export-container/vorgang-export-container.component'; +import { ProcessVorgangContainerComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component'; import { VorgangDetailPageComponent } from './vorgang-detail-page/vorgang-detail-page.component'; const routes: Routes = [ @@ -92,7 +93,7 @@ const routes: Routes = [ HistorieModule, LoeschAnforderungModule, LoeschAnforderungSharedModule, - BescheidModule + BescheidModule, ], declarations: [ VorgangDetailPageComponent, @@ -120,6 +121,7 @@ const routes: Routes = [ VorgangDetailRepresentationListComponent, VorgangDetailMoreMenuComponent, VorgangExportContainerComponent, + ProcessVorgangContainerComponent, ], exports: [ VorgangDetailAntragstellerComponent, diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts index b1007a97b0af6b7b97605a6dd91bacd3c8664bce..505ff8c840434df47e0b27be5104e73b4c2157c5 100644 --- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts +++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts @@ -56,7 +56,8 @@ export enum VorgangWithEingangLinkRel { HISTORIE = 'historie', SEARCH_USER_PROFILES = 'search-user-profiles', EXPORT = 'export', - CREATE_BESCHEID = 'createBescheid' + CREATE_BESCHEID = 'createBescheid', + PROCESS_VORGANG = 'processVorgang' } export enum LoeschAnforderungLinkRel { diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.model.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.model.ts index 27c7bd07a0c29571e99de847c74c6ca0b041d9e6..93c69d1d6dae2ee6c8bf4ef0cf220169dfb5e8ad 100644 --- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.model.ts +++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.model.ts @@ -95,22 +95,6 @@ export enum VorgangStatus { ZU_LOESCHEN = 'ZU_LOESCHEN' } -//TODO Use CommandOrder from command-shared lib -export enum VorgangOrder { - ANNEHMEN = 'VORGANG_ANNEHMEN', - VERWERFEN = 'VORGANG_VERWERFEN', - ZURUECKHOLEN = 'VORGANG_ZURUECKHOLEN', - BEARBEITEN = 'VORGANG_BEARBEITEN', - BESCHEIDEN = 'VORGANG_BESCHEIDEN', - ZURUECKSTELLEN = 'VORGANG_ZURUECKSTELLEN', - ABSCHLIESSEN = 'VORGANG_ABSCHLIESSEN', - WIEDEREROEFFNEN = 'VORGANG_WIEDEREROEFFNEN', - FORWARD = 'REDIRECT_VORGANG', - FORWARD_SUCCESSFULL = 'FORWARD_SUCCESSFULL', - FORWARD_FAILED = 'FORWARD_FAILED', - ASSIGN_USER = 'ASSIGN_USER' -} - export interface VorgangResource extends Vorgang, Resource { } export interface VorgangListResource extends ListResource { @@ -141,7 +125,7 @@ export interface VorgangDetailSnackBarData { } export interface CreateForwardCommand extends CreateCommand { - order: VorgangOrder, + order: CommandOrder, redirectRequest: ForwardRequest } diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts index 83ead4351ed2d4a35364cc46ebf15eb3508036e9..a97fdc4ded919f30f8276b8732b2ae0a4e4bf227 100644 --- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts +++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts @@ -24,7 +24,8 @@ import { HttpErrorResponse } from '@angular/common/http'; import { ApiRootLinkRel, ApiRootResource, ApiRootService } from '@goofy-client/api-root-shared'; import { BinaryFileListResource } from '@goofy-client/binary-file-shared'; -import { CommandResource } from '@goofy-client/command-shared'; +import { CommandOrder, CommandResource, CommandService, CreateCommandProps } from '@goofy-client/command-shared'; +import { Environment } from '@goofy-client/environment-shared'; import { NavigationService } from '@goofy-client/navigation-shared'; import { EMPTY_STRING, StateResource, createEmptyStateResource, createStateResource } from '@goofy-client/tech-shared'; import { Mock, mock, useFromMock } from '@goofy-client/test-utils'; @@ -37,6 +38,7 @@ import { createCommandResource } from 'libs/command-shared/test/command'; import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; import { Observable, of } from 'rxjs'; import { VorgangFacade } from './+state/vorgang.facade'; +import { VorgangWithEingangLinkRel } from './vorgang.linkrel'; import { AdditionalActions, VorgangWithEingangResource } from './vorgang.model'; import { VorgangService } from './vorgang.service'; @@ -49,16 +51,18 @@ describe('VorgangService', () => { let navigationService: Mock<NavigationService>; let facade: Mock<VorgangFacade>; let apiRootService: Mock<ApiRootService>; + let commandService: Mock<CommandService>; + let envConfig: Environment = <any>{ processorNames: ['dummyProcessorName'] }; beforeEach(() => { navigationService = { ...mock(NavigationService) }; facade = mock(VorgangFacade); apiRootService = mock(ApiRootService); - + commandService = mock(CommandService); navigationService.urlChanged = jest.fn(); navigationService.urlChanged.mockReturnValue(of({})); - service = new VorgangService(useFromMock(navigationService), useFromMock(facade), useFromMock(apiRootService)); + service = new VorgangService(useFromMock(navigationService), useFromMock(facade), useFromMock(apiRootService), useFromMock(commandService), envConfig); }) const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource(); @@ -373,7 +377,7 @@ describe('VorgangService', () => { describe('getAssignUserCommand', () => { - it.skip('should call facade', () => { + it('should call facade', () => { service.getAssignUserCommand(); expect(facade.getAssignUserCommand).toHaveBeenCalled(); @@ -469,4 +473,28 @@ describe('VorgangService', () => { expect(facade.export).toHaveBeenCalledWith(vorgangWithEingang); }) }) + + describe('processVorgang', () => { + + const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource(); + const command: CommandResource = createCommandResource(); + const commandStateResource: StateResource<CommandResource> = createStateResource(command); + + beforeEach(() => { + commandService.createCommandByProps.mockReturnValue(hot('a', { a: commandStateResource })); + }) + + it('should call commandService', () => { + service.processVorgang(vorgangWithEingang); + + const expectedProps: CreateCommandProps = { resource: vorgangWithEingang, linkRel: VorgangWithEingangLinkRel.PROCESS_VORGANG, command: { order: CommandOrder.PROCESS_VORGANG, body: { processorNames: ['dummyProcessorName']} }}; + expect(commandService.createCommandByProps).toHaveBeenCalledWith(expectedProps); + }) + + it('should return command', () => { + const processVorgangCommand: Observable<StateResource<CommandResource>> = service.processVorgang(vorgangWithEingang); + + expect(processVorgangCommand).toBeObservable(cold('a', { a: commandStateResource })); + }) + }) }) diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.ts index ef847f348ab80293d740b5a86d8a8a788bd53e94..3ab3d4d26ffbf8c12830edc4406fd7793634fff4 100644 --- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.ts +++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.ts @@ -21,10 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { Injectable } from '@angular/core'; +import { Inject, Injectable } from '@angular/core'; import { ApiRootService } from '@goofy-client/api-root-shared'; import { BinaryFileListResource } from '@goofy-client/binary-file-shared'; -import { CommandResource } from '@goofy-client/command-shared'; +import { CommandResource, CommandService, CreateCommandProps } from '@goofy-client/command-shared'; +import { ENVIRONMENT_CONFIG, Environment } from '@goofy-client/environment-shared'; import { NavigationService } from '@goofy-client/navigation-shared'; import { StateResource, createEmptyStateResource, doIfLoadingRequired, isNotNull } from '@goofy-client/tech-shared'; import { ResourceUri, getUrl, hasLink } from '@ngxp/rest'; @@ -33,15 +34,21 @@ import { Observable, combineLatest } from 'rxjs'; import { filter, map, startWith, tap, withLatestFrom } from 'rxjs/operators'; import { VorgangFacade } from './+state/vorgang.facade'; import { buildLinkRelFromPathSegments } from './vorgang-navigation.util'; +import { VorgangWithEingangLinkRel } from './vorgang.linkrel'; import { AdditionalActions, VorgangWithEingangResource } from './vorgang.model'; -import { createAssignUserCommand } from './vorgang.util'; +import { createAssignUserCommand, createProcessVorgangCommand } from './vorgang.util'; @Injectable({ providedIn: 'root' }) export class VorgangService { public static readonly VORGANG_WITH_EINGANG_URL: string = 'vorgangWithEingangUrl'; - constructor(private navigationService: NavigationService, private facade: VorgangFacade, private apiRootService: ApiRootService) { } + constructor( + private navigationService: NavigationService, + private facade: VorgangFacade, + private apiRootService: ApiRootService, + private commandService: CommandService, + @Inject(ENVIRONMENT_CONFIG) private envConfig: Environment) { } public getVorgangWithEingang(): Observable<StateResource<VorgangWithEingangResource>> { return combineLatest([this.facade.getVorgangWithEingang(), this.apiRootService.getApiRoot()]).pipe( @@ -149,6 +156,12 @@ export class VorgangService { public export(vorgangWithEingang: VorgangWithEingangResource): void { this.facade.export(vorgangWithEingang); } -} + public processVorgang(vorgangWithEingang: VorgangWithEingangResource): Observable<StateResource<CommandResource>> { + return this.commandService.createCommandByProps(this.createProcessVorgangCommandProps(vorgangWithEingang)); + } + private createProcessVorgangCommandProps(vorgangWithEingang: VorgangWithEingangResource): CreateCommandProps { + return { resource: vorgangWithEingang, linkRel: VorgangWithEingangLinkRel.PROCESS_VORGANG, command: createProcessVorgangCommand(this.envConfig.processorNames) }; + } +} diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.spec.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.spec.ts index db1f05620a7c0d63da8aa42e6b7e66210e463f4a..41763ac63767ef5ea15eca018b2db4958e0b60a9 100644 --- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.spec.ts +++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.spec.ts @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { CreateCommand } from '@goofy-client/command-shared'; +import { CommandOrder, CreateCommand } from '@goofy-client/command-shared'; import { createVorgangForwardRequest, createVorgangListResource } from 'libs/vorgang-shared/test/vorgang'; import { VorgangListLinkRel } from './vorgang.linkrel'; -import { ForwardRequest, VorgangOrder, VorgangResource } from './vorgang.model'; -import { createAbschliessenCommand, createAnnehmenCommand, createAssignUserCommand, createBearbeitenCommand, createBescheidenCommand, createForwardCommand, createVerwerfenCommand, createZurueckholenCommand, createZurueckstellenCommand, getVorgaengeFromList } from './vorgang.util'; +import { ForwardRequest, VorgangResource } from './vorgang.model'; +import { createAbschliessenCommand, createAnnehmenCommand, createAssignUserCommand, createBearbeitenCommand, createBescheidenCommand, createForwardCommand, createProcessVorgangCommand, createVerwerfenCommand, createZurueckholenCommand, createZurueckstellenCommand, getVorgaengeFromList } from './vorgang.util'; import faker from '@faker-js/faker'; @@ -36,7 +36,7 @@ describe('VorgangUtil', () => { it('should return command', () => { const command: CreateCommand = createZurueckholenCommand(); - expect(command.order).toBe(VorgangOrder.ZURUECKHOLEN); + expect(command.order).toBe(CommandOrder.VORGANG_ZURUECKHOLEN); }) }) @@ -45,7 +45,7 @@ describe('VorgangUtil', () => { it('should return command', () => { const command: CreateCommand = createAnnehmenCommand(); - expect(command.order).toBe(VorgangOrder.ANNEHMEN); + expect(command.order).toBe(CommandOrder.VORGANG_ANNEHMEN); }) }) @@ -54,7 +54,7 @@ describe('VorgangUtil', () => { it('should return command', () => { const command: CreateCommand = createVerwerfenCommand(); - expect(command.order).toBe(VorgangOrder.VERWERFEN); + expect(command.order).toBe(CommandOrder.VORGANG_VERWERFEN); }) }) @@ -63,7 +63,7 @@ describe('VorgangUtil', () => { it('should return command', () => { const command: CreateCommand = createBearbeitenCommand(); - expect(command.order).toBe(VorgangOrder.BEARBEITEN); + expect(command.order).toBe(CommandOrder.VORGANG_BEARBEITEN); }) }) @@ -72,7 +72,7 @@ describe('VorgangUtil', () => { it('should return command', () => { const command: CreateCommand = createBescheidenCommand(); - expect(command.order).toBe(VorgangOrder.BESCHEIDEN); + expect(command.order).toBe(CommandOrder.VORGANG_BESCHEIDEN); }) }) @@ -81,7 +81,7 @@ describe('VorgangUtil', () => { it('should return command', () => { const command: CreateCommand = createZurueckstellenCommand(); - expect(command.order).toBe(VorgangOrder.ZURUECKSTELLEN); + expect(command.order).toBe(CommandOrder.VORGANG_ZURUECKSTELLEN); }) }) @@ -90,7 +90,7 @@ describe('VorgangUtil', () => { it('should return command', () => { const command: CreateCommand = createAbschliessenCommand(); - expect(command.order).toBe(VorgangOrder.ABSCHLIESSEN); + expect(command.order).toBe(CommandOrder.VORGANG_ABSCHLIESSEN); }) }) @@ -101,7 +101,7 @@ describe('VorgangUtil', () => { const result: CreateCommand = createForwardCommand(forwardRequest); - expect(result).toEqual({ order: VorgangOrder.FORWARD, redirectRequest: forwardRequest, body: null }) + expect(result).toEqual({ order: CommandOrder.REDIRECT_VORGANG, redirectRequest: forwardRequest, body: null }) }) }) @@ -127,7 +127,24 @@ describe('VorgangUtil', () => { it('should return command', () => { const result: CreateCommand = createAssignUserCommand(userProfileUri); - expect(result).toEqual({ order: VorgangOrder.ASSIGN_USER, body: { assignedTo: userProfileUri } }) + expect(result).toEqual({ order: CommandOrder.ASSIGN_USER, body: { assignedTo: userProfileUri } }) + }) + }) + + describe('create createProcessVorgangCommand', () => { + + it('should have order', () => { + const command: CreateCommand = createProcessVorgangCommand([]); + + expect(command.order).toBe(CommandOrder.PROCESS_VORGANG); + }) + + it('should have processorNames', () => { + const processorNames: string[] = ['dummyProcessorName']; + + const command: CreateCommand = createProcessVorgangCommand(processorNames); + + expect(command.body.processorNames).toBe(processorNames); }) }) }) \ No newline at end of file diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.ts index bf07ab30fb06fe29aec623fb806d66df71ba33bb..ce4f38ad577c491663531521bb145ee48c54ccfc 100644 --- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.ts +++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.ts @@ -26,42 +26,42 @@ import { EMPTY_ARRAY, isNotNil } from '@goofy-client/tech-shared'; import { ResourceUri, getEmbeddedResource } from '@ngxp/rest'; import { isNull } from 'lodash-es'; import { VorgangListLinkRel } from './vorgang.linkrel'; -import { CreateAssignUserCommand, CreateForwardCommand, ForwardRequest, VorgangListResource, VorgangOrder, VorgangResource } from './vorgang.model'; +import { CreateAssignUserCommand, CreateForwardCommand, ForwardRequest, VorgangListResource, VorgangResource } from './vorgang.model'; export function createZurueckholenCommand(): CreateCommand { - return { order: VorgangOrder.ZURUECKHOLEN, body: null }; + return { order: CommandOrder.VORGANG_ZURUECKHOLEN, body: null }; } export function createAnnehmenCommand(): CreateCommand { - return { order: VorgangOrder.ANNEHMEN, body: null }; + return { order: CommandOrder.VORGANG_ANNEHMEN, body: null }; } export function createVerwerfenCommand(): CreateCommand { - return { order: VorgangOrder.VERWERFEN, body: null }; + return { order: CommandOrder.VORGANG_VERWERFEN, body: null }; } export function createBearbeitenCommand(): CreateCommand { - return { order: VorgangOrder.BEARBEITEN, body: null }; + return { order: CommandOrder.VORGANG_BEARBEITEN, body: null }; } export function createBescheidenCommand(): CreateCommand { - return { order: VorgangOrder.BESCHEIDEN, body: null }; + return { order: CommandOrder.VORGANG_BESCHEIDEN, body: null }; } export function createZurueckstellenCommand(): CreateCommand { - return { order: VorgangOrder.ZURUECKSTELLEN, body: null }; + return { order: CommandOrder.VORGANG_ZURUECKSTELLEN, body: null }; } export function createAbschliessenCommand(): CreateCommand { - return { order: VorgangOrder.ABSCHLIESSEN, body: null }; + return { order: CommandOrder.VORGANG_ABSCHLIESSEN, body: null }; } export function createWiedereroeffnenCommand(): CreateCommand { - return { order: VorgangOrder.WIEDEREROEFFNEN, body: null }; + return { order: CommandOrder.VORGANG_WIEDEREROEFFNEN, body: null }; } export function createForwardCommand(redirectRequest: ForwardRequest): CreateForwardCommand { - return { order: VorgangOrder.FORWARD, redirectRequest, body: null }; + return { order: CommandOrder.REDIRECT_VORGANG, redirectRequest, body: null }; } export function getVorgaengeFromList(vorgangList: VorgangListResource): VorgangResource[] { @@ -92,4 +92,8 @@ export function isStatusCommand(order: CommandOrder): boolean { export function isAssignUserCommand(order: CommandOrder): boolean { return order === CommandOrder.ASSIGN_USER; +} + +export function createProcessVorgangCommand(processorNames: string[]): CreateCommand { + return { order: CommandOrder.PROCESS_VORGANG, body: { processorNames } }; } \ No newline at end of file diff --git a/goofy-client/package-lock.json b/goofy-client/package-lock.json index b590b34194003d8f541719a090d02369fd8769f4..d78685399f139c5f9ffc803fcba53f1d798b4945 100644 --- a/goofy-client/package-lock.json +++ b/goofy-client/package-lock.json @@ -98,7 +98,6 @@ "version": "1.2.6", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -127,7 +126,6 @@ "version": "0.1602.8", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@angular-devkit/architect/-/architect-0.1602.8.tgz", "integrity": "sha512-bNdu2tF29Y/jOxMXlu9pmNbIlyZs9hRjLmi/tcfcMFay+3AhpNO59DWlUmI4gpvWu8CEXdQHSMuJTDHaNR+Ctg==", - "dev": true, "license": "MIT", "dependencies": { "@angular-devkit/core": "16.2.8", @@ -143,7 +141,6 @@ "version": "16.2.8", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@angular-devkit/build-angular/-/build-angular-16.2.8.tgz", "integrity": "sha512-PgTaWerhDO3JjHjgJl/VWB1y1awN8eHrm7sqdpIsgKbVpi26oyByjtPS1gKKhinps9Che66lCbnxrkx2X3rWTg==", - "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.2.1", @@ -266,7 +263,6 @@ "version": "7.22.9", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@babel/core/-/core-7.22.9.tgz", "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", - "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -297,7 +293,6 @@ "version": "6.3.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -307,7 +302,6 @@ "version": "7.22.9", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@babel/preset-env/-/preset-env-7.22.9.tgz", "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", - "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.9", @@ -402,7 +396,6 @@ "version": "6.3.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -412,7 +405,6 @@ "version": "0.1.6", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@babel/preset-modules/-/preset-modules-0.1.6.tgz", "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -432,7 +424,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -449,7 +440,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -466,7 +456,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -483,7 +472,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -500,7 +488,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -517,7 +504,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -534,7 +520,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -551,7 +536,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -568,7 +552,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -585,7 +568,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -602,7 +584,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -619,7 +600,6 @@ "cpu": [ "mips64el" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -636,7 +616,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -653,7 +632,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -670,7 +648,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -687,7 +664,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -704,7 +680,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -721,7 +696,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -738,7 +712,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -755,7 +728,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -772,7 +744,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -789,7 +760,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -803,7 +773,6 @@ "version": "6.12.6", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -820,7 +789,6 @@ "version": "3.5.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" @@ -830,7 +798,6 @@ "version": "5.15.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -844,7 +811,6 @@ "version": "0.18.17", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/esbuild/-/esbuild-0.18.17.tgz", "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", - "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -883,7 +849,6 @@ "version": "5.1.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", @@ -897,7 +862,6 @@ "version": "4.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -907,14 +871,12 @@ "version": "0.4.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, "license": "MIT" }, "node_modules/@angular-devkit/build-angular/node_modules/schema-utils": { "version": "3.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", @@ -933,14 +895,12 @@ "version": "2.6.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/tslib/-/tslib-2.6.1.tgz", "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "dev": true, "license": "0BSD" }, "node_modules/@angular-devkit/build-angular/node_modules/webpack": { "version": "5.88.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/webpack/-/webpack-5.88.2.tgz", "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", - "dev": true, "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -988,7 +948,6 @@ "version": "0.1602.8", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@angular-devkit/build-webpack/-/build-webpack-0.1602.8.tgz", "integrity": "sha512-wGE2R6hnhSVpH7jvqtkZ63IX9oMRd+uh7sC65hGgzajPqThQcNdnGG3+79QGWapgkoHuZHpDlKOBFt0IOMAaMA==", - "dev": true, "license": "MIT", "dependencies": { "@angular-devkit/architect": "0.1602.8", @@ -1008,7 +967,6 @@ "version": "16.2.8", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@angular-devkit/core/-/core-16.2.8.tgz", "integrity": "sha512-PTGozYvh1Bin5lB15PwcXa26Ayd17bWGLS3H8Rs0s+04mUDvfNofmweaX1LgumWWy3nCUTDuwHxX10M3G0wE2g==", - "dev": true, "license": "MIT", "dependencies": { "ajv": "8.12.0", @@ -1036,7 +994,6 @@ "version": "16.2.8", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@angular-devkit/schematics/-/schematics-16.2.8.tgz", "integrity": "sha512-MBiKZOlR9/YMdflALr7/7w/BGAfo/BGTrlkqsIB6rDWV1dYiCgxI+033HsiNssLS6RQyCFx/e7JA2aBBzu9zEg==", - "dev": true, "license": "MIT", "dependencies": { "@angular-devkit/core": "16.2.8", @@ -1309,7 +1266,6 @@ "version": "16.2.11", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@angular/compiler-cli/-/compiler-cli-16.2.11.tgz", "integrity": "sha512-ZtZCXfkVBH78HUm2Byf+WX3Y6WzQK9EXYXNU/ni1rvSZ1vLNwieLDfWb/xwiO7QojrHZTym1RJ10jTMinTguqw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "7.23.2", @@ -1519,7 +1475,6 @@ "version": "0.10.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@assemblyscript/loader/-/loader-0.10.1.tgz", "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true, "license": "Apache-2.0" }, "node_modules/@babel/code-frame": { @@ -2084,7 +2039,6 @@ "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@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==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", @@ -2174,7 +2128,6 @@ "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead.", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", @@ -3671,7 +3624,7 @@ "version": "3.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@cypress/request/-/request-3.0.1.tgz", "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", @@ -4661,7 +4614,7 @@ "version": "1.2.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@cypress/xvfb/-/xvfb-1.2.4.tgz", "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "debug": "^3.1.0", @@ -4672,7 +4625,7 @@ "version": "3.2.7", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" @@ -4682,7 +4635,6 @@ "version": "0.5.7", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, "license": "MIT", "engines": { "node": ">=10.0.0" @@ -5081,7 +5033,6 @@ "version": "4.10.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -5091,7 +5042,6 @@ "version": "2.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", - "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", @@ -5115,7 +5065,6 @@ "version": "6.12.6", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -5132,14 +5081,12 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, "license": "Python-2.0" }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.23.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/globals/-/globals-13.23.0.tgz", "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.20.2" @@ -5155,7 +5102,6 @@ "version": "4.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -5168,14 +5114,12 @@ "version": "0.4.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, "license": "MIT" }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -5188,7 +5132,6 @@ "version": "0.20.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -5201,7 +5144,6 @@ "version": "8.52.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@eslint/js/-/js-8.52.0.tgz", "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", - "dev": true, "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5222,7 +5164,6 @@ "version": "0.11.13", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.1", @@ -5237,7 +5178,6 @@ "version": "1.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=12.22" @@ -5251,7 +5191,6 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", - "dev": true, "license": "BSD-3-Clause" }, "node_modules/@isaacs/cliui": { @@ -5473,7 +5412,7 @@ "version": "29.7.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@jest/core/-/core-29.7.0.tgz", "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -5521,7 +5460,7 @@ "version": "4.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -5537,7 +5476,7 @@ "version": "4.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -5554,7 +5493,7 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -5567,14 +5506,14 @@ "version": "1.1.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -5584,7 +5523,7 @@ "version": "7.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -6984,7 +6923,6 @@ "version": "16.2.8", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@ngtools/webpack/-/webpack-16.2.8.tgz", "integrity": "sha512-GeblhLBwXe3qPYa4YHxbo0xujRl1FKkfIusU1mTIhkQBRtZY4Xgz4iMnPIEMJTU3XXGMkS+SCx34lqbwwMhR5A==", - "dev": true, "license": "MIT", "engines": { "node": "^16.14.0 || >=18.10.0", @@ -8911,7 +8849,6 @@ "version": "16.2.8", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@schematics/angular/-/angular-16.2.8.tgz", "integrity": "sha512-yxfxJ2IMRIt+dQcqyJR30qd/osb5NwRsi9US3gFIHP1jfjOAs1Nk8ENNd5ycYV+yykCa78KWhmbOw4G1zpR56Q==", - "dev": true, "license": "MIT", "dependencies": { "@angular-devkit/core": "16.2.8", @@ -9100,7 +9037,6 @@ "version": "1.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -9388,7 +9324,7 @@ "version": "20.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@types/jsdom/-/jsdom-20.0.1.tgz", "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -9505,14 +9441,14 @@ "version": "8.1.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@types/sizzle": { "version": "2.3.5", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@types/sizzle/-/sizzle-2.3.5.tgz", "integrity": "sha512-tAe4Q+OLFOA/AMD+0lq8ovp8t3ysxAOeaScnfNdZpUxaGl51ZMDEITxkvFl1STudQ58mz6gzVGl9VhMKhwRnZQ==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@types/sockjs": { @@ -9558,7 +9494,7 @@ "version": "4.0.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@types/tough-cookie/-/tough-cookie-4.0.4.tgz", "integrity": "sha512-95Sfz4nvMAb0Nl9DTxN3j64adfwfbBPEYq14VN7zT5J5O2M9V6iZMIIQU1U+pJyl9agHYHNCqhCXgyEtIRRa5A==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@types/webidl-conversions": { @@ -10044,7 +9980,6 @@ "version": "1.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz", "integrity": "sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==", - "dev": true, "license": "MIT", "engines": { "node": ">=14.6.0" @@ -10329,7 +10264,6 @@ "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@wessberg/ts-evaluator/-/ts-evaluator-0.0.27.tgz", "integrity": "sha512-7gOpVm3yYojUp/Yn7F4ZybJRxyqfMNf0LXK5KJiawbPfL0XTsJV+0mgrEDjOIR6Bi0OYk2Cyg4tjFu1r8MCZaA==", "deprecated": "this package has been renamed to ts-evaluator. Please install ts-evaluator instead", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.0", @@ -10352,7 +10286,6 @@ "version": "4.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -10368,7 +10301,6 @@ "version": "4.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -10385,7 +10317,6 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -10398,14 +10329,12 @@ "version": "1.1.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, "license": "MIT" }, "node_modules/@wessberg/ts-evaluator/node_modules/has-flag": { "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10415,7 +10344,6 @@ "version": "7.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -10515,7 +10443,6 @@ "version": "6.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/acorn-globals/-/acorn-globals-6.0.0.tgz", "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, "license": "MIT", "dependencies": { "acorn": "^7.1.1", @@ -10526,7 +10453,6 @@ "version": "7.4.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -10548,7 +10474,6 @@ "version": "5.3.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -10558,7 +10483,6 @@ "version": "7.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/acorn-walk/-/acorn-walk-7.2.0.tgz", "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.4.0" @@ -10577,7 +10501,6 @@ "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", @@ -10591,7 +10514,6 @@ "version": "2.0.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, "license": "MIT", "dependencies": { "big.js": "^5.2.2", @@ -10616,7 +10538,6 @@ "version": "6.0.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, "license": "MIT", "dependencies": { "debug": "4" @@ -10642,7 +10563,7 @@ "version": "3.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", @@ -10811,7 +10732,7 @@ "version": "2.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/arch/-/arch-2.2.0.tgz", "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -10940,7 +10861,7 @@ "version": "0.2.6", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "safer-buffer": "~2.1.0" @@ -10981,7 +10902,7 @@ "version": "1.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.8" @@ -11018,7 +10939,7 @@ "version": "2.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -11054,7 +10975,7 @@ "version": "1.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, + "devOptional": true, "license": "ISC", "engines": { "node": ">= 4.0.0" @@ -11123,7 +11044,7 @@ "version": "0.7.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "engines": { "node": "*" @@ -11133,7 +11054,7 @@ "version": "1.12.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/aws4/-/aws4-1.12.0.tgz", "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/axios": { @@ -11668,7 +11589,7 @@ "version": "1.0.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" @@ -11718,7 +11639,7 @@ "version": "2.0.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/blob-util/-/blob-util-2.0.2.tgz", "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "dev": true, + "devOptional": true, "license": "Apache-2.0" }, "node_modules/bluebird": { @@ -11849,9 +11770,16 @@ "version": "1.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true, "license": "BSD-2-Clause" }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, + "license": "ISC", + "peer": true + }, "node_modules/browserify-aes": { "version": "1.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -12026,7 +11954,7 @@ "version": "0.2.13", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": "*" @@ -12188,7 +12116,7 @@ "version": "2.4.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cachedir/-/cachedir-2.4.0.tgz", "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -12262,7 +12190,7 @@ "version": "0.12.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/caseless/-/caseless-0.12.0.tgz", "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0" }, "node_modules/chalk": { @@ -12292,14 +12220,13 @@ "version": "0.7.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true, "license": "MIT" }, "node_modules/check-more-types": { "version": "2.24.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/check-more-types/-/check-more-types-2.24.0.tgz", "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.8.0" @@ -12493,7 +12420,7 @@ "version": "2.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -12527,7 +12454,7 @@ "version": "0.6.3", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cli-table3/-/cli-table3-0.6.3.tgz", "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "string-width": "^4.2.0" @@ -12543,7 +12470,7 @@ "version": "2.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cli-truncate/-/cli-truncate-2.1.0.tgz", "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "slice-ansi": "^3.0.0", @@ -12560,7 +12487,6 @@ "version": "3.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cli-width/-/cli-width-3.0.0.tgz", "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, "license": "ISC", "engines": { "node": ">= 10" @@ -12754,7 +12680,7 @@ "version": "6.2.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/commander/-/commander-6.2.1.tgz", "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 6" @@ -12770,7 +12696,7 @@ "version": "1.8.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/common-tags/-/common-tags-1.8.2.tgz", "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=4.0.0" @@ -12963,7 +12889,6 @@ "version": "1.9.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, "license": "MIT" }, "node_modules/cookie": { @@ -13055,7 +12980,6 @@ "version": "11.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", - "dev": true, "license": "MIT", "dependencies": { "fast-glob": "^3.2.11", @@ -13080,7 +13004,6 @@ "version": "6.0.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -13093,7 +13016,6 @@ "version": "13.2.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/globby/-/globby-13.2.2.tgz", "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", - "dev": true, "license": "MIT", "dependencies": { "dir-glob": "^3.0.1", @@ -13113,7 +13035,6 @@ "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/slash/-/slash-4.0.0.tgz", "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -13217,7 +13138,7 @@ "version": "29.7.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/create-jest/-/create-jest-29.7.0.tgz", "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -13239,7 +13160,7 @@ "version": "4.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13255,7 +13176,7 @@ "version": "4.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13272,7 +13193,7 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13285,14 +13206,14 @@ "version": "1.1.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/create-jest/node_modules/has-flag": { "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -13302,7 +13223,7 @@ "version": "7.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13321,7 +13242,6 @@ "version": "0.0.20", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/critters/-/critters-0.0.20.tgz", "integrity": "sha512-CImNRorKOl5d8TWcnAz5n5izQ6HFsvz29k327/ELy6UFcmbiZNOsinaKvzv16WZR0P6etfSWYzE47C4/56B3Uw==", - "dev": true, "license": "Apache-2.0", "dependencies": { "chalk": "^4.1.0", @@ -13337,7 +13257,6 @@ "version": "4.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13353,7 +13272,6 @@ "version": "4.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13370,7 +13288,6 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13383,14 +13300,12 @@ "version": "1.1.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, "license": "MIT" }, "node_modules/critters/node_modules/has-flag": { "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13400,7 +13315,6 @@ "version": "7.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13722,14 +13636,12 @@ "version": "0.4.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cssom/-/cssom-0.4.4.tgz", "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true, "license": "MIT" }, "node_modules/cssstyle": { "version": "2.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cssstyle/-/cssstyle-2.3.0.tgz", "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, "license": "MIT", "dependencies": { "cssom": "~0.3.6" @@ -13742,7 +13654,6 @@ "version": "0.3.8", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cssom/-/cssom-0.3.8.tgz", "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true, "license": "MIT" }, "node_modules/cyclist": { @@ -13756,7 +13667,7 @@ "version": "13.4.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cypress/-/cypress-13.4.0.tgz", "integrity": "sha512-KeWNC9xSHG/ewZURVbaQsBQg2mOKw4XhjJZFKjWbEjgZCdxpPXLpJnfq5Jns1Gvnjp6AlnIfpZfWFlDgVKXdWQ==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -13899,7 +13810,7 @@ "version": "4.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13915,14 +13826,14 @@ "version": "3.7.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/cypress/node_modules/chalk": { "version": "4.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13939,7 +13850,7 @@ "version": "7.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13952,7 +13863,7 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13965,14 +13876,14 @@ "version": "1.1.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/cypress/node_modules/fs-extra": { "version": "9.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", @@ -13988,7 +13899,7 @@ "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -13998,7 +13909,7 @@ "version": "8.1.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14014,7 +13925,7 @@ "version": "1.14.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" @@ -14027,7 +13938,6 @@ "version": "2.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/data-urls/-/data-urls-2.0.0.tgz", "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, "license": "MIT", "dependencies": { "abab": "^2.0.3", @@ -14068,7 +13978,7 @@ "version": "1.11.10", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/dayjs/-/dayjs-1.11.10.tgz", "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/debug": { @@ -14088,11 +13998,24 @@ } } }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/decimal.js": { "version": "10.4.3", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/decimal.js/-/decimal.js-10.4.3.tgz", "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true, "license": "MIT" }, "node_modules/decode-uri-component": { @@ -14139,7 +14062,6 @@ "version": "0.1.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, "license": "MIT" }, "node_modules/deepmerge": { @@ -14431,7 +14353,6 @@ "version": "3.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" @@ -14488,7 +14409,6 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/domexception/-/domexception-2.0.1.tgz", "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, "license": "MIT", "dependencies": { "webidl-conversions": "^5.0.0" @@ -14501,7 +14421,6 @@ "version": "5.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/webidl-conversions/-/webidl-conversions-5.0.0.tgz", "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=8" @@ -14627,7 +14546,7 @@ "version": "0.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "jsbn": "~0.1.0", @@ -14873,7 +14792,6 @@ "version": "0.19.5", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/esbuild/-/esbuild-0.19.5.tgz", "integrity": "sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==", - "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -14912,7 +14830,6 @@ "version": "0.18.17", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/esbuild-wasm/-/esbuild-wasm-0.18.17.tgz", "integrity": "sha512-9OHGcuRzy+I8ziF9FzjfKLWAPbvi0e/metACVg9k6bK+SI4FFxeV6PcZsz8RIVaMD4YNehw+qj6UMR3+qj/EuQ==", - "dev": true, "license": "MIT", "bin": { "esbuild": "bin/esbuild" @@ -14949,7 +14866,6 @@ "version": "2.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/escodegen/-/escodegen-2.1.0.tgz", "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", @@ -14971,7 +14887,6 @@ "version": "0.6.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "license": "BSD-3-Clause", "optional": true, "engines": { @@ -14982,7 +14897,6 @@ "version": "8.46.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/eslint/-/eslint-8.46.0.tgz", "integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==", - "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -15092,7 +15006,6 @@ "version": "7.2.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", @@ -15121,7 +15034,6 @@ "version": "6.12.6", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -15138,7 +15050,6 @@ "version": "4.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15154,14 +15065,12 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, "license": "Python-2.0" }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15178,7 +15087,6 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15191,14 +15099,12 @@ "version": "1.1.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, "license": "MIT" }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15211,7 +15117,6 @@ "version": "5.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, "license": "MIT", "dependencies": { "locate-path": "^6.0.0", @@ -15228,7 +15133,6 @@ "version": "6.0.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -15241,7 +15145,6 @@ "version": "13.23.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/globals/-/globals-13.23.0.tgz", "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.20.2" @@ -15257,7 +15160,6 @@ "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15267,7 +15169,6 @@ "version": "4.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -15280,14 +15181,12 @@ "version": "0.4.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, "license": "MIT" }, "node_modules/eslint/node_modules/locate-path": { "version": "6.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, "license": "MIT", "dependencies": { "p-locate": "^5.0.0" @@ -15303,7 +15202,6 @@ "version": "3.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -15316,7 +15214,6 @@ "version": "5.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "license": "MIT", "dependencies": { "p-limit": "^3.0.2" @@ -15332,7 +15229,6 @@ "version": "7.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15345,7 +15241,6 @@ "version": "0.20.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -15358,7 +15253,6 @@ "version": "9.6.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", @@ -15440,14 +15334,13 @@ "version": "1.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true, "license": "MIT" }, "node_modules/eventemitter2": { "version": "6.4.7", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/eventemitter2/-/eventemitter2-6.4.7.tgz", "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/eventemitter3": { @@ -15480,7 +15373,7 @@ "version": "4.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/execa/-/execa-4.1.0.tgz", "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.0", @@ -15504,7 +15397,7 @@ "version": "4.1.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/executable/-/executable-4.1.1.tgz", "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "pify": "^2.2.0" @@ -15775,7 +15668,7 @@ "version": "3.0.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/extend-shallow": { @@ -15796,7 +15689,6 @@ "version": "3.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, "license": "MIT", "dependencies": { "chardet": "^0.7.0", @@ -15811,7 +15703,6 @@ "version": "0.0.33", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" @@ -15880,7 +15771,7 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", @@ -15901,7 +15792,7 @@ "version": "1.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, + "devOptional": true, "engines": [ "node >=0.6.0" ], @@ -15952,7 +15843,6 @@ "version": "2.0.6", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, "license": "MIT" }, "node_modules/fastq": { @@ -15989,7 +15879,7 @@ "version": "1.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "pend": "~1.2.0" @@ -16021,7 +15911,6 @@ "version": "6.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" @@ -16162,7 +16051,6 @@ "version": "3.1.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/flat-cache/-/flat-cache-3.1.1.tgz", "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", - "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", @@ -16177,7 +16065,6 @@ "version": "3.2.9", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/flatted/-/flatted-3.2.9.tgz", "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true, "license": "ISC" }, "node_modules/flush-write-stream": { @@ -16305,7 +16192,7 @@ "version": "0.6.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "engines": { "node": "*" @@ -16498,7 +16385,7 @@ "version": "2.3.3", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -16825,7 +16712,7 @@ "version": "5.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "pump": "^3.0.0" @@ -16851,7 +16738,7 @@ "version": "3.2.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/getos/-/getos-3.2.1.tgz", "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "async": "^3.2.0" @@ -16861,7 +16748,7 @@ "version": "0.1.7", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/getpass/-/getpass-0.1.7.tgz", "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" @@ -16921,7 +16808,7 @@ "version": "3.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/global-dirs/-/global-dirs-3.0.1.tgz", "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ini": "2.0.0" @@ -16937,7 +16824,7 @@ "version": "2.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, + "devOptional": true, "license": "ISC", "engines": { "node": ">=10" @@ -16994,14 +16881,12 @@ "version": "1.4.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, "license": "MIT" }, "node_modules/guess-parser": { "version": "0.4.22", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/guess-parser/-/guess-parser-0.4.22.tgz", "integrity": "sha512-KcUWZ5ACGaBM69SbqwVIuWGoSAgD+9iJnchR9j/IarVI1jHVeXv+bUXBIMeqVMSKt3zrn0Dgf9UpcOEpPBLbSg==", - "dev": true, "license": "MIT", "dependencies": { "@wessberg/ts-evaluator": "0.0.27" @@ -17210,7 +17095,6 @@ "version": "2.0.3", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "dev": true, "license": "BSD", "dependencies": { "@assemblyscript/loader": "^0.10.1", @@ -17222,7 +17106,6 @@ "version": "3.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true, "license": "MIT" }, "node_modules/he": { @@ -17321,7 +17204,6 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, "license": "MIT", "dependencies": { "whatwg-encoding": "^1.0.5" @@ -17356,7 +17238,6 @@ "version": "8.0.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/htmlparser2/-/htmlparser2-8.0.2.tgz", "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -17425,7 +17306,6 @@ "version": "4.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, "license": "MIT", "dependencies": { "@tootallnate/once": "1", @@ -17597,7 +17477,7 @@ "version": "1.3.6", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/http-signature/-/http-signature-1.3.6.tgz", "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", @@ -17619,7 +17499,6 @@ "version": "5.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, "license": "MIT", "dependencies": { "agent-base": "6", @@ -17633,7 +17512,7 @@ "version": "1.1.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/human-signals/-/human-signals-1.1.1.tgz", "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "engines": { "node": ">=8.12.0" @@ -17808,7 +17687,7 @@ "version": "3.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/import-local/-/import-local-3.1.0.tgz", "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", @@ -17843,7 +17722,7 @@ "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -17886,7 +17765,6 @@ "version": "8.2.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/inquirer/-/inquirer-8.2.4.tgz", "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", - "dev": true, "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", @@ -17913,7 +17791,6 @@ "version": "4.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -17929,7 +17806,6 @@ "version": "4.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -17946,7 +17822,6 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -17959,14 +17834,12 @@ "version": "1.1.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, "license": "MIT" }, "node_modules/inquirer/node_modules/has-flag": { "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -17976,7 +17849,6 @@ "version": "7.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -18133,7 +18005,7 @@ "version": "3.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/is-ci/-/is-ci-3.0.1.tgz", "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ci-info": "^3.2.0" @@ -18269,7 +18141,7 @@ "version": "0.4.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/is-installed-globally/-/is-installed-globally-0.4.0.tgz", "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "global-dirs": "^3.0.0", @@ -18337,7 +18209,6 @@ "version": "3.0.3", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -18371,7 +18242,6 @@ "version": "1.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, "license": "MIT" }, "node_modules/is-regex": { @@ -18478,7 +18348,7 @@ "version": "1.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/is-unicode-supported": { @@ -18571,7 +18441,7 @@ "version": "0.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/isstream/-/isstream-0.1.2.tgz", "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/istanbul-lib-coverage": { @@ -18821,7 +18691,7 @@ "version": "29.7.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -18848,7 +18718,7 @@ "version": "29.7.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/jest-changed-files/-/jest-changed-files-29.7.0.tgz", "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -18863,7 +18733,7 @@ "version": "5.1.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -18887,7 +18757,7 @@ "version": "6.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=10" @@ -18900,7 +18770,7 @@ "version": "2.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -18952,6 +18822,23 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-circus/node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, "node_modules/jest-circus/node_modules/chalk": { "version": "4.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/chalk/-/chalk-4.1.2.tgz", @@ -18986,6 +18873,24 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, + "node_modules/jest-circus/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/jest-circus/node_modules/dedent": { "version": "1.5.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/dedent/-/dedent-1.5.1.tgz", @@ -19025,7 +18930,7 @@ "version": "29.7.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/jest-cli/-/jest-cli-29.7.0.tgz", "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -19059,7 +18964,7 @@ "version": "4.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -19075,7 +18980,7 @@ "version": "4.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -19092,7 +18997,7 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -19105,14 +19010,14 @@ "version": "1.1.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -19122,7 +19027,7 @@ "version": "7.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -19433,7 +19338,7 @@ "version": "29.7.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -19461,7 +19366,7 @@ "version": "2.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 10" @@ -19471,7 +19376,7 @@ "version": "7.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/acorn-globals/-/acorn-globals-7.0.1.tgz", "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "acorn": "^8.1.0", @@ -19482,7 +19387,7 @@ "version": "8.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.4.0" @@ -19492,14 +19397,14 @@ "version": "0.5.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cssom/-/cssom-0.5.0.tgz", "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/jest-environment-jsdom/node_modules/data-urls": { "version": "3.0.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/data-urls/-/data-urls-3.0.2.tgz", "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "abab": "^2.0.6", @@ -19514,7 +19419,7 @@ "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/domexception/-/domexception-4.0.0.tgz", "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "webidl-conversions": "^7.0.0" @@ -19527,7 +19432,7 @@ "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -19542,7 +19447,7 @@ "version": "3.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "whatwg-encoding": "^2.0.0" @@ -19555,7 +19460,7 @@ "version": "5.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@tootallnate/once": "2", @@ -19570,7 +19475,7 @@ "version": "0.6.3", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -19583,7 +19488,7 @@ "version": "20.0.3", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/jsdom/-/jsdom-20.0.3.tgz", "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "abab": "^2.0.6", @@ -19629,7 +19534,7 @@ "version": "6.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/saxes/-/saxes-6.0.0.tgz", "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "xmlchars": "^2.2.0" @@ -19642,7 +19547,7 @@ "version": "3.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/tr46/-/tr46-3.0.0.tgz", "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "punycode": "^2.1.1" @@ -19655,7 +19560,7 @@ "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "xml-name-validator": "^4.0.0" @@ -19668,7 +19573,7 @@ "version": "7.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -19678,7 +19583,7 @@ "version": "2.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" @@ -19691,7 +19596,7 @@ "version": "3.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=12" @@ -19701,7 +19606,7 @@ "version": "11.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/whatwg-url/-/whatwg-url-11.0.0.tgz", "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "tr46": "^3.0.0", @@ -19715,7 +19620,7 @@ "version": "8.14.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ws/-/ws-8.14.2.tgz", "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=10.0.0" @@ -19737,7 +19642,7 @@ "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/xml-name-validator/-/xml-name-validator-4.0.0.tgz", "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "engines": { "node": ">=12" @@ -20104,7 +20009,7 @@ "version": "29.7.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -20849,7 +20754,6 @@ "version": "1.20.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/jiti/-/jiti-1.20.0.tgz", "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", - "dev": true, "license": "MIT", "bin": { "jiti": "bin/jiti.js" @@ -20884,14 +20788,13 @@ "version": "0.1.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/jsdom": { "version": "16.7.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/jsdom/-/jsdom-16.7.0.tgz", "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, "license": "MIT", "dependencies": { "abab": "^2.0.5", @@ -20938,7 +20841,6 @@ "version": "3.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/form-data/-/form-data-3.0.1.tgz", "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -20953,7 +20855,6 @@ "version": "6.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true, "license": "MIT" }, "node_modules/jsesc": { @@ -20972,7 +20873,6 @@ "version": "3.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, "license": "MIT" }, "node_modules/json-parse-better-errors": { @@ -20992,7 +20892,7 @@ "version": "0.4.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/json-schema/-/json-schema-0.4.0.tgz", "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, + "devOptional": true, "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-traverse": { @@ -21005,14 +20905,13 @@ "version": "1.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/json5": { @@ -21078,7 +20977,7 @@ "version": "2.0.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/jsprim/-/jsprim-2.0.2.tgz", "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, + "devOptional": true, "engines": [ "node >=0.6.0" ], @@ -21103,7 +21002,6 @@ "version": "1.4.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, "license": "MIT", "dependencies": { "source-map-support": "^0.5.5" @@ -21113,7 +21011,6 @@ "version": "4.5.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, "license": "MIT", "dependencies": { "json-buffer": "3.0.1" @@ -21132,7 +21029,7 @@ "version": "3.0.3", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -21161,7 +21058,7 @@ "version": "1.6.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/lazy-ass/-/lazy-ass-1.6.0.tgz", "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": "> 0.8" @@ -21270,7 +21167,6 @@ "version": "0.4.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", @@ -21319,7 +21215,7 @@ "version": "3.14.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/listr2/-/listr2-3.14.0.tgz", "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "cli-truncate": "^2.1.0", @@ -21356,7 +21252,6 @@ "version": "3.2.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/loader-utils/-/loader-utils-3.2.1.tgz", "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 12.13.0" @@ -21430,14 +21325,13 @@ "version": "4.6.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, "license": "MIT" }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/lodash.uniq": { @@ -21536,7 +21430,7 @@ "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/log-update/-/log-update-4.0.0.tgz", "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-escapes": "^4.3.0", @@ -21555,7 +21449,7 @@ "version": "4.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -21571,7 +21465,7 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -21584,14 +21478,14 @@ "version": "1.1.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/log-update/node_modules/slice-ansi": { "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -21609,7 +21503,7 @@ "version": "6.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -21646,7 +21540,6 @@ "version": "0.30.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/magic-string/-/magic-string-0.30.1.tgz", "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -22000,7 +21893,6 @@ "version": "2.7.6", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", - "dev": true, "license": "MIT", "dependencies": { "schema-utils": "^4.0.0" @@ -22258,78 +22150,371 @@ "dev": true, "license": "MIT", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/mississippi": { + "version": "3.0.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0", + "peer": true + }, + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "license": "ISC", + "peer": true, + "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/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "license": "ISC", + "license": "MIT", + "peer": true + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "yallist": "^4.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", - "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/mocha/node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, - "license": "ISC" + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } }, - "node_modules/mississippi": { - "version": "3.0.0", - "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", + "peer": true, "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, + "license": "ISC", + "peer": true, "engines": { "node": ">=10" } @@ -22836,7 +23021,6 @@ "version": "1.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/mrmime/-/mrmime-1.0.1.tgz", "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -22865,7 +23049,6 @@ "version": "0.0.8", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true, "license": "ISC" }, "node_modules/nan": { @@ -22876,6 +23059,20 @@ "license": "MIT", "optional": true }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/nanomatch": { "version": "1.2.13", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/nanomatch/-/nanomatch-1.2.13.tgz", @@ -22988,7 +23185,6 @@ "version": "1.0.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/nice-napi/-/nice-napi-1.0.2.tgz", "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -23010,7 +23206,6 @@ "version": "3.2.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/node-addon-api/-/node-addon-api-3.2.1.tgz", "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, "license": "MIT", "optional": true }, @@ -23066,7 +23261,6 @@ "version": "4.6.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/node-gyp-build/-/node-gyp-build-4.6.1.tgz", "integrity": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==", - "dev": true, "license": "MIT", "optional": true, "bin": { @@ -23378,7 +23572,6 @@ "version": "2.2.7", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/nwsapi/-/nwsapi-2.2.7.tgz", "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", - "dev": true, "license": "MIT" }, "node_modules/nx": { @@ -23745,7 +23938,6 @@ "version": "0.11.8", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/object-path/-/object-path-0.11.8.tgz", "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 10.12.0" @@ -23877,7 +24069,6 @@ "version": "0.9.3", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/optionator/-/optionator-0.9.3.tgz", "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, "license": "MIT", "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", @@ -23895,7 +24086,6 @@ "version": "5.4.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, "license": "MIT", "dependencies": { "bl": "^4.1.0", @@ -23919,7 +24109,6 @@ "version": "4.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -23935,7 +24124,6 @@ "version": "4.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -23952,7 +24140,6 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -23965,14 +24152,12 @@ "version": "1.1.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, "license": "MIT" }, "node_modules/ora/node_modules/has-flag": { "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -23982,7 +24167,6 @@ "version": "7.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -24002,7 +24186,6 @@ "version": "1.0.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -24012,7 +24195,7 @@ "version": "1.2.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ospath/-/ospath-1.2.2.tgz", "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/p-limit": { @@ -24061,7 +24244,7 @@ "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" @@ -24141,7 +24324,6 @@ "version": "1.0.11", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, "license": "(MIT AND Zlib)" }, "node_modules/parallel-transform": { @@ -24259,7 +24441,6 @@ "version": "7.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/parse5/-/parse5-7.1.2.tgz", "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "devOptional": true, "license": "MIT", "dependencies": { "entities": "^4.4.0" @@ -24272,7 +24453,6 @@ "version": "7.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", - "dev": true, "license": "MIT", "dependencies": { "entities": "^4.3.0", @@ -24287,7 +24467,6 @@ "version": "7.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", - "dev": true, "license": "MIT", "dependencies": { "parse5": "^7.0.0" @@ -24426,14 +24605,14 @@ "version": "1.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/picocolors": { @@ -24476,7 +24655,6 @@ "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/piscina/-/piscina-4.0.0.tgz", "integrity": "sha512-641nAmJS4k4iqpNUqfggqUBUMmlw0ZoM5VZKdQkV2e970Inn3Tk9kroCc1wpsYLD07vCwpys5iY0d3xI/9WkTg==", - "dev": true, "license": "MIT", "dependencies": { "eventemitter-asyncresource": "^1.0.0", @@ -24713,7 +24891,6 @@ "version": "7.3.3", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/postcss-loader/-/postcss-loader-7.3.3.tgz", "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", - "dev": true, "license": "MIT", "dependencies": { "cosmiconfig": "^8.2.0", @@ -24736,14 +24913,12 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, "license": "Python-2.0" }, "node_modules/postcss-loader/node_modules/cosmiconfig": { "version": "8.3.6", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cosmiconfig/-/cosmiconfig-8.3.6.tgz", "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, "license": "MIT", "dependencies": { "import-fresh": "^3.3.0", @@ -24770,7 +24945,6 @@ "version": "4.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -25188,7 +25362,6 @@ "version": "1.2.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8.0" @@ -25214,7 +25387,6 @@ "version": "5.6.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/pretty-bytes/-/pretty-bytes-5.6.0.tgz", "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -25262,7 +25434,7 @@ "version": "0.11.10", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.6.0" @@ -25309,7 +25481,7 @@ "version": "2.4.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "kleur": "^3.0.3", @@ -25364,7 +25536,7 @@ "version": "1.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/proxy-from-env/-/proxy-from-env-1.0.0.tgz", "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/prr": { @@ -25378,7 +25550,6 @@ "version": "1.9.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/psl/-/psl-1.9.0.tgz", "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true, "license": "MIT" }, "node_modules/public-encrypt": { @@ -25407,7 +25578,7 @@ "version": "3.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -25490,7 +25661,6 @@ "version": "2.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, "license": "MIT" }, "node_modules/queue-microtask": { @@ -25724,7 +25894,6 @@ "version": "0.1.13", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/reflect-metadata/-/reflect-metadata-0.1.13.tgz", "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true, "license": "Apache-2.0" }, "node_modules/regenerate": { @@ -25778,7 +25947,6 @@ "version": "2.2.11", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/regex-parser/-/regex-parser-2.2.11.tgz", "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true, "license": "MIT" }, "node_modules/regexp.prototype.flags": { @@ -25868,7 +26036,7 @@ "version": "3.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/request-progress/-/request-progress-3.0.0.tgz", "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "throttleit": "^1.0.0" @@ -25926,7 +26094,7 @@ "version": "3.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" @@ -25956,7 +26124,6 @@ "version": "5.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "dev": true, "license": "MIT", "dependencies": { "adjust-sourcemap-loader": "^4.0.0", @@ -25973,7 +26140,6 @@ "version": "2.0.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, "license": "MIT", "dependencies": { "big.js": "^5.2.2", @@ -25988,7 +26154,6 @@ "version": "0.6.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -26050,7 +26215,7 @@ "version": "1.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/rfdc/-/rfdc-1.3.0.tgz", "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/rimraf": { @@ -26083,7 +26248,6 @@ "version": "3.29.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/rollup/-/rollup-3.29.4.tgz", "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "dev": true, "license": "MIT", "bin": { "rollup": "dist/bin/rollup" @@ -26100,7 +26264,6 @@ "version": "2.4.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -26241,7 +26404,6 @@ "version": "13.3.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/sass-loader/-/sass-loader-13.3.2.tgz", "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", - "dev": true, "license": "MIT", "dependencies": { "neo-async": "^2.6.2" @@ -26286,7 +26448,6 @@ "version": "5.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/saxes/-/saxes-5.0.1.tgz", "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, "license": "ISC", "dependencies": { "xmlchars": "^2.2.0" @@ -26707,7 +26868,7 @@ "version": "1.0.5", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/slash": { @@ -26723,7 +26884,7 @@ "version": "3.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/slice-ansi/-/slice-ansi-3.0.0.tgz", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -26738,7 +26899,7 @@ "version": "4.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -26754,7 +26915,7 @@ "version": "2.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -26767,7 +26928,7 @@ "version": "1.1.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/slugify": { @@ -27155,7 +27316,6 @@ "version": "4.0.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/source-map-loader/-/source-map-loader-4.0.1.tgz", "integrity": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==", - "dev": true, "license": "MIT", "dependencies": { "abab": "^2.0.6", @@ -27177,7 +27337,6 @@ "version": "0.6.3", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -27325,7 +27484,7 @@ "version": "1.17.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/sshpk/-/sshpk-1.17.0.tgz", "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "asn1": "~0.2.3", @@ -27930,7 +28089,6 @@ "version": "3.2.4", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, "license": "MIT" }, "node_modules/tapable": { @@ -28189,14 +28347,13 @@ "version": "0.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, "license": "MIT" }, "node_modules/throttleit": { "version": "1.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/throttleit/-/throttleit-1.0.0.tgz", "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/through": { @@ -28376,7 +28533,6 @@ "version": "4.1.3", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/tough-cookie/-/tough-cookie-4.1.3.tgz", "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.33", @@ -28392,7 +28548,6 @@ "version": "0.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -28402,7 +28557,6 @@ "version": "2.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/tr46/-/tr46-2.1.0.tgz", "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, "license": "MIT", "dependencies": { "punycode": "^2.1.1" @@ -28415,7 +28569,6 @@ "version": "1.2.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/tree-kill/-/tree-kill-1.2.2.tgz", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, "license": "MIT", "bin": { "tree-kill": "cli.js" @@ -28910,7 +29063,7 @@ "version": "0.6.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" @@ -28923,14 +29076,13 @@ "version": "0.14.5", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true, + "devOptional": true, "license": "Unlicense" }, "node_modules/type-check": { "version": "0.4.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" @@ -29195,7 +29347,7 @@ "version": "4.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/untildify/-/untildify-4.0.0.tgz", "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -29281,7 +29433,6 @@ "version": "1.5.10", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, "license": "MIT", "dependencies": { "querystringify": "^2.1.1", @@ -29446,7 +29597,7 @@ "version": "1.10.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/verror/-/verror-1.10.0.tgz", "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, + "devOptional": true, "engines": [ "node >=0.6.0" ], @@ -29461,7 +29612,6 @@ "version": "4.4.7", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/vite/-/vite-4.4.7.tgz", "integrity": "sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==", - "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.18.10", @@ -29520,7 +29670,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29537,7 +29686,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29554,7 +29702,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29571,7 +29718,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29588,7 +29734,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29605,7 +29750,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29622,7 +29766,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29639,7 +29782,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29656,7 +29798,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29673,7 +29814,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29690,7 +29830,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29707,7 +29846,6 @@ "cpu": [ "mips64el" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29724,7 +29862,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29741,7 +29878,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29758,7 +29894,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29775,7 +29910,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29792,7 +29926,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29809,7 +29942,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29826,7 +29958,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29843,7 +29974,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29860,7 +29990,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29877,7 +30006,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -29891,7 +30019,6 @@ "version": "0.18.20", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/esbuild/-/esbuild-0.18.20.tgz", "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -29937,7 +30064,6 @@ "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/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.", - "dev": true, "license": "MIT", "dependencies": { "browser-process-hrtime": "^1.0.0" @@ -29947,7 +30073,6 @@ "version": "2.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, "license": "MIT", "dependencies": { "xml-name-validator": "^3.0.0" @@ -30341,7 +30466,6 @@ "version": "6.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/webidl-conversions/-/webidl-conversions-6.1.0.tgz", "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=10.4" @@ -30398,7 +30522,6 @@ "version": "6.1.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/webpack-dev-middleware/-/webpack-dev-middleware-6.1.1.tgz", "integrity": "sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==", - "dev": true, "license": "MIT", "dependencies": { "colorette": "^2.0.10", @@ -30689,7 +30812,6 @@ "version": "1.0.5", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, "license": "MIT", "dependencies": { "iconv-lite": "0.4.24" @@ -30699,14 +30821,12 @@ "version": "2.3.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true, "license": "MIT" }, "node_modules/whatwg-url": { "version": "8.7.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/whatwg-url/-/whatwg-url-8.7.0.tgz", "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, "license": "MIT", "dependencies": { "lodash": "^4.7.0", @@ -30818,6 +30938,14 @@ "errno": "~0.1.7" } }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true, + "license": "Apache-2.0", + "peer": true + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -30946,7 +31074,6 @@ "version": "7.5.9", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.3.0" @@ -30975,14 +31102,12 @@ "version": "3.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true, "license": "Apache-2.0" }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, "license": "MIT" }, "node_modules/xtend": { @@ -31046,11 +31171,53 @@ "node": ">=12" } }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", diff --git a/goofy-client/pom.xml b/goofy-client/pom.xml index 12c63b3f1c46c5229234d41234f3f98b4d6babd6..46ee2d225accdd21aa6d9f3a1e7863f286299b53 100644 --- a/goofy-client/pom.xml +++ b/goofy-client/pom.xml @@ -30,7 +30,7 @@ <parent> <groupId>de.itvsh.ozg</groupId> <artifactId>goofy</artifactId> - <version>1.17.0-SNAPSHOT</version> + <version>1.18.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/goofy-server/pom.xml b/goofy-server/pom.xml index eef1d5ae068925c2f68e71b17f809dfcef184831..5cffe9e9b402d543073355ba358a636dd22e9c03 100644 --- a/goofy-server/pom.xml +++ b/goofy-server/pom.xml @@ -5,12 +5,11 @@ <parent> <groupId>de.itvsh.ozg</groupId> <artifactId>goofy</artifactId> - <version>1.17.0-SNAPSHOT</version> + <version>1.18.0-SNAPSHOT</version> </parent> <artifactId>goofy-server</artifactId> <name>Goofy Server</name> - <groupId>de.itvsh.ozg</groupId> <properties> <maven.compiler.source>${java.version}</maven.compiler.source> @@ -59,6 +58,14 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> + <profiles> + <profile>local</profile> + <profile>remotekc</profile> + </profiles> + <!-- remove it when using spring-boot 3.2 --> + <image> + <builder>paketobuildpacks/builder-jammy-base</builder> + </image> <docker> <publishRegistry> <username>${docker-username}</username> diff --git a/goofy-server/src/main/resources/application-nf.yaml b/goofy-server/src/main/resources/application-nf.yaml new file mode 100644 index 0000000000000000000000000000000000000000..de4d4ee3434c7ed9736f1b11f62ec1d72c969473 --- /dev/null +++ b/goofy-server/src/main/resources/application-nf.yaml @@ -0,0 +1,4 @@ +ozgcloud: + vorgang: + processorNames: + - ticketCheck \ No newline at end of file diff --git a/goofy-server/src/main/resources/application.yml b/goofy-server/src/main/resources/application.yml index 711b24897872a68bff0743da9e7f7092de0aaa5d..5837d4eb11e997f55fb06b8012b27760ded8017b 100644 --- a/goofy-server/src/main/resources/application.yml +++ b/goofy-server/src/main/resources/application.yml @@ -8,7 +8,7 @@ logging: spring: mvc: pathmatch: - matching-strategy: ant_path_matcher + matching-strategy: ant-path-matcher application: name: Goofy jackson: diff --git a/pom.xml b/pom.xml index dede3f5826ca6b39158c118280e90cf83a47082a..e0052e74f92a599e014f02fb9f627e73d29d8a9a 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ <groupId>de.itvsh.ozg</groupId> <artifactId>goofy</artifactId> - <version>1.17.0-SNAPSHOT</version> + <version>1.18.0-SNAPSHOT</version> <name>Goofy Parent</name> <packaging>pom</packaging>