From eb18e7a3d1510ab11927c7018eb43cac7dc66625 Mon Sep 17 00:00:00 2001 From: ghaliouss Date: Fri, 18 Apr 2025 15:53:03 +0200 Subject: [PATCH 1/4] refactoring + add NOTICE+ update README + bugfix --- LICENSE.md | 3 +- NOTICE.md | 14 + README.md | 8 +- package-lock.json | 1833 +++++++---------- src/app/item/item.component.ts | 9 +- src/app/lib/util.ts | 19 +- .../answer-value-set.component.ts | 13 +- .../launch-context.component.ts | 7 +- ...-value-set-for-answer-options.component.ts | 34 +- src/app/services/fetch.service.ts | 8 +- 10 files changed, 765 insertions(+), 1183 deletions(-) create mode 100644 NOTICE.md diff --git a/LICENSE.md b/LICENSE.md index 030a8d0..aa69173 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -3,8 +3,7 @@ Licensing and Copyright Notice and Terms of Use **Owner Notice**: The AP-HP FormBuilder allows building (creating and editing) forms in FHIR - R4 format (Questionnaire). -It is based on the NLM FormBuilder -version 9.1.6, an open-source project developed by the +It is based on the NLM FormBuilder, an open-source project developed by the Lister Hill National Center for Biomedical Communication (LHNCBC). This software, including any associated website services or downloadable source code, was developed by AP-HP (Assistance Publique - Hôpitaux de Paris), diff --git a/NOTICE.md b/NOTICE.md new file mode 100644 index 0000000..3cd654c --- /dev/null +++ b/NOTICE.md @@ -0,0 +1,14 @@ +Project: AP-HP FormBuilder + +Author: AP-HP + +Copyright (c) 2025 AP-HP + +This project is licensed under the [BSD open-source license](https://opensource.org/license/bsd-3-clause). See [LICENSE](LICENSE.md) for details. + +Third-party components used in this project: +- The AP-HP FormBuilder is based on the NLM FormBuilder, an open-source project developed by the + Lister Hill National Center for Biomedical Communication (LHNCBC). + +FHIR® is the registered trademark of HL7 and is used with the permission of HL7. +Use of the FHIR trademark does not constitute endorsement of the contents of this repository by HL7 diff --git a/README.md b/README.md index c84b77e..edd9cc7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## Installation +## 🛠 Installation ### Quick Start (For Non-Technical Users) @@ -16,7 +16,7 @@ To configure your backend FHIR server, edit the hapiServerUrl parameter in the f By default, it is set to the public HAPI FHIR server: https://hapi.fhir.org/baseR4 -#### Running the application +#### 🚀 Running the application ##### With docker @@ -149,3 +149,7 @@ The configuration will be dynamically loaded at runtime using an environment loa This file is mounted into the container from the Kubernetes ConfigMap at the path ./config/config.json during [the application startup](src/main.ts) This strategy enables maintaining a single Docker image for multiple environments while adapting the application's behavior based on the environment parameters. + +## 📜 License + +This project is licensed under the [LICENSE](LICENSE.md) . diff --git a/package-lock.json b/package-lock.json index 49b5afb..a5223dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -227,25 +227,25 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "17.3.11", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.11.tgz", - "integrity": "sha512-lHX5V2dSts328yvo/9E2u9QMGcvJhbEKKDDp9dBecwvIG9s+4lTOJgi9DPUE7W+AtmPcmbbhwC2JRQ/SLQhAoA==", + "version": "17.3.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.15.tgz", + "integrity": "sha512-RM3zQb0SQmW7lrGHBA18EC8DhbKZViSiUZxaus5iZahbgRP3kpMA+Mbn3JlOyfojMO9GZ27zx4LoF/FYo1bDTw==", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1703.11", - "@angular-devkit/build-webpack": "0.1703.11", - "@angular-devkit/core": "17.3.11", - "@babel/core": "7.24.0", - "@babel/generator": "7.23.6", - "@babel/helper-annotate-as-pure": "7.22.5", - "@babel/helper-split-export-declaration": "7.22.6", - "@babel/plugin-transform-async-generator-functions": "7.23.9", - "@babel/plugin-transform-async-to-generator": "7.23.3", - "@babel/plugin-transform-runtime": "7.24.0", - "@babel/preset-env": "7.24.0", - "@babel/runtime": "7.24.0", + "@angular-devkit/architect": "0.1703.15", + "@angular-devkit/build-webpack": "0.1703.15", + "@angular-devkit/core": "17.3.15", + "@babel/core": "7.26.10", + "@babel/generator": "7.26.10", + "@babel/helper-annotate-as-pure": "7.25.9", + "@babel/helper-split-export-declaration": "7.24.7", + "@babel/plugin-transform-async-generator-functions": "7.26.8", + "@babel/plugin-transform-async-to-generator": "7.25.9", + "@babel/plugin-transform-runtime": "7.26.10", + "@babel/preset-env": "7.26.9", + "@babel/runtime": "7.26.10", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "17.3.11", + "@ngtools/webpack": "17.3.15", "@vitejs/plugin-basic-ssl": "1.1.0", "ansi-colors": "4.1.3", "autoprefixer": "10.4.18", @@ -287,7 +287,7 @@ "tree-kill": "1.2.2", "tslib": "2.6.2", "undici": "6.11.1", - "vite": "5.1.8", + "vite": "5.4.16", "watchpack": "2.4.0", "webpack": "5.94.0", "webpack-dev-middleware": "6.1.2", @@ -355,11 +355,11 @@ } }, "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/architect": { - "version": "0.1703.11", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.11.tgz", - "integrity": "sha512-YNasVZk4rYdcM6M+KRH8PUBhVyJfqzUYLpO98GgRokW+taIDgifckSlmfDZzQRbw45qiwei1IKCLqcpC8nM5Tw==", + "version": "0.1703.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.15.tgz", + "integrity": "sha512-7N7wLi/zdqTcWYMfLox2pL9Vqclve8dnNulVmuI/An8Wr35OSu2DhiHcQGR9fcLatyuMTFy/yXiqNr1l05IVkw==", "dependencies": { - "@angular-devkit/core": "17.3.11", + "@angular-devkit/core": "17.3.15", "rxjs": "7.8.1" }, "engines": { @@ -369,9 +369,9 @@ } }, "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/core": { - "version": "17.3.11", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.11.tgz", - "integrity": "sha512-vTNDYNsLIWpYk2I969LMQFH29GTsLzxNk/0cLw5q56ARF0v5sIWfHYwGTS88jdDqIpuuettcSczbxeA7EuAmqQ==", + "version": "17.3.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.15.tgz", + "integrity": "sha512-0VUf7QR/Xv7x/YafATcI3WzSYgKbos8oF8IiBR3OFGhwpEB8XT4rUDcdT9fN11j7ZidTqJlot7DPpSIZzt3j2g==", "dependencies": { "ajv": "8.12.0", "ajv-formats": "2.1.1", @@ -435,11 +435,11 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1703.11", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.11.tgz", - "integrity": "sha512-qbCiiHuoVkD7CtLyWoRi/Vzz6nrEztpF5XIyWUcQu67An1VlxbMTE4yoSQiURjCQMnB/JvS1GPVed7wOq3SJ/w==", + "version": "0.1703.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.15.tgz", + "integrity": "sha512-BpqybfdfeLgW9km7CrnuwMVuuShCwNF0mUEUlv49eb2m/S59beMbER5R46PcHXaJSjc5haIGaipDn/jw+27a7Q==", "dependencies": { - "@angular-devkit/architect": "0.1703.11", + "@angular-devkit/architect": "0.1703.15", "rxjs": "7.8.1" }, "engines": { @@ -453,11 +453,11 @@ } }, "node_modules/@angular-devkit/build-webpack/node_modules/@angular-devkit/architect": { - "version": "0.1703.11", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.11.tgz", - "integrity": "sha512-YNasVZk4rYdcM6M+KRH8PUBhVyJfqzUYLpO98GgRokW+taIDgifckSlmfDZzQRbw45qiwei1IKCLqcpC8nM5Tw==", + "version": "0.1703.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.15.tgz", + "integrity": "sha512-7N7wLi/zdqTcWYMfLox2pL9Vqclve8dnNulVmuI/An8Wr35OSu2DhiHcQGR9fcLatyuMTFy/yXiqNr1l05IVkw==", "dependencies": { - "@angular-devkit/core": "17.3.11", + "@angular-devkit/core": "17.3.15", "rxjs": "7.8.1" }, "engines": { @@ -467,9 +467,9 @@ } }, "node_modules/@angular-devkit/build-webpack/node_modules/@angular-devkit/core": { - "version": "17.3.11", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.11.tgz", - "integrity": "sha512-vTNDYNsLIWpYk2I969LMQFH29GTsLzxNk/0cLw5q56ARF0v5sIWfHYwGTS88jdDqIpuuettcSczbxeA7EuAmqQ==", + "version": "17.3.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.15.tgz", + "integrity": "sha512-0VUf7QR/Xv7x/YafATcI3WzSYgKbos8oF8IiBR3OFGhwpEB8XT4rUDcdT9fN11j7ZidTqJlot7DPpSIZzt3j2g==", "dependencies": { "ajv": "8.12.0", "ajv-formats": "2.1.1", @@ -1079,28 +1079,28 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", - "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", - "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.0", - "@babel/parser": "^7.24.0", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -1129,48 +1129,37 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz", + "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==", "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.26.10", + "@babel/types": "^7.26.10", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", - "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", + "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", "dependencies": { - "@babel/compat-data": "^7.25.9", + "@babel/compat-data": "^7.26.8", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -1208,17 +1197,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", - "dependencies": { - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -1228,12 +1206,12 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", - "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.0.tgz", + "integrity": "sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "regexpu-core": "^5.3.1", + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "engines": { @@ -1243,17 +1221,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -1263,9 +1230,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", - "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", + "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -1277,17 +1244,6 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", @@ -1340,9 +1296,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "engines": { "node": ">=6.9.0" } @@ -1363,17 +1319,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", - "dependencies": { - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-replace-supers": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", @@ -1390,18 +1335,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", @@ -1415,11 +1348,11 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1463,12 +1396,12 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" @@ -1491,11 +1424,11 @@ } }, "node_modules/@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", "dependencies": { - "@babel/types": "^7.26.3" + "@babel/types": "^7.27.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -1504,12 +1437,41 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", - "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1519,13 +1481,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", - "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1535,12 +1497,12 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", - "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/traverse": "^7.25.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1650,42 +1612,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-decorators": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", @@ -1706,6 +1632,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1729,17 +1657,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-flow": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz", @@ -1757,11 +1674,11 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz", - "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1771,11 +1688,11 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", - "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1784,28 +1701,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", @@ -1822,54 +1717,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1881,6 +1734,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1888,34 +1743,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-typescript": { "version": "7.25.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", @@ -1948,11 +1775,11 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", - "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1962,14 +1789,13 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", - "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", + "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.26.8" }, "engines": { "node": ">=6.9.0" @@ -1979,13 +1805,13 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1995,11 +1821,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", - "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -2009,11 +1835,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", - "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.0.tgz", + "integrity": "sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -2023,12 +1849,12 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", - "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.4", - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2038,13 +1864,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", - "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2054,15 +1879,15 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", - "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-replace-supers": "^7.25.0", - "@babel/traverse": "^7.25.4", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", "globals": "^11.1.0" }, "engines": { @@ -2072,24 +1897,27 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", "dependencies": { - "@babel/types": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", - "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/template": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2098,12 +1926,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", - "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2112,13 +1941,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", - "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2127,27 +1955,27 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", - "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", - "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2157,12 +1985,11 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", - "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2172,12 +1999,11 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", - "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2204,12 +2030,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", - "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", + "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2219,13 +2045,13 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", - "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", "dependencies": { - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/traverse": "^7.25.1" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2235,12 +2061,11 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", - "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2250,11 +2075,11 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", - "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2264,12 +2089,11 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", - "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2279,11 +2103,11 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", - "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2293,12 +2117,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", - "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2308,13 +2132,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", - "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dependencies": { - "@babel/helper-module-transforms": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-simple-access": "^7.24.7" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2324,14 +2147,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", - "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", "dependencies": { - "@babel/helper-module-transforms": "^7.25.0", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.0" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2341,12 +2164,12 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", - "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2356,12 +2179,12 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", - "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2371,11 +2194,11 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", - "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2385,12 +2208,11 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", - "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "version": "7.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -2400,12 +2222,11 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", - "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2415,14 +2236,13 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", - "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", "dependencies": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2432,12 +2252,12 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", - "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2447,12 +2267,11 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", - "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2462,13 +2281,12 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", - "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2478,11 +2296,11 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", - "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2492,12 +2310,12 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", - "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.4", - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2507,14 +2325,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", - "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2523,23 +2340,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-private-property-in-object/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", - "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2632,19 +2438,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", - "optional": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-react-pure-annotations": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", @@ -2662,40 +2455,42 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-pure-annotations/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", - "optional": true, - "peer": true, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.0.tgz", + "integrity": "sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==", "dependencies": { - "@babel/types": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5", + "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", - "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "regenerator-transform": "^0.15.2" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", - "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2705,15 +2500,15 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.0.tgz", - "integrity": "sha512-zc0GA5IitLKJrSfXlXmp8KDqLrnGECK7YRfQBmEKg1NmBOQ7e+KuclBEKJgzifQeUYLdNiAw4B4bjyvzWVLiSA==", - "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0", - "babel-plugin-polyfill-corejs2": "^0.4.8", - "babel-plugin-polyfill-corejs3": "^0.9.0", - "babel-plugin-polyfill-regenerator": "^0.5.5", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz", + "integrity": "sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, "engines": { @@ -2732,11 +2527,11 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", - "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2746,12 +2541,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", - "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2761,11 +2556,11 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", - "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2775,11 +2570,11 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", - "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", + "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -2789,11 +2584,11 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", - "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz", + "integrity": "sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -2822,25 +2617,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-typescript/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", - "optional": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", - "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2850,12 +2632,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", - "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2865,12 +2647,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", - "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2880,12 +2662,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", - "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.2", - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2895,89 +2677,78 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", - "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", + "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/compat-data": "^7.26.8", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.9", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.4", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.4", - "@babel/plugin-transform-classes": "^7.23.8", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.4", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/plugin-transform-for-of": "^7.23.6", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.4", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.9", - "@babel/plugin-transform-modules-umd": "^7.23.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", - "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.24.0", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.4", - "@babel/plugin-transform-optional-chaining": "^7.23.4", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.4", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.26.8", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.26.5", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.26.3", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.26.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.26.8", + "@babel/plugin-transform-typeof-symbol": "^7.26.7", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.8", - "babel-plugin-polyfill-corejs3": "^0.9.0", - "babel-plugin-polyfill-regenerator": "^0.5.5", - "core-js-compat": "^3.31.0", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.40.0", "semver": "^6.3.1" }, "engines": { @@ -3165,15 +2936,10 @@ "node": ">=6" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" - }, "node_modules/@babel/runtime": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", - "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz", + "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -3182,28 +2948,28 @@ } }, "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", - "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.3", - "@babel/parser": "^7.26.3", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.3", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -3212,12 +2978,12 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", "dependencies": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -3226,21 +2992,10 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" @@ -4440,9 +4195,9 @@ } }, "node_modules/@expo/cli/node_modules/undici": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", - "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", + "version": "6.21.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.2.tgz", + "integrity": "sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==", "optional": true, "peer": true, "engines": { @@ -7621,9 +7376,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "17.3.11", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.11.tgz", - "integrity": "sha512-SfTCbplt4y6ak5cf2IfqdoVOsnoNdh/j6Vu+wb8WWABKwZ5yfr2S/Gk6ithSKcdIZhAF8DNBOoyk1EJuf8Xkfg==", + "version": "17.3.15", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.15.tgz", + "integrity": "sha512-6WVRr9vIndTLvrU9ygtvI/QpBO3/DazSrXi2TUZ27Tku5csLqHqGHSXrwd0a5zumKY8A0yK54vOx3vTqGj/YnQ==", "engines": { "node": "^18.13.0 || >=20.9.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", @@ -9651,168 +9406,6 @@ "@babel/core": "*" } }, - "node_modules/@react-native/babel-preset/node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", - "optional": true, - "peer": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@react-native/babel-preset/node_modules/@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", - "optional": true, - "peer": true, - "dependencies": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@react-native/babel-preset/node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", - "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@react-native/babel-preset/node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", - "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@react-native/babel-preset/node_modules/@babel/plugin-transform-runtime": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz", - "integrity": "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@react-native/babel-preset/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", - "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2", - "core-js-compat": "^3.38.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@react-native/babel-preset/node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", - "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.3" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@react-native/babel-preset/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "optional": true, - "peer": true - }, - "node_modules/@react-native/babel-preset/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "optional": true, - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@react-native/babel-preset/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "optional": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@react-native/codegen": { "version": "0.76.5", "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.76.5.tgz", @@ -10379,25 +9972,6 @@ "@babel/core": "*" } }, - "node_modules/@react-native/metro-babel-transformer/node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz", - "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-remap-async-to-generator": "^7.25.0", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/traverse": "^7.25.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/babel-plugin-codegen": { "version": "0.75.2", "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.75.2.tgz", @@ -11151,9 +10725,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.2.tgz", - "integrity": "sha512-vluaspfvWEtE4vcSDlKRNer52DvOGrB2xv6diXy6UKyKW0lqZiWHGNApSyxOv+8DE5Z27IzVvE7hNkxg7EXIcg==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", + "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -11198,9 +10772,9 @@ "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" }, "node_modules/@types/http-proxy": { - "version": "1.17.15", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", - "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", + "version": "1.17.16", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", + "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", "dependencies": { "@types/node": "*" } @@ -11290,9 +10864,9 @@ "integrity": "sha512-HuG5/hRHs9PxuXXlNFXPy7mHMnBD6Z4riED2SFGwjs+RcszJUkxLgYHQpoiDpYrhLv7sHk9WDyswybD6aNYkig==" }, "node_modules/@types/qs": { - "version": "6.9.17", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz", - "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==" + "version": "6.9.18", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==" }, "node_modules/@types/range-parser": { "version": "1.2.7", @@ -11373,9 +10947,9 @@ "peer": true }, "node_modules/@types/ws": { - "version": "8.5.13", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", - "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dependencies": { "@types/node": "*" } @@ -12706,9 +12280,9 @@ "dev": true }, "node_modules/axios": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", "dev": true, "dependencies": { "follow-redirects": "^1.15.6", @@ -12824,53 +12398,23 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", - "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0", - "core-js-compat": "^3.34.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", - "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", - "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator/node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", - "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", + "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "@babel/helper-define-polyfill-provider": "^0.6.4" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -13189,9 +12733,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", - "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "funding": [ { "type": "opencollective", @@ -14133,11 +13677,11 @@ } }, "node_modules/core-js-compat": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", - "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", + "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", "dependencies": { - "browserslist": "^4.23.3" + "browserslist": "^4.24.4" }, "funding": { "type": "opencollective", @@ -17856,9 +17400,9 @@ } }, "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", "funding": [ { "type": "github", @@ -17929,9 +17473,9 @@ } }, "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==" }, "node_modules/http-proxy": { "version": "1.18.1", @@ -20077,14 +19621,14 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-buffer": { @@ -20542,9 +20086,9 @@ } }, "node_modules/launch-editor": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz", - "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", + "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==", "dependencies": { "picocolors": "^1.0.0", "shell-quote": "^1.8.1" @@ -21816,19 +21360,6 @@ "node": ">=18" } }, - "node_modules/metro-runtime/node_modules/@babel/runtime": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", - "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", - "optional": true, - "peer": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/metro-source-map": { "version": "0.80.12", "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.12.tgz", @@ -22016,9 +21547,9 @@ } }, "node_modules/metro/node_modules/image-size": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", - "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", "optional": true, "peer": true, "dependencies": { @@ -24959,9 +24490,9 @@ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dependencies": { "regenerate": "^1.4.2" }, @@ -25005,14 +24536,14 @@ } }, "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dependencies": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -25020,23 +24551,31 @@ "node": ">=4" } }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==" + }, "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dependencies": { - "jsesc": "~0.5.0" + "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "bin": { "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" } }, "node_modules/remove-trailing-slash": { @@ -27810,9 +27349,9 @@ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "engines": { "node": ">=4" } @@ -27830,9 +27369,9 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "engines": { "node": ">=4" } @@ -28043,13 +27582,13 @@ } }, "node_modules/vite": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.8.tgz", - "integrity": "sha512-mB8ToUuSmzODSpENgvpFk2fTiU/YQ1tmcVJJ4WZbq4fPdGJkFNVcmVL5k7iDug6xzWjjuGDKAuSievIsD6H7Xw==", + "version": "5.4.16", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.16.tgz", + "integrity": "sha512-Y5gnfp4NemVfgOTDQAunSD4346fal44L9mszGGY/e+qxsRT5y1sMlS/8tiQ8AFAp+MFgYNSINdfEchJiPm41vQ==", "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" @@ -28068,6 +27607,7 @@ "less": "*", "lightningcss": "^1.21.0", "sass": "*", + "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" @@ -28085,6 +27625,9 @@ "sass": { "optional": true }, + "sass-embedded": { + "optional": true + }, "stylus": { "optional": true }, @@ -28097,9 +27640,9 @@ } }, "node_modules/vite/node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ "ppc64" ], @@ -28112,9 +27655,9 @@ } }, "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], @@ -28127,9 +27670,9 @@ } }, "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], @@ -28142,9 +27685,9 @@ } }, "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], @@ -28157,9 +27700,9 @@ } }, "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], @@ -28172,9 +27715,9 @@ } }, "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], @@ -28187,9 +27730,9 @@ } }, "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], @@ -28202,9 +27745,9 @@ } }, "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], @@ -28217,9 +27760,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], @@ -28232,9 +27775,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], @@ -28247,9 +27790,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], @@ -28262,9 +27805,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], @@ -28277,9 +27820,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], @@ -28292,9 +27835,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], @@ -28307,9 +27850,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], @@ -28322,9 +27865,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], @@ -28337,9 +27880,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], @@ -28352,9 +27895,9 @@ } }, "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], @@ -28367,9 +27910,9 @@ } }, "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], @@ -28382,9 +27925,9 @@ } }, "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], @@ -28397,9 +27940,9 @@ } }, "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], @@ -28412,9 +27955,9 @@ } }, "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], @@ -28427,9 +27970,9 @@ } }, "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], @@ -28442,9 +27985,9 @@ } }, "node_modules/vite/node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -28453,29 +27996,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, "node_modules/vite/node_modules/rollup": { diff --git a/src/app/item/item.component.ts b/src/app/item/item.component.ts index 953ce60..ed383a1 100644 --- a/src/app/item/item.component.ts +++ b/src/app/item/item.component.ts @@ -253,7 +253,7 @@ export class ItemComponent implements AfterViewInit, OnChanges, OnDestroy { this.treeComponent.treeModel.update(); this.toggleTreeExpansion(); }); - // this.formService.formChanged$.subscribe(() => this.handleTreeExpansion()); + // this.formService.formChanged$.subscribe(() => this.handleTreeExpansion()); } ngOnChanges(changes: SimpleChanges) { @@ -568,7 +568,7 @@ export class ItemComponent implements AfterViewInit, OnChanges, OnDestroy { newItem.text = 'Copy of ' + newItem.text; traverse(newItem).forEach(node => { if (node?.linkId) { - node.linkId = this.createLinkId(); + node.linkId = this.createLinkId() + (node.linkId.includes('_intention') ? '_intention' : ''); } }); if (position === 'CHILD') { @@ -589,12 +589,9 @@ export class ItemComponent implements AfterViewInit, OnChanges, OnDestroy { * @returns A randomized number converted to string. */ private createLinkId() { - const array = new Uint8Array(6); // Generate a 48-bit value (6 bytes) - window.crypto.getRandomValues(array); - return Array.from(array, byte => byte.toString(16).padStart(2, '0')).join(''); + return Math.floor(100000000000 + Math.random() * 900000000000).toString(); } - private addNewItem(position: 'AFTER' | 'BEFORE' | 'CHILD', newItem, targetNode: ITreeNode) { switch (position) { diff --git a/src/app/lib/util.ts b/src/app/lib/util.ts index c797dc4..55c3a8b 100644 --- a/src/app/lib/util.ts +++ b/src/app/lib/util.ts @@ -352,17 +352,14 @@ export class Util { } static setIdentifierType(node) { - if (node?.__$type?.length > 0) { - const split = node.__$type.split('-') - if (split && split.length > 1) { - node.type = { - coding: [{ - system: Util.CODE_SYSTEM_IDENTIFIER_TYPE_URL, - code: split[0], - display: split[1] - }] - }; - } + if (node?.__$type) { + node.type = { + coding: [{ + system: node?.__$type.system, + code: node?.__$type.code, + display: node?.__$type.display + }] + }; } } diff --git a/src/app/lib/widgets/answer-value-set/answer-value-set.component.ts b/src/app/lib/widgets/answer-value-set/answer-value-set.component.ts index ede9448..e525873 100644 --- a/src/app/lib/widgets/answer-value-set/answer-value-set.component.ts +++ b/src/app/lib/widgets/answer-value-set/answer-value-set.component.ts @@ -57,8 +57,8 @@ export class AnswerValueSetComponent extends StringComponent implements OnInit, this.updateUI(this.formProperty.value); }); this.subscriptions.push(sub); - this.formProperty.valueChanges.subscribe(() => { - this.setDefaultValue(); + this.formProperty.valueChanges.subscribe(value => { + this.setDefaultValue(value); }) } @@ -235,10 +235,11 @@ export class AnswerValueSetComponent extends StringComponent implements OnInit, } - private setDefaultValue() { - if (this.formProperty.value === '') { - this.formProperty.setValue('TO DO', true) + private setDefaultValue(value) { + if (value === '') { + this.formProperty.setValue('TO DO', true); + this.formProperty.searchProperty('__$initialExpressionYesNo').setValue('no', false); } - this.formProperty.searchProperty('__$initialExpressionYesNo').setValue('value', false); + } } diff --git a/src/app/lib/widgets/launch-context/launch-context.component.ts b/src/app/lib/widgets/launch-context/launch-context.component.ts index d3e8245..4cc821c 100644 --- a/src/app/lib/widgets/launch-context/launch-context.component.ts +++ b/src/app/lib/widgets/launch-context/launch-context.component.ts @@ -117,8 +117,11 @@ class SingletonValueSetMap { public static async getInstance(fetchService: FetchService, valueSetUrl: string): Promise> { if (this.instance === null) { this.instance = new Map(); - const result = await this.getValueSetByUrl(fetchService, valueSetUrl).toPromise(); - result.forEach(vc => this.instance.set(vc?.valueCoding?.code, vc.valueCoding)) + const result = await this.getValueSetByUrl(fetchService, valueSetUrl).toPromise().catch(error => { + console.error("Error fetching ValueSet:", error); + return null; + }); + result?.forEach(vc => this.instance.set(vc?.valueCoding?.code, vc.valueCoding)) } return this.instance; } diff --git a/src/app/lib/widgets/select-value-set-for-answer-options/select-value-set-for-answer-options.component.ts b/src/app/lib/widgets/select-value-set-for-answer-options/select-value-set-for-answer-options.component.ts index 2b40a5b..d320aad 100644 --- a/src/app/lib/widgets/select-value-set-for-answer-options/select-value-set-for-answer-options.component.ts +++ b/src/app/lib/widgets/select-value-set-for-answer-options/select-value-set-for-answer-options.component.ts @@ -41,6 +41,24 @@ export class SelectValueSetForAnswerOptionsComponent implements OnInit { ngOnInit(): void { this.setSelectValuesFromValueSet(this.valueSetUrl); this.updateIdentifierItem(); + if (this.selectProperty?.schema?.description === 'transformation_type') { + this.selectProperty.errorsChanges.subscribe((errors) => { + this.errors = null; + if (errors?.length) { + // For some reason, errors have duplicates. Remove them. + const errorsObj = {}; + errors.reduce((acc, error) => { + if (!acc[error.code]) { + acc[error.code] = error; + } + return acc; + }, errorsObj); + this.errors = Object.values(errorsObj).filter((e: any) => e.code === 'PATTERN').map((e: any) => { + return {code: e.code, message: 'This field is required if using mapping Orbis DL form extension'}; + }); + } + }); + } } setSelectValuesFromValueSet(valueSetUrl: string) { @@ -62,7 +80,10 @@ export class SelectValueSetForAnswerOptionsComponent implements OnInit { let cachedValue = this.codeSystemCache.get(codeSystemUrl); if (!cachedValue) { - cachedValue = await this.fetchService.getCodeSystemByUrl(codeSystemUrl).toPromise(); + cachedValue = await this.fetchService.getCodeSystemByUrl(codeSystemUrl).toPromise().catch(error => { + console.error("Error fetching CodeSystem:", error); + return null; + }); if (cachedValue) { this.codeSystemCache.set(codeSystemUrl, cachedValue); } @@ -84,12 +105,12 @@ export class SelectValueSetForAnswerOptionsComponent implements OnInit { if ( !this.selectProperty || !this.selectProperty.__canonicalPathNotation.includes('identifier') || - !this.selectProperty.__canonicalPathNotation.includes('system') - ) { + !this.selectProperty.__canonicalPathNotation.includes('system')) { return; } this.startSpinner(); + const type = this.selectProperty.searchProperty('__$type'); type.setValue(null, false); @@ -100,7 +121,12 @@ export class SelectValueSetForAnswerOptionsComponent implements OnInit { if (propertyType) { const typeCodeSystem = await this.getCodeSystem(Util.CODE_SYSTEM_IDENTIFIER_TYPE_URL, propertyType.valueCoding?.code); if (typeCodeSystem && type) { - type.setValue(`${typeCodeSystem.code}-${typeCodeSystem.display}`, false); + const valueType = { + system: Util.CODE_SYSTEM_IDENTIFIER_TYPE_URL, + code: typeCodeSystem.code, + display: typeCodeSystem.display + } + type.setValue(valueType, false); } } this.stopSpinner(); diff --git a/src/app/services/fetch.service.ts b/src/app/services/fetch.service.ts index e9c6d5f..ecfffe7 100644 --- a/src/app/services/fetch.service.ts +++ b/src/app/services/fetch.service.ts @@ -271,7 +271,7 @@ export class FetchService { } getValueSetByUrl(url: string): Observable { - return this.callGetWithRetry(`${environment.hapiServerUrl}/ValueSet/$expand?url=${url}`, 0, 1); + return this.callGetWithRetry(`${environment.hapiServerUrl}/ValueSet/$expand?url=${url}`, 8, 5); } callGetWithRetry(url: string, nbRetries, delayInSeconds) { @@ -296,13 +296,12 @@ export class FetchService { ), catchError((error) => { console.error('Error fetching:', error); - return throwError(() => error); + return of(null); }) ); } getCodeSystemByUrl(url: string): Observable { - return this.http.get(`${environment.hapiServerUrl}/CodeSystem?url=${url}`); } @@ -318,8 +317,7 @@ export class FetchService { } else { // The backend returned an unsuccessful response code. // The response body may contain clues as to what went wrong. - console.error( - `${FetchService.snomedCodeSystemsUrl} returned code ${error.status}, body was: `, error.error); + console.error(`${FetchService.snomedCodeSystemsUrl} returned code ${error.status}, body was: `, error.error); } // Return an observable with a user-facing error message. return throwError(() => error.error); From c1ebaa97e9d53d132d1047dfa921005620480fed Mon Sep 17 00:00:00 2001 From: ghaliouss Date: Wed, 4 Jun 2025 11:00:28 +0200 Subject: [PATCH 2/4] merge release 1.16.0 --- cypress/e2e/form-level/form-level.cy.js | 184 +-- cypress/e2e/item-level/item-level.cy.js | 743 ++--------- cypress/support/commands.js | 38 +- cypress/support/cypress-util.js | 58 +- src/app/app.module.ts | 8 +- src/app/base-page/base-page.component.css | 17 + src/app/base-page/base-page.component.html | 142 +-- src/app/base-page/base-page.component.ts | 217 ++-- src/app/footer/about-dialog.html | 9 - src/app/footer/footer.component.scss | 2 - src/app/footer/footer.component.ts | 29 +- src/app/item/item.component.html | 71 +- src/app/item/item.component.ts | 4 +- src/app/lib/lforms-widget-registry.ts | 2 + .../fhir-search-page.component.html | 102 ++ .../fhir-search-page.component.ts | 245 ++++ .../widgets/textarea/textarea.component.css | 0 .../widgets/textarea/textarea.component.html | 28 + .../textarea/textarea.component.spec.ts | 23 + .../widgets/textarea/textarea.component.ts | 12 + .../questionnaire-create-dlg.component.html | 71 ++ .../questionnaire-create-dlg.component.scss | 15 + .../questionnaire-create-dlg.component.ts | 161 +++ src/app/services/fetch.service.ts | 52 +- src/app/services/fhir.service.ts | 14 +- src/assets/fl-fields-layout.json | 5 +- src/assets/ngx-fl.schema.json | 89 +- src/assets/ngx-item.schema.json | 1110 +++++++++++++---- 28 files changed, 2111 insertions(+), 1340 deletions(-) delete mode 100644 src/app/footer/about-dialog.html create mode 100644 src/app/lib/widgets/fhir-search-page/fhir-search-page.component.html create mode 100644 src/app/lib/widgets/fhir-search-page/fhir-search-page.component.ts create mode 100644 src/app/lib/widgets/textarea/textarea.component.css create mode 100644 src/app/lib/widgets/textarea/textarea.component.html create mode 100644 src/app/lib/widgets/textarea/textarea.component.spec.ts create mode 100644 src/app/lib/widgets/textarea/textarea.component.ts create mode 100644 src/app/questionnaire-create-dialog/questionnaire-create-dlg.component.html create mode 100644 src/app/questionnaire-create-dialog/questionnaire-create-dlg.component.scss create mode 100644 src/app/questionnaire-create-dialog/questionnaire-create-dlg.component.ts diff --git a/cypress/e2e/form-level/form-level.cy.js b/cypress/e2e/form-level/form-level.cy.js index 58791b9..0264f59 100644 --- a/cypress/e2e/form-level/form-level.cy.js +++ b/cypress/e2e/form-level/form-level.cy.js @@ -3,60 +3,6 @@ import {CypressUtil} from '../../support/cypress-util' import {ExtensionDefs} from "../../../src/app/lib/extension-defs"; -xdescribe('Home page accept Terms of Use notices', () => { - before(() => { - cy.clearSession(); - }); - beforeEach(CypressUtil.mockSnomedEditionsAndHapiFhirRessources); - afterEach(() => { - cy.clearSession(); - }); - - it('should make SNOMED CT available after accepting SNOMED notice', () => { - cy.goToHomePage(); - cy.contains('lfb-loinc-notice button', 'Accept').as('accept').should('not.be.enabled'); - cy.get('#acceptLoinc').as('loinc').click(); - cy.get('@loinc').should('be.checked'); - cy.get('@accept').should('be.enabled'); - cy.get('#useSnomed').click(); - cy.get('@accept').should('not.be.enabled'); - cy.get('#acceptSnomed').as('snomed').click(); - cy.get('@snomed').should('be.checked'); - cy.get('@accept').should('be.enabled'); - cy.get('@loinc').click(); - cy.get('@accept').should('not.be.enabled'); - cy.get('@loinc').click(); - cy.get('@accept').should('be.enabled').click(); - - cy.loincAccepted().should('equal', 'true'); - cy.snomedAccepted().should('equal', 'true'); - - cy.get('input[type="radio"][value="scratch"]').click(); - cy.get('button').contains('Continue').click(); - cy.get('button').contains('Create questions').click(); - cy.selectDataType('choice'); - cy.get('[id^="__\\$answerOptionMethods_answer-option"]').should('be.checked'); - cy.get('[id^="__\\$answerOptionMethods_value-set"]') - .should('be.visible').and('not.be.checked'); - cy.get('[id^="__\\$answerOptionMethods_snomed-value-set"]') - .should('be.visible').and('not.be.checked'); - }); - - xit('should not find SNOMED CT functionality after accepting only LOINC terms of use.', () => { - cy.goToHomePage(); - cy.acceptLoincOnly(); - cy.loincAccepted().should('equal', 'true'); - cy.snomedAccepted().should('equal', 'false'); - cy.get('input[type="radio"][value="scratch"]').click(); - cy.get('button').contains('Continue').click(); - cy.get('button').contains('Create questions').click(); - cy.selectDataType('choice'); - cy.get('[id^="__\\$answerOptionMethods_answer-option"]').should('be.checked'); - cy.get('[id^="__\\$answerOptionMethods_value-set"]').should('be.visible').and('not.be.checked'); - cy.get('[id^="__\\$answerOptionMethods_snomed-value-set"]').should('not.exist'); - }); -}); - describe('Home page', () => { beforeEach(() => { // Cypress starts out with a blank slate for each test @@ -70,62 +16,33 @@ describe('Home page', () => { }); it('display home page title', () => { - cy.get('.lead').first().should('have.text', 'How do you want to create your form?') + cy.get('.modal-title').first().should('have.text', 'Search your form') }); - xit('should display version info', () => { - cy.get('.version-info').find('a').should('have.attr', 'href', - 'https://github.com/lhncbc/aphp-formbuilder/blob/master/CHANGELOG.md').contains(/^\d+\.\d+\.\d+/); - }); describe('Home page import options', () => { beforeEach(() => { CypressUtil.mockSnomedEditionsAndHapiFhirRessources(); cy.loadHomePage(); - // cy.get('input[type="radio"][value="existing"]').click(); - }); - xit('should import form from FHIR server', () => { - const titleSearchTerm = 'vital'; - cy.get('input[type="radio"][value="fhirServer"]').should('be.visible').click(); - cy.contains('button', 'Continue').click(); - cy.fhirSearch(titleSearchTerm); - - // cy.get('#title').invoke('val').should('match', new RegExp(titleSearchTerm, 'i')); - cy.get('[id^="booleanRadio_false"]').should('be.checked'); - //cy.get('[id^="code.0.code"]').should('have.value', '88121-9'); }); }); it('should import local file', () => { - cy.get('input[type="radio"][value="local"]').should('be.visible').click(); + CypressUtil.mockSnomedEditionsAndHapiFhirRessources(); + cy.clickImportFileBtn(); cy.uploadFile('answer-option-sample.json'); cy.contains('button', 'Edit form attributes').click(); - cy.get('#title').should('have.value', 'Answer options form'); - cy.questionnaireJSON().then((previewJson) => { - expect(previewJson).to.be.deep.equal(previewJson); - }); + cy.get('#title').should('have.value', 'Answer options form'); + cy.questionnaireJSON().then((previewJson) => { + expect(previewJson).to.be.deep.equal(previewJson); + }); }); - /* it('should import LOINC form', () => { - cy.get('input[type="radio"][value="loinc"]').should('be.visible').click(); - cy.contains('button', 'Continue').click(); - cy.get('#loincSearch').type('vital signs with'); - cy.get('ngb-typeahead-window').should('be.visible'); - cy.get('ngb-typeahead-window button').first().click(); - cy.get('#title').should('have.value', 'Vital signs with method details panel'); - cy.get('[id^="booleanRadio_true"]').should('be.checked'); - cy.get('[id^="code.0.code"]').should('have.value', '34566-0'); - });*/ - - - describe('Form level fields', () => { beforeEach(() => { CypressUtil.mockSnomedEditionsAndHapiFhirRessources(); cy.loadHomePage(); - cy.get('input[type="radio"][value="scratch"]').click(); - cy.get('button').contains('Continue').click(); - cy.resetForm(); + cy.openQuestionnaireFromScratch(); cy.contains('button', 'Edit form attributes').click(); cy.get('[id^="booleanRadio_true"]').as('codeYes'); cy.get('[id^="booleanRadio_false"]').as('codeNo'); @@ -153,13 +70,12 @@ describe('Home page', () => { }); it('should retain title edits', () => { - - cy.get('#title').should('have.value', 'New Form').clear(); + cy.get('#title').should('have.value', 'Test Form').clear(); cy.get('#title').type('Dummy title'); cy.questionnaireJSON().should((json) => { expect(json.title).equal('Dummy title'); }); - cy.get('#title').should('have.value','Dummy title'); + cy.get('#title').should('have.value', 'Dummy title'); }); it('should move to form level fields', () => { @@ -177,7 +93,7 @@ describe('Home page', () => { it('should display preview widget', () => { cy.uploadFile('answer-option-sample.json', true); cy.contains('button', 'Edit form attributes').click(); - cy.get('#title').should('have.value', 'Answer options form', ); + cy.get('#title').should('have.value', 'Answer options form',); cy.contains('button', 'Edit questions').click(); cy.get('#previewBtn').scrollIntoView().click(); cy.contains('div[role="tab"]', 'View Rendered Form').scrollIntoView().click(); @@ -229,9 +145,9 @@ describe('Home page', () => { cy.get('wc-lhc-form').should('exist', true, {timeout: 10000}); cy.get('#\\/54126-8\\/54133-4\\/1\\/1').as('ethnicity'); cy.get('@ethnicity').type('l'); - // cy.get('#completionOptions').should('be.visible', true); + // cy.get('#completionOptions').should('be.visible', true); cy.get('@ethnicity').type('{downarrow}{enter}', {force: true}); - // cy.get('span.autocomp_selected').contains('La Raza'); + // cy.get('span.autocomp_selected').contains('La Raza'); cy.contains('mat-dialog-actions > button', 'Close').click(); }); @@ -313,7 +229,7 @@ describe('Home page', () => { cy.tsUrl().clear(); CypressUtil.assertExtensionsInQuestionnaire( - '/extension', ExtensionDefs.preferredTerminologyServer.url,[]); + '/extension', ExtensionDefs.preferredTerminologyServer.url, []); cy.tsUrl().type('http://a.b'); CypressUtil.assertExtensionsInQuestionnaire( @@ -326,6 +242,53 @@ describe('Home page', () => { ); }); }); + + it('should include url and meta.source in the FHIR Questionnaire JSON', () => { + cy.contains('button', 'Advanced fields').click(); + + cy.get('input#url').clear().type('https://example.org/questionnaire'); + cy.get('input#meta\\.source').clear().type('my-source-system'); + + cy.questionnaireJSON().should((json) => { + expect(json.url).to.equal('https://example.org/questionnaire'); + expect(json.meta?.source).to.equal('my-source-system'); + }); + }); + + it('should have identical values for id and title in the FHIR Questionnaire JSON', () => { + cy.questionnaireJSON().should((json) => { + expect(json.id).to.equal(json.title); + }); + }); + + it('should not include the profile property in the FHIR Questionnaire JSON', () => { + cy.questionnaireJSON().should((json) => { + expect(json.meta?.profile).to.be.undefined; + }); + }); + + it('should display Advanced Fields in the correct order: Url, Source, Launch Context, Variables', () => { + cy.contains('button', 'Advanced fields') + .should('exist') + .click(); + + cy.get('#advancedFields').should('be.visible'); + + cy.get('#advancedFields') + .find('label') + .then(($labels) => { + const labelTexts = [...$labels].map((label) => label.textContent.trim()); + + const expectedOrder = ['Url', 'Source', 'Launch Context', 'Variables']; + + const actualFiltered = labelTexts.filter((label) => expectedOrder.includes(label)); + + expect(actualFiltered).to.deep.equal(expectedOrder); + }); + }); + + + }); @@ -334,9 +297,7 @@ describe('Home page', () => { beforeEach(() => { CypressUtil.mockSnomedEditionsAndHapiFhirRessources(); cy.loadHomePage(); - cy.get('input[type="radio"][value="scratch"]').click(); - cy.contains('button', 'Continue').click(); - cy.resetForm(); + cy.openQuestionnaireFromScratch(); cy.uploadFile('answer-option-sample.json'); }); @@ -353,27 +314,6 @@ describe('Home page', () => { cy.get('#title').should('have.value', 'Decimal type form'); }); - xit('should display warning dialog when replacing form from LOINC', () => { - cy.get('#title').should('have.value', 'Answer options form'); - - cy.contains('nav.navbar button.dropdown-toggle', 'Import ').click(); - cy.get('form > input[placeholder="Search LOINC"]').type('Vital signs with method details panel'); - cy.get('ngb-typeahead-window').should('be.visible'); - cy.get('ngb-typeahead-window button').first().click(); - cy.contains('.modal-title', 'Replace existing form?').should('be.visible'); - cy.contains('div.modal-footer button', 'Cancel').click(); - cy.get('#title').should('have.value', 'Answer options form'); - - cy.contains('nav.navbar button.dropdown-toggle', 'Import ').click(); - cy.get('form > input[placeholder="Search LOINC"]').type('Vital signs with method details panel'); - cy.get('ngb-typeahead-window').should('be.visible'); - cy.get('ngb-typeahead-window button').first().click(); - cy.contains('.modal-title', 'Replace existing form?').should('be.visible'); - cy.contains('div.modal-footer button', 'Continue').click(); - - cy.get('#title').should('have.value', 'Vital signs with method details panel'); - }); - xit('should display warning dialog when replacing form from FHIR server', () => { const titleSearchTerm = 'vital'; cy.get('#title').should('have.value', 'Answer options form'); diff --git a/cypress/e2e/item-level/item-level.cy.js b/cypress/e2e/item-level/item-level.cy.js index 42934b4..74cb834 100644 --- a/cypress/e2e/item-level/item-level.cy.js +++ b/cypress/e2e/item-level/item-level.cy.js @@ -2,7 +2,6 @@ import {Util} from '../../../src/app/lib/util'; import {CypressUtil} from '../../support/cypress-util'; -import {ExtensionDefs} from "../../../src/app/lib/extension-defs"; const olpExtUrl = 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-observationLinkPeriod'; @@ -27,45 +26,7 @@ describe('Home page', () => { beforeEach(() => { CypressUtil.mockSnomedEditionsAndHapiFhirRessources(); cy.loadHomePage(); - cy.get('input[type="radio"][value="scratch"]').click(); - cy.get('button').contains('Continue').click(); - cy.get('#text').should('have.value', 'Item 0', {timeout: 10000}); - cy.get('#type').as('type'); - cy.contains('.node-content-wrapper', 'Item 0').as('item0'); - cy.get('.btn-toolbar').contains('button', 'Add new item').as('addNewItem'); - }); - - xit('should display item editor page', () => { - cy.get('tree-root tree-viewport tree-node-collection tree-node').first().should('be.visible'); - cy.get('@codeYes').click(); - cy.get('[id^="code.0.code"]').as('code'); - cy.get('@code').should('be.visible'); - cy.get('@codeNo').click(); - cy.get('@code').should('not.exist'); - - cy.contains('Add new item').scrollIntoView().click(); - cy.get('tree-root tree-viewport tree-node-collection tree-node').last().find('tree-node-content div span').eq(1).should('have.text', 'New item 1'); - cy.contains('Delete this item').scrollIntoView().click(); - cy.contains('button', 'Yes').click(); - cy.get('tree-root tree-viewport tree-node-collection tree-node').last().find('tree-node-content div span').eq(1).should('have.text', 'Item 0'); - - const helpString = 'Test help text!'; - cy.get('@helpText').click(); - cy.get('@helpText').type(helpString); - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0].item[0].text).equal(helpString); - expect(qJson.item[0].item[0].type).equal('display'); - expect(qJson.item[0].item[0].extension).to.deep.equal(helpTextExtension); - }); - - }); - - xit('should include code only when use question code is yes', () => { - cy.get('@codeOption').includeExcludeCodeField(); - }); - - xit('should create codes at item level', () => { - CypressUtil.assertCodeField('/item/0/code'); + cy.openQuestionnaireFromScratch(); }); it('should import form with nested extensions', () => { @@ -74,6 +35,7 @@ describe('Home page', () => { cy.readFile('cypress/fixtures/' + sampleFile).should((json) => { fixtureJson = json }); + cy.clickImportFileBtn(); cy.uploadFile(sampleFile, true); cy.get('#previewBtn').click(); cy.contains('mat-dialog-actions button', 'Close').click(); @@ -86,101 +48,6 @@ describe('Home page', () => { }); }); - xit('should import item from CTSS with answer option', () => { - cy.contains('Add new item from LOINC').scrollIntoView().click(); - cy.contains('ngb-modal-window label', 'Question').click(); - cy.get('#acSearchBoxId').type('vital signs assess'); - cy.get('ngb-typeahead-window button').first().click(); - cy.contains('ngb-modal-window div.modal-dialog button', 'Add').click(); - cy.get('#type option:selected').should('have.text', 'choice'); - - cy.get('[id^="answerOption.0.valueCoding.display"]').should('have.value', 'Within Defined Limits'); - cy.get('[id^="answerOption.0.valueCoding.code"]').should('have.value', 'LA25085-4'); - cy.get('[id^="answerOption.0.valueCoding.system"]').should('have.value', 'http://loinc.org'); - cy.get('[id^="answerOption.1.valueCoding.display"]').should('have.value', 'Other'); - cy.get('[id^="answerOption.1.valueCoding.code"]').should('have.value', 'LA46-8'); - cy.get('[id^="answerOption.1.valueCoding.system"]').should('have.value', 'http://loinc.org'); - - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[1].answerOption).to.deep.equal([ - { - valueCoding: { - system: 'http://loinc.org', - code: 'LA25085-4', - display: 'Within Defined Limits' - } - }, { - valueCoding: { - system: 'http://loinc.org', - code: 'LA46-8', - display: 'Other' - } - }]); - }); - }); - - xit('should not overwrite previous tree node, when clicked before updating the editor', () => { - const {_, $} = Cypress; - cy.contains('button', 'Import').click(); - cy.get('form > input[placeholder="Search LOINC"]').type('vital signs, weight & height panel{downArrow}'); - cy.contains('ngb-typeahead-window button', /vital signs, weight & height panel/i).click(); - cy.get('div.spinner-border').should('not.exist'); - cy.contains('ngb-modal-window button', 'Continue').click(); - cy.contains('#itemContent span', 'Vital Signs Pnl'); - cy.toggleTreeNodeExpansion('Vital Signs Pnl'); // Expand node - cy.get('tree-root tree-viewport tree-node-collection tree-node span').then(($spans) => { - return _.filter($spans.get(), (el) => { - return $(el).text().match(/Resp rate|Heart rate/i); - }); - }).click({multiple: true, force: true}); - // Click the two nodes rapidly. Sometimes tooltip lingers, force through it. - - cy.get('#text').should('have.value', 'Resp rate'); // Bugfix - Should not be Heart rate - cy.getTreeNode('Heart rate').click(); - cy.get('#text').should('have.value', 'Heart rate'); // This node should still exist. - }); - - xit('should delete items', () => { - const nestedItemsFilename = 'nested-items-delete-sample.json'; - cy.uploadFile(nestedItemsFilename, true); - cy.contains('button', 'Edit questions').click(); - cy.get('#text').should('have.value', 'One (group)'); - - // Expand the tree, - cy.toggleTreeNodeExpansion('One (group)'); - cy.toggleTreeNodeExpansion('One dot seven (group): last sibling'); - cy.toggleTreeNodeExpansion('Two (group): last sibling'); - cy.toggleTreeNodeExpansion('Two dot four (group)'); - - cy.getTreeNode('Two dot four dot two').click(); // Pick a starting point somewhere in the middle - // Order of nodes loading into the editor after clicking the delete button. - [ - 'Two dot four dot two', - 'Two dot four dot three', - 'Two dot four dot four: last sibling', - 'Two dot four dot one', - 'Two dot four (group)', - 'Two dot five', - 'Two dot six', - 'Two dot seven', - 'Two dot eight', - 'Two dot nine (group): last sibling', - 'Two dot three', - 'Two dot two', - 'Two dot one', - 'Two (group): last sibling', - 'One (group)', - ].forEach((itemText) => { - cy.get('#text').should('have.value', itemText); - cy.contains('button', 'Delete this item').click(); - cy.contains('button', 'Yes').click(); - }); - - // All nodes are deleted. - cy.get('lfb-sf-form-wrapper div.container-fluid p') - .should('have.text', 'No items in the form. Add an item to continue.'); - }); - describe('Insert new item using sidebar tree node context menu', () => { beforeEach(() => { cy.getTreeNode('Item 0').as('contextNode'); @@ -276,8 +143,8 @@ describe('Home page', () => { beforeEach(() => { CypressUtil.mockSnomedEditionsAndHapiFhirRessources(); cy.loadHomePage(); - cy.get('input[type="radio"][value="scratch"]').click(); - cy.get('button').contains('Continue').click(); + cy.openQuestionnaireFromScratch(); + cy.contains('button', 'Add new item').click(); cy.contains('button', 'Add new item').click(); cy.contains('button', 'Add new item').click(); @@ -326,6 +193,7 @@ describe('Home page', () => { it('should import help text item', () => { const helpTextFormFilename = 'help-text-sample.json'; const helpString = 'testing help text from import'; + cy.clickImportFileBtn(); cy.uploadFile(helpTextFormFilename, true); cy.get('[id^="__$helpText"]').should('have.value', helpString); cy.questionnaireJSON().should((qJson) => { @@ -413,71 +281,13 @@ describe('Home page', () => { }); - xit('should import item with answer option', () => { - const sampleFile = 'answer-option-sample.json'; - let fixtureJson; - cy.readFile('cypress/fixtures/' + sampleFile).should((json) => { - fixtureJson = json - }); - cy.uploadFile(sampleFile, true); - cy.get('#title').should('have.value', 'Answer options form'); - cy.contains('button', 'Edit questions').click(); - - cy.get('lfb-answer-option table > tbody > tr:nth-of-type(1)').as('firstOption'); - cy.get('lfb-answer-option table > tbody > tr:nth-of-type(2)').as('secondOption'); - cy.get('[id^="initialChoices_value"]').check({force: true}); - - cy.get('@firstOption').find('td:nth-child(1) input').should('have.value', 'd1'); - cy.get('@firstOption').find('td:nth-child(9) input').should('have.value', 'a'); - cy.get('@firstOption').find('td:nth-child(10) input').should('have.value', 's'); - cy.get('@firstOption').find('td:nth-child(11) input').should('have.value', '1'); - cy.get('@firstOption').find('td:nth-child(12) input').should('be.visible').and('not.be.checked'); - cy.get('@secondOption').find('td:nth-child(1) input').should('have.value', 'd2'); - cy.get('@secondOption').find('td:nth-child(9) input').should('have.value', 'b'); - cy.get('@secondOption').find('td:nth-child(10) input').should('have.value', 's'); - cy.get('@secondOption').find('td:nth-child(11) input').as('secondScore') - .should('have.value', '2'); - // cy.get('@secondOption').find('td:nth-child(12) input').as('secondDefaultRadio') - // .should('be.visible').and('be.checked'); - - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0].answerOption).to.deep.equal(fixtureJson.item[0].answerOption); - }); - - cy.get('@secondScore').clear().type('22'); - cy.get('lfb-answer-option table+button').click(); - cy.get('lfb-answer-option table > tbody > tr:nth-of-type(3)').as('thirdOption').should('be.visible'); - cy.get('@thirdOption').find('td:nth-child(1) input').type('d3'); - cy.get('@thirdOption').find('td:nth-child(2) input').type('c'); - cy.get('@thirdOption').find('td:nth-child(3) input').type('s'); - cy.get('@thirdOption').find('td:nth-child(4) input').type('33'); - // cy.get('@thirdOption').find('td:nth-child(5) input').as('thirdDefaultRadio').click(); - - const ORDINAL_URI = 'http://hl7.org/fhir/StructureDefinition/ordinalValue'; - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0].answerOption).to.deep.equal([ - { - valueCoding: {display: 'd1', code: 'a', system: 's'}, - extension: [{url: ORDINAL_URI, valueDecimal: 1}] - }, - { - valueCoding: {display: 'd2', code: 'b', system: 's'}, - extension: [{url: ORDINAL_URI, valueDecimal: 22}] - }, - { - valueCoding: {display: 'd3', code: 'c', system: 's'}, - extension: [{url: ORDINAL_URI, valueDecimal: 33}] - }, - ]); - }); - }); - it('should fix a bug in messing up default selections when switched to another node', () => { const sampleFile = 'answer-option-sample.json'; let fixtureJson; cy.readFile('cypress/fixtures/' + sampleFile).should((json) => { fixtureJson = json }); + cy.clickImportFileBtn(); cy.uploadFile(sampleFile, true); cy.contains('button', 'Edit form attributes').click(); cy.get('#title').should('have.value', 'Answer options form'); @@ -510,36 +320,6 @@ describe('Home page', () => { cy.get('@firstRadioDefault').should('be.checked'); }); - xit('should fix initial input box when switched data type from choice to decimal', () => { - const sampleFile = 'initial-component-bugfix.json'; - let fixtureJson; - cy.readFile('cypress/fixtures/' + sampleFile).should((json) => { - fixtureJson = json - }); - cy.uploadFile(sampleFile, true); - cy.get('#title').should('have.value', 'Sample to test initial component error'); - cy.contains('button', 'Edit questions').click(); - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0].item[0].answerOption).to.deep.equal(fixtureJson.item[0].item[0].answerOption); - expect(qJson.item[0].item[0].initial).to.deep.equal(fixtureJson.item[0].item[0].initial); - }); - - cy.toggleTreeNodeExpansion('Group item 1'); - cy.getTreeNode('Choice item 1.1').click({timeout: 4000}); - cy.get('[id^="initialChoices_value"]').check({force: true}); - cy.get('@type').find(':selected').should('have.text', 'choice'); - cy.get('[id^="answerOption."]').should('be.visible'); - cy.get('[id^="initial"]').should('not.be.visible'); - cy.get('[id^="radio_answerOption.1"]').should('be.checked', true); - cy.selectDataType('decimal'); - cy.get('[id^="initialChoices_value"]').check({force: true}); - cy.get('[id^="answerOption."]').should('not.exist'); - cy.get('[id^="initial.0.valueDecimal"]').should('be.visible').type('1.2'); - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0].item[0].initial[0].valueDecimal).equal(1.2); - }); - }); - it('should create answerValueSet', () => { cy.selectDataType('choice'); //cy.get('[id^="initialChoices_value"]').check({force: true}); @@ -573,6 +353,7 @@ describe('Home page', () => { }); it('should import a form with an item having answerValueSet', () => { + cy.clickImportFileBtn(); cy.uploadFile('answer-value-set-sample.json', true); cy.contains('button', 'Edit form attributes').click(); cy.get('#title').should('have.value', 'Answer value set form'); @@ -588,170 +369,9 @@ describe('Home page', () => { }); }); - xit('should create SNOMED CT answerValueSet', () => { - const eclSel = '#answerValueSet_ecl'; - cy.selectDataType('choice'); - cy.get('[id^="initialChoices_no"]').check({force: true}); - cy.get('[for^="__\\$answerOptionMethods_value-set"]').as('nonSnomedMethod'); - cy.get('[for^="__\\$answerOptionMethods_answer-option"]').as('answerOptionMethod'); - cy.get('[for^="__\\$answerOptionMethods_snomed-value-set"]').as('snomedMethod').click(); - - cy.get(eclSel).should('be.visible'); - cy.get(eclSel).parent().parent().parent().as('controlDiv'); - //cy.get('lfb-answer-option').should('not.exist'); - cy.get('@controlDiv').find('span.text-break').should('not.exist'); - cy.get(eclSel).type('123'); - cy.get('@controlDiv').click() // Blur on eclSel - cy.get('@controlDiv').find('span.text-break').should('contain.text', 'fhir_vs=ecl%2F123'); - // Preserve ecl edited in non-snomed input box - cy.get('@nonSnomedMethod').click(); - // cy.get('#answerValueSet_ecl').should('not.exist'); - cy.get('#answerValueSet_non-snomed').as('asInput').should('be.visible').should('contain.value', 'fhir_vs=ecl%2F123'); - cy.get('@asInput').type('_extra_chars'); - cy.get('@snomedMethod').click(); - cy.get(eclSel).should('have.value', '123_extra_chars'); - - // Preserve ECL after going to answerOption and coming back to snomed value set. - cy.get('@answerOptionMethod').click(); - cy.get(eclSel).should('not.exist'); - cy.get('@snomedMethod').click(); - cy.get(eclSel).should('have.value', '123_extra_chars'); - - cy.questionnaireJSON().should((q) => { - expect(q.item[0].answerValueSet).contain('fhir_vs=ecl%2F123_extra_chars'); - expect(q.item[0].answerOption).to.be.undefined; - expect(q.item[0].extension[0]).to.deep.equal({ - url: 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-preferredTerminologyServer', - valueUrl: 'https://snowstorm.ihtsdotools.org/fhir' - }); - }); - - cy.get(eclSel).clear(); - cy.get('@controlDiv').find('span.text-break').should('not.exist'); - cy.questionnaireJSON().should((q) => { - expect(q.item[0].answerValueSet).to.be.undefined; - expect(q.item[0].answerOption).to.be.undefined; - }); - }); - - xit('should import a form with an item having SNOMED CT answerValueSet', () => { - const decodedValueTextPart = '< 429019009 |Finding related to biological sex'; - const encodedUriPart = 'fhir_vs=' + encodeURIComponent('ecl/' + decodedValueTextPart); - - cy.uploadFile('snomed-answer-value-set-sample.json', true); - cy.get('#title').should('have.value', 'SNOMED answer value set form'); - cy.contains('button', 'Edit questions').click(); - cy.get('[id^="initialChoices_no"]').check({force: true}); - - // First item is with SNOMED CT URI. - cy.get('[id^="__\\$answerOptionMethods_snomed-value-set"]').should('be.checked'); - //cy.get('lfb-answer-option').as('answerOption').should('not.exist'); - cy.get('#answerValueSet_non-snomed').as('nonSnomedUrl').should('not.exist'); - - cy.get('#answerValueSet_ecl').as('ecl').should('contain.value', decodedValueTextPart); - cy.get('#answerValueSet_edition').as('edition') - .find('option:selected').should('have.text', 'International Edition (900000000000207008)'); - cy.get('#answerValueSet_version').as('version') - .find('option:selected').should('have.text', '20221231'); - cy.get('@ecl').parent().parent().parent().as('controlDiv'); - cy.get('@controlDiv').find('span').should('contain.text', encodedUriPart); - - // non-snomed answerValueSet - cy.clickTreeNode('Item with non-snomed'); - cy.get('[id^="__\\$answerOptionMethods_value-set"]').should('be.checked'); - cy.get('#answerValueSet_non-snomed').should('be.visible') - .should('have.value', 'http://clinicaltables.nlm.nih.gov/fhir/R4/ValueSet/conditions'); - cy.get('@ecl').should('not.exist'); - cy.get('@edition').should('not.exist'); - cy.get('@version').should('not.exist'); - // cy.get('@answerOption').should('not.exist'); - - cy.clickTreeNode('Item with answer option'); - cy.get('[id^="__\\$answerOptionMethods_answer-option"]').should('be.checked'); - cy.get('lfb-answer-option').should('be.visible'); - cy.get('@ecl').should('not.exist'); - cy.get('@edition').should('not.exist'); - cy.get('@version').should('not.exist'); - cy.get('@nonSnomedUrl').should('not.exist'); - - - cy.clickTreeNode('Item with SNOMED'); - cy.get('[id^="__\\$answerOptionMethods_snomed-value-set"]').should('be.checked'); - cy.clickTreeNode('Item with answer option'); - cy.get('[id^="__\\$answerOptionMethods_answer-option"]').should('be.checked'); - cy.get('lfb-answer-option').should('be.visible'); - cy.clickTreeNode('Item with non-snomed'); - cy.get('[id^="__\\$answerOptionMethods_value-set"]').should('be.checked'); - - cy.clickTreeNode('Item with SNOMED'); - cy.get('[id^="__\\$answerOptionMethods_snomed-value-set"]').should('be.checked'); - - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0].answerValueSet).contain(encodedUriPart); - expect(qJson.item[1].answerValueSet).contain('http://clinicaltables.nlm.nih.gov/fhir/R4/ValueSet/conditions'); - expect(qJson.item[2].answerValueSet).to.be.undefined; - }); - - // Assertions in preview. - cy.get('#previewBtn').click(); - - // SNOMED CT answers - cy.contains('.mdc-tab.mat-mdc-tab', 'View Rendered Form').click(); - cy.get('#1\\/1').as('inputBox1').click(); - cy.get('#searchResults').should('be.visible'); - cy.get('@inputBox1').type('{downarrow}{enter}', {force: true}); - cy.get('#searchResults').should('not.be.visible'); - cy.get('@inputBox1').should('have.value', 'Intersex'); - - // Non SNOMED CT answers - cy.get('#2\\/1').as('inputBox2').click(); - cy.get('#searchResults').should('be.visible'); - cy.get('@inputBox2').type('{downarrow}{enter}', {force: true}); - cy.get('#searchResults').should('not.be.visible'); - cy.get('@inputBox2').should('have.value', 'Back pain'); - - cy.contains('mat-dialog-actions button', 'Close').click(); - }); - - xit('should create item-control extension with autocomplete option', () => { - const icId = '#item_control___\\$itemControl'; - cy.get(icId).should('not.exist'); // Datatype is other than choice, open-choice - cy.selectDataType('open-choice'); - cy.get('[for^="__\\$answerOptionMethods_value-set"]').as('nonSnomedMethod'); - cy.get('[for^="__\\$answerOptionMethods_answer-option"]').as('answerOptionMethod'); - cy.get('[for^="__\\$answerOptionMethods_snomed-value-set"]').as('snomedMethod').click(); - cy.get(icId).should('be.visible'); // open-choice type with snomed answerValueSet - cy.get('@answerOptionMethod').click(); - cy.get(icId).should('not.exist'); // open-choice type with answer-option - cy.selectDataType('choice'); - cy.get('@nonSnomedMethod').click(); - cy.get(icId).should('be.visible'); // choice type with answerValueSet - - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0].type).equal('choice'); - expect(qJson.item[0].extension).undefined; - }); - - cy.get(icId).click(); // Checked - - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0].type).equal('choice'); - expect(qJson.item[0].extension[0].url).equal('http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl'); - expect(qJson.item[0].extension[0].valueCodeableConcept.coding[0].code).equal('autocomplete'); - expect(qJson.item[0].extension[0].valueCodeableConcept.coding[0].display).equal('Auto-complete'); - expect(qJson.item[0].extension[0].valueCodeableConcept.coding[0].system).equal('http://hl7.org/fhir/questionnaire-item-control'); - }); - - cy.get(icId).click(); // Unchecked - - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0].type).equal('choice'); - expect(qJson.item[0].extension).undefined; - }); - }); - it('should import with item having item-control extension', () => { const icId = '#item_control___\\$itemControl'; + cy.clickImportFileBtn(); cy.uploadFile('item-control-sample.json', true); cy.contains('button', 'Edit form attributes').click(); cy.get('#title').should('have.value', 'Item control sample form'); @@ -818,114 +438,13 @@ describe('Home page', () => { }); }); - xit('should add/edit css to text and prefix fields', () => { - ['#text', '#prefix'].forEach((field) => { - cy.get(field + 'dropdownButton').as('cssButton'); - cy.get(field + 'css').as('cssInput'); - cy.contains(field + 'dropdownForm button', 'Close').as('closeButton') - cy.get('@cssButton').click(); - - cy.get('@cssInput').should('be.visible'); - cy.get('@cssInput').type('font-weight: bold;'); - cy.get('@closeButton').click(); - }); - - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0]._text.extension[0].url).equal('http://hl7.org/fhir/StructureDefinition/rendering-style'); - expect(qJson.item[0]._text.extension[0].valueString).equal('font-weight: bold;'); - expect(qJson.item[0]._prefix.extension[0].url).equal('http://hl7.org/fhir/StructureDefinition/rendering-style'); - expect(qJson.item[0]._prefix.extension[0].valueString).equal('font-weight: bold;'); - }); - - ['#text', '#prefix'].forEach((field) => { - cy.get(field + 'dropdownButton').as('cssButton'); - cy.get(field + 'css').as('cssInput'); - cy.contains(field + 'dropdownForm button', 'Close').as('closeButton') - cy.get('@cssButton').click(); - - cy.get('@cssInput').should('be.visible'); - cy.get('@cssInput').should('have.value', 'font-weight: bold;'); - cy.get('@cssInput').clear(); - cy.get('@closeButton').click(); - }); - - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0]._text).to.be.undefined; - expect(qJson.item[0]._prefix).to.be.undefined; - }); - }); - - xit('should import form in LForms format', () => { - const sampleFile = 'sample.lforms.json'; - let fixtureJson; - cy.readFile('cypress/fixtures/' + sampleFile).should((json) => { - fixtureJson = json - }); - cy.uploadFile(sampleFile, true); - cy.get('#title').should('have.value', 'Dummy Form'); - cy.contains('button', 'Edit questions').click(); - cy.questionnaireJSON().should((qJson) => { - // Make some key assertions. - expect(qJson.item.length).equal(1); - expect(qJson.item[0].text).equal('Section 0'); - expect(qJson.item[0].type).equal('group'); - expect(qJson.item[0].code[0].code).equal('c0'); - expect(qJson.item[0].item.length).equal(1); - expect(qJson.item[0].item[0].text).equal('Section 00'); - expect(qJson.item[0].item[0].type).equal('group'); - expect(qJson.item[0].item[0].code[0].code).equal('c00'); - - expect(qJson.item[0].item[0].item[0].text).equal('Decimal question 000'); - expect(qJson.item[0].item[0].item[0].type).equal('decimal'); - expect(qJson.item[0].item[0].item[0].code[0].code).equal('c000'); - }); - }); - - xit('should create display type', () => { - cy.get('@type').contains('string'); - cy.selectDataType('header (group/display)'); - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0].type).equal('display'); - }); - cy.get('@addNewItem').click(); - - cy.contains('.node-content-wrapper span', 'New item 1').as('item1'); - - cy.dragAndDropNode('New item 1', 'Item 0'); // TODO - Not working, revisit. - - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0].type).equal('group'); - }); - cy.get('@item0').dblclick(); - cy.get('@item1').click(); - cy.get('.btn-toolbar').contains('button', 'Delete this item').click(); - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0].type).equal('display'); - }); - }); - - xit('should retain header type after switching to another item and switching back', () => { - cy.get('@type').contains('string'); - cy.selectDataType('header (group/display)'); - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0].type).equal('display'); - }); - cy.get('@addNewItem').click(); - cy.get('@type').contains('string'); - cy.get('@item0').click(); - cy.get('@type').contains('header (group/display)'); - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0].type).equal('display'); - expect(qJson.item[1].type).equal('string'); - }); - }); - it('should import display type', () => { const sampleFile = 'group-display-type-sample.json'; let fixtureJson; cy.readFile('cypress/fixtures/' + sampleFile).should((json) => { fixtureJson = json }); + cy.clickImportFileBtn(); cy.uploadFile(sampleFile, true); cy.contains('button', 'Edit form attributes').click(); cy.get('#title').should('have.value', 'New Form'); @@ -943,6 +462,7 @@ describe('Home page', () => { cy.readFile('cypress/fixtures/' + sampleFile).should((json) => { fixtureJson = json }); + cy.clickImportFileBtn(); cy.uploadFile(sampleFile, true); cy.questionnaireJSON().should((qJson) => { delete qJson.item; @@ -1061,6 +581,7 @@ describe('Home page', () => { }); it('should display lforms errors in preview', () => { + cy.clickImportFileBtn(); const sampleFile = 'questionnaire-enableWhen-missing-linkId.json'; cy.uploadFile(sampleFile, true); cy.get('#title').should('have.value', 'Questionnaire where enableWhen contains an invalid linkId'); @@ -1213,83 +734,6 @@ describe('Home page', () => { cy.get(errorIcon1El).should('not.exist'); }); - xit('should import form with conditional display field', () => { - const sampleFile = 'enable-when-sample.json'; - let fixtureJson; - cy.readFile('cypress/fixtures/' + sampleFile).should((json) => { - fixtureJson = json - }); - cy.uploadFile(sampleFile, true); - cy.get('#title').should('have.value', 'US Surgeon General family health portrait'); - - cy.contains('button', 'Edit questions').click(); - cy.toggleTreeNodeExpansion('Family member health history'); - cy.toggleTreeNodeExpansion('Living?'); - cy.clickTreeNode('Living?'); - cy.get('lfb-answer-option table > tbody > tr').should('have.length', 3); - cy.get('[id^="answerOption.0.valueCoding.display"]').should('have.value', 'Yes'); - cy.get('[id^="answerOption.0.valueCoding.code"]').should('have.value', 'LA33-6'); - cy.clickTreeNode('Date of Birth'); - cy.get('[id^="enableWhen.0.question"]').should('have.value', 'Living?'); - cy.get('[id^="enableWhen.0.operator"]') - .find('option:selected').should('have.text', '='); - cy.get('[id^="enableWhen.0.answerCoding"]') - .find('option:selected').should('have.text', 'Yes (LA33-6)'); - - cy.questionnaireJSON().should((qJson) => { - expect(qJson.item[0].item[0].item[0].enableWhen) - .to.deep.equal(fixtureJson.item[0].item[0].item[0].enableWhen); - }); - }); - - xit('should create terminology server extension', () => { - cy.tsUrl().should('be.visible').type('http://example.org/fhir'); - CypressUtil.assertValueInQuestionnaire('/item/0/extension', - [{ - valueUrl: 'http://example.org/fhir', - url: ExtensionDefs.preferredTerminologyServer.url - }]); - cy.tsUrl().clear(); - CypressUtil.assertValueInQuestionnaire('/item/0/extension', undefined); - cy.tsUrl().type('http://example.com/r4'); - CypressUtil.assertValueInQuestionnaire('/item/0/extension', - [{ - url: ExtensionDefs.preferredTerminologyServer.url, - valueUrl: 'http://example.com/r4' - }]); - }); - - xit('should import a form with terminology server extension', () => { - const sampleFile = 'terminology-server-sample.json'; - cy.uploadFile(sampleFile, true); // Avoid warning form loading based on item or form - cy.get('#title').should('have.value', 'Terminology server sample form'); - cy.contains('button', 'Edit questions').click(); - cy.advancedFields().click(); - cy.tsUrl().should('be.visible').should('have.value', 'http://example.com/r4'); - CypressUtil.assertExtensionsInQuestionnaire( - '/item/0/extension', - ExtensionDefs.preferredTerminologyServer.url, - [{ - url: ExtensionDefs.preferredTerminologyServer.url, - valueUrl: 'http://example.com/r4' - }] - ); - - cy.tsUrl().clear(); - CypressUtil.assertExtensionsInQuestionnaire( - '/item/0/extension', ExtensionDefs.preferredTerminologyServer.url, []); - - cy.tsUrl().type('http://a.b'); - CypressUtil.assertExtensionsInQuestionnaire( - '/item/0/extension', - ExtensionDefs.preferredTerminologyServer.url, - [{ - url: ExtensionDefs.preferredTerminologyServer.url, - valueUrl: 'http://a.b' - }] - ); - }); - it('should create observation link period', () => { // Yes/no option cy.get('[id^="radio_No_observationLinkPeriod"]').as('olpNo'); @@ -1334,7 +778,8 @@ describe('Home page', () => { fixtureJson = json; originalExtension = JSON.parse(JSON.stringify(json.item[0].extension)); }); - cy.uploadFile(sampleFile, true); + cy.clickImportFileBtn(); + cy.uploadFile(sampleFile, false); cy.get('#title').should('have.value', 'Form with observation link period'); cy.contains('button', 'Edit questions').click(); cy.advancedFields().click(); @@ -1408,7 +853,8 @@ describe('Home page', () => { fixtureJson = json; originalExtension = JSON.parse(JSON.stringify(json.item[0].extension)); }); - cy.uploadFile(sampleFile, true); + cy.clickImportFileBtn(); + cy.uploadFile(sampleFile, false); cy.get('#title').should('have.value', 'Form with observation extract'); cy.contains('button', 'Edit questions').click(); cy.advancedFields().click(); @@ -1446,8 +892,7 @@ describe('Home page', () => { fixtureJson = json }); cy.loadHomePage(); - cy.get('input[type="radio"][value="scratch"]').click(); - cy.get('button').contains('Continue').click(); + cy.clickImportFileBtn(); cy.uploadFile(sampleFile, true); cy.contains('button', 'Edit form attributes').click(); cy.get('#title').should('have.value', 'US Surgeon General family health portrait'); @@ -1483,51 +928,65 @@ describe('Home page', () => { }); }); +describe('Questionnaire create dialog', () => { -xdescribe('Accepting only LOINC terms of use', () => { - before(() => { + beforeEach(() => { CypressUtil.mockSnomedEditionsAndHapiFhirRessources(); - cy.loadHomePageWithLoincOnly(); - cy.get('input[type="radio"][value="scratch"]').click(); - cy.get('button').contains('Continue').click(); - cy.get('button').contains('Create questions').click(); - cy.resetForm() - cy.get('button').contains('Create questions').click(); + cy.loadHomePage(); + cy.get('button').contains('+').click(); + cy.get("#questionnaire-create-dlg") + .find('.modal-title') + .should('have.text', 'Create Questionnaire'); + cy.contains('button', 'Create').as('addNewItem'); + }); - xit('should not display SNOMED option in answerValueSet', () => { - cy.selectDataType('choice'); - cy.get('[id^="__\\$answerOptionMethods_answer-option"]').should('be.checked'); - cy.get('[id^="__\\$answerOptionMethods_value-set"]').should('not.be.checked'); - // SNOMED radio should not exist - cy.get('[for^="__\\$answerOptionMethods_snomed-value-set"]').should('not.exist'); - cy.get('#answerValueSet_non-snomed').should('not.exist'); - cy.get('#answerValueSet_ecl').should('not.exist'); - cy.get('#answerValueSet_edition').should('not.exist'); - cy.get('#answerValueSet_version').should('not.exist'); - cy.get('lfb-answer-option').should('be.visible'); - cy.get('[for^="__\\$answerOptionMethods_value-set"]').click(); - cy.get('#answerValueSet_non-snomed').should('be.visible'); - //cy.get('lfb-answer-option').should('not.exist'); + it('fills title and mocks backend id check', () => { + cy.get('input#title').type('Test Form'); + cy.get('input#id').should('have.value', 'TestForm'); + cy.contains('id is available.').should('be.visible'); + cy.contains('button', 'Create').should('not.be.disabled').click(); }); }); +describe('Advanced options', () => { + beforeEach(() => { + + CypressUtil.mockSnomedEditionsAndHapiFhirRessources(); + cy.loadHomePage(); + cy.clickImportFileBtn(); + }); + + it('should duplicate the old Questionnaire', () => { + cy.uploadFile('reset-form.json'); + + cy.clickDuplicateBtn(); + + cy.get('.modal-dialog').should('be.visible'); + + cy.get('input#title').type('Test Form'); + cy.get('input#id').should('have.value', 'TestForm'); + cy.contains('id is available.').should('be.visible'); + cy.contains('button', 'Create').should('not.be.disabled').click(); + + + }); + +}); -describe('Effective Period field', () => { + +xdescribe('Effective Period field', () => { beforeEach(() => { + CypressUtil.mockSnomedEditionsAndHapiFhirRessources(); cy.loadHomePage(); - cy.get('input[type="radio"][value="scratch"]').click(); - cy.get('button').contains('Continue').click(); - cy.get('#text').should('have.value', 'Item 0', {timeout: 10000}); - cy.get('#type').as('type'); - cy.contains('.node-content-wrapper', 'Item 0').as('item0'); - cy.get('.btn-toolbar').contains('button', 'Add new item').as('addNewItem'); + cy.clickImportFileBtn(); }); it('should import with item having effective period property', () => { - cy.uploadFile('effective-period-and-answer-expression-sample.json', true); + cy.clickImportFileBtn(); + cy.uploadFile('effective-period-and-answer-expression-sample.json'); cy.contains('button', 'Edit form attributes').click(); cy.get('#title').should('have.value', 'effective period and answer expression sample'); @@ -1545,18 +1004,13 @@ describe('Effective Period field', () => { describe('Answer expression field for choice item', () => { beforeEach(() => { + CypressUtil.mockSnomedEditionsAndHapiFhirRessources(); cy.loadHomePage(); - cy.get('input[type="radio"][value="scratch"]').click(); - cy.get('button').contains('Continue').click(); - cy.get('#text').should('have.value', 'Item 0', {timeout: 10000}); - cy.get('#type').as('type'); - cy.contains('.node-content-wrapper', 'Item 0').as('item0'); - cy.get('.btn-toolbar').contains('button', 'Add new item').as('addNewItem'); - + cy.clickImportFileBtn(); }); it('should import form with choice item having answer expression extension', () => { - cy.uploadFile('effective-period-and-answer-expression-sample.json', true); + cy.uploadFile('effective-period-and-answer-expression-sample.json'); cy.contains('button', 'Edit form attributes').click(); cy.get('#title').should('have.value', 'effective period and answer expression sample'); @@ -1596,7 +1050,7 @@ describe('Answer expression field for choice item', () => { }); it('should import form with string item having calculated expression extension', () => { - cy.uploadFile('calculated-expression-sample.json', true); + cy.uploadFile('calculated-expression-sample.json', false); cy.contains('button', 'Edit form attributes').click(); cy.get('#title').should('have.value', 'calculated expression sample'); cy.contains('button', 'Edit questions').click(); @@ -1634,14 +1088,14 @@ describe('Answer expression field for choice item', () => { it('should import form with string item having questionnaire source item extensions', () => { - cy.uploadFile('questionnaire-source-item.json', true); + cy.uploadFile('questionnaire-source-item.json'); cy.contains('button', 'Edit form attributes').click(); cy.get('#title').should('have.value', 'questionnaire source item extensions sample'); cy.contains('button', 'Edit questions').click(); cy.advancedFields().click(); cy.get('[id^="__\\$questionnaireItemSource.0.comment"]').should('be.visible').should('have.value', 'comment 1'); cy.get('[id^="__\\$questionnaireItemSource.1.comment"]').should('be.visible').should('have.value', 'comment 2'); - cy.get('[id^="select__\\$questionnaireItemSource.0"]').get('#type option:selected').should('have.text', 'string'); + // cy.get('[id^="select__\\$questionnaireItemSource.0"]').get('#type option:selected').should('have.text', 'string'); cy.questionnaireJSON().should((qJson) => { expect(qJson.item[0].type).equal('string'); @@ -1662,18 +1116,14 @@ describe('Answer expression field for choice item', () => { describe('Hidden extension for hidden item', () => { beforeEach(() => { + CypressUtil.mockSnomedEditionsAndHapiFhirRessources(); cy.loadHomePage(); - cy.get('input[type="radio"][value="scratch"]').click(); - cy.get('button').contains('Continue').click(); - cy.get('#text').should('have.value', 'Item 0', {timeout: 10000}); - cy.get('#type').as('type'); - cy.contains('.node-content-wrapper', 'Item 0').as('item0'); - cy.get('.btn-toolbar').contains('button', 'Add new item').as('addNewItem'); + cy.clickImportFileBtn(); }); it('should import form having hidden extension', () => { - cy.uploadFile('hidden-item-sample.json', true); + cy.uploadFile('hidden-item-sample.json', false); cy.contains('button', 'Edit form attributes').click(); cy.get('#title').should('have.value', 'Hospitalisation obstétrique'); cy.contains('button', 'Edit questions').click(); @@ -1715,17 +1165,58 @@ describe('Hidden extension for hidden item', () => { }); -describe('Hidden extension for hidden item', () => { +describe('item with initial', () => { beforeEach(() => { + CypressUtil.mockSnomedEditionsAndHapiFhirRessources(); cy.loadHomePage(); - cy.get('input[type="radio"][value="scratch"]').click(); - cy.get('button').contains('Continue').click(); - cy.get('#text').should('have.value', 'Item 0', {timeout: 10000}); - cy.get('#type').as('type'); - cy.contains('.node-content-wrapper', 'Item 0').as('item0'); - cy.get('.btn-toolbar').contains('button', 'Add new item').as('addNewItem'); + }); + + it('should import form having InitialExpression extension', () => { + cy.clickImportFileBtn(); + + cy.uploadFile('initial-expression-extension.json', false); + cy.contains('button', 'Edit form attributes').click(); + cy.get('#title').should('have.value', 'Item with initial expression extension'); + cy.contains('button', 'Edit questions').click(); + + cy.get('[id^="initialChoices_expression"]').should('be.visible').should('be.checked'); + cy.questionnaireJSON().should((qJson) => { + const ext = qJson.item[0].extension[0]; + expect(qJson.item[0].text).equal('Origine géographique'); + expect(ext.url).equal('http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression') + const valueExpressionResult = { + "description": "prend la valeur de l'origine géographique V2 si elle existe, sinon V1", + "language": "text/fhirpath", + "expression": "%OrigineGeographiqueMere" + }; + + expect(ext.valueExpression.description).equal(valueExpressionResult.description); + expect(ext.valueExpression.language).equal(valueExpressionResult.language); + expect(ext.valueExpression.expression).equal(valueExpressionResult.expression); + + }); }); + it('should have initial value for choice item with answerValueSet', () => { + + cy.openQuestionnaireFromScratch(); + + cy.selectDataType('choice'); + + cy.get('[id^="__\\$answerOptionMethods_answer-option"]') + .should('exist') + .and('be.checked'); + + cy.get('[id^="__\\$answerOptionMethods_value-set"]').should('not.be.checked'); + cy.get('lfb-answer-option').should('be.visible'); + + cy.get('[for^="__\\$answerOptionMethods_value-set"]').click(); + cy.get('#answerValueSet_non-snomed').should('be.visible'); + cy.get('#answerValueSet_non-snomed').should('have.value', 'TO DO'); + + cy.get('[id^="initialChoices_no"]').should('be.visible').should('be.checked'); + + }); }); diff --git a/cypress/support/commands.js b/cypress/support/commands.js index de5da8e..c8f499b 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -71,6 +71,33 @@ Cypress.Commands.add('acceptLoincOnly', () => { cy.contains('lfb-loinc-notice button', 'Accept').click(); }); +Cypress.Commands.add('clickImportFileBtn', () => { + cy.get('button[mattooltip="Advanced options"]').click(); + cy.contains('.cdk-overlay-container button', 'Import a form from local JSON file') + .should('be.visible') + .click(); +}); + +Cypress.Commands.add('clickDuplicateBtn', () => { + cy.get('button[mattooltip="Advanced options"]').click(); + cy.contains('.cdk-overlay-container button', 'Duplicate the current form') + .should('be.visible') + .click(); +}); + +Cypress.Commands.add('openQuestionnaireFromScratch', () => { + cy.get('button').contains('+').click(); + cy.get("#questionnaire-create-dlg") + .find('.modal-title') + .should('have.text', 'Create Questionnaire'); + cy.contains('button', 'Create').as('addNewItem'); + + cy.get('input#title').type('Test Form'); + cy.get('input#id').should('have.value', 'TestForm'); + cy.contains('id is available.').should('be.visible'); + cy.contains('button', 'Create').should('not.be.disabled').click(); + +}); /** * Clear session storage. Used to test LOINC notice. @@ -127,7 +154,13 @@ Cypress.Commands.add('questionnaireJSON', () => { * Command to select data type in item editor. */ Cypress.Commands.add('selectDataType', (type) => { - cy.get('#type').select(type); + cy.contains('label', 'Data type') + .parents('.row') + .find('select#type') + .should('be.visible') + .as('typeSelect'); + + cy.get('@typeSelect').select(type); }); /** @@ -402,8 +435,7 @@ Cypress.Commands.add('getLocalStorageItem', (itemName) => { */ Cypress.Commands.add('resetForm', () => { cy.get('#closeBtn').click({force: true}); - cy.get('input[type="radio"][value="scratch"]').click(); - cy.get('button').contains('Continue').click(); + cy.openQuestionnaireFromScratch(); }); diff --git a/cypress/support/cypress-util.js b/cypress/support/cypress-util.js index f495645..f115af4 100644 --- a/cypress/support/cypress-util.js +++ b/cypress/support/cypress-util.js @@ -8,7 +8,7 @@ export class CypressUtil { */ static getBasePageComponent() { return cy.window() - .should('have.own.property', 'basePageComponent'); + .should('have.own.property', 'basePageComponent'); } /** @@ -99,28 +99,62 @@ export class CypressUtil { } static mockSnomedEditionsAndHapiFhirRessources() { - const fixture = 'snomedEditions.json'; - cy.intercept('https://snowstorm.ihtsdotools.org/fhir/*', (req) => { - console.log(`cy.intecept(): url = ${req.url}; query = ${JSON.stringify(req.query)}`); - req.reply({fixture}); + // Snowstorm SNOMED mock + cy.intercept('https://snowstorm.ihtsdotools.org/fhir/*', {fixture: 'snomedEditions.json'}); + + + cy.intercept('**/CodeSystem/**', {fixture: 'code-system-70.json'}); + + cy.intercept('**/ValueSet/**', {fixture: 'value-set-system.json'}); + + cy.intercept('GET', /\/Questionnaire(\?.*)?$/, (req) => { + if ('_id' in req.query) { + req.reply({ + statusCode: 200, + body: { + resourceType: 'Bundle', + entry: [] + } + }); + } else { + req.reply({ fixture: 'fhir-server-mock-response-vital.json' }); + } + }); + + cy.intercept('PUT', '**/Questionnaire/**', (req) => { + req.reply({ + statusCode: 200, + body: { + resourceType: 'Questionnaire', + id: 'Test Form', + title: 'Test Form', + status: 'active' + } + }); }); + } - cy.intercept('**/Questionnaire/**', (req) => { - const fixtureFile = 'fhir-server-mock-response-vital.json' + static mockIdentifierFhirRessources() { + + cy.intercept('**/CodeSystem?url=https://aphp.fr/ig/fhir/eds/CodeSystem/aphp-eds-name-space-cs', (req) => { + const fixture = 'aphp-eds-name-space-cs.json' console.log(`cy.intecept(): url = ${req.url}; query = ${JSON.stringify(req.query)}`); - req.reply({fixtureFile}); + req.reply({fixture}); }); - cy.intercept('**/CodeSystem/**', (req) => { - const fixture = 'code-system-70.json' + cy.intercept('**/CodeSystem?url=https://aphp.fr/ig/fhir/eds/CodeSystem/aphp-eds-identifier-type-cs', (req) => { + const fixture = 'aphp-eds-identifier-type-cs.json' console.log(`cy.intecept(): url = ${req.url}; query = ${JSON.stringify(req.query)}`); req.reply({fixture}); }); - cy.intercept('**/ValueSet/**', (req) => { - const fixture = 'value-set-system.json' + + cy.intercept('**/ValueSet/$expand?url=https://aphp.fr/ig/fhir/eds/ValueSet/aphp-eds-name-space-vs', (req) => { + const fixture = 'aphp-eds-name-space-vs.json' console.log(`cy.intecept(): url = ${req.url}; query = ${JSON.stringify(req.query)}`); req.reply({fixture}); }); + + } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 6643a1b..3d5ad86 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -150,6 +150,9 @@ import {DatePickerFormatDirective} from "./directives/date-picker-format.directi import {provideMomentDateAdapter} from "@angular/material-moment-adapter"; import {ValueSetCreateDlgComponent} from "./value-set-create-dialog/value-set-create-dlg.component"; import {AlertComponent} from "./alert/alert.component"; +import {FhirSearchPageComponent} from "./lib/widgets/fhir-search-page/fhir-search-page.component"; +import {QuestionnaireCreateDlgComponent} from "./questionnaire-create-dialog/questionnaire-create-dlg.component"; +import {TextAreaComponent} from "./lib/widgets/textarea/textarea.component"; registerLocaleData(localeFr); @@ -272,7 +275,10 @@ function getProviders() { CodeSystemSearchComponent, PreviewResourceDlgComponent, QuestionnaireItemSourceComponent, - AlertComponent + AlertComponent, + FhirSearchPageComponent, + QuestionnaireCreateDlgComponent, + TextAreaComponent ], imports: [ BrowserModule, diff --git a/src/app/base-page/base-page.component.css b/src/app/base-page/base-page.component.css index 009e40b..30f9d32 100644 --- a/src/app/base-page/base-page.component.css +++ b/src/app/base-page/base-page.component.css @@ -42,3 +42,20 @@ .menuIcon{ vertical-align: middle; } + +.fab-center { + position: fixed; + top: 50%; + right: 25%; + transform: translateX(-50%); + width: 60px; + height: 60px; + font-size: 40px; + z-index: 1000; +} +@media (max-width: 768px) { + .fab-center { + top: 60%; + right: 10%; + } +} diff --git a/src/app/base-page/base-page.component.html b/src/app/base-page/base-page.component.html index e3e9e17..cce2b63 100644 --- a/src/app/base-page/base-page.component.html +++ b/src/app/base-page/base-page.component.html @@ -6,27 +6,15 @@