From 25fed203c615604a53e6b552266de06de69c29b8 Mon Sep 17 00:00:00 2001 From: Allan Date: Tue, 25 Jul 2023 21:36:10 +0100 Subject: [PATCH 01/10] chore: improving the descriptions of the steps in the release.yaml file --- .gitea/workflows/release.yaml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 0678f4a..13f2b49 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -22,32 +22,30 @@ jobs: env: NPMRC: ${{ secrets.NPMRC}} - - name: Install ZIP and SASjs CLI + - name: Install packages run: | apt-get update apt-get install zip -y + # sasjs cli is used to compile & build the SAS services npm i -g @sasjs/cli - # test - - - name: Install JQ for parsing JSON - run: | - apt-get update + # jq is used to parse the release JSON apt-get install jq -y - - name: Install Semantic Release and plugins and create Release + - name: Create Empty Release (assets are posted later) run: | npm i npm i -g semantic-release GITEA_TOKEN=${{ secrets.RELEASE_TOKEN }} GITEA_URL=https://git.datacontroller.io semantic-release - name: Frontend Build + description: Must be created AFTER the release as the version (git tag) is used in the interface run: | cd client npm ci npm run build - name: Build SAS9 EBI Release - description: compile SAS 9 services, remove tests & create deployment program + description: Compile SAS 9 services, remove tests & create deployment program run: | cd sas npm ci @@ -64,7 +62,7 @@ jobs: cp sasjsbuild/mysas9deploy.sas ./sas9.sas - name: Build SASjs Server Release - description: compile Base (SASjs) services, remove tests & create deployment JSON + description: Compile Base (SASjs) services, remove tests & create deployment JSON run: | cd sas cp sasjs/utils/favicon.ico ../client/dist/favicon.ico From 1c2b87940d40d357c6b54cf271b62d8dc096d4f8 Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Wed, 26 Jul 2023 13:39:04 +0200 Subject: [PATCH 02/10] ci: release --- .gitea/workflows/release.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 0678f4a..39fdc45 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -104,6 +104,10 @@ jobs: - name: Upload assets to release run: | RELEASE_ID=`curl -k 'https://git.datacontroller.io/api/v1/repos/dc/dc/releases/latest?access_token=${{ secrets.RELEASE_TOKEN }}' | jq -r '.id'` + RELEASE_BODY=`curl -k 'https://git.datacontroller.io/api/v1/repos/dc/dc/releases/latest?access_token=${{ secrets.RELEASE_TOKEN }}' | jq -r '.body'` + # Update body + curl --data '{"draft": true,"body":"'"$RELEASE_BODY\n\nFor installation instructions, please visit https://docs.datacontroller.io/"'"}' -X PATCH --header 'Content-Type: application/json' -k https://git.datacontroller.io/api/v1/repos/dc/dc/releases/$RELEASE_ID?access_token=${{ secrets.RELEASE_TOKEN }} + # Upload assets URL="https://git.datacontroller.io/api/v1/repos/dc/dc/releases/$RELEASE_ID/assets?access_token=${{ secrets.RELEASE_TOKEN }}" curl -k $URL -F attachment=@frontend.zip curl -k $URL -F attachment=@sas/demostream_sas9.sas From e93367fb42bdd5686d83742e7f9c78e72aee8fd5 Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Thu, 27 Jul 2023 13:09:16 +0200 Subject: [PATCH 03/10] ci: capturing cypress videos --- .gitea/workflows/development-test.yaml | 25 +++++++++++++++++++++++-- .gitea/workflows/release.yaml | 1 - client/src/environments/_eula.ts | 24 +++++++----------------- 3 files changed, 30 insertions(+), 20 deletions(-) diff --git a/.gitea/workflows/development-test.yaml b/.gitea/workflows/development-test.yaml index 088e569..772a71e 100644 --- a/.gitea/workflows/development-test.yaml +++ b/.gitea/workflows/development-test.yaml @@ -77,6 +77,17 @@ jobs: # Start frontend and run cypress npm start & npx wait-on http://localhost:4200 && npx cypress run --browser chrome --spec "cypress/e2e/liveness.cy.ts,cypress/e2e/editor.cy.ts,cypress/e2e/excel.cy.ts,cypress/e2e/filtering.cy.ts,cypress/e2e/licensing.cy.ts" + - name: Zip Cypress videos + if: always() + run: | + zip -r cypress-videos ./client/cypress/videos + + - name: Cypress videos artifacts + uses: actions/upload-artifact@v3 + with: + name: cypress-videos.zip + path: cypress-videos.zip + Build-and-test-development-latest-adapter: runs-on: ubuntu-latest @@ -125,7 +136,6 @@ jobs: npm install -g @sasjs/cli npm install -g replace-in-files-cli sasjs cbd -t server-ci - # sasjs request services/admin/makedata -t server-ci -d ./deploy/makeData4GL.json -c ./deploy/requestConfig.json -o ./output.json - name: Install ZIP run: | @@ -148,4 +158,15 @@ jobs: replace-in-files --regex='"hosturl".*' --replacement='hosturl:"http://localhost:4200",' ./cypress.config.ts cat ./cypress.config.ts # Start frontend and run cypress - npm start & npx wait-on http://localhost:4200 && npx cypress run --browser chrome --spec "cypress/e2e/liveness.cy.ts,cypress/e2e/editor.cy.ts,cypress/e2e/excel.cy.ts,cypress/e2e/filtering.cy.ts,cypress/e2e/licensing.cy.ts" \ No newline at end of file + npm start & npx wait-on http://localhost:4200 && npx cypress run --browser chrome --spec "cypress/e2e/liveness.cy.ts,cypress/e2e/editor.cy.ts,cypress/e2e/excel.cy.ts,cypress/e2e/filtering.cy.ts,cypress/e2e/licensing.cy.ts" + + - name: Zip Cypress videos + if: always() + run: | + zip -r cypress-videos ./client/cypress/videos + + - name: Cypress videos artifacts + uses: actions/upload-artifact@v3 + with: + name: cypress-videos-latest-adapter.zip + path: cypress-videos.zip \ No newline at end of file diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 0678f4a..5b95b26 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -27,7 +27,6 @@ jobs: apt-get update apt-get install zip -y npm i -g @sasjs/cli - # test - name: Install JQ for parsing JSON run: | diff --git a/client/src/environments/_eula.ts b/client/src/environments/_eula.ts index c4e6412..3d7cba2 100644 --- a/client/src/environments/_eula.ts +++ b/client/src/environments/_eula.ts @@ -5,27 +5,17 @@ Licence Agreement for Data Controller for SAS® Copyright (c) Bowe IO Ltd -Data Controller is a software distributed by 4GL Apps, a brand owned by Bowe IO Ltd, a UK Limited Company headquarted in 29 Oldfield Rd, Cumbria, registered by companies house under number 08777171, VAT number: 203914240 +Data Controller software is distributed by 4GL Apps, a brand owned by Bowe IO Ltd, a UK Limited Company headquarted in 29 Oldfield Rd, Cumbria, registered at Companies House with company number 08777171, VAT number: 203914240 -This software is protected by applicable copyright laws, including international treaties, and dual- -licensed – depending on whether your use for commercial purposes, meaning intended for or -resulting in commercial advantage or monetary compensation, or not. +This software is protected by applicable copyright laws, including international treaties, and dual-licensed – depending on whether your use for commercial purposes, meaning intended for or resulting in commercial advantage or monetary compensation, or not. -If your use is strictly personal or solely for evaluation purposes, meaning for the purposes of testing -the suitability, performance, and usefulness of this software outside the production environment, -you agree to be bound by the terms included in the "licence-non-commercial-datacontroller.md" file. +If your use is strictly personal or solely for evaluation purposes, meaning for the purposes of testing the suitability, performance, and usefulness of this software outside the production environment, you agree to be bound by the terms included in the "licence-non-commercial-datacontroller.md" file available here: https://git.datacontroller.io/dc/dc/src/branch/main/licence-non-commercial-datacontroller.md -Your use of this software for commercial purposes is subject to the terms included in an applicable -license agreement. +Your use of this software for commercial purposes is subject to the terms included in an applicable license agreement. -In any case, you must not make any such use of this software as to develop software which may be -considered competitive with this software. +In any case, you must not make any such use of this software as to develop software which may be considered competitive with this software. -UNLESS EXPRESSLY AGREED OTHERWISE, 4GL APPS PROVIDES THIS SOFTWARE ON AN "AS IS" -BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, AND IN NO EVENT AND UNDER NO -LEGAL THEORY, SHALL 4GL APPS BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT, -INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM -USE OR INABILITY TO USE THIS SOFTWARE. +UNLESS EXPRESSLY AGREED OTHERWISE, 4GL APPS PROVIDES THIS SOFTWARE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, AND IN NO EVENT AND UNDER NO LEGAL THEORY, SHALL 4GL APPS BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM USE OR INABILITY TO USE THIS SOFTWARE. -` +` \ No newline at end of file From 4c2c5d55261f1caa7882d34883c879a5a60ee4e8 Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Thu, 27 Jul 2023 13:49:13 +0200 Subject: [PATCH 04/10] style: lint --- client/src/environments/_eula.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/environments/_eula.ts b/client/src/environments/_eula.ts index 3d7cba2..684dea6 100644 --- a/client/src/environments/_eula.ts +++ b/client/src/environments/_eula.ts @@ -18,4 +18,4 @@ In any case, you must not make any such use of this software as to develop softw UNLESS EXPRESSLY AGREED OTHERWISE, 4GL APPS PROVIDES THIS SOFTWARE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, AND IN NO EVENT AND UNDER NO LEGAL THEORY, SHALL 4GL APPS BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM USE OR INABILITY TO USE THIS SOFTWARE. -` \ No newline at end of file +` From eeb4000efe2da2c46f40117632468f98384a14e1 Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Thu, 27 Jul 2023 19:20:14 +0200 Subject: [PATCH 05/10] ci: releasing typedoc --- .gitea/workflows/release.yaml | 2 +- client/package.json | 2 +- client/typedoc.json | 22 +++++++++++----------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index e1fdbc5..c5e54db 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -98,7 +98,7 @@ jobs: run: | cd client npm run typedoc - # deploy docs + surfer put --token ${{ secrets.TSDOC_TOKEN }} --server tsdoc.datacontroller.io ../tsdoc / - name: Upload assets to release run: | diff --git a/client/package.json b/client/package.json index e1475c8..109bb44 100644 --- a/client/package.json +++ b/client/package.json @@ -29,7 +29,7 @@ "cy:run": "cypress run", "audit:prod": "npm audit --omit=dev", "sasdocs": "sasjs doc && ./sasjs/utils/deploydocs.sh", - "typedoc": "typedoc --options typedoc.json && cd ../dc-devdocs" + "typedoc": "typedoc --options typedoc.json && cd ../tsdoc" }, "private": true, "dependencies": { diff --git a/client/typedoc.json b/client/typedoc.json index be1879f..34b31c2 100644 --- a/client/typedoc.json +++ b/client/typedoc.json @@ -1,12 +1,12 @@ { - "out": "../dc-devdocs", - "tsconfig": "./tsconfig.app.json", - "entryPointStrategy": "expand", - "entryPoints": [ - "./src" - ], - "exclude": "**/*+(index|.spec|.e2e).ts", - "externalPattern": "**/node_modules/**", - "excludeExternals": true, - "excludePrivate": true - } \ No newline at end of file + "out": "../tsdoc", + "tsconfig": "./tsconfig.app.json", + "entryPointStrategy": "expand", + "entryPoints": [ + "./src" + ], + "exclude": "**/*+(index|.spec|.e2e).ts", + "externalPattern": "**/node_modules/**", + "excludeExternals": true, + "excludePrivate": true +} \ No newline at end of file From e48e47bc635452b59e107b235e597c26e748875e Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Fri, 28 Jul 2023 20:03:41 +0200 Subject: [PATCH 06/10] feat: support for European numeric formats --- client/package-lock.json | 719 +++++++++--------- client/package.json | 1 - client/src/app/app.d.ts | 2 +- client/src/app/editor/editor.component.html | 1 - client/src/app/editor/editor.component.ts | 5 + .../app/shared/dc-validator/dc-validator.ts | 2 + .../dc-validator/utils/applyNumericFormats.ts | 23 + client/src/environments/_eula.ts | 2 +- 8 files changed, 406 insertions(+), 349 deletions(-) create mode 100644 client/src/app/shared/dc-validator/utils/applyNumericFormats.ts diff --git a/client/package-lock.json b/client/package-lock.json index f01a79f..d0708af 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -43,7 +43,6 @@ "ngx-clipboard": "^16.0.0", "ngx-json-viewer": "file:libraries/ngx-json-viewer-3.2.1.tgz", "nodejs": "0.0.0", - "numbro": "^2.1.1", "os-browserify": "0.3.0", "rxjs": "^7.8.0", "save-svg-as-png": "^1.4.17", @@ -123,12 +122,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1601.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1601.5.tgz", - "integrity": "sha512-f6oOXR+0gXdMl2papEkTt28GJJBsYtuuoHSQYM09UltkXPkj4bc9QEOzRXKQ0hDjNYYj3UT00E3CalBO/5uGTA==", + "version": "0.1601.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1601.6.tgz", + "integrity": "sha512-dY+/FNUNrOj+m4iG5/v8N0PfbDmjkjjoy/YkquRHS1yo7fGGDFNqji2552mbtjN6/LwyWDhOO7fxdqppadjnvA==", "dev": true, "dependencies": { - "@angular-devkit/core": "16.1.5", + "@angular-devkit/core": "16.1.6", "rxjs": "7.8.1" }, "engines": { @@ -138,15 +137,15 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "16.1.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.1.5.tgz", - "integrity": "sha512-F78nvdDgVknqA9MekZ6xnmwKLH+qIQ5gBuP+/JnUiSZs1u1i8qS/GGNUL+T/Zsxk1HMRbG+erQ7N6nn1sBKMMw==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.1.6.tgz", + "integrity": "sha512-IEC1tApX8/Qa/RIVmbj0nYbOQ5WGcrkGNJ7D42q4DkIo74XKPzxDRruJE1RCjdZsj8lf4CCCZgSOPBsEI8Zbdw==", "dev": true, "dependencies": { "@ampproject/remapping": "2.2.1", - "@angular-devkit/architect": "0.1601.5", - "@angular-devkit/build-webpack": "0.1601.5", - "@angular-devkit/core": "16.1.5", + "@angular-devkit/architect": "0.1601.6", + "@angular-devkit/build-webpack": "0.1601.6", + "@angular-devkit/core": "16.1.6", "@babel/core": "7.22.5", "@babel/generator": "7.22.7", "@babel/helper-annotate-as-pure": "7.22.5", @@ -158,7 +157,7 @@ "@babel/runtime": "7.22.5", "@babel/template": "7.22.5", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "16.1.5", + "@ngtools/webpack": "16.1.6", "@vitejs/plugin-basic-ssl": "1.0.1", "ansi-colors": "4.1.3", "autoprefixer": "10.4.14", @@ -266,12 +265,12 @@ "dev": true }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1601.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1601.5.tgz", - "integrity": "sha512-Mc61mrSFFpplBMl11r8ryUrKRDf9Clugnpe8770JcoDe99xEsBFwUUMRS9xNqmVroCgdLMxFijgLSI1ANkUvMg==", + "version": "0.1601.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1601.6.tgz", + "integrity": "sha512-Uz/GjnhgAqSDPxrO4HP/tHNGPPZU3tEShtAVKyAypBl20bh2Aw1L5D+lCZi/Uq3Sh2JTPD9/M0ei2u9CMLhLDw==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1601.5", + "@angular-devkit/architect": "0.1601.6", "rxjs": "7.8.1" }, "engines": { @@ -285,9 +284,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "16.1.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.5.tgz", - "integrity": "sha512-0Mui2Nuib7kzOLWkz18v1OdxK6wd0SWdSFsAXavrRv03495vv+JUqVq0z0vGMtcbURkjOxIwdj3coj+Y0szkPQ==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.6.tgz", + "integrity": "sha512-3OjtrPWvsqVkMBwqPeE65ccCIw56FooNpVVAJ0XwhVQv5mA81pmbCzU7JsR6U449ZT7O4cQblzZMQvWvx74HCg==", "dev": true, "dependencies": { "ajv": "8.12.0", @@ -311,12 +310,12 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "16.1.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.5.tgz", - "integrity": "sha512-s6D/I0pfJJ7+XaAYyXh6IsS3Tya4WKeBuVcWWE7IK6TMEd5a1yDQ5O9RO2/G8UcxBwlKZmeuFbJkclpF6q3hYA==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.6.tgz", + "integrity": "sha512-KA8P78gaS76HMHGBOM8JHJXWLOxCIShYVB2Un/Cu6z3jVODvXq+ILZUc1Y0RsAce/vsl2wf8qpoh5Lku9KJHUQ==", "dev": true, "dependencies": { - "@angular-devkit/core": "16.1.5", + "@angular-devkit/core": "16.1.6", "jsonc-parser": "3.2.0", "magic-string": "0.30.0", "ora": "5.4.1", @@ -427,9 +426,9 @@ } }, "node_modules/@angular/animations": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.1.6.tgz", - "integrity": "sha512-LsU3/qXom/tLB76Exvjz+7SkifwJ9QG/+gSjWj+DTVlj1+dO7awb8iWQi+YmTmqN7ijTJi9ye6is3iuJSYuCLw==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.1.7.tgz", + "integrity": "sha512-+fMLwUlHLNsHWzX2cnsr4sMyix0R5v/a5srQTQjl6BYhdyqFgT82h5F4P49yFu+nZr0jdsxF012wPJbDRR+1qQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -437,7 +436,7 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/core": "16.1.6" + "@angular/core": "16.1.7" } }, "node_modules/@angular/cdk": { @@ -457,15 +456,15 @@ } }, "node_modules/@angular/cli": { - "version": "16.1.5", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.1.5.tgz", - "integrity": "sha512-um9hWEU3HUMRnQnaDfw0QSNdDLbdLA9tSzp81kz3Rx2VFsSssCABq6xQ+7w09xCUx0jg88r1lBPc2pwV7Pu7FQ==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.1.6.tgz", + "integrity": "sha512-yXVgUKMXxlAHkhc6xk3ljR7TXpMLBykyu8do+ooSP08VKEQnWjTdVgrcOHd0n5w9YHXUQgBSmjDKxtQaBmvyZQ==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1601.5", - "@angular-devkit/core": "16.1.5", - "@angular-devkit/schematics": "16.1.5", - "@schematics/angular": "16.1.5", + "@angular-devkit/architect": "0.1601.6", + "@angular-devkit/core": "16.1.6", + "@angular-devkit/schematics": "16.1.6", + "@schematics/angular": "16.1.6", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "ini": "4.1.1", @@ -491,9 +490,9 @@ } }, "node_modules/@angular/common": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.1.6.tgz", - "integrity": "sha512-30Y8DGs+oosA+BcDZd1SuZ4HDT+DVZ6lVT4L+mBUH1BSkNna08FrbmrGQxO82CcxU6ZK0q1YLVkkb5cGx8y9ew==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.1.7.tgz", + "integrity": "sha512-7WwYwtJjuJtUkutB+aMCvtV5zxa43T4x+kqT+kS4KnUmLv5KdrGPxcS+/7YUuKEELWp1SG032UTwGPX0DXxH4g==", "dependencies": { "tslib": "^2.3.0" }, @@ -501,14 +500,14 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/core": "16.1.6", + "@angular/core": "16.1.7", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.1.6.tgz", - "integrity": "sha512-BVDfKZLMb7mmLwdek+ZyzI43Zv0WNNNqnYpMeOI6egmkhtjNCxpQAy2YFKgNPse3bBGP8tKutwAtBB+Lqu/Kcw==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.1.7.tgz", + "integrity": "sha512-93nbMFPSpKNfUyuRvEQxPdYLU6g25oZ4Gp7ewzNLyDHIbTQv6FwsthHfgPigPJJUUyKak6Gr3koFsgk7Dl3LAA==", "dependencies": { "tslib": "^2.3.0" }, @@ -516,7 +515,7 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/core": "16.1.6" + "@angular/core": "16.1.7" }, "peerDependenciesMeta": { "@angular/core": { @@ -525,9 +524,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.1.6.tgz", - "integrity": "sha512-unWmH2CcuCkVuEr1fQuzlJtSGzRirsyg8cGQmRh16orx6N8oa/fCvxYRSOed/5aE9YiRpIFZ2TQWT2myY10/6Q==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.1.7.tgz", + "integrity": "sha512-6iuogfVrbCh6o4hWbNCClsLQdLtlXiaNc72LGz5LMXI0TOwKVlRXhbzhiQeLS0/nsYIdHFbgyr1aepI2wQA3mQ==", "dev": true, "dependencies": { "@babel/core": "7.22.5", @@ -548,14 +547,14 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/compiler": "16.1.6", + "@angular/compiler": "16.1.7", "typescript": ">=4.9.3 <5.2" } }, "node_modules/@angular/core": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.1.6.tgz", - "integrity": "sha512-tUXvVLc+Vbl8Se7hajwyUTNmKD9uPq+SZH6x8sRM2n5azzjBZltOoJfzxK5JKAkiFf/KkQhteHkMBfoDLZ2tmw==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.1.7.tgz", + "integrity": "sha512-Wl5BR9X1xnV7Z9v/MNVANhymuTKAuRv4etr4rRgaC5NbbJSuFM4y+mg4yVI4wmrYJo0gKRcV9+2mHaePr41fTg==", "dependencies": { "tslib": "^2.3.0" }, @@ -568,9 +567,9 @@ } }, "node_modules/@angular/forms": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.1.6.tgz", - "integrity": "sha512-6MMQx3qCFrXyX4sSNvQRLRm6smGZshMjuWSCSkyEvvTYpZSA3F7h8ba762PDKYE3vMAON2OczCr8y9MyjBEruA==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.1.7.tgz", + "integrity": "sha512-AZ6oCIAS2JwH7rJiTOj2uKl1eykiDP98y0trgQ/42+zzpOQZyZAjXrtdqHkVUXMc1PFf5NmYioz19Muj1p+Ttg==", "dependencies": { "tslib": "^2.3.0" }, @@ -578,16 +577,16 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/common": "16.1.6", - "@angular/core": "16.1.6", - "@angular/platform-browser": "16.1.6", + "@angular/common": "16.1.7", + "@angular/core": "16.1.7", + "@angular/platform-browser": "16.1.7", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/platform-browser": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.1.6.tgz", - "integrity": "sha512-qHwQpqhcWFAwroWwe7iiSsJrs38lrW82vHEm/sX/fcbUuLtqEDaNMf90KqzeSPIkFEkX5wwUZxdRwEh2bepf6g==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.1.7.tgz", + "integrity": "sha512-AjdUUv5+v50cclHPsKVVdNRdCQZJMGNKmvxyLgeGj2hs61lGoJxBYcYqPre2PpM0SvezNJBreUvjwqM3ttOjng==", "dependencies": { "tslib": "^2.3.0" }, @@ -595,9 +594,9 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/animations": "16.1.6", - "@angular/common": "16.1.6", - "@angular/core": "16.1.6" + "@angular/animations": "16.1.7", + "@angular/common": "16.1.7", + "@angular/core": "16.1.7" }, "peerDependenciesMeta": { "@angular/animations": { @@ -606,9 +605,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.1.6.tgz", - "integrity": "sha512-NZ3bcXgWq9k0pJE7EvZsatvY8++5NzAtxCdV9IM+fqgzBzkSR4le0Iud4hdBSNQF1DOwwB8KdU7Xpe9q4YsdqA==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.1.7.tgz", + "integrity": "sha512-xoT4wDl7Kurg2N5gcLNmkvqYx14xnYwa2Zm1ZIOM7kYMRXiAg1+XBzaxFXog0fCCs/lqUKUwaNn32YpLKwMNaw==", "dependencies": { "tslib": "^2.3.0" }, @@ -616,16 +615,16 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/common": "16.1.6", - "@angular/compiler": "16.1.6", - "@angular/core": "16.1.6", - "@angular/platform-browser": "16.1.6" + "@angular/common": "16.1.7", + "@angular/compiler": "16.1.7", + "@angular/core": "16.1.7", + "@angular/platform-browser": "16.1.7" } }, "node_modules/@angular/router": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.1.6.tgz", - "integrity": "sha512-4+MniaDghKurV117URJZzCQBNCdMfiu6lRpTdcKWbHgGZqOQRG9N/gcHah5eLYVB0s6mfQ1OQ9HavNyjujF6Fg==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.1.7.tgz", + "integrity": "sha512-nzjuAEAXLktA3puvSae54noAHEiuizNTvaOpuvQYHfvZF27QMW28XlC33+vDhckWjSD02K7Fb2+AELkOJhUM5Q==", "dependencies": { "tslib": "^2.3.0" }, @@ -633,9 +632,9 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/common": "16.1.6", - "@angular/core": "16.1.6", - "@angular/platform-browser": "16.1.6", + "@angular/common": "16.1.7", + "@angular/core": "16.1.7", + "@angular/platform-browser": "16.1.7", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -843,9 +842,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.1.tgz", - "integrity": "sha512-kX4oXixDxG197yhX+J3Wp+NpL2wuCFjWQAr6yX2jtCnflK9ulMI51ULFGIrWiX1jGfvAxdHp+XQCcP2bZGPs9A==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -855,7 +854,7 @@ "resolve": "^1.14.2" }, "peerDependencies": { - "@babel/core": "^7.4.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/helper-environment-visitor": { @@ -2349,9 +2348,9 @@ } }, "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -2361,7 +2360,7 @@ "esutils": "^2.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/regjsgen": { @@ -2450,9 +2449,9 @@ "optional": true }, "node_modules/@cds/core": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/@cds/core/-/core-6.4.5.tgz", - "integrity": "sha512-2wNT/fohyuGEBRa/Vw73z2GqYaNqiccLp5vaQPSdhfn0pX3kZ+q65KLQsbmzyoD+gjo05ydyrjkVRSrzjcxq1Q==", + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/@cds/core/-/core-6.4.6.tgz", + "integrity": "sha512-KQzyxWsJHwZNMOlb9unoxDrGgFETqcew/fV4zmQm1JkyQBmZLPhzIHXFzfFHpQJDjpXiU8htU72Ko0aZ2F9bBg==", "dependencies": { "lit": "^2.1.3", "ramda": "^0.29.0", @@ -2968,9 +2967,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -3089,9 +3088,9 @@ } }, "node_modules/@fast-csv/format/node_modules/@types/node": { - "version": "14.18.53", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.53.tgz", - "integrity": "sha512-soGmOpVBUq+gaBMwom1M+krC/NNbWlosh4AtGA03SyWNDiqSKtwp7OulO1M6+mg8YkHMvJ/y0AkCeO8d1hNb7A==" + "version": "14.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.54.tgz", + "integrity": "sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw==" }, "node_modules/@handsontable/angular": { "version": "13.0.0", @@ -3406,9 +3405,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "16.1.5", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.1.5.tgz", - "integrity": "sha512-XQkanGAtB9S2EE14xa/04hPNYSkAzJOeaHJkirfqk/p40p8nA2pNsfLYCMd2N7K4kzqcET8UYAZ+wIpQxp12HA==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.1.6.tgz", + "integrity": "sha512-rDE1bV3+Ys/VyeD6l7JKtbs3+bTQAfWhi7meEuq5mkaJHOERu6Z40ce866faAIX2I1AVpsSv8rLlb7kB7t7kzw==", "dev": true, "engines": { "node": "^16.14.0 || >=18.10.0", @@ -3421,15 +3420,6 @@ "webpack": "^5.54.0" } }, - "node_modules/@nicolo-ribaudo/semver-v6": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz", - "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -4093,13 +4083,13 @@ } }, "node_modules/@schematics/angular": { - "version": "16.1.5", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.1.5.tgz", - "integrity": "sha512-GwSweqKGjMc9oqU6fukqYKlBflCCDA/l2qfA60YIdf4SubaZnIUpkpNXTbWeFRPJh8zQShb8OZE7cVj8MZRruw==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.1.6.tgz", + "integrity": "sha512-BxghkeLfnMgV0D4DZDcbfPpox/Orw1ismSVGoQMIV/Daj2pqfSK+n97NAu0r0EsQyR5agPxOX9khVft+otODhg==", "dev": true, "dependencies": { - "@angular-devkit/core": "16.1.5", - "@angular-devkit/schematics": "16.1.5", + "@angular-devkit/core": "16.1.6", + "@angular-devkit/schematics": "16.1.6", "jsonc-parser": "3.2.0" }, "engines": { @@ -4352,9 +4342,9 @@ "dev": true }, "node_modules/@types/eslint": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.0.tgz", - "integrity": "sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw==", + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.1.tgz", + "integrity": "sha512-XpNDc4Z5Tb4x+SW1MriMVeIsMoONHCkWFMkR/aPJbzEsxqHy+4Glu/BqTdPrApfDeMaXbtNh6bseNgl5KaWrSg==", "dev": true, "dependencies": { "@types/estree": "*", @@ -4437,9 +4427,9 @@ "dev": true }, "node_modules/@types/lodash": { - "version": "4.14.195", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", - "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", + "version": "4.14.196", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.196.tgz", + "integrity": "sha512-22y3o88f4a94mKljsZcanlNWPzO0uBsBdzLAngf2tp533LzZcQzb6+eZPJ+vCTt+bqF2XnvT9gejTLsAcJAJyQ==", "dev": true }, "node_modules/@types/lodash-es": { @@ -5429,9 +5419,9 @@ } }, "node_modules/ansi-sequence-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", + "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", "dev": true }, "node_modules/ansi-styles": { @@ -5760,42 +5750,51 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.4.tgz", - "integrity": "sha512-9WeK9snM1BfxB38goUEv2FLnA6ja07UMfazFHzCXUb3NyDZAwfXvQiURQ6guTTMeHcOsdknULm1PDhs4uWtKyA==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.1", - "@nicolo-ribaudo/semver-v6": "^6.3.3" + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.2.tgz", - "integrity": "sha512-Cid+Jv1BrY9ReW9lIfNlNpsI53N+FN7gE+f73zLAUbr9C52W4gKLWSByx47pfDJsEysojKArqOtOKZSVIIUTuQ==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.1", + "@babel/helper-define-polyfill-provider": "^0.4.2", "core-js-compat": "^3.31.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.1.tgz", - "integrity": "sha512-L8OyySuI6OSQ5hFy9O+7zFjyr4WhAfRjLIOkhQGYl+emwJkd/S4XXT1JpfrgR1jrQ1NcGiOh+yAdGlF8pnC3Jw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.1" + "@babel/helper-define-polyfill-provider": "^0.4.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/balanced-match": { @@ -6208,9 +6207,9 @@ } }, "node_modules/cachedir": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", "dev": true, "engines": { "node": ">=6" @@ -6764,9 +6763,9 @@ } }, "node_modules/copy-webpack-plugin/node_modules/fast-glob": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", - "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -6843,9 +6842,9 @@ "hasInstallScript": true }, "node_modules/core-js-compat": { - "version": "3.31.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.1.tgz", - "integrity": "sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA==", + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.0.tgz", + "integrity": "sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==", "dev": true, "dependencies": { "browserslist": "^4.21.9" @@ -7248,9 +7247,9 @@ } }, "node_modules/cypress/node_modules/@types/node": { - "version": "14.18.53", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.53.tgz", - "integrity": "sha512-soGmOpVBUq+gaBMwom1M+krC/NNbWlosh4AtGA03SyWNDiqSKtwp7OulO1M6+mg8YkHMvJ/y0AkCeO8d1hNb7A==", + "version": "14.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.54.tgz", + "integrity": "sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw==", "dev": true }, "node_modules/cypress/node_modules/ansi-styles": { @@ -7959,9 +7958,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.467", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.467.tgz", - "integrity": "sha512-2qI70O+rR4poYeF2grcuS/bCps5KJh6y1jtZMDDEteyKJQrzLOEhFyXCLcHW6DTBjKjWkk26JhWoAi+Ux9A0fg==", + "version": "1.4.475", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.475.tgz", + "integrity": "sha512-mTye5u5P98kSJO2n7zYALhpJDmoSQejIGya0iR01GpoRady8eK3bw7YHHnjA1Rfi4ZSLdpuzlAC7Zw+1Zu7Z6A==", "dev": true }, "node_modules/elliptic": { @@ -8082,12 +8081,13 @@ } }, "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, "dependencies": { - "ansi-colors": "^4.1.1" + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8.6" @@ -9682,26 +9682,15 @@ } }, "node_modules/handsontable/node_modules/core-js": { - "version": "3.31.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.31.1.tgz", - "integrity": "sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ==", + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.32.0.tgz", + "integrity": "sha512-rd4rYZNlF3WuoYuRIDEmbR/ga9CeuWX9U05umAvgrrZoHY4Z++cp/xwPQMvUpBB4Ag6J8KfD80G0zwCyaSxDww==", "hasInstallScript": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, - "node_modules/handsontable/node_modules/numbro": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/numbro/-/numbro-2.1.2.tgz", - "integrity": "sha512-7w833BxZmKGLE9HI0aREtNVRVH6WTYUUlWf4qgA5gKNhPQ4F/MRZ14sc0v8eoLORprk9ZTVwYaLwj8N3Zgxwiw==", - "dependencies": { - "bignumber.js": "^8.0.1" - }, - "engines": { - "node": "*" - } - }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -10919,17 +10908,17 @@ } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-lib-report/node_modules/has-flag": { @@ -10941,6 +10930,21 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10977,9 +10981,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -10990,9 +10994,9 @@ } }, "node_modules/jackspeak": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", - "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.2.tgz", + "integrity": "sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg==", "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -12175,14 +12179,14 @@ } }, "node_modules/marked": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-5.1.1.tgz", - "integrity": "sha512-bTmmGdEINWmOMDjnPWDxGPQ4qkDLeYorpYbEtFOXzOruTwUE671q4Guiuchn4N8h/v6NGd7916kXsm3Iz4iUSg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-5.1.2.tgz", + "integrity": "sha512-ahRPGXJpjMjwSOlBoTMZAK7ATXkli5qCPxZ21TG44rx1KEo44bii4ekgTDQPNRQ4Kh7JMb9Ub1PVk1NxRSsorg==", "bin": { "marked": "bin/marked.js" }, "engines": { - "node": ">= 18" + "node": ">= 16" } }, "node_modules/md5.js": { @@ -13281,11 +13285,11 @@ } }, "node_modules/numbro": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/numbro/-/numbro-2.3.6.tgz", - "integrity": "sha512-pxpoTT3hVxQGaOA2RTzXR/muonQNd1K1HPJbWo7QOmxPwiPmoFCFfsG9XXgW3uqjyzezJ0P9IvCPDXUtJexjwg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/numbro/-/numbro-2.1.2.tgz", + "integrity": "sha512-7w833BxZmKGLE9HI0aREtNVRVH6WTYUUlWf4qgA5gKNhPQ4F/MRZ14sc0v8eoLORprk9ZTVwYaLwj8N3Zgxwiw==", "dependencies": { - "bignumber.js": "^8.1.1" + "bignumber.js": "^8.0.1" }, "engines": { "node": "*" @@ -13426,6 +13430,18 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/nx/node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/nx/node_modules/fast-glob": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", @@ -16814,9 +16830,9 @@ } }, "node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -18028,25 +18044,25 @@ } }, "@angular-devkit/architect": { - "version": "0.1601.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1601.5.tgz", - "integrity": "sha512-f6oOXR+0gXdMl2papEkTt28GJJBsYtuuoHSQYM09UltkXPkj4bc9QEOzRXKQ0hDjNYYj3UT00E3CalBO/5uGTA==", + "version": "0.1601.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1601.6.tgz", + "integrity": "sha512-dY+/FNUNrOj+m4iG5/v8N0PfbDmjkjjoy/YkquRHS1yo7fGGDFNqji2552mbtjN6/LwyWDhOO7fxdqppadjnvA==", "dev": true, "requires": { - "@angular-devkit/core": "16.1.5", + "@angular-devkit/core": "16.1.6", "rxjs": "7.8.1" } }, "@angular-devkit/build-angular": { - "version": "16.1.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.1.5.tgz", - "integrity": "sha512-F78nvdDgVknqA9MekZ6xnmwKLH+qIQ5gBuP+/JnUiSZs1u1i8qS/GGNUL+T/Zsxk1HMRbG+erQ7N6nn1sBKMMw==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.1.6.tgz", + "integrity": "sha512-IEC1tApX8/Qa/RIVmbj0nYbOQ5WGcrkGNJ7D42q4DkIo74XKPzxDRruJE1RCjdZsj8lf4CCCZgSOPBsEI8Zbdw==", "dev": true, "requires": { "@ampproject/remapping": "2.2.1", - "@angular-devkit/architect": "0.1601.5", - "@angular-devkit/build-webpack": "0.1601.5", - "@angular-devkit/core": "16.1.5", + "@angular-devkit/architect": "0.1601.6", + "@angular-devkit/build-webpack": "0.1601.6", + "@angular-devkit/core": "16.1.6", "@babel/core": "7.22.5", "@babel/generator": "7.22.7", "@babel/helper-annotate-as-pure": "7.22.5", @@ -18058,7 +18074,7 @@ "@babel/runtime": "7.22.5", "@babel/template": "7.22.5", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "16.1.5", + "@ngtools/webpack": "16.1.6", "@vitejs/plugin-basic-ssl": "1.0.1", "ansi-colors": "4.1.3", "autoprefixer": "10.4.14", @@ -18119,19 +18135,19 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.1601.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1601.5.tgz", - "integrity": "sha512-Mc61mrSFFpplBMl11r8ryUrKRDf9Clugnpe8770JcoDe99xEsBFwUUMRS9xNqmVroCgdLMxFijgLSI1ANkUvMg==", + "version": "0.1601.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1601.6.tgz", + "integrity": "sha512-Uz/GjnhgAqSDPxrO4HP/tHNGPPZU3tEShtAVKyAypBl20bh2Aw1L5D+lCZi/Uq3Sh2JTPD9/M0ei2u9CMLhLDw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1601.5", + "@angular-devkit/architect": "0.1601.6", "rxjs": "7.8.1" } }, "@angular-devkit/core": { - "version": "16.1.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.5.tgz", - "integrity": "sha512-0Mui2Nuib7kzOLWkz18v1OdxK6wd0SWdSFsAXavrRv03495vv+JUqVq0z0vGMtcbURkjOxIwdj3coj+Y0szkPQ==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.6.tgz", + "integrity": "sha512-3OjtrPWvsqVkMBwqPeE65ccCIw56FooNpVVAJ0XwhVQv5mA81pmbCzU7JsR6U449ZT7O4cQblzZMQvWvx74HCg==", "dev": true, "requires": { "ajv": "8.12.0", @@ -18142,12 +18158,12 @@ } }, "@angular-devkit/schematics": { - "version": "16.1.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.5.tgz", - "integrity": "sha512-s6D/I0pfJJ7+XaAYyXh6IsS3Tya4WKeBuVcWWE7IK6TMEd5a1yDQ5O9RO2/G8UcxBwlKZmeuFbJkclpF6q3hYA==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.6.tgz", + "integrity": "sha512-KA8P78gaS76HMHGBOM8JHJXWLOxCIShYVB2Un/Cu6z3jVODvXq+ILZUc1Y0RsAce/vsl2wf8qpoh5Lku9KJHUQ==", "dev": true, "requires": { - "@angular-devkit/core": "16.1.5", + "@angular-devkit/core": "16.1.6", "jsonc-parser": "3.2.0", "magic-string": "0.30.0", "ora": "5.4.1", @@ -18230,9 +18246,9 @@ } }, "@angular/animations": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.1.6.tgz", - "integrity": "sha512-LsU3/qXom/tLB76Exvjz+7SkifwJ9QG/+gSjWj+DTVlj1+dO7awb8iWQi+YmTmqN7ijTJi9ye6is3iuJSYuCLw==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.1.7.tgz", + "integrity": "sha512-+fMLwUlHLNsHWzX2cnsr4sMyix0R5v/a5srQTQjl6BYhdyqFgT82h5F4P49yFu+nZr0jdsxF012wPJbDRR+1qQ==", "requires": { "tslib": "^2.3.0" } @@ -18247,15 +18263,15 @@ } }, "@angular/cli": { - "version": "16.1.5", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.1.5.tgz", - "integrity": "sha512-um9hWEU3HUMRnQnaDfw0QSNdDLbdLA9tSzp81kz3Rx2VFsSssCABq6xQ+7w09xCUx0jg88r1lBPc2pwV7Pu7FQ==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.1.6.tgz", + "integrity": "sha512-yXVgUKMXxlAHkhc6xk3ljR7TXpMLBykyu8do+ooSP08VKEQnWjTdVgrcOHd0n5w9YHXUQgBSmjDKxtQaBmvyZQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1601.5", - "@angular-devkit/core": "16.1.5", - "@angular-devkit/schematics": "16.1.5", - "@schematics/angular": "16.1.5", + "@angular-devkit/architect": "0.1601.6", + "@angular-devkit/core": "16.1.6", + "@angular-devkit/schematics": "16.1.6", + "@schematics/angular": "16.1.6", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "ini": "4.1.1", @@ -18273,25 +18289,25 @@ } }, "@angular/common": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.1.6.tgz", - "integrity": "sha512-30Y8DGs+oosA+BcDZd1SuZ4HDT+DVZ6lVT4L+mBUH1BSkNna08FrbmrGQxO82CcxU6ZK0q1YLVkkb5cGx8y9ew==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.1.7.tgz", + "integrity": "sha512-7WwYwtJjuJtUkutB+aMCvtV5zxa43T4x+kqT+kS4KnUmLv5KdrGPxcS+/7YUuKEELWp1SG032UTwGPX0DXxH4g==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.1.6.tgz", - "integrity": "sha512-BVDfKZLMb7mmLwdek+ZyzI43Zv0WNNNqnYpMeOI6egmkhtjNCxpQAy2YFKgNPse3bBGP8tKutwAtBB+Lqu/Kcw==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.1.7.tgz", + "integrity": "sha512-93nbMFPSpKNfUyuRvEQxPdYLU6g25oZ4Gp7ewzNLyDHIbTQv6FwsthHfgPigPJJUUyKak6Gr3koFsgk7Dl3LAA==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler-cli": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.1.6.tgz", - "integrity": "sha512-unWmH2CcuCkVuEr1fQuzlJtSGzRirsyg8cGQmRh16orx6N8oa/fCvxYRSOed/5aE9YiRpIFZ2TQWT2myY10/6Q==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.1.7.tgz", + "integrity": "sha512-6iuogfVrbCh6o4hWbNCClsLQdLtlXiaNc72LGz5LMXI0TOwKVlRXhbzhiQeLS0/nsYIdHFbgyr1aepI2wQA3mQ==", "dev": true, "requires": { "@babel/core": "7.22.5", @@ -18305,41 +18321,41 @@ } }, "@angular/core": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.1.6.tgz", - "integrity": "sha512-tUXvVLc+Vbl8Se7hajwyUTNmKD9uPq+SZH6x8sRM2n5azzjBZltOoJfzxK5JKAkiFf/KkQhteHkMBfoDLZ2tmw==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.1.7.tgz", + "integrity": "sha512-Wl5BR9X1xnV7Z9v/MNVANhymuTKAuRv4etr4rRgaC5NbbJSuFM4y+mg4yVI4wmrYJo0gKRcV9+2mHaePr41fTg==", "requires": { "tslib": "^2.3.0" } }, "@angular/forms": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.1.6.tgz", - "integrity": "sha512-6MMQx3qCFrXyX4sSNvQRLRm6smGZshMjuWSCSkyEvvTYpZSA3F7h8ba762PDKYE3vMAON2OczCr8y9MyjBEruA==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.1.7.tgz", + "integrity": "sha512-AZ6oCIAS2JwH7rJiTOj2uKl1eykiDP98y0trgQ/42+zzpOQZyZAjXrtdqHkVUXMc1PFf5NmYioz19Muj1p+Ttg==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.1.6.tgz", - "integrity": "sha512-qHwQpqhcWFAwroWwe7iiSsJrs38lrW82vHEm/sX/fcbUuLtqEDaNMf90KqzeSPIkFEkX5wwUZxdRwEh2bepf6g==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.1.7.tgz", + "integrity": "sha512-AjdUUv5+v50cclHPsKVVdNRdCQZJMGNKmvxyLgeGj2hs61lGoJxBYcYqPre2PpM0SvezNJBreUvjwqM3ttOjng==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser-dynamic": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.1.6.tgz", - "integrity": "sha512-NZ3bcXgWq9k0pJE7EvZsatvY8++5NzAtxCdV9IM+fqgzBzkSR4le0Iud4hdBSNQF1DOwwB8KdU7Xpe9q4YsdqA==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.1.7.tgz", + "integrity": "sha512-xoT4wDl7Kurg2N5gcLNmkvqYx14xnYwa2Zm1ZIOM7kYMRXiAg1+XBzaxFXog0fCCs/lqUKUwaNn32YpLKwMNaw==", "requires": { "tslib": "^2.3.0" } }, "@angular/router": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.1.6.tgz", - "integrity": "sha512-4+MniaDghKurV117URJZzCQBNCdMfiu6lRpTdcKWbHgGZqOQRG9N/gcHah5eLYVB0s6mfQ1OQ9HavNyjujF6Fg==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.1.7.tgz", + "integrity": "sha512-nzjuAEAXLktA3puvSae54noAHEiuizNTvaOpuvQYHfvZF27QMW28XlC33+vDhckWjSD02K7Fb2+AELkOJhUM5Q==", "requires": { "tslib": "^2.3.0" } @@ -18501,9 +18517,9 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.1.tgz", - "integrity": "sha512-kX4oXixDxG197yhX+J3Wp+NpL2wuCFjWQAr6yX2jtCnflK9ulMI51ULFGIrWiX1jGfvAxdHp+XQCcP2bZGPs9A==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.22.6", @@ -19526,9 +19542,9 @@ } }, "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -19611,9 +19627,9 @@ "optional": true }, "@cds/core": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/@cds/core/-/core-6.4.5.tgz", - "integrity": "sha512-2wNT/fohyuGEBRa/Vw73z2GqYaNqiccLp5vaQPSdhfn0pX3kZ+q65KLQsbmzyoD+gjo05ydyrjkVRSrzjcxq1Q==", + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/@cds/core/-/core-6.4.6.tgz", + "integrity": "sha512-KQzyxWsJHwZNMOlb9unoxDrGgFETqcew/fV4zmQm1JkyQBmZLPhzIHXFzfFHpQJDjpXiU8htU72Ko0aZ2F9bBg==", "requires": { "@cds/city": "^1.1.0", "lit": "^2.1.3", @@ -19897,9 +19913,9 @@ } }, "@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", "dev": true }, "@eslint/eslintrc": { @@ -19989,9 +20005,9 @@ }, "dependencies": { "@types/node": { - "version": "14.18.53", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.53.tgz", - "integrity": "sha512-soGmOpVBUq+gaBMwom1M+krC/NNbWlosh4AtGA03SyWNDiqSKtwp7OulO1M6+mg8YkHMvJ/y0AkCeO8d1hNb7A==" + "version": "14.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.54.tgz", + "integrity": "sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw==" } } }, @@ -20236,15 +20252,9 @@ } }, "@ngtools/webpack": { - "version": "16.1.5", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.1.5.tgz", - "integrity": "sha512-XQkanGAtB9S2EE14xa/04hPNYSkAzJOeaHJkirfqk/p40p8nA2pNsfLYCMd2N7K4kzqcET8UYAZ+wIpQxp12HA==", - "dev": true - }, - "@nicolo-ribaudo/semver-v6": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz", - "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.1.6.tgz", + "integrity": "sha512-rDE1bV3+Ys/VyeD6l7JKtbs3+bTQAfWhi7meEuq5mkaJHOERu6Z40ce866faAIX2I1AVpsSv8rLlb7kB7t7kzw==", "dev": true }, "@nodelib/fs.scandir": { @@ -20703,13 +20713,13 @@ } }, "@schematics/angular": { - "version": "16.1.5", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.1.5.tgz", - "integrity": "sha512-GwSweqKGjMc9oqU6fukqYKlBflCCDA/l2qfA60YIdf4SubaZnIUpkpNXTbWeFRPJh8zQShb8OZE7cVj8MZRruw==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.1.6.tgz", + "integrity": "sha512-BxghkeLfnMgV0D4DZDcbfPpox/Orw1ismSVGoQMIV/Daj2pqfSK+n97NAu0r0EsQyR5agPxOX9khVft+otODhg==", "dev": true, "requires": { - "@angular-devkit/core": "16.1.5", - "@angular-devkit/schematics": "16.1.5", + "@angular-devkit/core": "16.1.6", + "@angular-devkit/schematics": "16.1.6", "jsonc-parser": "3.2.0" } }, @@ -20929,9 +20939,9 @@ "dev": true }, "@types/eslint": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.0.tgz", - "integrity": "sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw==", + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.1.tgz", + "integrity": "sha512-XpNDc4Z5Tb4x+SW1MriMVeIsMoONHCkWFMkR/aPJbzEsxqHy+4Glu/BqTdPrApfDeMaXbtNh6bseNgl5KaWrSg==", "dev": true, "requires": { "@types/estree": "*", @@ -21014,9 +21024,9 @@ "dev": true }, "@types/lodash": { - "version": "4.14.195", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", - "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", + "version": "4.14.196", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.196.tgz", + "integrity": "sha512-22y3o88f4a94mKljsZcanlNWPzO0uBsBdzLAngf2tp533LzZcQzb6+eZPJ+vCTt+bqF2XnvT9gejTLsAcJAJyQ==", "dev": true }, "@types/lodash-es": { @@ -21759,9 +21769,9 @@ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-sequence-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", + "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", "dev": true }, "ansi-styles": { @@ -22002,33 +22012,41 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.4.tgz", - "integrity": "sha512-9WeK9snM1BfxB38goUEv2FLnA6ja07UMfazFHzCXUb3NyDZAwfXvQiURQ6guTTMeHcOsdknULm1PDhs4uWtKyA==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", "dev": true, "requires": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.1", - "@nicolo-ribaudo/semver-v6": "^6.3.3" + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } } }, "babel-plugin-polyfill-corejs3": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.2.tgz", - "integrity": "sha512-Cid+Jv1BrY9ReW9lIfNlNpsI53N+FN7gE+f73zLAUbr9C52W4gKLWSByx47pfDJsEysojKArqOtOKZSVIIUTuQ==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.1", + "@babel/helper-define-polyfill-provider": "^0.4.2", "core-js-compat": "^3.31.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.1.tgz", - "integrity": "sha512-L8OyySuI6OSQ5hFy9O+7zFjyr4WhAfRjLIOkhQGYl+emwJkd/S4XXT1JpfrgR1jrQ1NcGiOh+yAdGlF8pnC3Jw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.1" + "@babel/helper-define-polyfill-provider": "^0.4.2" } }, "balanced-match": { @@ -22354,9 +22372,9 @@ } }, "cachedir": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", "dev": true }, "call-bind": { @@ -22769,9 +22787,9 @@ }, "dependencies": { "fast-glob": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", - "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -22829,9 +22847,9 @@ "dev": true }, "core-js-compat": { - "version": "3.31.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.1.tgz", - "integrity": "sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA==", + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.0.tgz", + "integrity": "sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==", "dev": true, "requires": { "browserslist": "^4.21.9" @@ -23132,9 +23150,9 @@ }, "dependencies": { "@types/node": { - "version": "14.18.53", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.53.tgz", - "integrity": "sha512-soGmOpVBUq+gaBMwom1M+krC/NNbWlosh4AtGA03SyWNDiqSKtwp7OulO1M6+mg8YkHMvJ/y0AkCeO8d1hNb7A==", + "version": "14.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.54.tgz", + "integrity": "sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw==", "dev": true }, "ansi-styles": { @@ -23695,9 +23713,9 @@ } }, "electron-to-chromium": { - "version": "1.4.467", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.467.tgz", - "integrity": "sha512-2qI70O+rR4poYeF2grcuS/bCps5KJh6y1jtZMDDEteyKJQrzLOEhFyXCLcHW6DTBjKjWkk26JhWoAi+Ux9A0fg==", + "version": "1.4.475", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.475.tgz", + "integrity": "sha512-mTye5u5P98kSJO2n7zYALhpJDmoSQejIGya0iR01GpoRady8eK3bw7YHHnjA1Rfi4ZSLdpuzlAC7Zw+1Zu7Z6A==", "dev": true }, "elliptic": { @@ -23804,12 +23822,13 @@ } }, "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, "requires": { - "ansi-colors": "^4.1.1" + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" } }, "ent": { @@ -25029,17 +25048,9 @@ }, "dependencies": { "core-js": { - "version": "3.31.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.31.1.tgz", - "integrity": "sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ==" - }, - "numbro": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/numbro/-/numbro-2.1.2.tgz", - "integrity": "sha512-7w833BxZmKGLE9HI0aREtNVRVH6WTYUUlWf4qgA5gKNhPQ4F/MRZ14sc0v8eoLORprk9ZTVwYaLwj8N3Zgxwiw==", - "requires": { - "bignumber.js": "^8.0.1" - } + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.32.0.tgz", + "integrity": "sha512-rd4rYZNlF3WuoYuRIDEmbR/ga9CeuWX9U05umAvgrrZoHY4Z++cp/xwPQMvUpBB4Ag6J8KfD80G0zwCyaSxDww==" } } }, @@ -25932,13 +25943,13 @@ } }, "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "requires": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "dependencies": { @@ -25948,6 +25959,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -25979,9 +25999,9 @@ } }, "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -25989,9 +26009,9 @@ } }, "jackspeak": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", - "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.2.tgz", + "integrity": "sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg==", "dev": true, "requires": { "@isaacs/cliui": "^8.0.2", @@ -26914,9 +26934,9 @@ } }, "marked": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-5.1.1.tgz", - "integrity": "sha512-bTmmGdEINWmOMDjnPWDxGPQ4qkDLeYorpYbEtFOXzOruTwUE671q4Guiuchn4N8h/v6NGd7916kXsm3Iz4iUSg==" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-5.1.2.tgz", + "integrity": "sha512-ahRPGXJpjMjwSOlBoTMZAK7ATXkli5qCPxZ21TG44rx1KEo44bii4ekgTDQPNRQ4Kh7JMb9Ub1PVk1NxRSsorg==" }, "md5.js": { "version": "1.3.5", @@ -27763,11 +27783,11 @@ } }, "numbro": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/numbro/-/numbro-2.3.6.tgz", - "integrity": "sha512-pxpoTT3hVxQGaOA2RTzXR/muonQNd1K1HPJbWo7QOmxPwiPmoFCFfsG9XXgW3uqjyzezJ0P9IvCPDXUtJexjwg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/numbro/-/numbro-2.1.2.tgz", + "integrity": "sha512-7w833BxZmKGLE9HI0aREtNVRVH6WTYUUlWf4qgA5gKNhPQ4F/MRZ14sc0v8eoLORprk9ZTVwYaLwj8N3Zgxwiw==", "requires": { - "bignumber.js": "^8.1.1" + "bignumber.js": "^8.0.1" } }, "nx": { @@ -27872,6 +27892,15 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, "fast-glob": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", @@ -30451,9 +30480,9 @@ } }, "tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" }, "tsutils": { "version": "3.21.0", diff --git a/client/package.json b/client/package.json index e1475c8..34a629b 100644 --- a/client/package.json +++ b/client/package.json @@ -69,7 +69,6 @@ "ngx-clipboard": "^16.0.0", "ngx-json-viewer": "file:libraries/ngx-json-viewer-3.2.1.tgz", "nodejs": "0.0.0", - "numbro": "^2.1.1", "os-browserify": "0.3.0", "rxjs": "^7.8.0", "save-svg-as-png": "^1.4.17", diff --git a/client/src/app/app.d.ts b/client/src/app/app.d.ts index fa54acf..564812c 100644 --- a/client/src/app/app.d.ts +++ b/client/src/app/app.d.ts @@ -1,5 +1,5 @@ declare module 'save-svg-as-png' - +declare module 'numbro/dist/languages.min' declare interface Navigator { msSaveBlob: (blob: any, defaultName?: string) => boolean } diff --git a/client/src/app/editor/editor.component.html b/client/src/app/editor/editor.component.html index ba26faf..a5caec0 100644 --- a/client/src/app/editor/editor.component.html +++ b/client/src/app/editor/editor.component.html @@ -385,7 +385,6 @@ [class.hidden]="hotTable.hidden" [licenseKey]="hotTable.licenseKey" > - diff --git a/client/src/app/editor/editor.component.ts b/client/src/app/editor/editor.component.ts index 86d14a2..0306143 100644 --- a/client/src/app/editor/editor.component.ts +++ b/client/src/app/editor/editor.component.ts @@ -63,6 +63,8 @@ import { } from './utils/renderers.utils' import { isStringDecimal, isStringNumber } from './utils/types.utils' import { LicenceService } from '../services/licence.service' +import * as numbro from 'numbro'; +import * as languages from 'numbro/dist/languages.min'; @Component({ selector: 'app-editor', @@ -362,6 +364,9 @@ export class EditorComponent implements OnInit, AfterViewInit { private cdf: ChangeDetectorRef, private hotRegisterer: HotTableRegisterer ) { + const lang = languages[window.navigator.language] + if (lang) numbro.default.registerLanguage(languages[window.navigator.language]) + this.hotRegisterer = new HotTableRegisterer() this.parseRestrictions() diff --git a/client/src/app/shared/dc-validator/dc-validator.ts b/client/src/app/shared/dc-validator/dc-validator.ts index 7f04abf..75bc25e 100644 --- a/client/src/app/shared/dc-validator/dc-validator.ts +++ b/client/src/app/shared/dc-validator/dc-validator.ts @@ -19,6 +19,7 @@ import { mergeColsRules } from './utils/mergeColsRules' import { parseColType } from './utils/parseColType' import { dqValidate } from './validations/dq-validation' import { specialMissingNumericValidator } from './validations/hot-custom-validators' +import { applyNumericFormats } from './utils/applyNumericFormats' export class DcValidator { private rules: DcValidation[] = [] @@ -41,6 +42,7 @@ export class DcValidator { this.hotInstance = hotInstance this.rules = parseColType(sasparams.COLTYPE) this.rules = mergeColsRules(cols, this.rules, $dataFormats) + this.rules = applyNumericFormats(this.rules) this.dqrules = dqRules this.dqdata = dqData this.primaryKeys = sasparams.PK.split(' ') diff --git a/client/src/app/shared/dc-validator/utils/applyNumericFormats.ts b/client/src/app/shared/dc-validator/utils/applyNumericFormats.ts new file mode 100644 index 0000000..0446bfe --- /dev/null +++ b/client/src/app/shared/dc-validator/utils/applyNumericFormats.ts @@ -0,0 +1,23 @@ +import { DcValidation } from '../models/dc-validation.model' +import * as languages from 'numbro/dist/languages.min'; +/** + * Applying the numeric formats based on the browser locale/language + * @param rules rules to be updated + */ +export const applyNumericFormats = ( + rules: DcValidation[] +): DcValidation[] => { + const lang = languages[window.navigator.language] + + if (!lang) return rules + + for (let rule of rules) { + if (rule.type === 'numeric') rule.numericFormat = { + pattern: '0,0', + culture: window.navigator.language // use this for EUR (German), + // more cultures available on http://numbrojs.com/languages.html + } + } + + return rules +} diff --git a/client/src/environments/_eula.ts b/client/src/environments/_eula.ts index 684dea6..3d7cba2 100644 --- a/client/src/environments/_eula.ts +++ b/client/src/environments/_eula.ts @@ -18,4 +18,4 @@ In any case, you must not make any such use of this software as to develop softw UNLESS EXPRESSLY AGREED OTHERWISE, 4GL APPS PROVIDES THIS SOFTWARE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, AND IN NO EVENT AND UNDER NO LEGAL THEORY, SHALL 4GL APPS BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM USE OR INABILITY TO USE THIS SOFTWARE. -` +` \ No newline at end of file From 5bb55e648447ba871f527a7604bd916b7e26f594 Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Fri, 28 Jul 2023 20:03:58 +0200 Subject: [PATCH 07/10] style: lint --- client/src/app/editor/editor.component.ts | 7 ++++--- .../dc-validator/utils/applyNumericFormats.ts | 17 ++++++++--------- client/src/environments/_eula.ts | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/client/src/app/editor/editor.component.ts b/client/src/app/editor/editor.component.ts index 0306143..2fdc37d 100644 --- a/client/src/app/editor/editor.component.ts +++ b/client/src/app/editor/editor.component.ts @@ -63,8 +63,8 @@ import { } from './utils/renderers.utils' import { isStringDecimal, isStringNumber } from './utils/types.utils' import { LicenceService } from '../services/licence.service' -import * as numbro from 'numbro'; -import * as languages from 'numbro/dist/languages.min'; +import * as numbro from 'numbro' +import * as languages from 'numbro/dist/languages.min' @Component({ selector: 'app-editor', @@ -365,7 +365,8 @@ export class EditorComponent implements OnInit, AfterViewInit { private hotRegisterer: HotTableRegisterer ) { const lang = languages[window.navigator.language] - if (lang) numbro.default.registerLanguage(languages[window.navigator.language]) + if (lang) + numbro.default.registerLanguage(languages[window.navigator.language]) this.hotRegisterer = new HotTableRegisterer() diff --git a/client/src/app/shared/dc-validator/utils/applyNumericFormats.ts b/client/src/app/shared/dc-validator/utils/applyNumericFormats.ts index 0446bfe..f6ae769 100644 --- a/client/src/app/shared/dc-validator/utils/applyNumericFormats.ts +++ b/client/src/app/shared/dc-validator/utils/applyNumericFormats.ts @@ -1,22 +1,21 @@ import { DcValidation } from '../models/dc-validation.model' -import * as languages from 'numbro/dist/languages.min'; +import * as languages from 'numbro/dist/languages.min' /** * Applying the numeric formats based on the browser locale/language * @param rules rules to be updated */ -export const applyNumericFormats = ( - rules: DcValidation[] -): DcValidation[] => { +export const applyNumericFormats = (rules: DcValidation[]): DcValidation[] => { const lang = languages[window.navigator.language] if (!lang) return rules for (let rule of rules) { - if (rule.type === 'numeric') rule.numericFormat = { - pattern: '0,0', - culture: window.navigator.language // use this for EUR (German), - // more cultures available on http://numbrojs.com/languages.html - } + if (rule.type === 'numeric') + rule.numericFormat = { + pattern: '0,0', + culture: window.navigator.language // use this for EUR (German), + // more cultures available on http://numbrojs.com/languages.html + } } return rules diff --git a/client/src/environments/_eula.ts b/client/src/environments/_eula.ts index 3d7cba2..684dea6 100644 --- a/client/src/environments/_eula.ts +++ b/client/src/environments/_eula.ts @@ -18,4 +18,4 @@ In any case, you must not make any such use of this software as to develop softw UNLESS EXPRESSLY AGREED OTHERWISE, 4GL APPS PROVIDES THIS SOFTWARE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, AND IN NO EVENT AND UNDER NO LEGAL THEORY, SHALL 4GL APPS BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM USE OR INABILITY TO USE THIS SOFTWARE. -` \ No newline at end of file +` From 908d2761f25d91faf5be85f83caf824904993ca7 Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Mon, 31 Jul 2023 10:12:22 +0200 Subject: [PATCH 08/10] chore: addressing comments --- .../app/shared/dc-validator/utils/applyNumericFormats.ts | 8 ++++++-- .../src/app/shared/dc-validator/utils/mergeColsRules.ts | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/client/src/app/shared/dc-validator/utils/applyNumericFormats.ts b/client/src/app/shared/dc-validator/utils/applyNumericFormats.ts index f6ae769..09da1cf 100644 --- a/client/src/app/shared/dc-validator/utils/applyNumericFormats.ts +++ b/client/src/app/shared/dc-validator/utils/applyNumericFormats.ts @@ -1,8 +1,12 @@ import { DcValidation } from '../models/dc-validation.model' import * as languages from 'numbro/dist/languages.min' /** - * Applying the numeric formats based on the browser locale/language - * @param rules rules to be updated + * Applying the numeric formats based on the browser locale/language + * So that correct decimal separators are applied. + * For example european format (thousand dot, decimal comma): 1.000,00 + * + * @param rules Cell Validation rules to be updated + * Those rules are passed in the `columns` property Of handsontable settings. */ export const applyNumericFormats = (rules: DcValidation[]): DcValidation[] => { const lang = languages[window.navigator.language] diff --git a/client/src/app/shared/dc-validator/utils/mergeColsRules.ts b/client/src/app/shared/dc-validator/utils/mergeColsRules.ts index 46d5174..6c6b830 100644 --- a/client/src/app/shared/dc-validator/utils/mergeColsRules.ts +++ b/client/src/app/shared/dc-validator/utils/mergeColsRules.ts @@ -6,7 +6,8 @@ import { DcValidation } from '../models/dc-validation.model' * Merging old validation params from sasparams with cols params * @param sasparams sasparams coming from SAS * @param cols cols coming from SAS - * @param rules rules to be updated + * @param rules Cell Validation rules to be updated + * Those rules are passed in the `columns` property Of handsontable settings. * @returns */ export const mergeColsRules = ( From 34ffac39cb16dfa3884d1d50723a934df82c371a Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Mon, 31 Jul 2023 13:13:00 +0200 Subject: [PATCH 09/10] ci: PR will only run lint check --- .gitea/workflows/build.yaml | 21 +--------- .gitea/workflows/development-test.yaml | 55 +++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 21 deletions(-) diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index d09e532..c92a368 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -1,5 +1,5 @@ name: Build -run-name: Building and testing DC +run-name: Running Lint Check on: [pull_request] jobs: @@ -18,21 +18,4 @@ jobs: env: NPMRC: ${{ secrets.NPMRC}} - - run: apt-get update - - run: wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - - run: apt install -y ./google-chrome*.deb; - - run: export CHROME_BIN=/usr/bin/google-chrome - - run: npm run lint:check - # Install dependencies~ - - run: npm ci - # Audit should fail and stop the CI if critical vulnerability found - - run: npm audit --audit-level=critical - - run: | - cd ./sas - npm audit --audit-level=critical - - run: | - cd ./client - npm audit --audit-level=critical - npm test -- --no-watch --no-progress --browsers=ChromeHeadlessCI - npm run postinstall - npm run build \ No newline at end of file + - run: npm run lint:check \ No newline at end of file diff --git a/.gitea/workflows/development-test.yaml b/.gitea/workflows/development-test.yaml index 772a71e..05dcd58 100644 --- a/.gitea/workflows/development-test.yaml +++ b/.gitea/workflows/development-test.yaml @@ -6,6 +6,53 @@ on: - development jobs: + Build-production-and-ng-test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + + - name: Write .npmrc file + run: | + touch client/.npmrc + echo '${{ secrets.NPMRC}}' > client/.npmrc + + - name: Install Chrome for Angular tests + run: apt-get update + run: wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb + run: apt install -y ./google-chrome*.deb; + run: export CHROME_BIN=/usr/bin/google-chrome + + - name: Write cypress credentials + run: echo "$CYPRESS_CREDS" > ./client/cypress.env.json + shell: bash + env: + CYPRESS_CREDS: ${{ secrets.CYPRESS_CREDS }} + + - name: Install dependencies + run: npm ci + + - name: Check audit + # Audit should fail and stop the CI if critical vulnerability found + run: | + npm audit --audit-level=critical + cd ./sas + npm audit --audit-level=critical + cd ./client + npm audit --audit-level=critical + + - name: Angular Tests + run: | + npm test -- --no-watch --no-progress --browsers=ChromeHeadlessCI + + - name: Angular Production Build + run: | + npm run postinstall + npm run build + Build-and-test-development: runs-on: ubuntu-latest @@ -34,7 +81,9 @@ jobs: env: CYPRESS_CREDS: ${{ secrets.CYPRESS_CREDS }} - - run: npm ci + - name: Install dependencies + run: npm ci + # Install pm2 and prepare SASJS server - run: npm i -g pm2 - run: curl -L https://github.com/sasjs/server/releases/latest/download/linux.zip > linux.zip @@ -117,7 +166,9 @@ jobs: env: CYPRESS_CREDS: ${{ secrets.CYPRESS_CREDS }} - - run: npm ci + - name: Install dependencies + run: npm ci + # Install pm2 and prepare SASJS server - run: npm i -g pm2 - run: curl -L https://github.com/sasjs/server/releases/latest/download/linux.zip > linux.zip From 08e39c4fca570406f9aad3d907cb04596421d074 Mon Sep 17 00:00:00 2001 From: Allan Date: Thu, 24 Aug 2023 00:09:25 +0100 Subject: [PATCH 10/10] fix: re-enabling full REPLACE uploads Implemented by provision of the necessary temp tables --- sas/sasjs/macros/mpe_targetloader.sas | 7 +++++++ sas/sasjs/services/auditors/postdata.sas | 1 + 2 files changed, 8 insertions(+) diff --git a/sas/sasjs/macros/mpe_targetloader.sas b/sas/sasjs/macros/mpe_targetloader.sas index 49ee35c..2d41889 100755 --- a/sas/sasjs/macros/mpe_targetloader.sas +++ b/sas/sasjs/macros/mpe_targetloader.sas @@ -141,6 +141,13 @@ run; %mp_lockanytable(UNLOCK,lib=&lib,ds=&ds,ctl_ds=&dclib..mpe_lockanytable) %end; + %else %do; + /* is full replace so treat everything as a mod in diff screen */ + data work.outds_mod work.outds_add work.outds_del; + set work.&staging_ds; + output work.outds_mod; /* _add and _del will be empty */ + run; + %end; %end; %else %if &loadtype=UPDATE %then %do; %bitemporal_dataloader(bus_from=,bus_to= diff --git a/sas/sasjs/services/auditors/postdata.sas b/sas/sasjs/services/auditors/postdata.sas index c794afb..c2e4670 100644 --- a/sas/sasjs/services/auditors/postdata.sas +++ b/sas/sasjs/services/auditors/postdata.sas @@ -597,6 +597,7 @@ run; %if &LOADTYPE=REPLACE %then %do; data work.outds_add; run; data work.outds_mod; run; + data work.outds_del; run; %end; libname approve "&mpelocapprovals/&TABLE"; data; set &libds;stop;run;