diff --git a/.github/workflows/backend-build.yml b/.github/workflows/backend-build.yml index 43268b8..1c311bf 100644 --- a/.github/workflows/backend-build.yml +++ b/.github/workflows/backend-build.yml @@ -11,9 +11,6 @@ on: push: branches: [ "main" ] paths: ['backend/**'] - pull_request: - branches: [ "main" ] - paths: ['backend/**'] jobs: build: diff --git a/.github/workflows/frontend-build.yml b/.github/workflows/frontend-build.yml index 9790b17..c9da766 100644 --- a/.github/workflows/frontend-build.yml +++ b/.github/workflows/frontend-build.yml @@ -7,9 +7,6 @@ on: push: branches: [ "main" ] paths: ['frontend/**'] - pull_request: - branches: [ "main" ] - paths: ['frontend/**'] jobs: build: @@ -21,10 +18,10 @@ jobs: node-version: 18 - run: npm install --global @angular/cli - working-directory: frontend/projects/valtimo/spotler - - run: npm install - working-directory: frontend/projects/valtimo/spotler + working-directory: frontend/projects/valtimo/xential + - run: npm install --legacy-peer-deps + working-directory: frontend/projects/valtimo/xential - run: npm run build - working-directory: frontend/projects/valtimo/spotler + working-directory: frontend/projects/valtimo/xential diff --git a/.gitignore b/.gitignore index 39e8386..68ebc47 100644 --- a/.gitignore +++ b/.gitignore @@ -75,6 +75,7 @@ out/** # Package Files ###################### *.jar +!gradle-wrapper.jar *.war *.ear *.db diff --git a/backend/app/gradle.properties b/backend/app/gradle.properties index e8ac26c..b3cf165 100644 --- a/backend/app/gradle.properties +++ b/backend/app/gradle.properties @@ -1,7 +1,7 @@ kotlinVersion=1.9.23 springVersion=3.2.5 springDependencyManagementVersion=1.1.4 -valtimoVersion=12.2.0.RELEASE +valtimoVersion=12.0.0.RELEASE pluginGroupId=com.ritense.valtimo pluginArtifactId=xential diff --git a/backend/app/gradle/wrapper/gradle-wrapper.jar b/backend/app/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..033e24c Binary files /dev/null and b/backend/app/gradle/wrapper/gradle-wrapper.jar differ diff --git a/backend/gradle.properties b/backend/gradle.properties index e8ac26c..b3cf165 100644 --- a/backend/gradle.properties +++ b/backend/gradle.properties @@ -1,7 +1,7 @@ kotlinVersion=1.9.23 springVersion=3.2.5 springDependencyManagementVersion=1.1.4 -valtimoVersion=12.2.0.RELEASE +valtimoVersion=12.0.0.RELEASE pluginGroupId=com.ritense.valtimo pluginArtifactId=xential diff --git a/backend/gradle/wrapper/gradle-wrapper.jar b/backend/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..a4b76b9 Binary files /dev/null and b/backend/gradle/wrapper/gradle-wrapper.jar differ diff --git a/backend/gradle/wrapper/gradle-wrapper.properties b/backend/gradle/wrapper/gradle-wrapper.properties index 62f495d..9355b41 100644 --- a/backend/gradle/wrapper/gradle-wrapper.properties +++ b/backend/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/backend/gradlew b/backend/gradlew index fcb6fca..f5feea6 100755 --- a/backend/gradlew +++ b/backend/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -83,7 +85,9 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -144,7 +148,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +156,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -201,11 +205,11 @@ fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/backend/gradlew.bat b/backend/gradlew.bat index 6689b85..9b42019 100644 --- a/backend/gradlew.bat +++ b/backend/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @@ -43,11 +45,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/backend/plugin/build.gradle b/backend/plugin/build.gradle index 17eec96..857fc45 100644 --- a/backend/plugin/build.gradle +++ b/backend/plugin/build.gradle @@ -33,6 +33,8 @@ plugins { id "org.jetbrains.kotlin.plugin.spring" version "${kotlinVersion}" id "org.jetbrains.kotlin.plugin.allopen" version "${kotlinVersion}" id "com.avast.gradle.docker-compose" version "0.16.9" + + id "org.openapi.generator" version "7.9.0" } repositories { @@ -49,9 +51,17 @@ dependencies { implementation "com.ritense.valtimo:value-resolver:${valtimoVersion}" implementation "org.springframework.boot:spring-boot-starter-webflux:${springVersion}" + implementation "org.springframework.boot:spring-boot-starter-data-jpa:${springVersion}" implementation "io.github.microutils:kotlin-logging:3.0.5" + implementation "jakarta.inject:jakarta.inject-api:2.0.1" + implementation "jakarta.persistence:jakarta.persistence-api:3.1.0" + + implementation("com.squareup.okhttp3:okhttp:4.12.0") + implementation("com.squareup.moshi:moshi:1.15.1") + implementation("com.squareup.moshi:moshi-kotlin:1.15.1") + // Testing testImplementation "com.ritense.valtimo:document:${valtimoVersion}" testImplementation "com.ritense.valtimo:local-resource:${valtimoVersion}" @@ -74,6 +84,23 @@ dependencies { testImplementation "org.jetbrains.kotlin:kotlin-test-junit5" } +openApiGenerate { + inputSpec.set("$rootDir/plugin/src/main/resources/dcsg_xential.yaml") + generatorName.set("kotlin") + outputDir.set("${getLayout().getBuildDirectory().get()}/generated") + apiPackage.set("com.rotterdam.xential.api") + invokerPackage.set("com.rotterdam.xential.invoker") + modelPackage.set("com.rotterdam.xential.model") +} + +sourceSets { + main { + java { + srcDir("${buildDir}/generated/src/main") + } + } +} + tasks.register("integrationTesting", Test) { group = "verification" useJUnitPlatform { @@ -92,8 +119,7 @@ test { useJUnitPlatform() } -sourceCompatibility = 17 -targetCompatibility = 17 +java.sourceCompatibility = JavaVersion.VERSION_22 apply plugin: "com.avast.gradle.docker-compose" diff --git a/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/autoconfiguration/XentialAutoConfiguration.kt b/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/autoconfiguration/XentialAutoConfiguration.kt index 1fcb38e..cb752a7 100644 --- a/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/autoconfiguration/XentialAutoConfiguration.kt +++ b/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/autoconfiguration/XentialAutoConfiguration.kt @@ -17,21 +17,64 @@ package com.ritense.valtimo.xential.autoconfiguration import com.ritense.plugin.service.PluginService -import com.ritense.resource.service.TemporaryResourceStorageService +import com.ritense.valtimo.contract.config.LiquibaseMasterChangeLogLocation import com.ritense.valtimo.xential.plugin.XentialPluginFactory +import com.ritense.valtimo.xential.repository.XentialTokenRepository +import com.ritense.valtimo.xential.service.DocumentGenerationService +import com.rotterdam.xential.api.DefaultApi +import org.openapitools.client.infrastructure.ApiClient +import org.springframework.beans.factory.annotation.Value import org.springframework.boot.autoconfigure.AutoConfiguration import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean +import org.springframework.boot.autoconfigure.domain.EntityScan import org.springframework.context.annotation.Bean +import org.springframework.data.jpa.repository.config.EnableJpaRepositories +import org.springframework.web.reactive.function.client.WebClient @AutoConfiguration +@EnableJpaRepositories(basePackages = ["com.ritense.valtimo.xential.repository"]) +@EntityScan("com.ritense.valtimo.xential.domain") class XentialAutoConfiguration { @Bean @ConditionalOnMissingBean(XentialPluginFactory::class) fun xentialPluginFactory( pluginService: PluginService, + documentGenerationService: DocumentGenerationService ): XentialPluginFactory { - return XentialPluginFactory(pluginService) + return XentialPluginFactory( + pluginService, + documentGenerationService, + ) } + @Bean + @ConditionalOnMissingBean(name = ["xentialLiquibaseMasterChangeLogLocation"]) + fun xentialLiquibaseMasterChangeLogLocation(): LiquibaseMasterChangeLogLocation { + return LiquibaseMasterChangeLogLocation("config/liquibase/xential-plugin-master.xml") + } + + @Bean + @ConditionalOnMissingBean + fun defaultApi(): DefaultApi { + return DefaultApi() + } + + @Bean + @ConditionalOnMissingBean + fun apiClient( + @Value("plugin.xential.baseurl") + baseUrl: String, + ) = ApiClient(baseUrl) + + @Bean + @ConditionalOnMissingBean + fun documentGenerationService( + defaultApi: DefaultApi, + xentialTokenRepository: XentialTokenRepository + ) = DocumentGenerationService( + defaultApi, + xentialTokenRepository, + ) + } diff --git a/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/domain/GenerateDocumentProperties.kt b/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/domain/GenerateDocumentProperties.kt new file mode 100644 index 0000000..606a0e9 --- /dev/null +++ b/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/domain/GenerateDocumentProperties.kt @@ -0,0 +1,14 @@ +package com.ritense.valtimo.xential.domain + +import java.util.UUID + +data class GenerateDocumentProperties( + val templateId: UUID, + val fileFormat: FileFormat, + val documentId: String, + val templateData: Map +) + +enum class FileFormat { + WORD, PDF +} diff --git a/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/domain/XentialToken.kt b/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/domain/XentialToken.kt new file mode 100644 index 0000000..2ec93ec --- /dev/null +++ b/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/domain/XentialToken.kt @@ -0,0 +1,20 @@ +package com.ritense.valtimo.xential.domain + +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.Id +import jakarta.persistence.Table +import java.net.URI +import java.util.UUID + +@Entity +@Table(name = "xential_tokens") +data class XentialToken ( + @Id + @Column(name = "token", nullable = false, updatable = false) + val token: UUID, + @Column(name = "process_id", nullable = false, updatable = false) + val processId: UUID, + @Column(name = "resume_url", nullable = true, updatable = false) + val resumeUrl: URI?, +) diff --git a/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/plugin/XentialPlugin.kt b/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/plugin/XentialPlugin.kt index a8f67de..df2e19d 100644 --- a/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/plugin/XentialPlugin.kt +++ b/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/plugin/XentialPlugin.kt @@ -17,6 +17,17 @@ package com.ritense.valtimo.xential.plugin import com.ritense.plugin.annotation.Plugin +import com.ritense.plugin.annotation.PluginAction +import com.ritense.plugin.annotation.PluginProperty +import com.ritense.processlink.domain.ActivityTypeWithEventName +import com.ritense.valtimo.xential.domain.GenerateDocumentProperties +import com.ritense.valtimo.xential.domain.XentialToken +import com.ritense.valtimo.xential.repository.XentialTokenRepository +import com.ritense.valtimo.xential.service.DocumentGenerationService +import com.rotterdam.xential.api.DefaultApi +import com.rotterdam.xential.model.Sjabloondata +import org.camunda.bpm.engine.delegate.DelegateExecution +import java.util.UUID @Plugin( key = "xential", @@ -24,6 +35,28 @@ import com.ritense.plugin.annotation.Plugin description = "" ) class XentialPlugin( + val documentGenerationService: DocumentGenerationService ) { + @PluginProperty(key = "clientId", secret = false) + private lateinit var clientId: String + + @PluginProperty(key = "clientPassword", secret = true) + private lateinit var clientPassword: String + + @PluginAction( + key = "generate-document", + title = "Generate document", + description = "Generate a document using xential.", + activityTypes = [ActivityTypeWithEventName.SERVICE_TASK_START] + ) + fun generateDocument(execution: DelegateExecution, generateDocumentProperties: GenerateDocumentProperties) { + documentGenerationService.generateDocument( + UUID.fromString(execution.processInstanceId), + generateDocumentProperties, + clientId, + clientPassword + ) + } + } diff --git a/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/plugin/XentialPluginFactory.kt b/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/plugin/XentialPluginFactory.kt index 2b45656..5dfd1d2 100644 --- a/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/plugin/XentialPluginFactory.kt +++ b/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/plugin/XentialPluginFactory.kt @@ -18,12 +18,17 @@ package com.ritense.valtimo.xential.plugin import com.ritense.plugin.PluginFactory import com.ritense.plugin.service.PluginService +import com.ritense.valtimo.xential.repository.XentialTokenRepository +import com.ritense.valtimo.xential.service.DocumentGenerationService +import com.rotterdam.xential.api.DefaultApi +import org.springframework.web.client.RestClient class XentialPluginFactory( pluginService: PluginService, + val documentGenerationService: DocumentGenerationService ) : PluginFactory(pluginService) { override fun create(): XentialPlugin { - return XentialPlugin() + return XentialPlugin(documentGenerationService) } } diff --git a/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/repository/XentialTokenRepository.kt b/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/repository/XentialTokenRepository.kt new file mode 100644 index 0000000..4942071 --- /dev/null +++ b/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/repository/XentialTokenRepository.kt @@ -0,0 +1,7 @@ +package com.ritense.valtimo.xential.repository + +import com.ritense.valtimo.xential.domain.XentialToken +import org.springframework.data.repository.CrudRepository +import java.util.UUID + +interface XentialTokenRepository : CrudRepository diff --git a/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/service/DocumentGenerationService.kt b/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/service/DocumentGenerationService.kt new file mode 100644 index 0000000..bc987a3 --- /dev/null +++ b/backend/plugin/src/main/kotlin/com/ritense/valtimo/xential/service/DocumentGenerationService.kt @@ -0,0 +1,45 @@ +package com.ritense.valtimo.xential.service + +import com.ritense.valtimo.xential.domain.GenerateDocumentProperties +import com.ritense.valtimo.xential.domain.XentialToken +import com.ritense.valtimo.xential.repository.XentialTokenRepository +import com.rotterdam.xential.api.DefaultApi +import com.rotterdam.xential.model.Sjabloondata +import org.openapitools.client.infrastructure.ApiClient +import java.util.UUID + +class DocumentGenerationService( + val defaultApi: DefaultApi, + val xentialTokenRepository: XentialTokenRepository, + ) { + + fun generateDocument( + processId: UUID, + generateDocumentProperties: GenerateDocumentProperties, + clientId: String, + clientPassword: String, + ) { + val sjabloonVulData = generateDocumentProperties.templateData.entries.map { "<${it.key}>${it.value}" }.joinToString() + + ApiClient.username = clientId + ApiClient.password = clientPassword + val result = defaultApi.creeerDocument( + gebruikersId = clientId, + accepteerOnbekend = false, + sjabloondata = Sjabloondata( + sjabloonId = generateDocumentProperties.templateId.toString(), + bestandsFormaat = Sjabloondata.BestandsFormaat.valueOf(generateDocumentProperties.fileFormat.name), + documentkenmerk = generateDocumentProperties.documentId, + sjabloonVulData = "$sjabloonVulData" + ) + ) + + val xentialToken = XentialToken( + token = UUID.fromString(result.documentCreatieSessieId), + processId = processId, + resumeUrl = result.resumeUrl + ) + + xentialTokenRepository.save(xentialToken) + } +} diff --git a/backend/plugin/src/main/resources/config/liquibase/changelog/20241010-add-xential_tokens.xml b/backend/plugin/src/main/resources/config/liquibase/changelog/20241010-add-xential_tokens.xml new file mode 100644 index 0000000..0b9992f --- /dev/null +++ b/backend/plugin/src/main/resources/config/liquibase/changelog/20241010-add-xential_tokens.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + diff --git a/backend/plugin/src/main/resources/config/liquibase/xential-plugin-master.xml b/backend/plugin/src/main/resources/config/liquibase/xential-plugin-master.xml new file mode 100644 index 0000000..2b6a09b --- /dev/null +++ b/backend/plugin/src/main/resources/config/liquibase/xential-plugin-master.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/backend/plugin/src/main/resources/dcsg_xential.yaml b/backend/plugin/src/main/resources/dcsg_xential.yaml new file mode 100644 index 0000000..28a563d --- /dev/null +++ b/backend/plugin/src/main/resources/dcsg_xential.yaml @@ -0,0 +1,349 @@ +openapi: 3.0.2 +info: + title: Document Creatie Services Gateway (DCSG) API + description: 'Deze specificatie beschrijft generiek koppelvlak voor documentcreatie diensten van de gemeente Rotterdam.\ + \n\ + \nVoor alle functies geldt dat de volgende twee parameters als onderdeel van Basic authenticatie + meegestuurd moeten worden:\ + \n* Taakapplicatie naam\ + \n* Taakapplicatie wachtwoord' + contact: + url: https://www.rotterdam.nl + email: noreply@rotterdam.nl + version: 1.1.0 +paths: + /sjablonenlijst: + get: + operationId: geefSjablonenlijst + summary: Ophalen sjablonenlijst + description: "Documentsjablonen worden beheerd als een boom met sjabloongroepen en sjablonen + (geneste boomstructuur vergelijkbaar met mappenboom). Gebruikers worden geautoriseerd voor + de toegang tot een bepaald sjabloongroep. Daarmee krijgen gebruikers de toegang tot alle + onderliggende subgroepen en sjablonen op alle hiërarchische onderliggende niveaus. + Deze functie biedt de mogelijkheid om de lijst van sjablonen en sjabloongroepen binnen + een sjabloongroep op te halen. Indien sjabloongroep niet is opgegeven in het request + dan retourneert deze functie de inhoud van de hoofdgroep (root)." + parameters: + - name: gebruikersId + in: query + description: Gebruikersnaam van de gebruiker die de sjablonen ophaalt (medewerkerid) + required: true + example: '123456' + schema: + type: string + - name: sjabloongroepId + in: query + description: Optioneel ID van bovenliggende sjabloongroep. Als die niet is geleverd dan wordt de inhoud van de hoofdgroep geretourneerd. + required: false + example: bc9f22c4-9db8-4724-8424-c2b88404cf5e + schema: + type: string + responses: + '200': + description: OK, lijsten met sjablonen en sjabloongroepen + content: + application/json: + schema: + $ref: '#/components/schemas/Sjabloonitems' + '400': + description: Bad request, mogelijke invalide parameter; PARAMETER_FOUT; HEADER_FOUT + content: + application/problem+json: + schema: + $ref: '#/components/schemas/Fout' + '401': + description: Unauthorized, authenticatie problemen; AUTHENTICATIE_FOUT of ONBEKENDE_GEBRUIKER + content: + application/problem+json: + schema: + $ref: '#/components/schemas/Fout' + '403': + description: Forbidden, autorisatie problemen; ONVOLDOENDE_RECHTEN + content: + application/problem+json: + schema: + $ref: '#/components/schemas/Fout' + '408': + description: Time-out, request time-out opgetreden; TIME_OUT + content: + application/problem+json: + schema: + $ref: '#/components/schemas/Fout' + '500': + description: Internal Server Error; ONBEKENDE_FOUT + content: + application/problem+json: + schema: + $ref: '#/components/schemas/Fout' + '503': + description: Service Unavailable, Xential of ESB niet bereikbaar (mogelijk in onderhoud) + content: + application/problem+json: + schema: + $ref: '#/components/schemas/Fout' + /documentcreatie: + post: + operationId: creeerDocument + summary: Initiëren document creatie + description: "Middels deze functie initieert de taakapplicatie de creatie van het document op + basis van een sjabloon. Het wordt hier nadrukkelijk gesproken over initiatie omdat deze functie + niet direct (synchroon) het gecreëerde document teruglevert. Het document wordt op achtergrond + gecreëerd en asynchroon op een ander moment geleverd via de queue. Zie formaat van het bericht + op de queue in het schema DocumentData" + parameters: + - name: gebruikersId + in: query + description: Gebruikersnaam van de gebruiker die het document creëert (medewerkerid) + required: true + example: '123456' + schema: + type: string + - name: accepteerOnbekend + in: query + description: "Optionele indicatie of een onbekende gebruiker acceptabel is of niet. + Indien een onbekende gebruiker acceptabel is, wordt er een 'startDocumentUrl' + geretourneerd waarmee de gebruiker zich kan bekend maken bij Xential" + schema: + type: boolean + requestBody: + required: false + content: + application/json: + schema: + $ref: '#/components/schemas/Sjabloondata' + responses: + '200': + description: OK, start van documentcreatie is gelukt + content: + application/json: + schema: + $ref: '#/components/schemas/DocumentCreatieResultaat' + '400': + description: Bad request, mogelijke invalide parameter; PARAMETER_FOUT; INVALIDE_INPUT; HEADER_FOUT + content: + application/problem+json: + schema: + $ref: '#/components/schemas/Fout' + '401': + description: Unauthorized, authenticatie problemen; AUTHENTICATIE_FOUT of ONBEKENDE_GEBRUIKER + content: + application/problem+json: + schema: + $ref: '#/components/schemas/Fout' + '403': + description: Forbidden, autorisatie problemen; ONVOLDOENDE_RECHTEN + content: + application/problem+json: + schema: + $ref: '#/components/schemas/Fout' + '408': + description: Time-out, request time-out opgetreden; TIME_OUT + content: + application/problem+json: + schema: + $ref: '#/components/schemas/Fout' + '500': + description: Internal Server Error; ONBEKENDE_FOUT + content: + application/problem+json: + schema: + $ref: '#/components/schemas/Fout' + '503': + description: Service Unavailable, Xential of ESB niet bereikbaar (mogelijk vanwege onderhoud) + content: + application/problem+json: + schema: + $ref: '#/components/schemas/Fout' + +components: + securitySchemes: + basicAuth: + type: http + scheme: basic + schemas: + Fout: + description: 'Dit schema beschrijft formaat van het synchrone response van functies bij fouten.\ + \n\ + \nIn uitzonderingsgevallen (bij HTTP400 Bad request of HTTP500 Internal server error) kunnen echter + json-responses in het volgende formaat geretourneerd worden: + {\"timestamp\": \"2021-08-10\",\"status\": 500,\"error\": \"Internal Server Error\",\"message\": \"\",\"path\": \"/document\/generatie\/documentcreatie\"}' + required: + - code + - detail + type: object + properties: + type: + title: Type + description: URI referentie naar het type fout (wordt nog niet gevuld) + example: '' + type: string + code: + title: Code + description: Systeemcode die het type fout aangeeft + type: string + example: 'INVALIDE_INPUT' + minLength: 1 + title: + title: Title + description: Generieke titel voor het type fout (wordt nog niet gevuld) + type: string + example: '' + minLength: 1 + status: + title: Status + description: De HTTP status code + type: integer + example: 400 + detail: + title: Detail + description: Extra informatie bij de fout + type: string + example: 'XML data fout' + minLength: 1 + instance: + title: Instance + description: "End-to-end Request ID (uuid) die automatisch door ESB wordt gegeneerd bij elk request + en die ook in e-mail berichten FoutAfhandelaar is opgenomen" + type: string + example: 80a48aa5-3ada-4d5e-b378-765991c5cf66 + minLength: 0 + Sjabloonitems: + description: "Dit schema beschrijft formaat van het response van de functie Ophalen sjablonen" + required: + - sjablonen + - sjabloongroepen + type: object + properties: + sjablonen: + title: Sjablonen + description: Lijst van sjablonen + type: array + items: + $ref: '#/components/schemas/Sjabloonitem' + sjabloongroepen: + title: Sjabloongroepen + description: Lijst van sjabloongroepen + type: array + items: + $ref: '#/components/schemas/Sjabloonitem' + Sjabloonitem: + required: + - id + - naam + type: object + properties: + id: + title: Id + description: Unieke id van sjabloon/ sjabloongroep + type: string + example: 'e0a8ace5-06df-4ef7-bcbb-9d694d25e03b' + naam: + title: Naam + description: Naam van sjabloon/ sjabloongroep + type: string + example: 'Lorem ipsum' + Sjabloondata: + description: "Dit schema beschrijft formaat van het request voor de functie Initieren documentcreatie" + type: object + properties: + sjabloonId: + title: SjabloonId + description: "Optionele ID van het sjabloon. Indien niet meegegeven zal de eindgebruiker + dit sjabloon moet gaan selecteren via de client (zie Resume URL parameter in het response)" + type: string + example: 3e09b238-0617-47c1-8e6a-f6227b3d542e + bestandsFormaat: + title: BestandsFormaat + description: Optionele keuze van het bestandsformaat (WORD of PDF), WORD is default + type: string + enum: + - WORD + - PDF + documentkenmerk: + title: Documentkenmerk + description: "Kenmerk van het document dat samen met gecreëerd document zal worden geretourneerd + in het resultaat van documentcreatie. Dit kan zijn, bv, bestandsnaam, map Id of welke andere + identificatie dan ook die voor taakapplicaties waardevol kan zijn te ontvangen samen met + het gecreëerd document waardoor verdere afhandeling van dit document (bv, opslag) in de + taakapplicaties gefaciliteerd kan worden" + type: string + example: 'Lorem ipsum' + sjabloonVulData: + title: SjabloonVulData + description: "Optionele data in XML-formaat die zal worden gebruikt voor het vullen van + sjabloondata tijdens documentcreatie. Het formaat van deze data wordt gezamenlijk bepaald + door ontwikkelaars van taakapplicaties en ontwerpers van documentsjablonen, ESB ziet + deze data als een blackbox en controleert het alleen op well-formedness." + type: string + example: "test" + DocumentData: + description: "Dit schema beschrijft het berichtformaat van het eindresultaat van documentcreatie + welke in de queue wordt geplaatst." + required: + - taakapplicatie + - gebruiker + - documentCreatieSessieId + - formaat + - data + type: object + properties: + taakapplicatie: + title: Taakapplicatie + description: De naam van de taakapplicatie + type: string + example: 'applicatiexyz' + gebruiker: + title: Gebruiker + description: De naam van de gebruiker + type: string + example: '123456' + documentCreatieSessieId: + title: Document Creatie Sessie ID + description: "Unieke ID toegewezen door de ESB aan het document dat was geretourneerd + als resultaat van de functie Initiëren document creatie" + type: string + example: 6d4b2fa2-5d02-4949-ace3-53c9b0ff1e4e + formaat: + title: Bestandsformaat + description: Bestandsformaat (WORD of PDF) waarin het document is gecreëerd + type: string + enum: + - WORD + - PDF + documentkenmerk: + title: Documentkenmerk + description: Kenmerk van het document dat bij het initiëren documentcreatie is opgegeven. + type: string + example: 'Lorem ipsum' + data: + title: Data + description: Inhoud van document in base64-encoding zonder linebreaks + type: string + example: 'UEsDBBQACAgIA...' + DocumentCreatieResultaat: + description: "Dit schema beschrijft formaat van het response van de functie Initieren documentcreatie" + required: + - documentCreatieSessieId + - status + type: object + properties: + documentCreatieSessieId: + description: Unieke ID toegewezen door de ESB aan het document dat wordt gecreëerd. + type: string + example: 6d4b2fa2-5d02-4949-ace3-53c9b0ff1e4e + status: + description: "Dit veld geeft aan of het document volledig zonder interactie met + eindgebruiker opgebouwd zal worden (VOLTOOID), of dat er nog input van eindgebruiker + benodigd is (ONVOLTOOID). In het laatste geval wordt ook het veld Resume URL geretourneerd." + type: string + enum: + - VOLTOOID + - ONVOLTOOID + resumeUrl: + description: "Link naar de webpagina waarin eindgebruiker ontbrekende data benodigd voor + documentcreatie kan invullen. Wordt alleen geretourneerd indien status = ONVOLTOOID" + type: string + format: uri + example: "https://rotterdam.xentiallabs.com/xential?resumeApplication=b85c58db-e50a-4c11-a6a8-2b522b87483d&loginTicketUuid=0b9077f3-e662-4a85-b9f9-e7418fbecc73&afterBuildAction=close" +security: + - basicAuth: [] \ No newline at end of file diff --git a/backend/plugin/src/test/kotlin/com/ritense/valtimo/xential/service/DocumentGenerationServiceTest.kt b/backend/plugin/src/test/kotlin/com/ritense/valtimo/xential/service/DocumentGenerationServiceTest.kt new file mode 100644 index 0000000..92983d7 --- /dev/null +++ b/backend/plugin/src/test/kotlin/com/ritense/valtimo/xential/service/DocumentGenerationServiceTest.kt @@ -0,0 +1,68 @@ +package com.ritense.valtimo.xential.service + +import com.ritense.valtimo.xential.domain.FileFormat +import com.ritense.valtimo.xential.domain.GenerateDocumentProperties +import com.ritense.valtimo.xential.domain.XentialToken +import com.ritense.valtimo.xential.repository.XentialTokenRepository +import com.rotterdam.xential.api.DefaultApi +import com.rotterdam.xential.model.DocumentCreatieResultaat +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import org.mockito.InjectMocks +import org.mockito.Mock +import org.mockito.MockitoAnnotations +import org.mockito.kotlin.any +import org.mockito.kotlin.verify +import org.mockito.kotlin.whenever +import org.openapitools.client.infrastructure.ApiClient +import java.util.UUID + +class DocumentGenerationServiceTest { + + @Mock + lateinit var defaultApi: DefaultApi + + @Mock + lateinit var xentialTokenRepository: XentialTokenRepository + + @InjectMocks + lateinit var documentGenerationService: DocumentGenerationService + + @BeforeEach + fun setup() { + MockitoAnnotations.openMocks(this) + } + + @Test + fun shouldGenerateDocument() { + val executionId = UUID.randomUUID() + + val generateDocumentProperties = GenerateDocumentProperties( + templateId = UUID.randomUUID(), + fileFormat = FileFormat.PDF, + documentId = "mijn-kenmerk", + templateData = emptyMap() + ) + + val creatieResultaat = DocumentCreatieResultaat( + documentCreatieSessieId = UUID.randomUUID().toString(), + status = DocumentCreatieResultaat.Status.VOLTOOID, + resumeUrl = null + ) + whenever(defaultApi.creeerDocument(any(), any(), any())).thenReturn(creatieResultaat) + + documentGenerationService.generateDocument( + executionId, + generateDocumentProperties, + "client-id", + "client-password", + ) + + verify(xentialTokenRepository).save(XentialToken( + token = UUID.fromString(creatieResultaat.documentCreatieSessieId), + processId = executionId, + resumeUrl = null + )) + } + +} diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 5917a1f..f10e09f 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -2733,10 +2733,11 @@ "integrity": "sha512-M5xW61ba7z2maBxfoT4c1bjuLD8OIL7863et/hULiNG6+R/B9CZ4Qze1juuIfXv4zpF2fYSuUsTPkTtiZrcspQ==" }, "node_modules/@carbon/colors": { - "version": "11.23.1", - "resolved": "https://registry.npmjs.org/@carbon/colors/-/colors-11.23.1.tgz", - "integrity": "sha512-pFi52Xy8Z+YBio9/dI7TBL6fF+0SyeXRwu5PMvSk0RzSaaJFNl5norrsBQFlM90PYjVFhD/tTZb6Oxe/CyMOJQ==", + "version": "11.27.0", + "resolved": "https://registry.npmjs.org/@carbon/colors/-/colors-11.27.0.tgz", + "integrity": "sha512-4H1Lfuw1WJYndoCSn+HOoA8JPW0old41FtuKgK+okc/QXmTpw21tK7KL6D+Yu68JEWAksEPssKUeggLAgWkYjA==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@ibm/telemetry-js": "^1.5.0" } @@ -2746,6 +2747,7 @@ "resolved": "https://registry.npmjs.org/@carbon/feature-flags/-/feature-flags-0.18.0.tgz", "integrity": "sha512-gOM2WSQamTJMZXGsLUYYgVGLVsC8Y/CNIDkivW6VDESg+T68yBAzphqsarOkqRxs1hf/Re8r+EzwKyLuHf6PQA==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@ibm/telemetry-js": "^1.2.1" } @@ -2755,6 +2757,7 @@ "resolved": "https://registry.npmjs.org/@carbon/grid/-/grid-11.22.0.tgz", "integrity": "sha512-b5R4LMRatZ0ZmRh+outCkPIFIF+gvM3sPjC0NAuAc2CQ6lAZP07/m5f8TOX9YAo10kE1j63hU+unEzs6lAHPRA==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@carbon/layout": "^11.21.0", "@ibm/telemetry-js": "^1.2.1" @@ -2763,31 +2766,35 @@ "node_modules/@carbon/icon-helpers": { "version": "10.37.0", "resolved": "https://registry.npmjs.org/@carbon/icon-helpers/-/icon-helpers-10.37.0.tgz", - "integrity": "sha512-YXed2JUSCGddp3UnY5OffR3W8Pl+dy9a+vfUtYhSLH9TbIEBR6EvYIfvruFMhA8JIVMCUClUqgyMQXM5oMFQ0g==" + "integrity": "sha512-YXed2JUSCGddp3UnY5OffR3W8Pl+dy9a+vfUtYhSLH9TbIEBR6EvYIfvruFMhA8JIVMCUClUqgyMQXM5oMFQ0g==", + "license": "Apache-2.0" }, "node_modules/@carbon/icons": { "version": "11.38.0", "resolved": "https://registry.npmjs.org/@carbon/icons/-/icons-11.38.0.tgz", "integrity": "sha512-8ZL+7UyE01/MQxq6frmcty7t86pLV0z9wXLo9PC14nsk3eSs0Zbh5aw2PUv7scD4eNDVbEGg8UI7LUqCO3as9Q==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@ibm/telemetry-js": "^1.2.1" } }, "node_modules/@carbon/layout": { - "version": "11.23.1", - "resolved": "https://registry.npmjs.org/@carbon/layout/-/layout-11.23.1.tgz", - "integrity": "sha512-g2cfvmktD5wwHiebj/vS1rVJYwEVbC4tMzXBWEtTWNmsZkoABSxaWXS2BeLXARc5g9d4Voh2aQ4HX6oPdQuubw==", + "version": "11.27.0", + "resolved": "https://registry.npmjs.org/@carbon/layout/-/layout-11.27.0.tgz", + "integrity": "sha512-o2++xUe2Wfg1nzneLl8ucbep9ObUE6vEgwlifVdOpvCti6zlsRjti5ojtYpx3v0yW2Qh7TJH8OYN7CyZDLeZUw==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@ibm/telemetry-js": "^1.5.0" } }, "node_modules/@carbon/motion": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@carbon/motion/-/motion-11.19.1.tgz", - "integrity": "sha512-DwV+AUErG3cQ1FfDYfOaf49c4kCq51Yi4JZtIStRHoSy4on6tWNQvaLRP7SLsngU5YZMk/pc4JQ6PnEnstg1Lw==", + "version": "11.23.0", + "resolved": "https://registry.npmjs.org/@carbon/motion/-/motion-11.23.0.tgz", + "integrity": "sha512-zPxO/lp9FaHET967NHTbQ7pvmqATIQcsiM8WxzNuF2UUNlw6oRL/LMro1eZC9OgKAnyTXRUoxdtYphMhFOXWpA==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@ibm/telemetry-js": "^1.5.0" } @@ -2797,6 +2804,7 @@ "resolved": "https://registry.npmjs.org/@carbon/styles/-/styles-1.53.1.tgz", "integrity": "sha512-g7PxeoEpxY5MQafQL9TaocDZqHhdvrUPoTiOBX/TmWFNG7/LdXxngh2ynqgrXMO8YzypDZdXatExdLyZ5fzU6w==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@carbon/colors": "^11.21.0", "@carbon/feature-flags": "^0.18.0", @@ -2821,6 +2829,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/@carbon/telemetry/-/telemetry-0.1.0.tgz", "integrity": "sha512-kNWt0bkgPwGW0i5h7HFuljbKRXPvIhsKbB+1tEURAYLXoJg9iJLF1eGvWN5iVoFCS2zje4GR3OGOsvvKVe7Hlg==", + "license": "Apache-2.0", "bin": { "carbon-telemetry": "bin/carbon-telemetry.js" } @@ -2830,6 +2839,7 @@ "resolved": "https://registry.npmjs.org/@carbon/themes/-/themes-11.33.1.tgz", "integrity": "sha512-pEsqqJBdt3ttpZY1gKydqZ7TL80FPuklnfuNNIFKqVTWnQedFZVAkEnmRKiZTmdT9dMj9Hr2nng92IyGS0rFDA==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@carbon/colors": "^11.21.0", "@carbon/layout": "^11.21.0", @@ -2839,30 +2849,33 @@ } }, "node_modules/@carbon/type": { - "version": "11.28.1", - "resolved": "https://registry.npmjs.org/@carbon/type/-/type-11.28.1.tgz", - "integrity": "sha512-AarpSSe3Y//xwHnxcOP0gFmOrOyUz5AtF0XHnSVgb8QmbqIQsTCFSpZoORBR5+4MJ0Ynp8UZSVfI579yyWt6rw==", + "version": "11.32.0", + "resolved": "https://registry.npmjs.org/@carbon/type/-/type-11.32.0.tgz", + "integrity": "sha512-av09976fl4YlaO4HEDs0RG17sg5X0TJbb9m9HfugZjNKDHFbWo87oGLmvgh4J+/ewkC40Wnp24rAewPEaYKFGw==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@carbon/grid": "^11.24.1", - "@carbon/layout": "^11.23.1", + "@carbon/grid": "^11.28.0", + "@carbon/layout": "^11.27.0", "@ibm/telemetry-js": "^1.5.0" } }, "node_modules/@carbon/type/node_modules/@carbon/grid": { - "version": "11.24.1", - "resolved": "https://registry.npmjs.org/@carbon/grid/-/grid-11.24.1.tgz", - "integrity": "sha512-94hyPcyMiDBsRnFKMUL4/3t5XJ0r6T2BKOo0IcTFdsR+tka2Z7OGfB/3D+MePej9x7kh6I0I+tM6budtz3bbhQ==", + "version": "11.28.0", + "resolved": "https://registry.npmjs.org/@carbon/grid/-/grid-11.28.0.tgz", + "integrity": "sha512-J0E8gGYOOlNfKB4Omks9fJdAI5CmzWF6JvCDndTCcpq58By1atQt9n1C1jvo8iHf84ZDoU1Vd6+ZB9u4fXKdNg==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@carbon/layout": "^11.23.1", + "@carbon/layout": "^11.27.0", "@ibm/telemetry-js": "^1.5.0" } }, "node_modules/@carbon/utils-position": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@carbon/utils-position/-/utils-position-1.1.4.tgz", - "integrity": "sha512-/01kFPKr+wD2pPd5Uck2gElm3K/+eNxX7lEn2j1NKzzE4+eSZXDfQtLR/UHcvOSgkP+Av42LET6B9h9jXGV+HA==" + "integrity": "sha512-/01kFPKr+wD2pPd5Uck2gElm3K/+eNxX7lEn2j1NKzzE4+eSZXDfQtLR/UHcvOSgkP+Av42LET6B9h9jXGV+HA==", + "license": "MIT" }, "node_modules/@colors/colors": { "version": "1.5.0", @@ -3498,6 +3511,7 @@ "version": "2.12.4-rc.1", "resolved": "https://registry.npmjs.org/@formio/bootstrap3/-/bootstrap3-2.12.4-rc.1.tgz", "integrity": "sha512-4B5rs+w9tAk5i+wbdw2/NrTxPqnDX7/W19tiTd9lfXnIGQmaj0ecMEVqDmOJg8pIlyU02g3c4ih6JnA/JVmUbA==", + "license": "MIT", "dependencies": { "resize-observer-polyfill": "^1.5.1" } @@ -3506,6 +3520,7 @@ "version": "10.2.1", "resolved": "https://registry.npmjs.org/@formio/choices.js/-/choices.js-10.2.1.tgz", "integrity": "sha512-NCE5u7jG3XGokJP16MyAbVSUptKu/mpJYAxd4PPIoLiO/l9Do5uoOQ0MgNb9qG9qABJiOX+qNRE8q8RybY/SwQ==", + "license": "MIT", "dependencies": { "deepmerge": "^4.2.2", "fuse.js": "^6.6.2", @@ -3515,17 +3530,20 @@ "node_modules/@formio/semantic": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/@formio/semantic/-/semantic-2.6.1.tgz", - "integrity": "sha512-obp1BT5UnzD+uYBbqmnsTfO2hGxI2A2iR/cj3P5JUFLYSBpnr3TS2ShQ7Ee5GCRRtJPu0JnljuJj+YSKLCMuhg==" + "integrity": "sha512-obp1BT5UnzD+uYBbqmnsTfO2hGxI2A2iR/cj3P5JUFLYSBpnr3TS2ShQ7Ee5GCRRtJPu0JnljuJj+YSKLCMuhg==", + "license": "MIT" }, "node_modules/@formio/text-mask-addons": { "version": "3.8.0-formio.2", "resolved": "https://registry.npmjs.org/@formio/text-mask-addons/-/text-mask-addons-3.8.0-formio.2.tgz", - "integrity": "sha512-H4Sm+1Sx59jbrlKxtKbzethhp5OIcP8Oi4JBpsvH/SB8P/KCRmtjKbN5ACqURnXmYtBHLJC6Yr9KZibOVRGxpA==" + "integrity": "sha512-H4Sm+1Sx59jbrlKxtKbzethhp5OIcP8Oi4JBpsvH/SB8P/KCRmtjKbN5ACqURnXmYtBHLJC6Yr9KZibOVRGxpA==", + "license": "Unlicense" }, "node_modules/@formio/vanilla-text-mask": { "version": "5.1.1-formio.1", "resolved": "https://registry.npmjs.org/@formio/vanilla-text-mask/-/vanilla-text-mask-5.1.1-formio.1.tgz", - "integrity": "sha512-rYBlvIPMNUd6sAaduOaiIwI4vfTAjHDRonko2qJn2RP1O//TQ7rcFIPYVYePJZ4OtOpwHiHAvAIh79McphZotQ==" + "integrity": "sha512-rYBlvIPMNUd6sAaduOaiIwI4vfTAjHDRonko2qJn2RP1O//TQ7rcFIPYVYePJZ4OtOpwHiHAvAIh79McphZotQ==", + "license": "Unlicense" }, "node_modules/@foxythemes/bootstrap-datetime-picker-bs4": { "version": "2.3.5", @@ -3568,14 +3586,16 @@ "version": "6.0.0-next.6", "resolved": "https://registry.npmjs.org/@ibm/plex/-/plex-6.0.0-next.6.tgz", "integrity": "sha512-B3uGruTn2rS5gweynLmfSe7yCawSRsJguJJQHVQiqf4rh2RNgJFu8YLE2Zd/JHV0ZXoVMOslcXP2k3hMkxKEyA==", + "license": "OFL-1.1", "engines": { "node": ">=14" } }, "node_modules/@ibm/telemetry-js": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@ibm/telemetry-js/-/telemetry-js-1.5.2.tgz", - "integrity": "sha512-KyvaHbiNMDtz2k/9DltkK3YkWTyvz8y7Pq1sQ4cnXDMzHiEatOyxw3zZgK9li80tgUOYMQLck9DLewEuhvtg7w==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@ibm/telemetry-js/-/telemetry-js-1.6.1.tgz", + "integrity": "sha512-ds45f2bz4qVvJPK84VcSMJTvTZI+qXu6wVlBcy9/hAlmzOcxeX6rh8W0De4H133HPONsZWvs0lV/H2aUcznCxw==", + "license": "Apache-2.0", "bin": { "ibmtelemetry": "dist/collect.js" } @@ -4163,6 +4183,7 @@ "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -4605,7 +4626,8 @@ "node_modules/@sphinxxxx/color-conversion": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", - "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==" + "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==", + "license": "ISC" }, "node_modules/@swagger-api/apidom-ast": { "version": "1.0.0-alpha.5", @@ -5533,6 +5555,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/account/-/account-12.0.0.tgz", "integrity": "sha512-q5hqDUqhjU5WRHrljs7ZcXjzaIXUBZX0qHyChYe7Jkeb3VFHmnCLlh3H2mWyzj/2cdBgvGxG4/iJyb2R9zxdoQ==", + "license": "EUPL-1.2", "dependencies": { "moment": "2.30.1", "tslib": "2.6.2" @@ -5546,6 +5569,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/analyse/-/analyse-12.0.0.tgz", "integrity": "sha512-s3vs/we8DkzEpECUqVYi/2Ey53rDK500ehsoHejweJaHCpaEP8XaTjUzRs09XjWBHi1NgiSM6pypvxYhgH/nlg==", + "license": "EUPL-1.2", "dependencies": { "tslib": "2.6.2" }, @@ -5558,6 +5582,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/bootstrap/-/bootstrap-12.0.0.tgz", "integrity": "sha512-UX+5WuFRISq5eVwLgbkQp0ixG8wjxzM+5DbR0sSPFLjY8JvJprSJQMeizLJr77UzPzRkZLD+h+NnDleXNEQEIQ==", + "license": "EUPL-1.2", "dependencies": { "tslib": "2.6.2" }, @@ -5570,6 +5595,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/choice-field/-/choice-field-12.0.0.tgz", "integrity": "sha512-xuKT1WBO0+2KROD+FQW5WlH4EQo6JJkkoLFRyD5QkBSfYJN1kKS/2R8634DX8jADUR+XyZT+huvdNy/flyHB3g==", + "license": "EUPL-1.2", "dependencies": { "tslib": "2.6.2" }, @@ -5582,6 +5608,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/components/-/components-12.0.0.tgz", "integrity": "sha512-1FKI5O8QH/981KkGnkF6YZUdNOnUJcHHnX3TBBdg/wq8lKoyl1kDy1PkIWATTuI9z5H799gqLJFrs3QexRjC+g==", + "license": "EUPL-1.2", "dependencies": { "@carbon/grid": "11.22.0", "@carbon/icons": "11.38.0", @@ -5621,6 +5648,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/config/-/config-12.0.0.tgz", "integrity": "sha512-sxjPcgno1rjT7fI5KKH1Lu75VWW9HmuhesL6sZPjfcXVfWHwoWXJ1Ukk+fKK2vjayg98qD+ZVqjWT5xn3vgZJg==", + "license": "EUPL-1.2", "dependencies": { "csp-header": "5.2.1", "deepmerge-ts": "5.1.0", @@ -5635,6 +5663,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/dashboard/-/dashboard-12.0.0.tgz", "integrity": "sha512-L4rP8mOYCIgG117gLOTGWA8fLsspIJuu1NWIM+inp5jG90AVVCiw0ukLYSeg+owL8dBgACcKZbQexeUmuQFJYA==", + "license": "EUPL-1.2", "dependencies": { "@ngx-translate/core": "15.0.0", "@ngx-translate/http-loader": "8.0.0", @@ -5653,6 +5682,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/dashboard-management/-/dashboard-management-12.0.0.tgz", "integrity": "sha512-w1j5J4ik8lKLQMQA66JpqZPQrQwbXY1XAD2LXft3CdS4b4rkzJzhylylCZvEGlXyrvouFVZgtLIHViQv+8370Q==", + "license": "EUPL-1.2", "dependencies": { "tslib": "2.6.2" }, @@ -5665,6 +5695,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/decision/-/decision-12.0.0.tgz", "integrity": "sha512-KlqOEApEfZnU+cWWaCAoCvIMR/0AY/pqxPiudhhEXb+ICQcBmpR5F0ub0RwiyE0N2FHsDm54/6aYT92AkfFIKg==", + "license": "EUPL-1.2", "dependencies": { "@bpmn-io/dmn-migrate": "0.4.3", "dmn-js": "12.3.0", @@ -5679,6 +5710,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/document/-/document-12.0.0.tgz", "integrity": "sha512-+qaDJNtRIe1yfMzLPWCpUfWZmOkqnQErZ2MK19ApquakTaSGRF/MrcueXhYyZC1YT7LY4aPE5wflsbmo8nU2dA==", + "license": "EUPL-1.2", "dependencies": { "tslib": "2.6.2" }, @@ -5691,6 +5723,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/dossier/-/dossier-12.0.0.tgz", "integrity": "sha512-FPqrHa+iB8VYO2jI5ueU7GrWntPQhrYUj2AZqGfCAPlJb4Yt5esrltVousSmXDgm1EiTgOMYZ/p3O5eb/LeLvw==", + "license": "EUPL-1.2", "dependencies": { "@ngx-translate/core": "15.0.0", "@ngx-translate/http-loader": "8.0.0", @@ -5708,6 +5741,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/dossier-management/-/dossier-management-12.0.0.tgz", "integrity": "sha512-iooubv1hg1Jp0KeVsXu1X/T8MTWKC30l53nETVV7tOSM8p7sDG+hYqKlsy7pXr/puJN7v15Ylu8tIBWcohIyIQ==", + "license": "EUPL-1.2", "dependencies": { "tslib": "2.6.2" }, @@ -5720,6 +5754,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/form/-/form-12.0.0.tgz", "integrity": "sha512-tzuMffaSISHHBoceT1MHAR/Z1RIzlPOa18PEbAm/5qZ0Y1IyTEE0rU0s0YlDLalS4Qf7KgLXURn2gSZZOXCqMA==", + "license": "EUPL-1.2", "dependencies": { "tslib": "2.6.2" }, @@ -5732,6 +5767,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/form-management/-/form-management-12.0.0.tgz", "integrity": "sha512-IhzBtHFGPlXUKkZOocIstX2RcWdfqsm50V3axR8smUa8AsZng5o5pbS82MYP+VwjMtHCrXtyUEXq7mBAjP3dOQ==", + "license": "EUPL-1.2", "dependencies": { "tslib": "2.6.2" }, @@ -5744,6 +5780,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/keycloak/-/keycloak-12.0.0.tgz", "integrity": "sha512-u0eQTeUb1r/1LY6JVQcxvsXj4QxBzl0EW8FQwKgPF1KqTyFMRNHFueqtDSsFY6q8PpJ2I3yxpfUeASw4hdeuKQ==", + "license": "EUPL-1.2", "dependencies": { "jwt-decode": "4.0.0", "keycloak-angular": "15.1.0", @@ -5759,6 +5796,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/layout/-/layout-12.0.0.tgz", "integrity": "sha512-zNYtgmvbhri1/WFA+9YBLeqlF8DIh2rKujgGi/aijIf4nK4ssojTHTviRhfcEPH9qjPqlQE6DEzvOzj/bc9Hhw==", + "license": "EUPL-1.2", "dependencies": { "@foxythemes/bootstrap-datetime-picker-bs4": "2.3.5", "bootstrap": "4.6.2", @@ -5781,6 +5819,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/migration/-/migration-12.0.0.tgz", "integrity": "sha512-iZCj2/I67JVHQj9ys+2vUyjTpHqK0W0dAq+ibtPCSutu21TkfA1OkptLY9VI5N9LKzBVzTvri6PMOqsgz39evw==", + "license": "EUPL-1.2", "dependencies": { "tslib": "2.6.2" }, @@ -5793,6 +5832,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/milestone/-/milestone-12.0.0.tgz", "integrity": "sha512-8mxulKn0zT1gH4OfOOZZYBLgWkMxCEWqaGPPrCCNV8AXsQrBFDC38c4SmCkFrjnnqPwWGv62+WMepJbupKr0+w==", + "license": "EUPL-1.2", "dependencies": { "ngx-color-picker": "16.0.0", "tslib": "2.6.2" @@ -5806,6 +5846,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/object/-/object-12.0.0.tgz", "integrity": "sha512-l6geT2k9WyxdsaKD5AA4fAYP9vUBQyLaa3/75JlcprN/LFcvsQi5cd7F4dawQ5GjfCYyfayVVap9pg8ippf0LQ==", + "license": "EUPL-1.2", "dependencies": { "tslib": "2.6.2" }, @@ -5818,6 +5859,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/object-management/-/object-management-12.0.0.tgz", "integrity": "sha512-UuKy9MJbXvYbNHIIh35vF5G7SCTLS7psodauc9T+oFmwD5/aSaeZtdUNtbzBr4Ueg3JnZKgxBQnWQjF+1kggoA==", + "license": "EUPL-1.2", "dependencies": { "tslib": "2.6.2" }, @@ -5830,6 +5872,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/plugin/-/plugin-12.0.0.tgz", "integrity": "sha512-UFBfAQK0AYmzZMEOZvXJTUrQ0J+XalYFyLDdnD6i9CzjkmN9GEISLgZLmkRQM2EcSoKZZ8b4hWlx6BpExH1xVw==", + "license": "EUPL-1.2", "dependencies": { "tslib": "2.6.2" }, @@ -5842,6 +5885,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/plugin-management/-/plugin-management-12.0.0.tgz", "integrity": "sha512-JsKGNYpVpF5aqN8Q3nZE0nAtn94JDq940E1VS6duwbGwfTUSqX56KcpdOCWURSoOAjqokhNLvqWMYy+ZXshX0g==", + "license": "EUPL-1.2", "dependencies": { "tslib": "2.6.2" }, @@ -5854,6 +5898,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/process/-/process-12.0.0.tgz", "integrity": "sha512-LRGo7Tl8bkWv2KCAkDNVMEtkfhAAZ/vFTmLmQ5bdE1HwDIKJdR1k0Gw9A9884FMba0UYkPa1x2q+GtAmYE+muA==", + "license": "EUPL-1.2", "dependencies": { "bpmn-js": "6.5.1", "heatmap.js-fixed": "2.0.2", @@ -5871,6 +5916,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/process-link/-/process-link-12.0.0.tgz", "integrity": "sha512-/2sbHVeGYce8xiFPVGP8FN0yngNm8R752Xda62N3rN77tBCYJwOsfXvG4ybv/Q2T6SJJJr6RfCknVYyhybbbJg==", + "license": "EUPL-1.2", "dependencies": { "tslib": "2.6.2" }, @@ -5883,6 +5929,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/process-management/-/process-management-12.0.0.tgz", "integrity": "sha512-dTPw8RbJPf6s4SvhU6MENx43sVxgMC2RD2LGHit8FXj7JVvpdXNBLWqYdtb20sjBccMrtxapzF2etc1UZM/hCA==", + "license": "EUPL-1.2", "dependencies": { "bpmn-js-properties-panel": "0.46.0", "camunda-bpmn-moddle": "4.5.0", @@ -5897,6 +5944,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/resource/-/resource-12.0.0.tgz", "integrity": "sha512-QWscLfZlbNlqd0Og5Jsn2VJDK1wqzu5AEU9VJFMeuzzyVQWv8/xdOn7IB44QTtJCSHCFi6XvWql1uWN7tX6M7Q==", + "license": "EUPL-1.2", "dependencies": { "tslib": "2.6.2" }, @@ -5909,6 +5957,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/security/-/security-12.0.0.tgz", "integrity": "sha512-Uf61c/3fkrrFarGDW53od5UpEjiZcGVW4inKRgy/YWkBX8RlsasTnQPhkpCgHMHLVBMh1FcV+L8RA8fM+8QMTg==", + "license": "EUPL-1.2", "dependencies": { "moment": "2.30.1", "ngx-toastr": "18.0.0", @@ -5923,6 +5972,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/swagger/-/swagger-12.0.0.tgz", "integrity": "sha512-S9AmsgBkV0svMNK8OS+xJC3mkZyMbYRVFn7bhCqsH1JohQchBwAmzMN4gjxPS9WKPx9MkfHPe+X8Zm/xvSmR7w==", + "license": "EUPL-1.2", "dependencies": { "swagger-ui": "5.4.2", "tslib": "2.6.2" @@ -5936,6 +5986,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/task/-/task-12.0.0.tgz", "integrity": "sha512-ElJgVpLW9IL2hvL04Epfl/bqvl+Xk0q7oNTj4HiUSlwBbLM1OwtwOZEXwg8D9yraE07Wwcu0ps49Tg+XZY0DQA==", + "license": "EUPL-1.2", "dependencies": { "lodash": "4.17.21", "moment": "2.30.1", @@ -5951,6 +6002,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/@valtimo/task-management/-/task-management-12.0.0.tgz", "integrity": "sha512-CgTIDArGCkVjwP+Ge808Z1DJQagaTvxROlJIcvUKulbqWsGVvGhm/D3JDrSjOkmxwyInMM/HWQECU7HeOa7RhQ==", + "license": "EUPL-1.2", "dependencies": { "lodash": "4.17.21", "tslib": "2.6.2" @@ -6156,7 +6208,8 @@ "node_modules/abortcontroller-polyfill": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", - "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" + "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==", + "license": "MIT" }, "node_modules/accepts": { "version": "1.3.8", @@ -6296,7 +6349,8 @@ "node_modules/animation-frame-polyfill": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/animation-frame-polyfill/-/animation-frame-polyfill-1.0.2.tgz", - "integrity": "sha512-PvO5poSMoHhaoNNgHPo+oqs/0L9UqjsUbqv0iOXVqLh6HX85fsOVQTUrzSBvjdZz7hydARlgLELyzJJKIrPJAQ==" + "integrity": "sha512-PvO5poSMoHhaoNNgHPo+oqs/0L9UqjsUbqv0iOXVqLh6HX85fsOVQTUrzSBvjdZz7hydARlgLELyzJJKIrPJAQ==", + "license": "MIT" }, "node_modules/ansi-colors": { "version": "4.1.3", @@ -6450,7 +6504,8 @@ "node_modules/array-from": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==" + "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==", + "license": "MIT" }, "node_modules/array-includes": { "version": "3.1.8", @@ -6657,12 +6712,14 @@ "node_modules/atoa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/atoa/-/atoa-1.0.0.tgz", - "integrity": "sha512-VVE1H6cc4ai+ZXo/CRWoJiHXrA1qfA31DPnx6D20+kSI547hQN5Greh51LQ1baMRMfxO5K5M4ImMtZbZt2DODQ==" + "integrity": "sha512-VVE1H6cc4ai+ZXo/CRWoJiHXrA1qfA31DPnx6D20+kSI547hQN5Greh51LQ1baMRMfxO5K5M4ImMtZbZt2DODQ==", + "license": "MIT" }, "node_modules/autocompleter": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/autocompleter/-/autocompleter-7.1.0.tgz", - "integrity": "sha512-uCToOnq7eAD/GJAteDbYuQ7ksDtrYWOy5CIAq43wh0dT+5frMpPlyD9tp+y5fz8KIcsP+zR2MjzoTAdW5aJESw==" + "integrity": "sha512-uCToOnq7eAD/GJAteDbYuQ7ksDtrYWOy5CIAq43wh0dT+5frMpPlyD9tp+y5fz8KIcsP+zR2MjzoTAdW5aJESw==", + "license": "MIT" }, "node_modules/autolinker": { "version": "3.16.2", @@ -7025,7 +7082,8 @@ "node_modules/bin-pack-with-constraints": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/bin-pack-with-constraints/-/bin-pack-with-constraints-1.0.1.tgz", - "integrity": "sha512-fiPxvZAWuIqLpK79Ov58PztT/ZiGbpDB7usifleilJ/4aqhSx0ivY5kRifESJnR2rq51pScbUJ0LgCebufGJnA==" + "integrity": "sha512-fiPxvZAWuIqLpK79Ov58PztT/ZiGbpDB7usifleilJ/4aqhSx0ivY5kRifESJnR2rq51pScbUJ0LgCebufGJnA==", + "license": "MIT" }, "node_modules/binary-extensions": { "version": "2.3.0", @@ -7233,12 +7291,14 @@ "node_modules/browser-cookies": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browser-cookies/-/browser-cookies-1.2.0.tgz", - "integrity": "sha512-cg2WuoOJo+F+g2XjEaP8nmeRp1vDHjt7sqpKJMsTNXKrpyIBNVslYJeehvs6FEddj8usV2+qyRSBEX244yN5/g==" + "integrity": "sha512-cg2WuoOJo+F+g2XjEaP8nmeRp1vDHjt7sqpKJMsTNXKrpyIBNVslYJeehvs6FEddj8usV2+qyRSBEX244yN5/g==", + "license": "Unlicence" }, "node_modules/browser-md5-file": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/browser-md5-file/-/browser-md5-file-1.1.1.tgz", "integrity": "sha512-9h2UViTtZPhBa7oHvp5mb7MvJaX5OKEPUsplDwJ800OIV+In7BOR3RXOMB78obn2iQVIiS3WkVLhG7Zu1EMwbw==", + "license": "MIT", "dependencies": { "spark-md5": "^2.0.2" } @@ -7489,6 +7549,7 @@ "resolved": "https://registry.npmjs.org/carbon-components-angular/-/carbon-components-angular-5.20.3.tgz", "integrity": "sha512-7BGzj3Vp6FLaSL8xw6si8duLQmZQdISB+wHkmxz9ZDfzUP66LE6qAe8zeVmfJzm69oIKGn0kVftpetUUpVpdFA==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@carbon/icon-helpers": "10.37.0", "@carbon/icons": "11.14.0", @@ -7504,12 +7565,14 @@ "node_modules/carbon-components-angular/node_modules/@carbon/icons": { "version": "11.14.0", "resolved": "https://registry.npmjs.org/@carbon/icons/-/icons-11.14.0.tgz", - "integrity": "sha512-6XaySbscz1ubJ/3GtyXB8qJpcAL8kcIzBA6JZpFCcha43tuB1Kps87ADj/v3yx0sLPxyIzRWgkw2n1bnkAcsNA==" + "integrity": "sha512-6XaySbscz1ubJ/3GtyXB8qJpcAL8kcIzBA6JZpFCcha43tuB1Kps87ADj/v3yx0sLPxyIzRWgkw2n1bnkAcsNA==", + "license": "Apache-2.0" }, "node_modules/carbon-components-angular/node_modules/tslib": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "license": "0BSD" }, "node_modules/caseless": { "version": "0.12.0", @@ -7836,6 +7899,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" @@ -7861,6 +7925,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -7870,6 +7935,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7880,7 +7946,8 @@ "node_modules/color/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", @@ -7946,7 +8013,8 @@ "node_modules/compare-versions": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-5.0.3.tgz", - "integrity": "sha512-4UZlZP8Z99MGEY+Ovg/uJxJuvoXuN4M6B3hKaiackiHrgzQFEe3diJi1mf1PNHbFujM7FvLrK2bpgIaImbtZ1A==" + "integrity": "sha512-4UZlZP8Z99MGEY+Ovg/uJxJuvoXuN4M6B3hKaiackiHrgzQFEe3diJi1mf1PNHbFujM7FvLrK2bpgIaImbtZ1A==", + "license": "MIT" }, "node_modules/component-event": { "version": "0.1.4", @@ -8136,6 +8204,7 @@ "version": "1.9.4", "resolved": "https://registry.npmjs.org/contra/-/contra-1.9.4.tgz", "integrity": "sha512-N9ArHAqwR/lhPq4OdIAwH4e1btn6EIZMAz4TazjnzCiVECcWUPTma+dRAM38ERImEJBh8NiCCpjoQruSZ+agYg==", + "license": "MIT", "dependencies": { "atoa": "1.0.0", "ticky": "1.0.1" @@ -8314,6 +8383,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-point-cb/-/create-point-cb-1.2.0.tgz", "integrity": "sha512-r4l6IO/YGI7hIZRMLggOzwM6XO80+Fdcv4hx1fXCEdU+hKd7zZki6i+cbYfK9OliMwMYx1wPfQLU/snvS+Dygw==", + "license": "MIT", "dependencies": { "type-func": "^1.0.1" } @@ -8435,6 +8505,7 @@ "version": "1.5.5", "resolved": "https://registry.npmjs.org/crossvent/-/crossvent-1.5.5.tgz", "integrity": "sha512-MY4xhBYEnVi+pmTpHCOCsCLYczc0PVtGdPBz6NXNXxikLaUZo4HdAeUb1UqAo3t3yXAloSelTmfxJ+/oUqkW5w==", + "license": "MIT", "dependencies": { "custom-event": "^1.0.0" } @@ -8524,7 +8595,8 @@ "node_modules/custom-event-polyfill": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz", - "integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==" + "integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==", + "license": "MIT" }, "node_modules/cypress": { "version": "12.17.4", @@ -8688,6 +8760,7 @@ "version": "7.8.5", "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "license": "ISC", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -8728,6 +8801,7 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", "dependencies": { "internmap": "1 - 2" }, @@ -8739,6 +8813,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -8747,6 +8822,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -8762,6 +8838,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", "dependencies": { "d3-path": "1 - 3" }, @@ -8773,6 +8850,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -8781,6 +8859,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", "dependencies": { "d3-array": "^3.2.0" }, @@ -8792,6 +8871,7 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", "dependencies": { "delaunator": "5" }, @@ -8803,6 +8883,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", "engines": { "node": ">=12" } @@ -8811,6 +8892,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" @@ -8823,6 +8905,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", "dependencies": { "commander": "7", "iconv-lite": "0.6", @@ -8847,6 +8930,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", "engines": { "node": ">= 10" } @@ -8855,6 +8939,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", "engines": { "node": ">=12" } @@ -8863,6 +8948,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", "dependencies": { "d3-dsv": "1 - 3" }, @@ -8874,6 +8960,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", @@ -8887,6 +8974,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -8895,6 +8983,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", "dependencies": { "d3-array": "2.5.0 - 3" }, @@ -8906,6 +8995,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -8914,6 +9004,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3" }, @@ -8925,6 +9016,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -8933,6 +9025,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", "engines": { "node": ">=12" } @@ -8941,6 +9034,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -8949,6 +9043,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -8957,6 +9052,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", @@ -8972,6 +9068,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" @@ -8984,6 +9081,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -8992,6 +9090,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", "dependencies": { "d3-path": "^3.1.0" }, @@ -9003,6 +9102,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", "dependencies": { "d3-array": "2 - 3" }, @@ -9014,6 +9114,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", "dependencies": { "d3-time": "1 - 3" }, @@ -9025,6 +9126,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -9033,6 +9135,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", @@ -9051,6 +9154,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -9338,6 +9442,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", "dependencies": { "robust-predicates": "^3.0.2" } @@ -9433,7 +9538,8 @@ "node_modules/dialog-polyfill": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/dialog-polyfill/-/dialog-polyfill-0.5.6.tgz", - "integrity": "sha512-ZbVDJI9uvxPAKze6z146rmfUZjBqNEwcnFTVamQzXH+svluiV7swmVIGr7miwADgfgt1G2JQIytypM9fbyhX4w==" + "integrity": "sha512-ZbVDJI9uvxPAKze6z146rmfUZjBqNEwcnFTVamQzXH+svluiV7swmVIGr7miwADgfgt1G2JQIytypM9fbyhX4w==", + "license": "BSD" }, "node_modules/didi": { "version": "4.0.0", @@ -9703,6 +9809,7 @@ "version": "2.3.4", "resolved": "https://registry.npmjs.org/dom-autoscroller/-/dom-autoscroller-2.3.4.tgz", "integrity": "sha512-HcAdt/2Dq9x4CG6LWXc2x9Iq0MJPAu8fuzHncclq7byufqYEYVtx9sZ/dyzR+gdj4qwEC9p27Lw1G2HRRYX6jQ==", + "license": "MIT", "dependencies": { "animation-frame-polyfill": "^1.0.0", "create-point-cb": "^1.0.0", @@ -9724,12 +9831,14 @@ "node_modules/dom-mousemove-dispatcher": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dom-mousemove-dispatcher/-/dom-mousemove-dispatcher-1.0.1.tgz", - "integrity": "sha512-NMdqqMbgW8kqOdmod2hkS+9hD/v7h4XoSvwU9qqe+wAA/O+ba0jhpbfW0Kb/fCyR0RX9jf4dwfQrl04LQX4FzQ==" + "integrity": "sha512-NMdqqMbgW8kqOdmod2hkS+9hD/v7h4XoSvwU9qqe+wAA/O+ba0jhpbfW0Kb/fCyR0RX9jf4dwfQrl04LQX4FzQ==", + "license": "MIT" }, "node_modules/dom-plane": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/dom-plane/-/dom-plane-1.0.2.tgz", "integrity": "sha512-/tR67G6ZGSciXoZLsD706yLxEXvX3mG/OWE8YNYj3A1yU/RAimtPXzklVTu5Y5xoeMoloA/Y+MaNjQm9apgAww==", + "license": "MIT", "dependencies": { "create-point-cb": "^1.0.0" } @@ -9764,6 +9873,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/dom-set/-/dom-set-1.1.1.tgz", "integrity": "sha512-sUi2aSvRsK3Ixx++gwX9cnaWk9ZxGVFry8+HnTRVmDimybU5PaiI4wX0o00mVtjFKlQNZLmtGoPTLorYbN0+Rw==", + "license": "WTFPL", "dependencies": { "array-from": "^2.1.1", "is-array": "^1.0.1", @@ -9806,9 +9916,10 @@ } }, "node_modules/dompurify": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.5.tgz", - "integrity": "sha512-lwG+n5h8QNpxtyrJW/gJWckL+1/DQiYMX8f7t8Z2AZTPw1esVrqjI63i7Zc2Gz0aKzLVMYC1V1PL/ky+aY/NgA==" + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz", + "integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==", + "license": "(MPL-2.0 OR Apache-2.0)" }, "node_modules/domutils": { "version": "3.1.0", @@ -9827,12 +9938,14 @@ "node_modules/downloadjs": { "version": "1.4.7", "resolved": "https://registry.npmjs.org/downloadjs/-/downloadjs-1.4.7.tgz", - "integrity": "sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q==" + "integrity": "sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q==", + "license": "MIT" }, "node_modules/dragula": { "version": "3.7.3", "resolved": "https://registry.npmjs.org/dragula/-/dragula-3.7.3.tgz", "integrity": "sha512-/rRg4zRhcpf81TyDhaHLtXt6sEywdfpv1cRUMeFFy7DuypH2U0WUL0GTdyAQvXegviT4PJK4KuMmOaIDpICseQ==", + "license": "MIT", "dependencies": { "contra": "1.9.4", "crossvent": "1.5.5" @@ -11244,7 +11357,8 @@ "node_modules/fast-diff": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==" + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "license": "Apache-2.0" }, "node_modules/fast-fifo": { "version": "1.3.2", @@ -11333,6 +11447,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/fetch-ponyfill/-/fetch-ponyfill-7.1.0.tgz", "integrity": "sha512-FhbbL55dj/qdVO3YNK7ZEkshvj3eQ7EuIGV2I6ic/2YiocvyWv+7jg2s4AyS0wdRU75s3tA8ZxI/xPigb0v5Aw==", + "license": "MIT", "dependencies": { "node-fetch": "~2.6.1" } @@ -11572,9 +11687,10 @@ } }, "node_modules/formiojs": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/formiojs/-/formiojs-4.21.0.tgz", - "integrity": "sha512-mVxAKymCWuZORNHoifsjezCdWSM8Ww268BjhU/wv5fL71UWP7m6PsYVzzMptz/yf7mvdTQfnCiB/tlYel/MEHA==", + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/formiojs/-/formiojs-4.19.5.tgz", + "integrity": "sha512-jkFothZR+Fz85br6gzneHhOXf4MZJYyheBtDL3k9NdjOaPhRsfyQZuGaWtvoMCYvZNYWcERoD6UtUwEdyMMY1w==", + "license": "MIT", "dependencies": { "@formio/bootstrap3": "2.12.4-rc.1", "@formio/choices.js": "10.2.1", @@ -11599,7 +11715,6 @@ "fetch-ponyfill": "^7.1.0", "i18next": "22.4.12", "idb": "^7.1.1", - "inputmask": "^5.0.8", "ismobilejs": "^1.1.1", "json-logic-js": "^2.0.2", "jstimezonedetect": "^1.0.7", @@ -11619,7 +11734,8 @@ "node_modules/formiojs/node_modules/jwt-decode": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", + "license": "MIT" }, "node_modules/forwarded": { "version": "0.2.0", @@ -11742,6 +11858,7 @@ "version": "6.6.2", "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz", "integrity": "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==", + "license": "Apache-2.0", "engines": { "node": ">=10" } @@ -12398,6 +12515,7 @@ "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" } ], + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.6" } @@ -12416,7 +12534,8 @@ "node_modules/idb": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "license": "ISC" }, "node_modules/ids": { "version": "1.0.5", @@ -12605,11 +12724,6 @@ "tslib": "^2.0.0" } }, - "node_modules/inputmask": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/inputmask/-/inputmask-5.0.9.tgz", - "integrity": "sha512-s0lUfqcEbel+EQXtehXqwCJGShutgieOaIImFKC/r4reYNvX3foyrChl6LOEvaEgxEbesePIrw1Zi2jhZaDZbQ==" - }, "node_modules/inquirer": { "version": "9.2.15", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz", @@ -12712,6 +12826,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", "engines": { "node": ">=12" } @@ -12770,7 +12885,8 @@ "node_modules/is-array": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz", - "integrity": "sha512-gxiZ+y/u67AzpeFmAmo4CbtME/bs7J2C++su5zQzvQyaxUqVzkh69DI+jN+KZuSO6JaH6TIIU6M6LhqxMjxEpw==" + "integrity": "sha512-gxiZ+y/u67AzpeFmAmo4CbtME/bs7J2C++su5zQzvQyaxUqVzkh69DI+jN+KZuSO6JaH6TIIU6M6LhqxMjxEpw==", + "license": "MIT" }, "node_modules/is-array-buffer": { "version": "3.0.4", @@ -13306,7 +13422,8 @@ "node_modules/iselement": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/iselement/-/iselement-1.1.4.tgz", - "integrity": "sha512-4Q519eWmbHO1pbimiz7H1iJRUHVmAmfh0viSsUD+oAwVO4ntZt7gpf8i8AShVBTyOvRTZNYNBpUxOIvwZR+ffw==" + "integrity": "sha512-4Q519eWmbHO1pbimiz7H1iJRUHVmAmfh0viSsUD+oAwVO4ntZt7gpf8i8AShVBTyOvRTZNYNBpUxOIvwZR+ffw==", + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", @@ -13316,7 +13433,8 @@ "node_modules/ismobilejs": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz", - "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==" + "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==", + "license": "MIT" }, "node_modules/isobject": { "version": "3.0.1", @@ -13602,7 +13720,8 @@ "node_modules/js-sha256": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.10.1.tgz", - "integrity": "sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw==" + "integrity": "sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw==", + "license": "MIT" }, "node_modules/js-tokens": { "version": "4.0.0", @@ -13645,9 +13764,10 @@ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, "node_modules/json-logic-js": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/json-logic-js/-/json-logic-js-2.0.2.tgz", - "integrity": "sha512-ZBtBdMJieqQcH7IX/LaBsr5pX+Y5JIW+EhejtM3Ffg2jdN9Iwf+Ht6TbHnvAZ/YtwyuhPaCBlnvzrwVeWdvGDQ==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/json-logic-js/-/json-logic-js-2.0.5.tgz", + "integrity": "sha512-rTT2+lqcuUmj4DgWfmzupZqQDA64AdmYqizzMPWj3DxGdfFNsxPpcNVSaTj4l8W2tG/+hg7/mQhxjU3aPacO6g==", + "license": "MIT" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", @@ -14097,6 +14217,7 @@ "version": "23.0.7", "resolved": "https://registry.npmjs.org/keycloak-js/-/keycloak-js-23.0.7.tgz", "integrity": "sha512-OmszsKzBhhm5yP4W1q/tMd+nNnKpOAdeVYcoGhphlv8Fj1bNk4wRTYzp7pn5BkvueLz7fhvKHz7uOc33524YrA==", + "license": "Apache-2.0", "dependencies": { "base64-js": "^1.5.1", "js-sha256": "^0.10.1", @@ -14389,7 +14510,8 @@ "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" }, "node_modules/lodash-id": { "version": "0.14.1", @@ -14402,7 +14524,8 @@ "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", @@ -14412,7 +14535,8 @@ "node_modules/lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -15173,9 +15297,10 @@ } }, "node_modules/moment-timezone": { - "version": "0.5.45", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", - "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", + "version": "0.5.46", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.46.tgz", + "integrity": "sha512-ZXm9b36esbe7OmdABqIWJuBBiLLwAjrN7CE+7sYdCCx82Nabt1wHDj8TVseS59QIlfFPbOoiBPm6ca9BioG4hw==", + "license": "MIT", "dependencies": { "moment": "^2.29.4" }, @@ -15186,7 +15311,8 @@ "node_modules/monaco-editor": { "version": "0.45.0", "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.45.0.tgz", - "integrity": "sha512-mjv1G1ZzfEE3k9HZN0dQ2olMdwIfaeAAjFiwNprLfYNRSz7ctv9XuCT7gPtBGrMUeV1/iZzYKj17Khu1hxoHOA==" + "integrity": "sha512-mjv1G1ZzfEE3k9HZN0dQ2olMdwIfaeAAjFiwNprLfYNRSz7ctv9XuCT7gPtBGrMUeV1/iZzYKj17Khu1hxoHOA==", + "license": "MIT" }, "node_modules/morgan": { "version": "1.10.0", @@ -15295,7 +15421,8 @@ "node_modules/native-promise-only": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==" + "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==", + "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -15527,6 +15654,7 @@ "version": "16.0.2", "resolved": "https://registry.npmjs.org/ngx-spinner/-/ngx-spinner-16.0.2.tgz", "integrity": "sha512-MZpOHb3dvSqD6xiEdR+EtOfPY2r1kfA7t5Hv5IVwi7gkbTwVgnqxDWdOYJ/HW1pSZ5iEGhqlJqWg6CysLmNfHQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -16520,7 +16648,8 @@ "node_modules/parchment": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/parchment/-/parchment-3.0.0.tgz", - "integrity": "sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A==" + "integrity": "sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A==", + "license": "BSD-3-Clause" }, "node_modules/parent-module": { "version": "1.0.1", @@ -17546,6 +17675,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/quill/-/quill-2.0.2.tgz", "integrity": "sha512-QfazNrhMakEdRG57IoYFwffUIr04LWJxbS/ZkidRFXYCQt63c1gK6Z7IHUXMx/Vh25WgPBU42oBaNzQ0K1R/xw==", + "license": "BSD-3-Clause", "dependencies": { "eventemitter3": "^5.0.1", "lodash-es": "^4.17.21", @@ -17560,6 +17690,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", + "license": "MIT", "dependencies": { "fast-diff": "^1.3.0", "lodash.clonedeep": "^4.5.0", @@ -17572,7 +17703,8 @@ "node_modules/quill/node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" }, "node_modules/ramda": { "version": "0.30.1", @@ -18231,7 +18363,8 @@ "node_modules/resize-observer-polyfill": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.8", @@ -18405,7 +18538,8 @@ "node_modules/robust-predicates": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" }, "node_modules/rollup": { "version": "4.18.0", @@ -18476,7 +18610,8 @@ "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" }, "node_modules/rxjs": { "version": "7.8.1", @@ -19008,7 +19143,8 @@ "node_modules/signature_pad": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/signature_pad/-/signature_pad-4.2.0.tgz", - "integrity": "sha512-YLWysmaUBaC5wosAKkgbX7XI+LBv2w5L0QUcI6Jc4moHYzv9BUBJtAyNLpWzHjtjKTeWOH6bfP4a4pzf0UinfQ==" + "integrity": "sha512-YLWysmaUBaC5wosAKkgbX7XI+LBv2w5L0QUcI6Jc4moHYzv9BUBJtAyNLpWzHjtjKTeWOH6bfP4a4pzf0UinfQ==", + "license": "MIT" }, "node_modules/sigstore": { "version": "2.3.1", @@ -19076,6 +19212,7 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", "dependencies": { "is-arrayish": "^0.3.1" } @@ -19083,7 +19220,8 @@ "node_modules/simple-swizzle/node_modules/is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" }, "node_modules/slash": { "version": "4.0.0", @@ -19311,7 +19449,8 @@ "node_modules/spark-md5": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-2.0.2.tgz", - "integrity": "sha512-9WfT+FYBEvlrOOBEs484/zmbtSX4BlGjzXih1qIEWA1yhHbcqgcMHkiwXoWk2Sq1aJjLpcs6ZKV7JxrDNjIlNg==" + "integrity": "sha512-9WfT+FYBEvlrOOBEs484/zmbtSX4BlGjzXih1qIEWA1yhHbcqgcMHkiwXoWk2Sq1aJjLpcs6ZKV7JxrDNjIlNg==", + "license": "WTFPL" }, "node_modules/spdx-correct": { "version": "3.2.0", @@ -19574,7 +19713,8 @@ "node_modules/string-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==" + "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", + "license": "CC0-1.0" }, "node_modules/string-width": { "version": "4.2.3", @@ -20175,7 +20315,8 @@ "node_modules/ticky": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ticky/-/ticky-1.0.1.tgz", - "integrity": "sha512-RX35iq/D+lrsqhcPWIazM9ELkjOe30MSeoBHQHSsRwd1YuhJO5ui1K1/R0r7N3mFvbLBs33idw+eR6j+w6i/DA==" + "integrity": "sha512-RX35iq/D+lrsqhcPWIazM9ELkjOe30MSeoBHQHSsRwd1YuhJO5ui1K1/R0r7N3mFvbLBs33idw+eR6j+w6i/DA==", + "license": "MIT" }, "node_modules/tiny-svg": { "version": "2.2.4", @@ -20186,6 +20327,7 @@ "version": "6.3.7", "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", + "license": "MIT", "dependencies": { "@popperjs/core": "^2.9.0" } @@ -20470,7 +20612,8 @@ "node_modules/type-func": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/type-func/-/type-func-1.0.3.tgz", - "integrity": "sha512-YA90CUk+i00tWESPNRMahywXhAz+12NLJLKlOWrgHIbqaFXjdZrWstRghaibOW/IxhPjui4SmXxO/03XSGRIjA==" + "integrity": "sha512-YA90CUk+i00tWESPNRMahywXhAz+12NLJLKlOWrgHIbqaFXjdZrWstRghaibOW/IxhPjui4SmXxO/03XSGRIjA==", + "license": "MIT" }, "node_modules/type-is": { "version": "1.6.18", @@ -20823,6 +20966,7 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -20856,6 +21000,7 @@ "version": "2.12.3", "resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.12.3.tgz", "integrity": "sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==", + "license": "ISC", "dependencies": { "@sphinxxxx/color-conversion": "^2.2.2" } diff --git a/frontend/projects/valtimo/xential/src/lib/components/generate-document-configuration/generate-document-configuration.component.html b/frontend/projects/valtimo/xential/src/lib/components/generate-document-configuration/generate-document-configuration.component.html new file mode 100644 index 0000000..068fed9 --- /dev/null +++ b/frontend/projects/valtimo/xential/src/lib/components/generate-document-configuration/generate-document-configuration.component.html @@ -0,0 +1,43 @@ + + + + + + diff --git a/frontend/projects/valtimo/xential/src/lib/components/generate-document-configuration/generate-document-configuration.component.ts b/frontend/projects/valtimo/xential/src/lib/components/generate-document-configuration/generate-document-configuration.component.ts new file mode 100644 index 0000000..bd51715 --- /dev/null +++ b/frontend/projects/valtimo/xential/src/lib/components/generate-document-configuration/generate-document-configuration.component.ts @@ -0,0 +1,71 @@ +import {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core'; +import {FunctionConfigurationComponent} from '@valtimo/plugin'; +import {BehaviorSubject, combineLatest, Observable, Subscription, take} from 'rxjs'; +import {FileFormat, GenerateDocumentConfig} from "../../models"; +import {SelectItem} from "@valtimo/components"; + +@Component({ + selector: 'xential-generate-document-configuration', + templateUrl: './generate-document-configuration.component.html' +}) +export class GenerateDocumentConfigurationComponent implements FunctionConfigurationComponent, OnInit, OnDestroy { + @Input() save$: Observable; + @Input() disabled$: Observable; + @Input() pluginId: string; + @Input() prefillConfiguration$: Observable; + @Output() valid: EventEmitter = new EventEmitter(); + @Output() configuration: EventEmitter = + new EventEmitter(); + + public fileFormats$ = new BehaviorSubject( + ['WORD', 'PDF'] + .map(format => { + return { + id: format, + text: format + } + }) + ); + + private saveSubscription!: Subscription; + + private readonly formValue$ = new BehaviorSubject(null); + private readonly valid$ = new BehaviorSubject(false); + + ngOnInit(): void { + this.openSaveSubscription(); + } + + ngOnDestroy() { + this.saveSubscription?.unsubscribe(); + } + + formValueChange(formValue: GenerateDocumentConfig): void { + this.formValue$.next(formValue); + this.handleValid(formValue); + } + + private handleValid(formValue: GenerateDocumentConfig): void { + const valid = !!( + formValue.templateId && + formValue.documentId && + formValue.fileFormat && + !formValue.templateData.find((entry) => !(entry.key && entry.value)) + ); + + this.valid$.next(valid); + this.valid.emit(valid); + } + + private openSaveSubscription(): void { + this.saveSubscription = this.save$?.subscribe(save => { + combineLatest([this.formValue$, this.valid$]) + .pipe(take(1)) + .subscribe(([formValue, valid]) => { + if (valid) { + this.configuration.emit(formValue); + } + }); + }); + } +} diff --git a/frontend/projects/valtimo/xential/src/lib/components/xential-configuration/xential-configuration.component.html b/frontend/projects/valtimo/xential/src/lib/components/xential-configuration/xential-configuration.component.html index 566e9f5..a0a4fa1 100644 --- a/frontend/projects/valtimo/xential/src/lib/components/xential-configuration/xential-configuration.component.html +++ b/frontend/projects/valtimo/xential/src/lib/components/xential-configuration/xential-configuration.component.html @@ -15,10 +15,33 @@ --> + + + + + + diff --git a/frontend/projects/valtimo/xential/src/lib/components/xential-configuration/xential-configuration.component.scss b/frontend/projects/valtimo/xential/src/lib/components/xential-configuration/xential-configuration.component.scss deleted file mode 100644 index 1be258c..0000000 --- a/frontend/projects/valtimo/xential/src/lib/components/xential-configuration/xential-configuration.component.scss +++ /dev/null @@ -1,15 +0,0 @@ -/*! - * Copyright 2015-2022 Ritense BV, the Netherlands. - * - * Licensed under EUPL, Version 1.2 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ diff --git a/frontend/projects/valtimo/xential/src/lib/components/xential-configuration/xential-configuration.component.ts b/frontend/projects/valtimo/xential/src/lib/components/xential-configuration/xential-configuration.component.ts index 39236e9..9447c80 100644 --- a/frontend/projects/valtimo/xential/src/lib/components/xential-configuration/xential-configuration.component.ts +++ b/frontend/projects/valtimo/xential/src/lib/components/xential-configuration/xential-configuration.component.ts @@ -16,15 +16,12 @@ import {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core'; import {PluginConfigurationComponent, PluginConfigurationData} from '@valtimo/plugin'; -import {BehaviorSubject, combineLatest, map, Observable, Subscription, take} from 'rxjs'; +import {BehaviorSubject, combineLatest, Observable, Subscription, take} from 'rxjs'; import {XentialConfig} from '../../models'; -import {PluginManagementService, PluginTranslationService} from '@valtimo/plugin'; -import {TranslateService} from '@ngx-translate/core'; @Component({ selector: 'valtimo-xential-configuration', templateUrl: './xential-configuration.component.html', - styleUrls: ['./xential-configuration.component.scss'], }) export class XentialConfigurationComponent implements PluginConfigurationComponent, OnInit, OnDestroy @@ -37,9 +34,6 @@ export class XentialConfigurationComponent @Output() configuration: EventEmitter = new EventEmitter(); constructor( - private readonly pluginManagementService: PluginManagementService, - private readonly translateService: TranslateService, - private readonly pluginTranslationService: PluginTranslationService ) {} private saveSubscription!: Subscription; diff --git a/frontend/projects/valtimo/xential/src/lib/models/config.ts b/frontend/projects/valtimo/xential/src/lib/models/config.ts index 0871471..34a3245 100644 --- a/frontend/projects/valtimo/xential/src/lib/models/config.ts +++ b/frontend/projects/valtimo/xential/src/lib/models/config.ts @@ -17,6 +17,8 @@ import {PluginConfigurationData} from '@valtimo/plugin'; interface XentialConfig extends PluginConfigurationData { + clientId: string; + clientPassword: string; } export {XentialConfig}; diff --git a/frontend/projects/valtimo/xential/src/lib/models/generate-document-config.ts b/frontend/projects/valtimo/xential/src/lib/models/generate-document-config.ts new file mode 100644 index 0000000..9e4dd7f --- /dev/null +++ b/frontend/projects/valtimo/xential/src/lib/models/generate-document-config.ts @@ -0,0 +1,10 @@ +interface GenerateDocumentConfig { + templateId: string; + fileFormat: FileFormat; + documentId: string; + templateData: Array<{key: string; value: string}> +} + +type FileFormat = 'WORD' | 'PDF'; + +export {GenerateDocumentConfig, FileFormat} diff --git a/frontend/projects/valtimo/xential/src/lib/models/index.ts b/frontend/projects/valtimo/xential/src/lib/models/index.ts index b0d57f7..af3a5ce 100644 --- a/frontend/projects/valtimo/xential/src/lib/models/index.ts +++ b/frontend/projects/valtimo/xential/src/lib/models/index.ts @@ -15,3 +15,4 @@ */ export * from './config'; +export * from './generate-document-config' diff --git a/frontend/projects/valtimo/xential/src/lib/xential-plugin-module.ts b/frontend/projects/valtimo/xential/src/lib/xential-plugin-module.ts index 295fb21..4552ff1 100644 --- a/frontend/projects/valtimo/xential/src/lib/xential-plugin-module.ts +++ b/frontend/projects/valtimo/xential/src/lib/xential-plugin-module.ts @@ -18,15 +18,21 @@ import {NgModule} from '@angular/core'; import {XentialConfigurationComponent} from './components/xential-configuration/xential-configuration.component'; import {CommonModule} from '@angular/common'; import {PluginTranslatePipeModule} from '@valtimo/plugin'; -import {FormModule, InputModule, ParagraphModule} from '@valtimo/components'; +import {CarbonMultiInputModule, FormModule, InputModule, SelectModule} from '@valtimo/components'; +import { + GenerateDocumentConfigurationComponent +} from "./components/generate-document-configuration/generate-document-configuration.component"; +import {DropdownModule} from "carbon-components-angular"; @NgModule({ declarations: [ XentialConfigurationComponent, + GenerateDocumentConfigurationComponent, ], - imports: [CommonModule, PluginTranslatePipeModule, FormModule, InputModule, ParagraphModule], + imports: [CommonModule, PluginTranslatePipeModule, FormModule, InputModule, SelectModule, DropdownModule, CarbonMultiInputModule], exports: [ XentialConfigurationComponent, + GenerateDocumentConfigurationComponent, ], }) export class XentialPluginModule {} diff --git a/frontend/projects/valtimo/xential/src/lib/xential-plugin.specification.ts b/frontend/projects/valtimo/xential/src/lib/xential-plugin.specification.ts index 2a8fec3..539f741 100644 --- a/frontend/projects/valtimo/xential/src/lib/xential-plugin.specification.ts +++ b/frontend/projects/valtimo/xential/src/lib/xential-plugin.specification.ts @@ -17,25 +17,55 @@ import {PluginSpecification} from '@valtimo/plugin'; import {XentialConfigurationComponent} from './components/xential-configuration/xential-configuration.component'; import {XENTIAL_PLUGIN_LOGO_BASE64} from './assets'; +import { + GenerateDocumentConfigurationComponent +} from "./components/generate-document-configuration/generate-document-configuration.component"; const XentialPluginSpecification: PluginSpecification = { - pluginId: 'xential', - pluginConfigurationComponent: XentialConfigurationComponent, - pluginLogoBase64: XENTIAL_PLUGIN_LOGO_BASE64, - pluginTranslations: { - nl: { - title: 'Xential', - description: 'Xential plugin', + pluginId: 'xential', + pluginConfigurationComponent: XentialConfigurationComponent, + pluginLogoBase64: XENTIAL_PLUGIN_LOGO_BASE64, + functionConfigurationComponents: { + 'generate-document': GenerateDocumentConfigurationComponent }, - en: { - title: 'Xential', - description: 'Xential plugin', + pluginTranslations: { + nl: { + title: 'Xential', + description: 'Xential plugin', + configurationTitle: 'Configuratie naam', + clientId: 'Taak applicatie naam', + clientPassword: 'Taak applicatie wachtwoord', + 'generate-document': 'Genereer document', + templateId: 'Template ID', + fileFormat: 'Bestandsformaat', + documentId: 'Document kenmerk', + templateData: 'Sjabloon vuldata', + }, + en: { + title: 'Xential', + description: 'Xential plugin', + configurationTitle: 'Configuration name', + clientId: 'Client ID', + clientPassword: 'Client password', + 'generate-document': 'Generate document', + templateId: 'Sjabloon ID', + fileFormat: 'File format', + documentId: 'Document ID', + templateData: 'Template data', + }, + de: { + title: 'Xential', + description: 'Xential plugin', + configurationTitle: 'Konfigurationsname', + clientId: 'Kunden-ID', + clientPassword: 'Kundenpasswort', + 'generate-document': 'Dokument generieren', + templateId: 'Vorlage ID', + fileFormat: 'Dateiformat', + documentId: 'Dokument-ID', + templateData: 'Vorlagendaten', + }, }, - de: { - title: 'Xential', - description: 'Xential plugin', - }, - }, }; export {XentialPluginSpecification}; diff --git a/frontend/src/app/app-routing.module.ts b/frontend/src/app/app-routing.module.ts deleted file mode 100644 index 0605cb0..0000000 --- a/frontend/src/app/app-routing.module.ts +++ /dev/null @@ -1,20 +0,0 @@ -import {NgModule} from '@angular/core'; -import {Router, RouterModule, Routes} from '@angular/router'; - -const routes: Routes = []; - -@NgModule({ - imports: [RouterModule.forRoot(routes)], - exports: [RouterModule] -}) -export class AppRoutingModule { - - constructor( - private router: Router, - ) { - // errorHandler on error route to home - this.router.errorHandler = () => { - this.router.navigate(['']); - }; - } -} diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index ae5248c..4179b89 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -18,7 +18,6 @@ import {BrowserModule} from '@angular/platform-browser'; import {Injector, NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; import {HttpBackend, HttpClientModule} from '@angular/common/http'; -import {AppRoutingModule} from './app-routing.module'; import {AppComponent} from './app.component'; import {LayoutModule} from '@valtimo/layout'; import {TaskModule} from '@valtimo/task'; @@ -84,7 +83,6 @@ export function tabsFactory() { HttpClientModule, CommonModule, BrowserModule, - AppRoutingModule, LayoutModule, CardModule, WidgetModule,