diff --git a/.github/workflows/verify-modernization-ui.yaml b/.github/workflows/verify-modernization-ui.yaml index 1e4aa1efd4..a81f04a261 100644 --- a/.github/workflows/verify-modernization-ui.yaml +++ b/.github/workflows/verify-modernization-ui.yaml @@ -39,6 +39,10 @@ jobs: working-directory: ./apps/modernization-ui run: npm run format:check + - name: Type Check + working-directory: ./apps/modernization-ui + run: npm run typecheck + - name: Unit Test working-directory: ./apps/modernization-ui run: npm run test:all diff --git a/apps/modernization-ui/package-lock.json b/apps/modernization-ui/package-lock.json index 452f99ce4c..9f96521e27 100644 --- a/apps/modernization-ui/package-lock.json +++ b/apps/modernization-ui/package-lock.json @@ -59,6 +59,7 @@ "@types/react-dom": "^18", "@typescript-eslint/eslint-plugin": "^8.34.0", "@typescript-eslint/parser": "^8.34.0", + "@vitejs/plugin-legacy": "^8.2.3", "@vitejs/plugin-react": "^6.0.1", "@vitest/coverage-v8": "^4.1.0", "eslint": "9.31.0", @@ -305,13 +306,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", - "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.7", - "@babel/types": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -321,13 +322,13 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", - "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz", + "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.27.3" + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -351,18 +352,36 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.29.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.3.tgz", - "integrity": "sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz", + "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/traverse": "^7.29.7", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz", + "integrity": "sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-member-expression-to-functions": "^7.28.5", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.29.0", + "@babel/helper-annotate-as-pure": "^7.29.7", + "regexpu-core": "^6.3.1", "semver": "^6.3.1" }, "engines": { @@ -372,6 +391,23 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/helper-globals": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", @@ -382,14 +418,14 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", - "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz", + "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5" + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -415,9 +451,1032 @@ "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.29.7", - "@babel/helper-validator-identifier": "^7.29.7", - "@babel/traverse": "^7.29.7" + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz", + "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz", + "integrity": "sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-wrap-function": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz", + "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz", + "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz", + "integrity": "sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz", + "integrity": "sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz", + "integrity": "sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "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.29.7", + "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.29.7.tgz", + "integrity": "sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz", + "integrity": "sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz", + "integrity": "sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz", + "integrity": "sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz", + "integrity": "sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz", + "integrity": "sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@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==", + "dev": true, + "license": "MIT", + "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-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz", + "integrity": "sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz", + "integrity": "sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz", + "integrity": "sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz", + "integrity": "sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz", + "integrity": "sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz", + "integrity": "sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz", + "integrity": "sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz", + "integrity": "sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz", + "integrity": "sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/template": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz", + "integrity": "sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz", + "integrity": "sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz", + "integrity": "sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz", + "integrity": "sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz", + "integrity": "sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz", + "integrity": "sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz", + "integrity": "sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz", + "integrity": "sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz", + "integrity": "sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz", + "integrity": "sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz", + "integrity": "sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz", + "integrity": "sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz", + "integrity": "sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz", + "integrity": "sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz", + "integrity": "sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz", + "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.8.tgz", + "integrity": "sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz", + "integrity": "sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz", + "integrity": "sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz", + "integrity": "sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz", + "integrity": "sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz", + "integrity": "sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz", + "integrity": "sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7", + "@babel/plugin-transform-parameters": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz", + "integrity": "sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz", + "integrity": "sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz", + "integrity": "sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz", + "integrity": "sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz", + "integrity": "sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz", + "integrity": "sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz", + "integrity": "sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz", + "integrity": "sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz", + "integrity": "sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -426,146 +1485,248 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", - "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz", + "integrity": "sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.27.1" + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz", + "integrity": "sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", - "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.8.tgz", + "integrity": "sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.28.5", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.28.6" + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", - "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz", + "integrity": "sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-string-parser": { + "node_modules/@babel/plugin-transform-template-literals": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", - "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz", + "integrity": "sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==", + "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-validator-identifier": { + "node_modules/@babel/plugin-transform-typeof-symbol": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", - "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz", + "integrity": "sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==", + "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-validator-option": { + "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", - "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz", + "integrity": "sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helpers": { + "node_modules/@babel/plugin-transform-unicode-property-regex": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", - "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz", + "integrity": "sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7" + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/parser": { + "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz", + "integrity": "sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.29.7" - }, - "bin": { - "parser": "bin/babel-parser.js" + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", - "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz", + "integrity": "sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", - "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "node_modules/@babel/preset-env": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.7.tgz", + "integrity": "sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/compat-data": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.29.7", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.29.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.29.7", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.29.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.29.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.29.7", + "@babel/plugin-syntax-import-attributes": "^7.29.7", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.29.7", + "@babel/plugin-transform-async-generator-functions": "^7.29.7", + "@babel/plugin-transform-async-to-generator": "^7.29.7", + "@babel/plugin-transform-block-scoped-functions": "^7.29.7", + "@babel/plugin-transform-block-scoping": "^7.29.7", + "@babel/plugin-transform-class-properties": "^7.29.7", + "@babel/plugin-transform-class-static-block": "^7.29.7", + "@babel/plugin-transform-classes": "^7.29.7", + "@babel/plugin-transform-computed-properties": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7", + "@babel/plugin-transform-dotall-regex": "^7.29.7", + "@babel/plugin-transform-duplicate-keys": "^7.29.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.7", + "@babel/plugin-transform-dynamic-import": "^7.29.7", + "@babel/plugin-transform-explicit-resource-management": "^7.29.7", + "@babel/plugin-transform-exponentiation-operator": "^7.29.7", + "@babel/plugin-transform-export-namespace-from": "^7.29.7", + "@babel/plugin-transform-for-of": "^7.29.7", + "@babel/plugin-transform-function-name": "^7.29.7", + "@babel/plugin-transform-json-strings": "^7.29.7", + "@babel/plugin-transform-literals": "^7.29.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.29.7", + "@babel/plugin-transform-member-expression-literals": "^7.29.7", + "@babel/plugin-transform-modules-amd": "^7.29.7", + "@babel/plugin-transform-modules-commonjs": "^7.29.7", + "@babel/plugin-transform-modules-systemjs": "^7.29.7", + "@babel/plugin-transform-modules-umd": "^7.29.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.7", + "@babel/plugin-transform-new-target": "^7.29.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.29.7", + "@babel/plugin-transform-numeric-separator": "^7.29.7", + "@babel/plugin-transform-object-rest-spread": "^7.29.7", + "@babel/plugin-transform-object-super": "^7.29.7", + "@babel/plugin-transform-optional-catch-binding": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7", + "@babel/plugin-transform-parameters": "^7.29.7", + "@babel/plugin-transform-private-methods": "^7.29.7", + "@babel/plugin-transform-private-property-in-object": "^7.29.7", + "@babel/plugin-transform-property-literals": "^7.29.7", + "@babel/plugin-transform-regenerator": "^7.29.7", + "@babel/plugin-transform-regexp-modifiers": "^7.29.7", + "@babel/plugin-transform-reserved-words": "^7.29.7", + "@babel/plugin-transform-shorthand-properties": "^7.29.7", + "@babel/plugin-transform-spread": "^7.29.7", + "@babel/plugin-transform-sticky-regex": "^7.29.7", + "@babel/plugin-transform-template-literals": "^7.29.7", + "@babel/plugin-transform-typeof-symbol": "^7.29.7", + "@babel/plugin-transform-unicode-escapes": "^7.29.7", + "@babel/plugin-transform-unicode-property-regex": "^7.29.7", + "@babel/plugin-transform-unicode-regex": "^7.29.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.29.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -574,15 +1735,12 @@ "@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==", + "node_modules/@babel/preset-env/node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, "engines": { "node": ">=6.9.0" }, @@ -590,6 +1748,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/runtime": { "version": "7.29.2", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", @@ -614,17 +1787,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", - "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.7", + "@babel/generator": "^7.29.8", "@babel/helper-globals": "^7.29.7", - "@babel/parser": "^7.29.7", + "@babel/parser": "^7.29.8", "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7", + "@babel/types": "^7.29.8", "debug": "^4.3.1" }, "engines": { @@ -632,9 +1805,9 @@ } }, "node_modules/@babel/types": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.29.7", @@ -6190,6 +7363,47 @@ "sass-embedded-linux-x64": "^1.89.0" } }, + "node_modules/@vitejs/plugin-legacy": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-8.2.3.tgz", + "integrity": "sha512-MMHLsn/0FrBkCQyb1x44cPYGwkfqcGr2FblcEP2ne79aXe7d5tFKoZ09xs5C4wuh8fOu2JRaNhgAS3K3uvUeJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.29.7", + "@babel/plugin-transform-dynamic-import": "^7.29.7", + "@babel/plugin-transform-modules-systemjs": "^7.29.8", + "@babel/preset-env": "^7.29.7", + "babel-plugin-polyfill-corejs3": "^0.14.2", + "babel-plugin-polyfill-regenerator": "^0.6.8", + "browserslist": "^4.28.7", + "browserslist-to-esbuild": "^2.1.1", + "core-js": "^3.49.0", + "magic-string": "^1.1.0", + "regenerator-runtime": "^0.14.1", + "systemjs": "^6.15.1" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "peerDependencies": { + "terser": "^5.16.0", + "vite": "^8.0.0" + } + }, + "node_modules/@vitejs/plugin-legacy/node_modules/magic-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.1.0.tgz", + "integrity": "sha512-kS3VHe0nEPST2saQV4Rbkchcd3UBRkVTQHo1D3h/ZTwFDhai/mfKkmtPAtD129EOI7K3HlHIsFOt0WrI2/oU9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, "node_modules/@vitejs/plugin-react": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.1.tgz", @@ -7192,6 +8406,48 @@ "node": ">= 6" } }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", @@ -7203,9 +8459,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.10.29", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.29.tgz", - "integrity": "sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==", + "version": "2.11.13", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.13.tgz", + "integrity": "sha512-k9HNuUVMlqVjQ9UHzfPjIqiDbWw7WqT1AoT7GL8VwvF3r0ZfArtgiSPAlmupyNquNgOJHTuH4CKYf8ttMTWBTQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -7258,9 +8514,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "version": "4.28.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.8.tgz", + "integrity": "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==", "dev": true, "funding": [ { @@ -7278,11 +8534,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" + "baseline-browser-mapping": "^2.11.12", + "caniuse-lite": "^1.0.30001809", + "electron-to-chromium": "^1.5.402", + "node-releases": "^2.0.53", + "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" @@ -7291,6 +8547,25 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/browserslist-to-esbuild": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/browserslist-to-esbuild/-/browserslist-to-esbuild-2.1.1.tgz", + "integrity": "sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "meow": "^13.0.0" + }, + "bin": { + "browserslist-to-esbuild": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "browserslist": "*" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -7398,9 +8673,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001792", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz", - "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==", + "version": "1.0.30001809", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001809.tgz", + "integrity": "sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==", "dev": true, "funding": [ { @@ -7830,6 +9105,23 @@ "url": "https://opencollective.com/core-js" } }, + "node_modules/core-js-compat": { + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.50.0.tgz", + "integrity": "sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.7" + }, + "engines": { + "node": ">=6.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/cosmiconfig": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", @@ -8337,9 +9629,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.354", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.354.tgz", - "integrity": "sha512-JaBHwWcfIdmSAfWM5l3uwjGd431j8YEMikZ+K/2nXVuBqJKyZ0f+2h4n4JY5AyNiZmnY9qQr2RU3v9DxDmHMNg==", + "version": "1.5.403", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.403.tgz", + "integrity": "sha512-MQsYmdaLzvaCX5j+ZZBr5Fm6uCCnPQcRtlvmvRlWqrXy+BH2O4ffXIAScF+JQznQWB9brWp4lSD9Z4yNmaf2BA==", "dev": true, "license": "ISC" }, @@ -12519,6 +13811,19 @@ "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", "license": "MIT" }, + "node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -12901,11 +14206,14 @@ } }, "node_modules/node-releases": { - "version": "2.0.44", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.44.tgz", - "integrity": "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==", + "version": "2.0.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.53.tgz", + "integrity": "sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/normalize-path": { "version": "2.1.1", @@ -14221,6 +15529,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "license": "MIT" + }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", @@ -14242,6 +15577,44 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz", + "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, "node_modules/rehackt": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz", @@ -15634,6 +17007,13 @@ "node": ">=18" } }, + "node_modules/systemjs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.15.1.tgz", + "integrity": "sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==", + "dev": true, + "license": "MIT" + }, "node_modules/tabbable": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz", @@ -15656,9 +17036,9 @@ } }, "node_modules/terser": { - "version": "5.47.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.47.1.tgz", - "integrity": "sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.49.2.tgz", + "integrity": "sha512-rGbJiKeQ4WDe3EXlDAIaQcwftVfv2Q8o1awFNfvXolJYKkb1AuZY1RTOmqx4LJXZENbWZA7eIsYGHuEzHsi1nQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -16099,6 +17479,50 @@ "dev": true, "license": "MIT" }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -16177,9 +17601,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.1.tgz", + "integrity": "sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==", "dev": true, "funding": [ { diff --git a/apps/modernization-ui/package.json b/apps/modernization-ui/package.json index 7ed648abd8..eecc036ae7 100644 --- a/apps/modernization-ui/package.json +++ b/apps/modernization-ui/package.json @@ -65,6 +65,7 @@ "@types/react-dom": "^18", "@typescript-eslint/eslint-plugin": "^8.34.0", "@typescript-eslint/parser": "^8.34.0", + "@vitejs/plugin-legacy": "^8.2.3", "@vitejs/plugin-react": "^6.0.1", "@vitest/coverage-v8": "^4.1.0", "eslint": "9.31.0", @@ -93,6 +94,8 @@ "scripts": { "start": "vite", "build": "vite build", + "typecheck": "tsc -b --noEmit", + "typecheck:watch": "tsc -b --noEmit --watch", "preview": "vite preview", "test": "vitest --changed", "test:all": "vitest run", diff --git a/apps/modernization-ui/src/apps/deduplication/configuration/match-configuration/notification-cards/SelectPass.spec.tsx b/apps/modernization-ui/src/apps/deduplication/configuration/match-configuration/notification-cards/SelectPass.spec.tsx index a38f470f9d..c19717a93d 100644 --- a/apps/modernization-ui/src/apps/deduplication/configuration/match-configuration/notification-cards/SelectPass.spec.tsx +++ b/apps/modernization-ui/src/apps/deduplication/configuration/match-configuration/notification-cards/SelectPass.spec.tsx @@ -31,7 +31,7 @@ describe('SelectPass', () => { const { getAllByText } = render(); expect( getAllByText( - (content, element) => + (_content, element) => element?.textContent === 'To get started, select "Add pass configuration" from the left panel.' )[0] ).toBeInTheDocument(); diff --git a/apps/modernization-ui/src/apps/deduplication/configuration/match-configuration/pass-configuration/pass-form/blocking-criteria/panel/BlockingCriteriaSidePanel.spec.tsx b/apps/modernization-ui/src/apps/deduplication/configuration/match-configuration/pass-configuration/pass-form/blocking-criteria/panel/BlockingCriteriaSidePanel.spec.tsx index c3c598ac1e..913815ffc6 100644 --- a/apps/modernization-ui/src/apps/deduplication/configuration/match-configuration/pass-configuration/pass-form/blocking-criteria/panel/BlockingCriteriaSidePanel.spec.tsx +++ b/apps/modernization-ui/src/apps/deduplication/configuration/match-configuration/pass-configuration/pass-form/blocking-criteria/panel/BlockingCriteriaSidePanel.spec.tsx @@ -162,7 +162,7 @@ describe('BlockingCriteriaSidePanel', () => { expect(cancel).toHaveTextContent('Cancel'); await user.click(cancel); - expect(onCancel).toBeCalledTimes(1); + expect(onCancel).toHaveBeenCalledTimes(1); }); it('should trigger onAccept when Add attribute(s) is clicked', async () => { @@ -177,6 +177,6 @@ describe('BlockingCriteriaSidePanel', () => { await user.click(add); - expect(onAccept).toBeCalledTimes(1); + expect(onAccept).toHaveBeenCalledTimes(1); }); }); diff --git a/apps/modernization-ui/src/apps/deduplication/configuration/match-configuration/pass-configuration/pass-form/matching-criteria/panel/MatchingCriteriaSidePanel.spec.tsx b/apps/modernization-ui/src/apps/deduplication/configuration/match-configuration/pass-configuration/pass-form/matching-criteria/panel/MatchingCriteriaSidePanel.spec.tsx index 13314f5a87..000e02f1df 100644 --- a/apps/modernization-ui/src/apps/deduplication/configuration/match-configuration/pass-configuration/pass-form/matching-criteria/panel/MatchingCriteriaSidePanel.spec.tsx +++ b/apps/modernization-ui/src/apps/deduplication/configuration/match-configuration/pass-configuration/pass-form/matching-criteria/panel/MatchingCriteriaSidePanel.spec.tsx @@ -240,7 +240,7 @@ describe('MatchingCriteriaSidePanel', () => { await user.click(cancel); - expect(onCancel).toBeCalledTimes(1); + expect(onCancel).toHaveBeenCalledTimes(1); }); it('should trigger onAccept when Add attribute(s) is clicked', async () => { @@ -255,6 +255,6 @@ describe('MatchingCriteriaSidePanel', () => { await user.click(add); - expect(onAccept).toBeCalledWith([]); + expect(onAccept).toHaveBeenCalledWith([]); }); }); diff --git a/apps/modernization-ui/src/apps/deduplication/patient-merge/details/merge-review/patient-form/general/GeneralSelection.spec.tsx b/apps/modernization-ui/src/apps/deduplication/patient-merge/details/merge-review/patient-form/general/GeneralSelection.spec.tsx index 5e3639dec6..84e5274101 100644 --- a/apps/modernization-ui/src/apps/deduplication/patient-merge/details/merge-review/patient-form/general/GeneralSelection.spec.tsx +++ b/apps/modernization-ui/src/apps/deduplication/patient-merge/details/merge-review/patient-form/general/GeneralSelection.spec.tsx @@ -3,8 +3,6 @@ import { FormProvider, useForm } from 'react-hook-form'; import { MergeCandidate } from 'apps/deduplication/api/model/MergeCandidate'; -import { SexAndBirthSelection } from '../sex-and-birth/SexAndBirthSelection'; - import { GeneralSelection } from './GeneralSelection'; const mergeCandidates: Partial[] = [ diff --git a/apps/modernization-ui/src/apps/deduplication/patient-merge/landing/matches-requiring-review-table/MatchesRequiringReviewTable.spec.tsx b/apps/modernization-ui/src/apps/deduplication/patient-merge/landing/matches-requiring-review-table/MatchesRequiringReviewTable.spec.tsx index 545a011430..97abee73a4 100644 --- a/apps/modernization-ui/src/apps/deduplication/patient-merge/landing/matches-requiring-review-table/MatchesRequiringReviewTable.spec.tsx +++ b/apps/modernization-ui/src/apps/deduplication/patient-merge/landing/matches-requiring-review-table/MatchesRequiringReviewTable.spec.tsx @@ -113,41 +113,41 @@ describe('MatchesRequiringReviewTable', () => { // default sort await waitFor(() => { - expect(mockFetch).lastCalledWith(0, 20, 'identified,desc'); + expect(mockFetch).toHaveBeenLastCalledWith(0, 20, 'identified,desc'); }); await user.click(getByText('Patient ID').children[0]); // sort on patient Id asc - expect(mockFetch).lastCalledWith(0, 20, 'patient-id,asc'); + expect(mockFetch).toHaveBeenLastCalledWith(0, 20, 'patient-id,asc'); await user.click(getByText('Patient ID').children[0]); // sort on patient Id desc - expect(mockFetch).lastCalledWith(0, 20, 'patient-id,desc'); + expect(mockFetch).toHaveBeenLastCalledWith(0, 20, 'patient-id,desc'); await user.click(getByText('Person name').children[0]); // sort on Person name - expect(mockFetch).lastCalledWith(0, 20, 'name,asc'); + expect(mockFetch).toHaveBeenLastCalledWith(0, 20, 'name,asc'); await user.click(getByText('Person name').children[0]); // sort on Person name desc - expect(mockFetch).lastCalledWith(0, 20, 'name,desc'); + expect(mockFetch).toHaveBeenLastCalledWith(0, 20, 'name,desc'); await user.click(getByText('Date created').children[0]); // sort on Date created - expect(mockFetch).lastCalledWith(0, 20, 'created,asc'); + expect(mockFetch).toHaveBeenLastCalledWith(0, 20, 'created,asc'); await user.click(getByText('Date created').children[0]); // sort on Date created desc - expect(mockFetch).lastCalledWith(0, 20, 'created,desc'); + expect(mockFetch).toHaveBeenLastCalledWith(0, 20, 'created,desc'); await user.click(getByText('Date identified').children[0]); // sort on Date identified - expect(mockFetch).lastCalledWith(0, 20, 'identified,asc'); + expect(mockFetch).toHaveBeenLastCalledWith(0, 20, 'identified,asc'); await user.click(getByText('Date identified').children[0]); // sort on Date identified desc - expect(mockFetch).lastCalledWith(0, 20, 'identified,desc'); + expect(mockFetch).toHaveBeenLastCalledWith(0, 20, 'identified,desc'); await user.click(getByText('Number of matching records').children[0]); // sort on Number of matching records - expect(mockFetch).lastCalledWith(0, 20, 'count,asc'); + expect(mockFetch).toHaveBeenLastCalledWith(0, 20, 'count,asc'); await user.click(getByText('Number of matching records').children[0]); // sort on Number of matching records desc - expect(mockFetch).lastCalledWith(0, 20, 'count,desc'); + expect(mockFetch).toHaveBeenLastCalledWith(0, 20, 'count,desc'); await user.click(getByText('Number of matching records').children[0]); // clear sort on Number - expect(mockFetch).lastCalledWith(0, 20, 'identified,desc'); // back to default + expect(mockFetch).toHaveBeenLastCalledWith(0, 20, 'identified,desc'); // back to default }); it('should display the proper match data', () => { diff --git a/apps/modernization-ui/src/apps/page-builder/components/AddQuestion/fields/BasicInformationFields.spec.tsx b/apps/modernization-ui/src/apps/page-builder/components/AddQuestion/fields/BasicInformationFields.spec.tsx index b7265c46d2..11854091e7 100644 --- a/apps/modernization-ui/src/apps/page-builder/components/AddQuestion/fields/BasicInformationFields.spec.tsx +++ b/apps/modernization-ui/src/apps/page-builder/components/AddQuestion/fields/BasicInformationFields.spec.tsx @@ -1,4 +1,4 @@ -import { render, renderHook } from '@testing-library/react'; +import { render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { FormProvider, useForm } from 'react-hook-form'; @@ -6,13 +6,6 @@ import { CreateQuestionForm } from '../QuestionForm'; import { BasicInformationFields } from './BasicInformationFields'; -const { result } = renderHook(() => - useForm({ - mode: 'onBlur', - defaultValues: { uniqueId: 'duplicateUniqueId', uniqueName: 'duplicateUniqueName' }, - }) -); - const setError = vi.fn(); const validate = vi.fn(); const mockUseQuestionValidation = { diff --git a/apps/modernization-ui/src/apps/page-builder/components/AddQuestion/fields/DataMartFields.spec.tsx b/apps/modernization-ui/src/apps/page-builder/components/AddQuestion/fields/DataMartFields.spec.tsx index 1e00b160b8..85ebc877b3 100644 --- a/apps/modernization-ui/src/apps/page-builder/components/AddQuestion/fields/DataMartFields.spec.tsx +++ b/apps/modernization-ui/src/apps/page-builder/components/AddQuestion/fields/DataMartFields.spec.tsx @@ -1,23 +1,10 @@ -import { render, renderHook } from '@testing-library/react'; +import { render } from '@testing-library/react'; import { FormProvider, useForm } from 'react-hook-form'; import { CreateQuestionForm } from '../QuestionForm'; import { DataMartFields } from './DataMartFields'; -const { result } = renderHook(() => - useForm({ - mode: 'onBlur', - defaultValues: { - subgroup: 'RSK', - dataMartInfo: { - dataMartColumnName: 'duplicateDataMartColumnName', - rdbColumnName: 'duplicateRdbColumnName', - }, - }, - }) -); - const setError = vi.fn(); const validate = vi.fn(); const mockUseQuestionValidation = { diff --git a/apps/modernization-ui/src/apps/page-builder/components/SaveTemplate/SaveTemplate.spec.tsx b/apps/modernization-ui/src/apps/page-builder/components/SaveTemplate/SaveTemplate.spec.tsx index 01fa846e22..d3e8ea435c 100644 --- a/apps/modernization-ui/src/apps/page-builder/components/SaveTemplate/SaveTemplate.spec.tsx +++ b/apps/modernization-ui/src/apps/page-builder/components/SaveTemplate/SaveTemplate.spec.tsx @@ -1,3 +1,5 @@ +import { createRef } from 'react'; + import { render } from '@testing-library/react'; import { BrowserRouter } from 'react-router'; @@ -5,12 +7,14 @@ import { SaveTemplates } from './SaveTemplate'; describe('When SaveTemplates component loads', () => { it('Save button should be disabled', () => { + const mockModalRef = createRef(); + const { container } = render( - + ); const btn = container.getElementsByClassName('usa-button')[0]; - expect(btn.hasAttribute('disabled')); + expect(btn).toBeDisabled(); }); }); diff --git a/apps/modernization-ui/src/apps/page-builder/components/TabbedButtonBar/TabbedButtonBar.spec.tsx b/apps/modernization-ui/src/apps/page-builder/components/TabbedButtonBar/TabbedButtonBar.spec.tsx index ac2e2e21aa..664153edc8 100644 --- a/apps/modernization-ui/src/apps/page-builder/components/TabbedButtonBar/TabbedButtonBar.spec.tsx +++ b/apps/modernization-ui/src/apps/page-builder/components/TabbedButtonBar/TabbedButtonBar.spec.tsx @@ -18,7 +18,7 @@ describe('Tabbed button bar', () => { await waitFor(() => { fireEvent.click(buttons[1]); }); - expect(mockFn).toBeCalledWith('2'); + expect(mockFn).toHaveBeenCalledWith('2'); }); it('should set active class on click', async () => { diff --git a/apps/modernization-ui/src/apps/page-builder/condition/search/ConditionSearch.tsx b/apps/modernization-ui/src/apps/page-builder/condition/search/ConditionSearch.tsx index 39f8d91f98..4a4b23d7b9 100644 --- a/apps/modernization-ui/src/apps/page-builder/condition/search/ConditionSearch.tsx +++ b/apps/modernization-ui/src/apps/page-builder/condition/search/ConditionSearch.tsx @@ -11,7 +11,7 @@ import styles from './condition-search.module.scss'; type Props = { id: string; - onConditionSelect: (ids: number[]) => void; + onConditionSelect: (ids: string[]) => void; onCancel: () => void; onCreateNew: () => void; }; @@ -32,7 +32,7 @@ const ConditionSearchContent = ({ id, onConditionSelect, onCancel, onCreateNew } const { search, response, isLoading, keyword, reset } = useConditionSearch(); const { page, ready, request } = usePagination(); const [sort, setSort] = useState(); - const [selected, setSelected] = useState([]); + const [selected, setSelected] = useState([]); const [resetTable, setResetTable] = useState(false); useEffect(() => { diff --git a/apps/modernization-ui/src/apps/page-builder/condition/search/ConditionTable.tsx b/apps/modernization-ui/src/apps/page-builder/condition/search/ConditionTable.tsx index 95bf04dcf6..af7f7de466 100644 --- a/apps/modernization-ui/src/apps/page-builder/condition/search/ConditionTable.tsx +++ b/apps/modernization-ui/src/apps/page-builder/condition/search/ConditionTable.tsx @@ -55,7 +55,6 @@ const asTableRow = (condition: Condition): TableBody => ({ title: condition.conditionFamily, }, { id: 5, title: condition.coinfectionGroup }, - { id: 6, title: condition.nndInd }, { id: 7, title: condition.page }, { id: 8, title: condition.status === 'A' ? 'Active' : 'Inactive' }, @@ -65,13 +64,14 @@ const asTableRow = (condition: Condition): TableBody => ({ type Props = { conditions: Condition[]; isLoading: boolean; - onSelectionChange: (selection: number[]) => void; + onSelectionChange: (selection: string[]) => void; onSort?: (sort?: ConditionSort) => void; }; + export const ConditionTable = ({ conditions, isLoading, onSelectionChange, onSort }: Props) => { const { page, request } = usePagination(); const [tableRows, setTableRows] = useState([]); - const [selected, setSelected] = useState([]); + const [selected, setSelected] = useState([]); useEffect(() => { setSelected([]); @@ -82,11 +82,15 @@ export const ConditionTable = ({ conditions, isLoading, onSelectionChange, onSor onSelectionChange(selected); }, [selected]); - const handleSelect = (event: ChangeEvent, item: { id: number }) => { + const handleSelect = (event: ChangeEvent, item: TableBody) => { + if (item.id === undefined || item.id === null) return; + + const itemId = String(item.id); + if (event.target.checked) { - setSelected((current) => [...current, item.id]); + setSelected((current) => [...current, itemId]); } else { - setSelected((current) => current.filter((id) => id !== item.id)); + setSelected((current) => current.filter((id) => id !== itemId)); } }; diff --git a/apps/modernization-ui/src/apps/page-builder/page/library/usePageSummaryAPI.ts b/apps/modernization-ui/src/apps/page-builder/page/library/usePageSummaryAPI.ts index fa09cac103..d2d56612b2 100644 --- a/apps/modernization-ui/src/apps/page-builder/page/library/usePageSummaryAPI.ts +++ b/apps/modernization-ui/src/apps/page-builder/page/library/usePageSummaryAPI.ts @@ -1,7 +1,7 @@ import { PagePageSummary, PageSummaryService } from 'apps/page-builder/generated'; export const fetchPageSummaries = async ( - token: string, + _token: string, search?: string, sort?: string, currentPage?: number, diff --git a/apps/modernization-ui/src/apps/page-builder/page/management/edit/question/GroupQuestion/RepeatingBlock.tsx b/apps/modernization-ui/src/apps/page-builder/page/management/edit/question/GroupQuestion/RepeatingBlock.tsx index fa0a501d42..ebfcd892ed 100644 --- a/apps/modernization-ui/src/apps/page-builder/page/management/edit/question/GroupQuestion/RepeatingBlock.tsx +++ b/apps/modernization-ui/src/apps/page-builder/page/management/edit/question/GroupQuestion/RepeatingBlock.tsx @@ -72,7 +72,7 @@ export const RepeatingBlock = ({ questions, valid, setValid }: Props) => { - {fields.map((item: Batch, index: number) => ( + {fields.map((_item: Batch, index: number) => (

{index + 1}

diff --git a/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderQuestion/ReorderQuestion.tsx b/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderQuestion/ReorderQuestion.tsx index 8bc7e55d28..acfb486d57 100644 --- a/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderQuestion/ReorderQuestion.tsx +++ b/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderQuestion/ReorderQuestion.tsx @@ -24,9 +24,9 @@ export const ReorderQuestion = ({ question, index, visible }: Props) => { >
- +
- + {question.displayComponent === 1003 ? (

< Hyperlink >

) : question.displayComponent === 1012 ? ( diff --git a/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderSection/ReorderSection.tsx b/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderSection/ReorderSection.tsx index 6f1e266e24..c64155c4f6 100644 --- a/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderSection/ReorderSection.tsx +++ b/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderSection/ReorderSection.tsx @@ -46,15 +46,15 @@ export const ReorderSection = ({ section, index, visible }: Props) => {
setSubsectionsOpen(!subsectionsOpen)}> {subsectionsOpen ? ( - + ) : ( - + )}
- +
- +

{section.name}

diff --git a/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderSubsection/ReorderSubsection.tsx b/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderSubsection/ReorderSubsection.tsx index 111188f2ae..01d0015afc 100644 --- a/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderSubsection/ReorderSubsection.tsx +++ b/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderSubsection/ReorderSubsection.tsx @@ -45,15 +45,15 @@ export const ReorderSubsection = ({ subsection, index, visible }: Props) => {
setQuestionsOpen(!questionsOpen)}> {!questionsOpen ? ( - + ) : ( - + )}
- +
- + {subsection.name}
diff --git a/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderTab/ReorderTab.tsx b/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderTab/ReorderTab.tsx index c0045bb493..9c38e71feb 100644 --- a/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderTab/ReorderTab.tsx +++ b/apps/modernization-ui/src/apps/page-builder/page/management/edit/reorder/ReorderTab/ReorderTab.tsx @@ -45,15 +45,15 @@ export const ReorderTab = ({ tab, index, visible }: Props) => {
setSectionsOpen(!sectionsOpen)}> {sectionsOpen ? ( - + ) : ( - + )}
- +
- +

{tab.name}

diff --git a/apps/modernization-ui/src/apps/page-builder/page/management/edit/section/manage/ManageSection.spec.tsx b/apps/modernization-ui/src/apps/page-builder/page/management/edit/section/manage/ManageSection.spec.tsx index 3c92849f19..3b08b7633c 100644 --- a/apps/modernization-ui/src/apps/page-builder/page/management/edit/section/manage/ManageSection.spec.tsx +++ b/apps/modernization-ui/src/apps/page-builder/page/management/edit/section/manage/ManageSection.spec.tsx @@ -61,7 +61,14 @@ describe('when ManageSection renders', () => { it('should show the heading', () => { const { getByTestId } = render( - + ); const header = getByTestId('header'); @@ -71,7 +78,14 @@ describe('when ManageSection renders', () => { it('should display two buttons', () => { const { container } = render( - + ); const buttons = container.getElementsByTagName('button'); diff --git a/apps/modernization-ui/src/apps/page-builder/page/management/edit/section/manage/ManageSectionTile/ManageSectionTile.spec.tsx b/apps/modernization-ui/src/apps/page-builder/page/management/edit/section/manage/ManageSectionTile/ManageSectionTile.spec.tsx index 698fc7a095..288e160349 100644 --- a/apps/modernization-ui/src/apps/page-builder/page/management/edit/section/manage/ManageSectionTile/ManageSectionTile.spec.tsx +++ b/apps/modernization-ui/src/apps/page-builder/page/management/edit/section/manage/ManageSectionTile/ManageSectionTile.spec.tsx @@ -88,14 +88,14 @@ describe('when ManageSectionTile renders', () => {
)} diff --git a/apps/modernization-ui/src/apps/page-builder/page/management/edit/section/manage/ManageSectionTile/ManageSectionTile.tsx b/apps/modernization-ui/src/apps/page-builder/page/management/edit/section/manage/ManageSectionTile/ManageSectionTile.tsx index 8ce535c005..34211fcd9e 100644 --- a/apps/modernization-ui/src/apps/page-builder/page/management/edit/section/manage/ManageSectionTile/ManageSectionTile.tsx +++ b/apps/modernization-ui/src/apps/page-builder/page/management/edit/section/manage/ManageSectionTile/ManageSectionTile.tsx @@ -66,10 +66,10 @@ export const ManageSectionTile = ({
- +
- +
{`${section.name} (${section.subSections.length})`}
@@ -112,10 +112,10 @@ export const ManageSectionTile = ({ ) : (
- +
- + {`${section.name} (${section.subSections.length})`} diff --git a/apps/modernization-ui/src/apps/page-builder/pages/AddNewPage/AddNewPage.tsx b/apps/modernization-ui/src/apps/page-builder/pages/AddNewPage/AddNewPage.tsx index dc38b09eba..4b560792e7 100644 --- a/apps/modernization-ui/src/apps/page-builder/pages/AddNewPage/AddNewPage.tsx +++ b/apps/modernization-ui/src/apps/page-builder/pages/AddNewPage/AddNewPage.tsx @@ -65,10 +65,8 @@ export const AddNewPage = () => { }); }, [watch.eventType]); - const handleAddConditions = (conditions: number[]) => { - const newConditions = conditions - .map((id) => String(id)) - .filter((id) => !form.getValues('conditionIds').includes(id)); + const handleAddConditions = (conditions: string[]) => { + const newConditions = conditions.filter((id) => !form.getValues('conditionIds').includes(id)); form.setValue('conditionIds', newConditions.concat(form.getValues('conditionIds'))); conditionLookupModal.current?.toggleModal(); }; diff --git a/apps/modernization-ui/src/apps/page-builder/pages/BusinessRulesLibrary/TargetQuestion/TargetQuestion.tsx b/apps/modernization-ui/src/apps/page-builder/pages/BusinessRulesLibrary/TargetQuestion/TargetQuestion.tsx index 89101ee08e..dbeeb3f192 100644 --- a/apps/modernization-ui/src/apps/page-builder/pages/BusinessRulesLibrary/TargetQuestion/TargetQuestion.tsx +++ b/apps/modernization-ui/src/apps/page-builder/pages/BusinessRulesLibrary/TargetQuestion/TargetQuestion.tsx @@ -180,7 +180,7 @@ export const TargetQuestion = ({ setTargetList([]); }} > - + {section.name} @@ -203,7 +203,7 @@ export const TargetQuestion = ({ } }} > - + { +export const createTextQuestion = async (_token: string, request: CreateTextQuestionRequest) => { return await QuestionControllerService.createTextQuestion({ requestBody: request, }); }; -export const createNumericQuestion = async (token: string, request: CreateNumericQuestionRequest) => { +export const createNumericQuestion = async (_token: string, request: CreateNumericQuestionRequest) => { return await QuestionControllerService.createNumericQuestion({ requestBody: request, }); }; -export const createDateQuestion = async (token: string, request: CreateDateQuestionRequest) => { +export const createDateQuestion = async (_token: string, request: CreateDateQuestionRequest) => { return await QuestionControllerService.createDateQuestion({ requestBody: request, }); }; -export const createCodedQuestion = async (token: string, request: CreateCodedQuestionRequest) => { +export const createCodedQuestion = async (_token: string, request: CreateCodedQuestionRequest) => { return await QuestionControllerService.createCodedQuestion({ requestBody: request, }); diff --git a/apps/modernization-ui/src/apps/patient/add/cancelAddPatientPanel/CancelAddPatientPanel.spec.tsx b/apps/modernization-ui/src/apps/patient/add/cancelAddPatientPanel/CancelAddPatientPanel.spec.tsx index 5c1b14e830..59a4c5a5ab 100644 --- a/apps/modernization-ui/src/apps/patient/add/cancelAddPatientPanel/CancelAddPatientPanel.spec.tsx +++ b/apps/modernization-ui/src/apps/patient/add/cancelAddPatientPanel/CancelAddPatientPanel.spec.tsx @@ -29,7 +29,7 @@ describe('CancelAddPatientPanel', () => { await user.click(closer); - expect(onClose).toBeCalled(); + expect(onClose).toHaveBeenCalledWith(); }); it('should call onConfirm when confirm button is clicked', async () => { @@ -42,7 +42,7 @@ describe('CancelAddPatientPanel', () => { await user.click(confirmButton); - expect(onConfirm).toBeCalled(); + expect(onConfirm).toHaveBeenCalledWith(); }); it('should save checkbox state to local storage on confirm', async () => { @@ -54,6 +54,6 @@ describe('CancelAddPatientPanel', () => { await user.click(getByRole('button', { name: 'Yes, cancel' })); expect(getByRole('checkbox')).toBeChecked(); - expect(mockSave).toBeCalledWith(true); + expect(mockSave).toHaveBeenCalledWith(true); }); }); diff --git a/apps/modernization-ui/src/apps/patient/add/extended/useAddExtendedPatient.spec.ts b/apps/modernization-ui/src/apps/patient/add/extended/useAddExtendedPatient.spec.ts index 37a764093a..779083b330 100644 --- a/apps/modernization-ui/src/apps/patient/add/extended/useAddExtendedPatient.spec.ts +++ b/apps/modernization-ui/src/apps/patient/add/extended/useAddExtendedPatient.spec.ts @@ -35,7 +35,7 @@ describe('when adding patients with extended data', () => { result.current.create(entry); }); - expect(mockCreate).toBeCalledWith(entry); + expect(mockCreate).toHaveBeenCalledWith(entry); }); it('should validate name sub form is not dirty when attempting to create', async () => { diff --git a/apps/modernization-ui/src/apps/patient/data/phoneEmail/PhoneEmailEntryFields.spec.tsx b/apps/modernization-ui/src/apps/patient/data/phoneEmail/PhoneEmailEntryFields.spec.tsx index 5110db5139..2416bea749 100644 --- a/apps/modernization-ui/src/apps/patient/data/phoneEmail/PhoneEmailEntryFields.spec.tsx +++ b/apps/modernization-ui/src/apps/patient/data/phoneEmail/PhoneEmailEntryFields.spec.tsx @@ -141,7 +141,7 @@ describe('when entering patient phone & email demographics', () => { }); it('should not allow country codes over 20 characters', async () => { - const { getByLabelText, getByText } = render(); + const { getByLabelText } = render(); const user = userEvent.setup(); const country = getByLabelText('Country code'); @@ -181,7 +181,7 @@ describe('when entering patient phone & email demographics', () => { }); it('should not allow extensions over 20 characters', async () => { - const { getByLabelText, getByText } = render(); + const { getByLabelText } = render(); const user = userEvent.setup(); const extension = getByLabelText('Extension'); diff --git a/apps/modernization-ui/src/apps/patient/data/race/RaceEntryFields.spec.tsx b/apps/modernization-ui/src/apps/patient/data/race/RaceEntryFields.spec.tsx index 34fbefdbc1..6066eb01a8 100644 --- a/apps/modernization-ui/src/apps/patient/data/race/RaceEntryFields.spec.tsx +++ b/apps/modernization-ui/src/apps/patient/data/race/RaceEntryFields.spec.tsx @@ -73,7 +73,7 @@ describe('Race entry fields', () => { await user.selectOptions(race, 'selected'); - expect(mockDetailResolver).toBeCalledWith('selected'); + expect(mockDetailResolver).toHaveBeenCalledWith('selected'); }); it('detailed race values should clear when the category changes', async () => { @@ -103,7 +103,7 @@ describe('Race entry fields', () => { await user.selectOptions(race, 'other').then(() => user.click(detailed)); - expect(mockDetailResolver).toBeCalledWith('other'); + expect(mockDetailResolver).toHaveBeenCalledWith('other'); expect(detailed).toHaveValue(''); }); @@ -176,7 +176,7 @@ describe('Race entry fields', () => { .then(() => user.tab()); expect(getByText('category not valid')).toBeInTheDocument(); - expect(validator).toBeCalledWith(19, expect.objectContaining({ value: 'other' })); + expect(validator).toHaveBeenCalledWith(19, expect.objectContaining({ value: 'other' })); }); it('should have accessibility description for the as of date field', () => { const { getByLabelText } = render(); diff --git a/apps/modernization-ui/src/apps/patient/data/race/categoryRequiredValidator.ts b/apps/modernization-ui/src/apps/patient/data/race/categoryRequiredValidator.ts index cb89db10c0..73eff80a21 100644 --- a/apps/modernization-ui/src/apps/patient/data/race/categoryRequiredValidator.ts +++ b/apps/modernization-ui/src/apps/patient/data/race/categoryRequiredValidator.ts @@ -9,7 +9,7 @@ import { exists } from 'utils'; * * @return {Promise} */ -const categoryRequiredValidator = (id: number, category: Selectable | null): Promise => +const categoryRequiredValidator = (_id: number, category: Selectable | null): Promise => !exists(category) ? Promise.resolve('The Race is required.') : Promise.resolve(true); export { categoryRequiredValidator }; diff --git a/apps/modernization-ui/src/apps/patient/file/events/investigations/useCompareInvestigation.spec.ts b/apps/modernization-ui/src/apps/patient/file/events/investigations/useCompareInvestigation.spec.ts index 3525a0868f..d6412dcdd0 100644 --- a/apps/modernization-ui/src/apps/patient/file/events/investigations/useCompareInvestigation.spec.ts +++ b/apps/modernization-ui/src/apps/patient/file/events/investigations/useCompareInvestigation.spec.ts @@ -1,6 +1,6 @@ import { act } from 'react'; -import { renderHook, waitFor } from '@testing-library/react'; +import { renderHook } from '@testing-library/react'; import { useCompareInvestigation } from './useCompareInvestigation'; diff --git a/apps/modernization-ui/src/apps/report/run/filters/advanced/ValueInput.tsx b/apps/modernization-ui/src/apps/report/run/filters/advanced/ValueInput.tsx index 177af2418f..6c91ac40fc 100644 --- a/apps/modernization-ui/src/apps/report/run/filters/advanced/ValueInput.tsx +++ b/apps/modernization-ui/src/apps/report/run/filters/advanced/ValueInput.tsx @@ -25,7 +25,9 @@ const SINGLE_COMPONENTS: Record = { const BETWEEN_OPERATOR_NAME = BETWEEN_OPERATOR.name; -const getConvertedRange = (props: ValueEditorProps): DateBetweenCriteria | NumberBetweenCriteria => { +const getConvertedRange = ( + props: ValueEditorProps +): DateBetweenCriteria | NumberBetweenCriteria => { if (props.operator === BETWEEN_OPERATOR_NAME && typeof props.value === 'string' && props.value) { const [from = '', to = ''] = props.value.split(','); return { between: { from, to } }; @@ -33,7 +35,7 @@ const getConvertedRange = (props: ValueEditorProps): DateBetweenCrite return { between: { from: '', to: '' } }; }; -const ValueInput = (props: ValueEditorProps) => { +const ValueInput = (props: ValueEditorProps) => { const id = useId(); const { handleOnChange, inputType, operator, title, value } = props; const labelName = title ?? ''; diff --git a/apps/modernization-ui/src/apps/report/run/filters/advanced/validator.spec.ts b/apps/modernization-ui/src/apps/report/run/filters/advanced/validator.spec.ts index 4ce6945f69..44e609f76d 100644 --- a/apps/modernization-ui/src/apps/report/run/filters/advanced/validator.spec.ts +++ b/apps/modernization-ui/src/apps/report/run/filters/advanced/validator.spec.ts @@ -1,5 +1,3 @@ -import { RuleGroupType, RuleType } from 'react-querybuilder'; - import { validateRule, ValidationResultMap } from './validator'; describe('validateRule', () => { @@ -19,7 +17,7 @@ describe('validateRule', () => { field: '~', operator: '~', value: '', - } as RuleType, + }, mockResult ); @@ -40,7 +38,7 @@ describe('validateRule', () => { ], combinator: 'and', not: false, - } as RuleGroupType, + }, mockResult ); @@ -62,7 +60,7 @@ describe('validateRule', () => { ], combinator: 'and', not: false, - } as RuleGroupType, + }, mockResult ); @@ -85,7 +83,7 @@ describe('validateRule', () => { ], combinator: 'and', not: false, - } as RuleGroupType, + }, mockResult ); @@ -115,7 +113,7 @@ describe('validateRule', () => { ], combinator: 'and', not: false, - } as RuleGroupType, + }, mockResult ); @@ -149,7 +147,7 @@ describe('validateRule', () => { ], combinator: 'and', not: false, - } as RuleGroupType, + }, mockResult ); @@ -187,7 +185,7 @@ describe('validateRule', () => { ], combinator: 'and', not: false, - } as RuleGroupType, + }, mockResult ); @@ -218,7 +216,7 @@ describe('validateRule', () => { ], combinator: 'and', not: false, - } as RuleGroupType, + }, mockResult ); diff --git a/apps/modernization-ui/src/apps/report/run/filters/basic/DateRangeFilter.spec.tsx b/apps/modernization-ui/src/apps/report/run/filters/basic/DateRangeFilter.spec.tsx index 5a214690c7..b54e3ed29f 100644 --- a/apps/modernization-ui/src/apps/report/run/filters/basic/DateRangeFilter.spec.tsx +++ b/apps/modernization-ui/src/apps/report/run/filters/basic/DateRangeFilter.spec.tsx @@ -15,6 +15,7 @@ describe('DateRangeFilter', () => { }, isRequired: true, reportColumnUid: 2001, + defaultIncludeNulls: false, }; const MOCK_LABEL = 'Full Name'; diff --git a/apps/modernization-ui/src/apps/report/run/filters/basic/DateRangeFilter.tsx b/apps/modernization-ui/src/apps/report/run/filters/basic/DateRangeFilter.tsx index 6e614a8390..6a17992102 100644 --- a/apps/modernization-ui/src/apps/report/run/filters/basic/DateRangeFilter.tsx +++ b/apps/modernization-ui/src/apps/report/run/filters/basic/DateRangeFilter.tsx @@ -32,7 +32,10 @@ const dateRangeValidator = (filter: BasicFilterConfiguration, label: string) => return filter.isRequired ? validateRequiredRule(label).required.message : true; } - const errorMsg = validateDateRange(value, label); + const errorMsg = validateDateRange( + value.map((v) => v ?? ''), + label + ); if (errorMsg) return errorMsg; diff --git a/apps/modernization-ui/src/apps/report/run/filters/basic/MonthYearRangeFilter.spec.tsx b/apps/modernization-ui/src/apps/report/run/filters/basic/MonthYearRangeFilter.spec.tsx index 77b394fab9..c6017d1ad2 100644 --- a/apps/modernization-ui/src/apps/report/run/filters/basic/MonthYearRangeFilter.spec.tsx +++ b/apps/modernization-ui/src/apps/report/run/filters/basic/MonthYearRangeFilter.spec.tsx @@ -15,6 +15,7 @@ describe('MonthYearRangeFilter', () => { }, isRequired: true, reportColumnUid: 2001, + defaultIncludeNulls: false, }; const MOCK_LABEL = 'Full Name'; diff --git a/apps/modernization-ui/src/apps/report/run/filters/utils/rangeValidator.spec.ts b/apps/modernization-ui/src/apps/report/run/filters/utils/rangeValidator.spec.ts index 0233b394b1..7d461b91e6 100644 --- a/apps/modernization-ui/src/apps/report/run/filters/utils/rangeValidator.spec.ts +++ b/apps/modernization-ui/src/apps/report/run/filters/utils/rangeValidator.spec.ts @@ -23,7 +23,7 @@ describe('rangeValidator', () => { const actual0 = validateDateRange(['14/1999', '10/13/2026'], FIELD_NAME); expect(actual0).toEqual(`From date of "14/1999" is not valid mm/dd/yyyy formatted date for ${FIELD_NAME}.`); - const actual1 = validateDateRange(['10/13/2022', 1], FIELD_NAME); + const actual1 = validateDateRange(['10/13/2022', '1'], FIELD_NAME); expect(actual1).toEqual(`To date of "1" is not valid mm/dd/yyyy formatted date for ${FIELD_NAME}.`); const actual2 = validateDateRange(['10/13/2022', '1/1/1992323'], FIELD_NAME); @@ -42,8 +42,8 @@ describe('rangeValidator', () => { it('should not return an error msg for a valid numeric', () => { [ ['90210', '100000'], - [-1, 1.0], - [0.125, '0.9887'], + ['-1', '1.0'], + ['0.125', '0.9887'], ].forEach((range) => { const actual = validateNumericRange(range, FIELD_NAME); expect(actual).toBeUndefined(); @@ -71,9 +71,9 @@ describe('rangeValidator', () => { it('should return an error msg when the from number is greater than the to number', () => { [ - [15, 6], + ['15', '6'], ['0.9887', '0.125'], - ].forEach((range, index) => { + ].forEach((range) => { const actual = validateNumericRange(range, FIELD_NAME); expect(actual).toEqual(`From value must be before To value for ${FIELD_NAME}.`); }); diff --git a/apps/modernization-ui/src/apps/search/investigation/result/list/InvestigationSearchResultListItem.spec.tsx b/apps/modernization-ui/src/apps/search/investigation/result/list/InvestigationSearchResultListItem.spec.tsx index ae8222e076..e4f9823516 100644 --- a/apps/modernization-ui/src/apps/search/investigation/result/list/InvestigationSearchResultListItem.spec.tsx +++ b/apps/modernization-ui/src/apps/search/investigation/result/list/InvestigationSearchResultListItem.spec.tsx @@ -259,7 +259,7 @@ describe('when showing an investigation search results', () => { expect(getByText('Notification')).toBeInTheDocument(); expect(getByText('notification-status-display')).toBeInTheDocument(); - expect(notificationStatusResolver).toBeCalledWith('notification-status'); + expect(notificationStatusResolver).toHaveBeenCalledWith('notification-status'); }); it('should display the provided notification status unknown value is given', () => { diff --git a/apps/modernization-ui/src/apps/search/layout/result/pagination/SearchResultPagination.spec.tsx b/apps/modernization-ui/src/apps/search/layout/result/pagination/SearchResultPagination.spec.tsx index 6d2ae54b76..352981fd0e 100644 --- a/apps/modernization-ui/src/apps/search/layout/result/pagination/SearchResultPagination.spec.tsx +++ b/apps/modernization-ui/src/apps/search/layout/result/pagination/SearchResultPagination.spec.tsx @@ -74,7 +74,7 @@ describe('When paginating search results', () => { await user.click(page); - expect(mockRequest).toBeCalledWith(2); + expect(mockRequest).toHaveBeenCalledWith(2); }); it('should request the selected page when a page is clicked.', async () => { @@ -82,7 +82,7 @@ describe('When paginating search results', () => { mockPageSize = 20; mockCurrent = 1; - const { getByLabelText, debug } = render(); + const { getByLabelText } = render(); const page = getByLabelText('Page 2'); @@ -90,7 +90,7 @@ describe('When paginating search results', () => { await user.click(page); - expect(mockRequest).toBeCalledWith(2); + expect(mockRequest).toHaveBeenCalledWith(2); }); it('should request the next page when the "Next page" button is clicked', async () => { @@ -106,7 +106,7 @@ describe('When paginating search results', () => { await user.click(page); - expect(mockRequest).toBeCalledWith(3); + expect(mockRequest).toHaveBeenCalledWith(3); }); it('should default to a page size of 20', () => { diff --git a/apps/modernization-ui/src/apps/search/layout/result/pagination/page-size-select/SearchResultPageSizeSelect.spec.tsx b/apps/modernization-ui/src/apps/search/layout/result/pagination/page-size-select/SearchResultPageSizeSelect.spec.tsx index a13ec0bb9d..2bbb49325b 100644 --- a/apps/modernization-ui/src/apps/search/layout/result/pagination/page-size-select/SearchResultPageSizeSelect.spec.tsx +++ b/apps/modernization-ui/src/apps/search/layout/result/pagination/page-size-select/SearchResultPageSizeSelect.spec.tsx @@ -47,6 +47,6 @@ describe('when changing the number of results per page', () => { const user = userEvent.setup(); await user.selectOptions(toggle, '50'); - expect(mockOnPageSizeChanged).toBeCalledWith(50); + expect(mockOnPageSizeChanged).toHaveBeenCalledWith(50); }); }); diff --git a/apps/modernization-ui/src/apps/search/patient/PatientCriteria/BasicInformation.spec.tsx b/apps/modernization-ui/src/apps/search/patient/PatientCriteria/BasicInformation.spec.tsx index 4a8cb66138..154e8dbfb7 100644 --- a/apps/modernization-ui/src/apps/search/patient/PatientCriteria/BasicInformation.spec.tsx +++ b/apps/modernization-ui/src/apps/search/patient/PatientCriteria/BasicInformation.spec.tsx @@ -1,5 +1,3 @@ -import { error } from 'console'; - import { render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { FormProvider, useForm } from 'react-hook-form'; diff --git a/apps/modernization-ui/src/apps/search/terms/removeTerm.spec.ts b/apps/modernization-ui/src/apps/search/terms/removeTerm.spec.ts index 8ef0af81a0..8e519fa270 100644 --- a/apps/modernization-ui/src/apps/search/terms/removeTerm.spec.ts +++ b/apps/modernization-ui/src/apps/search/terms/removeTerm.spec.ts @@ -30,9 +30,9 @@ describe('when removing search terms', () => { remove({ ...DEFAULT_TERM, source: 'value' }); - expect(after).toBeCalled(); - expect(setValue).toBeCalledWith('value', null); - expect(resetField).toBeCalledWith('value'); + expect(after).toHaveBeenCalled(); + expect(setValue).toHaveBeenCalledWith('value', null); + expect(resetField).toHaveBeenCalledWith('value'); }); it('should remove a term with multi values', () => { @@ -48,7 +48,7 @@ describe('when removing search terms', () => { remove({ ...DEFAULT_TERM, source: 'values' }); }); - expect(after).toBeCalled(); + expect(after).toHaveBeenCalled(); const actual = result.current.getValues(); @@ -67,7 +67,7 @@ describe('when removing search terms', () => { remove({ ...DEFAULT_TERM, source: 'values' }); }); - expect(after).toBeCalled(); + expect(after).toHaveBeenCalled(); const actual = result.current.getValues(); @@ -87,7 +87,7 @@ describe('when removing search terms', () => { remove({ ...DEFAULT_TERM, source: 'value', value: 'two', partial: true }); }); - expect(after).toBeCalled(); + expect(after).toHaveBeenCalled(); const actual = result.current.getValues(); @@ -109,7 +109,7 @@ describe('when removing search terms', () => { remove({ ...DEFAULT_TERM, source: 'nested.value' }); }); - expect(after).toBeCalled(); - expect(resetField).toBeCalledWith('nested.value'); + expect(after).toHaveBeenCalled(); + expect(resetField).toHaveBeenCalledWith('nested.value'); }); }); diff --git a/apps/modernization-ui/src/apps/search/useSearchCriteria.ts b/apps/modernization-ui/src/apps/search/useSearchCriteria.ts index 67623ee52d..c016e30c54 100644 --- a/apps/modernization-ui/src/apps/search/useSearchCriteria.ts +++ b/apps/modernization-ui/src/apps/search/useSearchCriteria.ts @@ -59,7 +59,7 @@ type Interaction = { * @param {Options} options Object containing defaultValues field * @return {Interaction} Interaction result */ -const useSearchCriteria = ({ defaultValues }: Options): Interaction => { +const useSearchCriteria = >({ defaultValues }: Options): Interaction => { const [_searchParams, setSearchParams] = useSearchParams(); const { found } = useSearchCriteriaEncrypted(); diff --git a/apps/modernization-ui/src/apps/search/useSearchResults.spec.tsx b/apps/modernization-ui/src/apps/search/useSearchResults.spec.tsx index 81d09cf29a..e9e03225d5 100644 --- a/apps/modernization-ui/src/apps/search/useSearchResults.spec.tsx +++ b/apps/modernization-ui/src/apps/search/useSearchResults.spec.tsx @@ -248,7 +248,7 @@ describe('when searching using useSearchResults', () => { }); await waitFor(() => - expect(resultResolver).toBeCalledWith( + expect(resultResolver).toHaveBeenCalledWith( expect.objectContaining({ page: expect.objectContaining({ number: 1, size: 307 }) }) ) ); @@ -270,7 +270,7 @@ describe('when searching using useSearchResults', () => { }); await waitFor(() => - expect(resultResolver).toBeCalledWith( + expect(resultResolver).toHaveBeenCalledWith( expect.objectContaining({ page: expect.objectContaining({ number: 1, size: 307 }) }) ) ); @@ -292,7 +292,7 @@ describe('when searching using useSearchResults', () => { }); await waitFor(() => - expect(resultResolver).toBeCalledWith( + expect(resultResolver).toHaveBeenCalledWith( expect.objectContaining({ page: expect.objectContaining({ number: 1, size: 307 }) }) ) ); diff --git a/apps/modernization-ui/src/apps/search/useSearchResults.ts b/apps/modernization-ui/src/apps/search/useSearchResults.ts index 44ba94b59c..e0a33aed76 100644 --- a/apps/modernization-ui/src/apps/search/useSearchResults.ts +++ b/apps/modernization-ui/src/apps/search/useSearchResults.ts @@ -198,7 +198,7 @@ type SearchResultSettings = { noInputCheck?: Predicate; }; -const useSearchResults = ({ +const useSearchResults = , A extends object, R extends object>({ transformer, resultResolver, termResolver, diff --git a/apps/modernization-ui/src/apps/search/useSearchResultsFormAdapter.ts b/apps/modernization-ui/src/apps/search/useSearchResultsFormAdapter.ts index 3c8e06acda..637691fb08 100644 --- a/apps/modernization-ui/src/apps/search/useSearchResultsFormAdapter.ts +++ b/apps/modernization-ui/src/apps/search/useSearchResultsFormAdapter.ts @@ -40,7 +40,7 @@ type Settings = { form: UseFormReturn } & Search * termResolver * }); */ -const useSearchResultsFormAdapter = ({ +const useSearchResultsFormAdapter = , A extends object, R extends object>({ form, ...settings }: Settings): SearchInteraction => { diff --git a/apps/modernization-ui/src/components/MediaBlockBody/MediaBlockBody.test.tsx b/apps/modernization-ui/src/components/MediaBlockBody/MediaBlockBody.spec.tsx similarity index 89% rename from apps/modernization-ui/src/components/MediaBlockBody/MediaBlockBody.test.tsx rename to apps/modernization-ui/src/components/MediaBlockBody/MediaBlockBody.spec.tsx index acd77d676f..15a0c58350 100644 --- a/apps/modernization-ui/src/components/MediaBlockBody/MediaBlockBody.test.tsx +++ b/apps/modernization-ui/src/components/MediaBlockBody/MediaBlockBody.spec.tsx @@ -4,7 +4,7 @@ import { MediaBlockBody } from './MediaBlockBody'; describe('MediaBlockBody component tests', () => { it('should render media block children inside the div tag', () => { - const { container, getByLabelText } = render( + const { container } = render(

Some content

diff --git a/apps/modernization-ui/src/components/ModalComponent/ModalComponent.tsx b/apps/modernization-ui/src/components/ModalComponent/ModalComponent.tsx index 47122332f1..a6ff1ff7d4 100644 --- a/apps/modernization-ui/src/components/ModalComponent/ModalComponent.tsx +++ b/apps/modernization-ui/src/components/ModalComponent/ModalComponent.tsx @@ -1,5 +1,5 @@ import './ModalComponent.scss'; -import { ReactNode, RefObject } from 'react'; +import { ReactNode, RefObject, useId } from 'react'; import { Modal, ModalFooter, ModalHeading, ModalRef } from '@trussworks/react-uswds'; @@ -11,7 +11,7 @@ type ModalProps = { isLarge?: boolean; size?: string; forceAction?: boolean; - id: string; + id?: string; className?: string; disabled?: boolean; }; @@ -27,18 +27,21 @@ export const ModalComponent = ({ id, disabled = false, }: ModalProps) => { + const generatedId = useId(); + const modalId = id ?? generatedId; + return ( - {modalHeading ? {modalHeading} : null} + {modalHeading ? {modalHeading} : null} {modalBody} {modalFooter ? {modalFooter} : null} diff --git a/apps/modernization-ui/src/components/TabNavigation/TabNavigation.stories.tsx b/apps/modernization-ui/src/components/TabNavigation/TabNavigation.stories.tsx index c6d3af1506..55805e5846 100644 --- a/apps/modernization-ui/src/components/TabNavigation/TabNavigation.stories.tsx +++ b/apps/modernization-ui/src/components/TabNavigation/TabNavigation.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from '@storybook/react/*'; +import type { Meta, StoryObj } from '@storybook/react-vite'; import { MemoryRouter } from 'react-router'; import { TabNavigation, TabNavigationEntry, TabNavigationProps } from './TabNavigation'; diff --git a/apps/modernization-ui/src/components/TopBanner/Banner/Banner.spec.tsx b/apps/modernization-ui/src/components/TopBanner/Banner/Banner.spec.tsx index 211af2ea0a..e0537686a3 100644 --- a/apps/modernization-ui/src/components/TopBanner/Banner/Banner.spec.tsx +++ b/apps/modernization-ui/src/components/TopBanner/Banner/Banner.spec.tsx @@ -1,4 +1,4 @@ -import { render, within } from '@testing-library/react'; +import { render } from '@testing-library/react'; import { Banner } from './banner'; diff --git a/apps/modernization-ui/src/components/TopBanner/TopBanner.spec.tsx b/apps/modernization-ui/src/components/TopBanner/TopBanner.spec.tsx index b84302b900..90b1d4aa36 100644 --- a/apps/modernization-ui/src/components/TopBanner/TopBanner.spec.tsx +++ b/apps/modernization-ui/src/components/TopBanner/TopBanner.spec.tsx @@ -4,7 +4,7 @@ import { TopBanner } from './TopBanner'; describe('TopBanner component tests', () => { it('should render top banner header and content inside the banner', () => { - const { container, getByLabelText } = render(); + const { container } = render(); expect(container.querySelector('strong')?.innerHTML).toBe( 'An official website of the United States government' ); diff --git a/apps/modernization-ui/src/design-system/checkbox/Checkbox.spec.tsx b/apps/modernization-ui/src/design-system/checkbox/Checkbox.spec.tsx index a5d69d0408..d8186b2a55 100644 --- a/apps/modernization-ui/src/design-system/checkbox/Checkbox.spec.tsx +++ b/apps/modernization-ui/src/design-system/checkbox/Checkbox.spec.tsx @@ -1,4 +1,4 @@ -import { render, screen } from '@testing-library/react'; +import { render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { axe } from 'jest-axe'; @@ -19,18 +19,19 @@ describe('Checkbox testing', () => { }); it('should render unchecked', () => { - render(); + const { getByRole } = render(); - const checkbox = screen.getByRole('checkbox', { name: 'Test Label' }); + const checkbox = getByRole('checkbox', { name: 'Test Label' }); expect(checkbox).not.toBeChecked(); expect(checkbox).toHaveAttribute('aria-checked', 'false'); }); it('should render checked', () => { - const { container } = render(); + const { getByRole } = render(); + + const checkbox = getByRole('checkbox', { name: 'Test Label' }); - const checkbox = screen.getByRole('checkbox', { name: 'Test Label' }); expect(checkbox).toBeChecked(); expect(checkbox).toHaveAttribute('aria-checked', 'true'); }); diff --git a/apps/modernization-ui/src/design-system/checkbox/SelectableCheckbox.spec.tsx b/apps/modernization-ui/src/design-system/checkbox/SelectableCheckbox.spec.tsx index 69c04b5177..3d53bdce94 100644 --- a/apps/modernization-ui/src/design-system/checkbox/SelectableCheckbox.spec.tsx +++ b/apps/modernization-ui/src/design-system/checkbox/SelectableCheckbox.spec.tsx @@ -69,8 +69,6 @@ describe('Checkbox testing', () => { }); it('should emit onChange event when label clicked', async () => { - const user = userEvent.setup(); - const onChange = vi.fn(); const { getByText } = render(); diff --git a/apps/modernization-ui/src/design-system/date/criteria/range/DateRangeField.spec.tsx b/apps/modernization-ui/src/design-system/date/criteria/range/DateRangeField.spec.tsx index a1e9b4394b..9241b2a2ea 100644 --- a/apps/modernization-ui/src/design-system/date/criteria/range/DateRangeField.spec.tsx +++ b/apps/modernization-ui/src/design-system/date/criteria/range/DateRangeField.spec.tsx @@ -1,4 +1,4 @@ -import { act, render } from '@testing-library/react'; +import { render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { axe } from 'jest-axe'; diff --git a/apps/modernization-ui/src/design-system/date/criteria/range/DateRangeField.tsx b/apps/modernization-ui/src/design-system/date/criteria/range/DateRangeField.tsx index 12c795079e..3d523a76cc 100644 --- a/apps/modernization-ui/src/design-system/date/criteria/range/DateRangeField.tsx +++ b/apps/modernization-ui/src/design-system/date/criteria/range/DateRangeField.tsx @@ -18,7 +18,7 @@ export type DateRangeFieldProps = { }; const DateRangeField = ({ id, value, sizing, onChange, onBlur, label, required }: DateRangeFieldProps) => { - const handleFieldOnChange = (v, type) => { + const handleFieldOnChange = (v: string | undefined, type: string) => { if (type === 'to') { onChange({ between: { to: v, from: value?.between.from } }); } diff --git a/apps/modernization-ui/src/design-system/date/occursInThePast.spec.ts b/apps/modernization-ui/src/design-system/date/occursInThePast.spec.ts index f32b675f9a..b75908e8e3 100644 --- a/apps/modernization-ui/src/design-system/date/occursInThePast.spec.ts +++ b/apps/modernization-ui/src/design-system/date/occursInThePast.spec.ts @@ -1,4 +1,4 @@ -import { add, isFuture } from 'date-fns'; +import { add } from 'date-fns'; import { internalizeDate } from 'date'; diff --git a/apps/modernization-ui/src/design-system/date/picker/DatePicker.spec.tsx b/apps/modernization-ui/src/design-system/date/picker/DatePicker.spec.tsx index 4459db6e83..3582423b1d 100644 --- a/apps/modernization-ui/src/design-system/date/picker/DatePicker.spec.tsx +++ b/apps/modernization-ui/src/design-system/date/picker/DatePicker.spec.tsx @@ -1,4 +1,4 @@ -import { render, waitFor } from '@testing-library/react'; +import { render } from '@testing-library/react'; import { axe } from 'jest-axe'; import { DatePicker, DatePickerProps } from './DatePicker'; diff --git a/apps/modernization-ui/src/design-system/date/picker/DatePicker.tsx b/apps/modernization-ui/src/design-system/date/picker/DatePicker.tsx index 9a6bab7f53..94b1340afd 100644 --- a/apps/modernization-ui/src/design-system/date/picker/DatePicker.tsx +++ b/apps/modernization-ui/src/design-system/date/picker/DatePicker.tsx @@ -65,7 +65,7 @@ const DatePicker = ({ } }, [current, externalInputRef.current]); - const handleExternalOnBlur = useCallback((e) => onBlur?.(e), [onBlur]); + const handleExternalOnBlur = useCallback(() => onBlur?.(), [onBlur]); const handleExternalOnChange = useCallback( (event: Event) => { diff --git a/apps/modernization-ui/src/design-system/date/validateDate.spec.ts b/apps/modernization-ui/src/design-system/date/validateDate.spec.ts index eb018775c8..c541b14531 100644 --- a/apps/modernization-ui/src/design-system/date/validateDate.spec.ts +++ b/apps/modernization-ui/src/design-system/date/validateDate.spec.ts @@ -1,7 +1,3 @@ -import { add } from 'date-fns'; - -import { internalizeDate } from 'date'; - import { validateDate } from './validateDate'; const mockNow = vi.fn(); diff --git a/apps/modernization-ui/src/design-system/date/validateDateEntry.spec.ts b/apps/modernization-ui/src/design-system/date/validateDateEntry.spec.ts index a2cb0bb887..d0530eba60 100644 --- a/apps/modernization-ui/src/design-system/date/validateDateEntry.spec.ts +++ b/apps/modernization-ui/src/design-system/date/validateDateEntry.spec.ts @@ -1,7 +1,5 @@ import { add } from 'date-fns'; -import { internalizeDate } from 'date'; - import { validateDateEntry } from './validateDateEntry'; const mockNow = vi.fn(); @@ -45,8 +43,6 @@ describe('when validating a date entered in parts', () => { }); it('should not allow months after today', () => { - const today = new Date('2017-05-23T00:00:00'); - mockNow.mockReturnValue(new Date('2017-05-23T00:00:00')); const actual = validateDateEntry('Date in the future')({ diff --git a/apps/modernization-ui/src/design-system/input/numeric/NumericInput.tsx b/apps/modernization-ui/src/design-system/input/numeric/NumericInput.tsx index be09c44fd6..5eea9c6059 100644 --- a/apps/modernization-ui/src/design-system/input/numeric/NumericInput.tsx +++ b/apps/modernization-ui/src/design-system/input/numeric/NumericInput.tsx @@ -20,7 +20,7 @@ type RangeInputProps = BaseNumericInputProps & { }; type SingleInputProps = BaseNumericInputProps & { - value?: number; + value?: number | null; }; const NumericInput = ({ diff --git a/apps/modernization-ui/src/design-system/input/range/NumberRangeField.spec.tsx b/apps/modernization-ui/src/design-system/input/range/NumberRangeField.spec.tsx index 62e0fd09c0..8a5605b380 100644 --- a/apps/modernization-ui/src/design-system/input/range/NumberRangeField.spec.tsx +++ b/apps/modernization-ui/src/design-system/input/range/NumberRangeField.spec.tsx @@ -1,6 +1,5 @@ import { render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import { axe } from 'jest-axe'; import { NumberRangeField } from './NumberRangeField.tsx'; diff --git a/apps/modernization-ui/src/design-system/input/text/criteria/TextCriteriaField.spec.tsx b/apps/modernization-ui/src/design-system/input/text/criteria/TextCriteriaField.spec.tsx index 75f129ee81..be1afc27df 100644 --- a/apps/modernization-ui/src/design-system/input/text/criteria/TextCriteriaField.spec.tsx +++ b/apps/modernization-ui/src/design-system/input/text/criteria/TextCriteriaField.spec.tsx @@ -1,4 +1,4 @@ -import { fireEvent, render } from '@testing-library/react'; +import { render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { TextCriteria } from 'options/operator'; diff --git a/apps/modernization-ui/src/design-system/input/text/criteria/operator/OperatorSelect.spec.tsx b/apps/modernization-ui/src/design-system/input/text/criteria/operator/OperatorSelect.spec.tsx index 74db81e737..d66ec8460c 100644 --- a/apps/modernization-ui/src/design-system/input/text/criteria/operator/OperatorSelect.spec.tsx +++ b/apps/modernization-ui/src/design-system/input/text/criteria/operator/OperatorSelect.spec.tsx @@ -21,8 +21,6 @@ describe('OperatorSelect', () => { }); it('calls onChange when an option is selected', async () => { - const user = userEvent.setup(); - const { getByRole } = render(); const selectElement = getByRole('combobox'); diff --git a/apps/modernization-ui/src/design-system/modal/Confirmation.spec.tsx b/apps/modernization-ui/src/design-system/modal/Confirmation.spec.tsx index b52aeb24f2..a443fb5d29 100644 --- a/apps/modernization-ui/src/design-system/modal/Confirmation.spec.tsx +++ b/apps/modernization-ui/src/design-system/modal/Confirmation.spec.tsx @@ -92,8 +92,8 @@ describe('when a confirmation is displayed', () => { const user = userEvent.setup(); await user.click(cancel); - expect(onCancel).toBeCalled(); - expect(onConfirm).not.toBeCalled(); + expect(onCancel).toHaveBeenCalled(); + expect(onConfirm).not.toHaveBeenCalled(); }); it('should invoke onCancel when the close icon is clicked', async () => { @@ -113,8 +113,8 @@ describe('when a confirmation is displayed', () => { const user = userEvent.setup(); await user.click(cancel); - expect(onCancel).toBeCalled(); - expect(onConfirm).not.toBeCalled(); + expect(onCancel).toHaveBeenCalled(); + expect(onConfirm).not.toHaveBeenCalled(); }); it('should render a confirmation with the default "Confirm" button', () => { @@ -158,8 +158,8 @@ describe('when a confirmation is displayed', () => { const user = userEvent.setup(); await user.click(confirm); - expect(onConfirm).toBeCalled(); - expect(onCancel).not.toBeCalled(); + expect(onConfirm).toHaveBeenCalled(); + expect(onCancel).not.toHaveBeenCalled(); }); it('should render close icon by default', () => { diff --git a/apps/modernization-ui/src/design-system/modal/Modal.spec.tsx b/apps/modernization-ui/src/design-system/modal/Modal.spec.tsx index 61287bbacc..758e3e4332 100644 --- a/apps/modernization-ui/src/design-system/modal/Modal.spec.tsx +++ b/apps/modernization-ui/src/design-system/modal/Modal.spec.tsx @@ -77,7 +77,7 @@ describe('when a modal is displayed', () => { await user.click(closer); - expect(onClose).toBeCalled(); + expect(onClose).toHaveBeenCalled(); }); it('should render without a footer', () => { @@ -124,6 +124,6 @@ describe('when a modal is displayed', () => { await user.click(closer); - expect(onClose).toBeCalled(); + expect(onClose).toHaveBeenCalled(); }); }); diff --git a/apps/modernization-ui/src/design-system/modal/Success.spec.tsx b/apps/modernization-ui/src/design-system/modal/Success.spec.tsx index bfc56e5a25..e1e767f6db 100644 --- a/apps/modernization-ui/src/design-system/modal/Success.spec.tsx +++ b/apps/modernization-ui/src/design-system/modal/Success.spec.tsx @@ -51,7 +51,7 @@ describe('when a success is displayed', () => { const user = userEvent.setup(); await user.click(closer); - expect(onClose).toBeCalled(); + expect(onClose).toHaveBeenCalled(); }); it('should invoke onClose when the close icon is clicked', async () => { @@ -66,6 +66,6 @@ describe('when a success is displayed', () => { const user = userEvent.setup(); await user.click(closer); - expect(onClose).toBeCalled(); + expect(onClose).toHaveBeenCalled(); }); }); diff --git a/apps/modernization-ui/src/design-system/modal/Warning.spec.tsx b/apps/modernization-ui/src/design-system/modal/Warning.spec.tsx index 592d4b175c..03bbd061e1 100644 --- a/apps/modernization-ui/src/design-system/modal/Warning.spec.tsx +++ b/apps/modernization-ui/src/design-system/modal/Warning.spec.tsx @@ -51,7 +51,7 @@ describe('when a warning is displayed', () => { const user = userEvent.setup(); await user.click(closer); - expect(onClose).toBeCalled(); + expect(onClose).toHaveBeenCalled(); }); it('should invoke onClose when the close icon is clicked', async () => { @@ -66,6 +66,6 @@ describe('when a warning is displayed', () => { const user = userEvent.setup(); await user.click(closer); - expect(onClose).toBeCalled(); + expect(onClose).toHaveBeenCalled(); }); }); diff --git a/apps/modernization-ui/src/design-system/pagination/Pagination.spec.tsx b/apps/modernization-ui/src/design-system/pagination/Pagination.spec.tsx index 816d5c593e..4f17d5d097 100644 --- a/apps/modernization-ui/src/design-system/pagination/Pagination.spec.tsx +++ b/apps/modernization-ui/src/design-system/pagination/Pagination.spec.tsx @@ -111,7 +111,7 @@ describe('when paginating a large set of data', () => { await user.click(page); - expect(mockOnPrevious).toBeCalled(); + expect(mockOnPrevious).toHaveBeenCalled(); }); it('should request the selected page when a page is clicked', async () => { @@ -135,7 +135,7 @@ describe('when paginating a large set of data', () => { await user.click(page); - expect(mockOnSelectPage).toBeCalledWith(2); + expect(mockOnSelectPage).toHaveBeenCalledWith(2); }); it('should request the next page when the "Next page" button is clicked', async () => { @@ -159,6 +159,6 @@ describe('when paginating a large set of data', () => { await user.click(page); - expect(mockOnNext).toBeCalled(); + expect(mockOnNext).toHaveBeenCalled(); }); }); diff --git a/apps/modernization-ui/src/design-system/panel/closable/ClosablePanel.spec.tsx b/apps/modernization-ui/src/design-system/panel/closable/ClosablePanel.spec.tsx index d63949a64d..a85a8cf5fb 100644 --- a/apps/modernization-ui/src/design-system/panel/closable/ClosablePanel.spec.tsx +++ b/apps/modernization-ui/src/design-system/panel/closable/ClosablePanel.spec.tsx @@ -101,6 +101,6 @@ describe('CloseablePanel', () => { await user.click(closer); - expect(onClose).toBeCalled(); + expect(onClose).toHaveBeenCalled(); }); }); diff --git a/apps/modernization-ui/src/design-system/radio/RadioGroup.spec.tsx b/apps/modernization-ui/src/design-system/radio/RadioGroup.spec.tsx index 59e47f98f0..f09f038c9b 100644 --- a/apps/modernization-ui/src/design-system/radio/RadioGroup.spec.tsx +++ b/apps/modernization-ui/src/design-system/radio/RadioGroup.spec.tsx @@ -1,4 +1,4 @@ -import { render, screen } from '@testing-library/react'; +import { render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { axe } from 'jest-axe'; diff --git a/apps/modernization-ui/src/design-system/sorting/preferences/useSortingPreferences.spec.tsx b/apps/modernization-ui/src/design-system/sorting/preferences/useSortingPreferences.spec.tsx index 76dc0b4dd0..0a191e0907 100644 --- a/apps/modernization-ui/src/design-system/sorting/preferences/useSortingPreferences.spec.tsx +++ b/apps/modernization-ui/src/design-system/sorting/preferences/useSortingPreferences.spec.tsx @@ -25,7 +25,7 @@ const mockSave = vi.fn(); const mockRemove = vi.fn(); vi.mock('storage', () => ({ - useLocalStorage: ({ key, initial }: { key: string; initial?: any }) => ({ + useLocalStorage: () => ({ value: mockValue, save: mockSave, remove: mockRemove, @@ -61,7 +61,7 @@ describe('useSortingPreferences', () => { expect.objectContaining({ property: 'property-value', direction: 'asc' }) ); - expect(mockSortBy).toBeCalledWith('property-value', 'asc'); + expect(mockSortBy).toHaveBeenCalledWith('property-value', 'asc'); }); it('should reset the active sorting', () => { @@ -77,7 +77,7 @@ describe('useSortingPreferences', () => { expect(result.current.active).toBeUndefined(); - expect(mockReset).toBeCalled(); + expect(mockReset).toHaveBeenCalled(); }); it('should sync with active sort changes', () => { @@ -103,7 +103,7 @@ describe('useSortingPreferences', () => { expect.objectContaining({ property: 'initial-value', direction: 'desc' }) ); - expect(mockSortBy).toBeCalledWith('initial-value', 'desc'); + expect(mockSortBy).toHaveBeenCalledWith('initial-value', 'desc'); }); it('should save sorting preferences when active sorting is changed', () => { @@ -113,7 +113,9 @@ describe('useSortingPreferences', () => { result.current.sortOn({ property: 'property-value', direction: 'asc' as Direction }); }); - expect(mockSave).toBeCalledWith(expect.objectContaining({ property: 'property-value', direction: 'asc' })); + expect(mockSave).toHaveBeenCalledWith( + expect.objectContaining({ property: 'property-value', direction: 'asc' }) + ); }); it('should remove sorting preferences when active sorting is reset', () => { @@ -129,6 +131,6 @@ describe('useSortingPreferences', () => { expect(result.current.active).toBeUndefined(); - expect(mockRemove).toBeCalled(); + expect(mockRemove).toHaveBeenCalled(); }); }); diff --git a/apps/modernization-ui/src/filters/applied/AppliedFilters.spec.tsx b/apps/modernization-ui/src/filters/applied/AppliedFilters.spec.tsx index e8fea5d970..646307a439 100644 --- a/apps/modernization-ui/src/filters/applied/AppliedFilters.spec.tsx +++ b/apps/modernization-ui/src/filters/applied/AppliedFilters.spec.tsx @@ -7,7 +7,7 @@ import { AppliedFilters } from './AppliedFilters'; describe('when there are applied filters', () => { it('should display a single value filter when applied', () => { - const { getByText } = render(); + const { getByText } = render(); const title = getByText('All Testing'); @@ -53,7 +53,7 @@ describe('when there are applied filters', () => { value: 'prefix-value', }; - const { getByText } = render(); + const { getByText } = render(); expect(getByText('Single Value Starts with prefix-value')).toBeInTheDocument(); }); @@ -66,7 +66,7 @@ describe('when there are applied filters', () => { values: ['value-one', 'value-two'], }; - const { getByText } = render(); + const { getByText } = render(); expect(getByText('Multi Value equals value-one OR value-two')).toBeInTheDocument(); }); @@ -78,7 +78,7 @@ describe('when there are applied filters', () => { operator: { name: 'today', value: 'TODAY' }, }; - const { getByText } = render(); + const { getByText } = render(); expect(getByText('Date Period today')).toBeInTheDocument(); }); @@ -92,7 +92,7 @@ describe('when there are applied filters', () => { before: '12/29/2023', }; - const { getByText } = render(); + const { getByText } = render(); expect(getByText('Date Range between 12/01/2023 and 12/29/2023')); }); diff --git a/apps/modernization-ui/src/libs/classic/ClassicModalButton.spec.tsx b/apps/modernization-ui/src/libs/classic/ClassicModalButton.spec.tsx index 4c61587f24..21d3be4d1e 100644 --- a/apps/modernization-ui/src/libs/classic/ClassicModalButton.spec.tsx +++ b/apps/modernization-ui/src/libs/classic/ClassicModalButton.spec.tsx @@ -15,7 +15,7 @@ const mockUseClassicModal = { }; vi.mock('./useClassicModal', async (importOriginal) => { - const actual = await importOriginal(); + const actual = await importOriginal(); return { ...actual, useClassicModal: () => mockUseClassicModal, diff --git a/apps/modernization-ui/src/libs/demographics/contact/email/validateEmail.spec.ts b/apps/modernization-ui/src/libs/demographics/contact/email/validateEmail.spec.ts index 26c95a5a21..db6eb29783 100644 --- a/apps/modernization-ui/src/libs/demographics/contact/email/validateEmail.spec.ts +++ b/apps/modernization-ui/src/libs/demographics/contact/email/validateEmail.spec.ts @@ -3,6 +3,8 @@ import { validateEmail } from './validateEmail'; describe('when validating an email entered at text', () => { it('should allow a value with a username and a domain', () => { const actual = validateEmail('valid email')('username@domain.com'); + + expect(actual).toBeTruthy(); }); it('should not allow a value that does not contain a domain', () => { diff --git a/apps/modernization-ui/src/libs/patient/demographics/ethnicity/edit/EthnicityDemographicFields.spec.tsx b/apps/modernization-ui/src/libs/patient/demographics/ethnicity/edit/EthnicityDemographicFields.spec.tsx index 2b93c41d11..422d9d0d75 100644 --- a/apps/modernization-ui/src/libs/patient/demographics/ethnicity/edit/EthnicityDemographicFields.spec.tsx +++ b/apps/modernization-ui/src/libs/patient/demographics/ethnicity/edit/EthnicityDemographicFields.spec.tsx @@ -1,8 +1,7 @@ import { render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import { FormProvider, useForm } from 'react-hook-form'; +import { useForm } from 'react-hook-form'; -import { EthnicityEntry } from 'apps/patient/data/ethnicity'; import { EthnicityCodedValues } from 'apps/patient/data/ethnicity/useEthnicityCodedValues'; import { PatientDemographics } from '../../demographics'; diff --git a/apps/modernization-ui/src/libs/patient/demographics/general/edit/GeneralInformationDemographicFields.tsx b/apps/modernization-ui/src/libs/patient/demographics/general/edit/GeneralInformationDemographicFields.tsx index fd3ad8df22..8747d9ec9e 100644 --- a/apps/modernization-ui/src/libs/patient/demographics/general/edit/GeneralInformationDemographicFields.tsx +++ b/apps/modernization-ui/src/libs/patient/demographics/general/edit/GeneralInformationDemographicFields.tsx @@ -88,7 +88,7 @@ const GeneralInformationDemographicFields = ({ orientation={orientation} onBlur={onBlur} onChange={onChange} - value={value} + value={value ?? null} id={name} name={name} min="0" @@ -108,7 +108,7 @@ const GeneralInformationDemographicFields = ({ orientation={orientation} onBlur={onBlur} onChange={onChange} - value={value} + value={value ?? null} id={name} name={name} min="0" diff --git a/apps/modernization-ui/src/libs/patient/demographics/general/edit/GeneralInformationDemographicsFields.spec.tsx b/apps/modernization-ui/src/libs/patient/demographics/general/edit/GeneralInformationDemographicsFields.spec.tsx index cbfeccfe8e..2482203776 100644 --- a/apps/modernization-ui/src/libs/patient/demographics/general/edit/GeneralInformationDemographicsFields.spec.tsx +++ b/apps/modernization-ui/src/libs/patient/demographics/general/edit/GeneralInformationDemographicsFields.spec.tsx @@ -1,8 +1,7 @@ import { render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import { FormProvider, useForm } from 'react-hook-form'; +import { useForm } from 'react-hook-form'; -import { ExtendedNewPatientEntry } from 'apps/patient/add/extended'; import { indicators } from 'options/indicator'; import { PatientDemographics } from '../../demographics'; diff --git a/apps/modernization-ui/src/libs/patient/demographics/mortality/view/MortalityDemographicView.spec.tsx b/apps/modernization-ui/src/libs/patient/demographics/mortality/view/MortalityDemographicView.spec.tsx index e4777d6b5b..d0e502f299 100644 --- a/apps/modernization-ui/src/libs/patient/demographics/mortality/view/MortalityDemographicView.spec.tsx +++ b/apps/modernization-ui/src/libs/patient/demographics/mortality/view/MortalityDemographicView.spec.tsx @@ -2,8 +2,6 @@ import { render, screen } from '@testing-library/react'; import { MortalityDemographicView } from './MortalityDemographicView'; -const noop = () => undefined; - describe('MortalityDemographicView', () => { it('should display "As of" when present', () => { render(); diff --git a/apps/modernization-ui/src/libs/patient/demographics/name/NameDemographicView.spec.tsx b/apps/modernization-ui/src/libs/patient/demographics/name/NameDemographicView.spec.tsx index 6c340b0b8c..ce553158b3 100644 --- a/apps/modernization-ui/src/libs/patient/demographics/name/NameDemographicView.spec.tsx +++ b/apps/modernization-ui/src/libs/patient/demographics/name/NameDemographicView.spec.tsx @@ -3,20 +3,6 @@ import { render, screen } from '@testing-library/react'; import { asSelectable } from 'options/selectable'; import { NameDemographicView } from './NameDemographicView'; -import { NameDemographic } from './names'; - -const entry: NameDemographic = { - asOf: '12/25/2020', - type: asSelectable('AN', 'Adopted name'), - prefix: asSelectable('MS', 'Miss'), - first: 'test first', - middle: 'test middle', - secondMiddle: 'second middle', - last: 'test last', - secondLast: 'second last', - suffix: asSelectable('SR', 'test 2'), - degree: asSelectable('BA', 'test ba'), -}; describe('NameDemographicView', () => { it('should display the as of', () => { diff --git a/apps/modernization-ui/src/libs/patient/demographics/phoneEmail/PhoneEmailDemographicView.spec.tsx b/apps/modernization-ui/src/libs/patient/demographics/phoneEmail/PhoneEmailDemographicView.spec.tsx index 50923db28f..9361fe8887 100644 --- a/apps/modernization-ui/src/libs/patient/demographics/phoneEmail/PhoneEmailDemographicView.spec.tsx +++ b/apps/modernization-ui/src/libs/patient/demographics/phoneEmail/PhoneEmailDemographicView.spec.tsx @@ -1,6 +1,5 @@ import { render, screen } from '@testing-library/react'; -import { today } from 'date'; import { asSelectable } from 'options'; import { PhoneEmailDemographicView } from './PhoneEmailDemographicView'; diff --git a/apps/modernization-ui/src/libs/patient/demographics/phoneEmail/edit/PhoneEmailDemographicFields.spec.tsx b/apps/modernization-ui/src/libs/patient/demographics/phoneEmail/edit/PhoneEmailDemographicFields.spec.tsx index 7f2204aaf2..e830e159b1 100644 --- a/apps/modernization-ui/src/libs/patient/demographics/phoneEmail/edit/PhoneEmailDemographicFields.spec.tsx +++ b/apps/modernization-ui/src/libs/patient/demographics/phoneEmail/edit/PhoneEmailDemographicFields.spec.tsx @@ -138,7 +138,7 @@ describe('when entering patient phone & email demographics', () => { }); it('should not allow country codes over 20 characters', async () => { - const { getByLabelText, getByText } = render(); + const { getByLabelText } = render(); const user = userEvent.setup(); const country = getByLabelText('Country code'); diff --git a/apps/modernization-ui/src/libs/patient/demographics/race/edit/RaceDemographicFields.spec.tsx b/apps/modernization-ui/src/libs/patient/demographics/race/edit/RaceDemographicFields.spec.tsx index 7a49911040..0972443655 100644 --- a/apps/modernization-ui/src/libs/patient/demographics/race/edit/RaceDemographicFields.spec.tsx +++ b/apps/modernization-ui/src/libs/patient/demographics/race/edit/RaceDemographicFields.spec.tsx @@ -95,7 +95,7 @@ describe('Race entry fields', () => { const race = screen.getByRole('combobox', { name: 'Race' }); await user.selectOptions(race, 'other'); - expect(mockSelected).toBeCalledWith({ value: 'other', name: 'other name' }); + expect(mockSelected).toHaveBeenCalledWith({ value: 'other', name: 'other name' }); rerender( { .then(() => user.tab()); expect(getByText('category not valid')).toBeInTheDocument(); - expect(validator).toBeCalledWith(19, expect.objectContaining({ value: 'other' })); + expect(validator).toHaveBeenCalledWith(19, expect.objectContaining({ value: 'other' })); }); it('should have accessibility description for the as of date field', () => { const { getByLabelText } = render(); diff --git a/apps/modernization-ui/src/libs/patient/demographics/race/edit/categoryRequiredValidator.ts b/apps/modernization-ui/src/libs/patient/demographics/race/edit/categoryRequiredValidator.ts index cb89db10c0..73eff80a21 100644 --- a/apps/modernization-ui/src/libs/patient/demographics/race/edit/categoryRequiredValidator.ts +++ b/apps/modernization-ui/src/libs/patient/demographics/race/edit/categoryRequiredValidator.ts @@ -9,7 +9,7 @@ import { exists } from 'utils'; * * @return {Promise} */ -const categoryRequiredValidator = (id: number, category: Selectable | null): Promise => +const categoryRequiredValidator = (_id: number, category: Selectable | null): Promise => !exists(category) ? Promise.resolve('The Race is required.') : Promise.resolve(true); export { categoryRequiredValidator }; diff --git a/apps/modernization-ui/src/libs/patient/demographics/sex-birth/edit/SexBirthDemographicFields.tsx b/apps/modernization-ui/src/libs/patient/demographics/sex-birth/edit/SexBirthDemographicFields.tsx index 538427d3e9..6fd88f9fb8 100644 --- a/apps/modernization-ui/src/libs/patient/demographics/sex-birth/edit/SexBirthDemographicFields.tsx +++ b/apps/modernization-ui/src/libs/patient/demographics/sex-birth/edit/SexBirthDemographicFields.tsx @@ -225,7 +225,7 @@ const SexBirthDemographicFields = ({ label={labels.order} id={name} name={name} - value={value} + value={value ?? null} min="0" max="9999" onChange={onChange} diff --git a/apps/modernization-ui/src/utils/mapping/maybeMappAll.spec.ts b/apps/modernization-ui/src/utils/mapping/maybeMappAll.spec.ts index c01c4d1594..6a05fe9767 100644 --- a/apps/modernization-ui/src/utils/mapping/maybeMappAll.spec.ts +++ b/apps/modernization-ui/src/utils/mapping/maybeMappAll.spec.ts @@ -12,7 +12,7 @@ describe('when mapping over an array that could result in undefined elements', ( expect(actual).toEqual([]); - expect(mapping).not.toBeCalled(); + expect(mapping).not.toHaveBeenCalled(); }); it('should map an empty array to an empty array', () => { @@ -21,7 +21,7 @@ describe('when mapping over an array that could result in undefined elements', ( const actual = maybeMapAll(mapping)([]); expect(actual).toEqual([]); - expect(mapping).not.toBeCalled(); + expect(mapping).not.toHaveBeenCalled(); }); it('should only include element that maps to defined values', () => { diff --git a/apps/modernization-ui/src/utils/predicate/allOf.spec.ts b/apps/modernization-ui/src/utils/predicate/allOf.spec.ts index 982bb738bd..ad62e303cc 100644 --- a/apps/modernization-ui/src/utils/predicate/allOf.spec.ts +++ b/apps/modernization-ui/src/utils/predicate/allOf.spec.ts @@ -17,10 +17,10 @@ describe('allOf', () => { expect(actual).toBe(true); - expect(first).toBeCalledWith(6); - expect(second).toBeCalledWith(6); - expect(third).toBeCalledWith(6); - expect(fourth).toBeCalledWith(6); + expect(first).toHaveBeenCalledWith(6); + expect(second).toHaveBeenCalledWith(6); + expect(third).toHaveBeenCalledWith(6); + expect(fourth).toHaveBeenCalledWith(6); }); it('should return false, failing fast, if any predicates fails', () => { @@ -33,9 +33,9 @@ describe('allOf', () => { expect(actual).toBe(false); - expect(first).toBeCalledWith(6); - expect(second).toBeCalledWith(6); - expect(third).not.toBeCalled(); - expect(fourth).not.toBeCalled(); + expect(first).toHaveBeenCalledWith(6); + expect(second).toHaveBeenCalledWith(6); + expect(third).not.toHaveBeenCalled(); + expect(fourth).not.toHaveBeenCalled(); }); }); diff --git a/apps/modernization-ui/src/utils/predicate/anyOf.spec.ts b/apps/modernization-ui/src/utils/predicate/anyOf.spec.ts index 298801d052..433863aa3b 100644 --- a/apps/modernization-ui/src/utils/predicate/anyOf.spec.ts +++ b/apps/modernization-ui/src/utils/predicate/anyOf.spec.ts @@ -17,10 +17,10 @@ describe('anyOf', () => { expect(actual).toBe(false); - expect(first).toBeCalledWith(6); - expect(second).toBeCalledWith(6); - expect(third).toBeCalledWith(6); - expect(fourth).toBeCalledWith(6); + expect(first).toHaveBeenCalledWith(6); + expect(second).toHaveBeenCalledWith(6); + expect(third).toHaveBeenCalledWith(6); + expect(fourth).toHaveBeenCalledWith(6); }); it('should return true, when the first predicate succeeds', () => { @@ -33,9 +33,9 @@ describe('anyOf', () => { expect(actual).toBe(true); - expect(first).toBeCalledWith(6); - expect(second).toBeCalledWith(6); - expect(third).not.toBeCalled(); - expect(fourth).not.toBeCalled(); + expect(first).toHaveBeenCalledWith(6); + expect(second).toHaveBeenCalledWith(6); + expect(third).not.toHaveBeenCalled(); + expect(fourth).not.toHaveBeenCalled(); }); }); diff --git a/apps/modernization-ui/src/utils/predicate/not.spec.ts b/apps/modernization-ui/src/utils/predicate/not.spec.ts index 446d3b50cf..41d435d574 100644 --- a/apps/modernization-ui/src/utils/predicate/not.spec.ts +++ b/apps/modernization-ui/src/utils/predicate/not.spec.ts @@ -8,7 +8,7 @@ describe('not', () => { expect(actual).toBe(false); - expect(predicate).toBeCalledWith(7); + expect(predicate).toHaveBeenCalledWith(7); }); it('should return true when the given predicate returns false', () => { @@ -18,6 +18,6 @@ describe('not', () => { expect(actual).toBe(true); - expect(predicate).toBeCalledWith(7); + expect(predicate).toHaveBeenCalledWith(7); }); }); diff --git a/apps/modernization-ui/src/utils/util.spec.ts b/apps/modernization-ui/src/utils/util.spec.ts index ae3ba15e2d..bea98355ae 100644 --- a/apps/modernization-ui/src/utils/util.spec.ts +++ b/apps/modernization-ui/src/utils/util.spec.ts @@ -2,28 +2,28 @@ import { selectField, toClockString } from './util'; describe('selectField', () => { it('should return the value at the given path', () => { - const obj = { a: { b: { c: 42 } } }; + const obj: Record = { a: { b: { c: 42 } } }; const path = 'a.b.c'; const result = selectField(obj, path); expect(result).toBe(42); }); it('should return undefined for an invalid path', () => { - const obj = { a: { b: { c: 42 } } }; + const obj: Record = { a: { b: { c: 42 } } }; const path = 'a.b.d'; const result = selectField(obj, path); expect(result).toBeUndefined(); }); it('should return the object itself for an empty path', () => { - const obj = { a: { b: { c: 42 } } }; + const obj: Record = { a: { b: { c: 42 } } }; const path = ''; const result = selectField(obj, path); expect(result).toBe(obj); }); it('should return the nested object for a non-terminal path', () => { - const obj = { a: { b: { c: 42 } } }; + const obj: Record = { a: { b: { c: 42 } } }; const path = 'a.b'; const result = selectField(obj, path); expect(result).toStrictEqual({ c: 42 }); @@ -37,14 +37,14 @@ describe('selectField', () => { }); it('should handle paths with array indices', () => { - const obj = { a: [{ b: 42 }] }; + const obj: Record = { a: [{ b: 42 }] }; const path = 'a.0.b'; const result = selectField(obj, path); expect(result).toBe(42); }); it('should return undefined for out of bounds array indices', () => { - const obj = { a: [{ b: 42 }] }; + const obj: Record = { a: [{ b: 42 }] }; const path = 'a.1.b'; const result = selectField(obj, path); expect(result).toBeUndefined(); diff --git a/apps/modernization-ui/src/vite-env.d.ts b/apps/modernization-ui/src/vite-env.d.ts index 11f02fe2a0..b16bf73f21 100644 --- a/apps/modernization-ui/src/vite-env.d.ts +++ b/apps/modernization-ui/src/vite-env.d.ts @@ -1 +1,3 @@ /// + +declare module 'config'; diff --git a/apps/modernization-ui/tsconfig.app.json b/apps/modernization-ui/tsconfig.app.json index 5ff33c2be6..ff0eafb8e5 100644 --- a/apps/modernization-ui/tsconfig.app.json +++ b/apps/modernization-ui/tsconfig.app.json @@ -4,7 +4,7 @@ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", "target": "ES2020", "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "lib": ["ES2023", "DOM", "DOM.Iterable"], "module": "ESNext", "skipLibCheck": true, @@ -27,7 +27,8 @@ "plugins": [{ "name": "typescript-plugin-css-modules" }], "paths": { "*": ["./src/*"] - } + }, + "types": ["vite/client"] }, "exclude": ["src/**/*.spec.ts", "src/**/*.spec.tsx", "src/setupTests.ts"], "include": ["src"] diff --git a/apps/modernization-ui/tsconfig.test.json b/apps/modernization-ui/tsconfig.test.json index 7d793c0a64..4336d72a7f 100644 --- a/apps/modernization-ui/tsconfig.test.json +++ b/apps/modernization-ui/tsconfig.test.json @@ -2,9 +2,9 @@ "compilerOptions": { /* base vite config */ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "target": "ES2020", + "target": "ES2023", "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "lib": ["ES2023", "DOM", "DOM.Iterable"], "module": "ESNext", "skipLibCheck": true, @@ -27,7 +27,7 @@ "paths": { "*": ["./src/*"] }, - "types": ["vitest/globals"] + "types": ["vitest/globals", "@testing-library/jest-dom", "node"] }, - "include": ["src/**/*.spec.ts", "src/**/*.spec.tsx", "src/setupTests.ts"] + "include": ["src/**/*.spec.ts", "src/**/*.spec.tsx", "src/setupTests.ts", "src/**/*.d.ts"] } diff --git a/apps/modernization-ui/vite.config.mts b/apps/modernization-ui/vite.config.mts index 533ea401d9..d1ae6caa4c 100644 --- a/apps/modernization-ui/vite.config.mts +++ b/apps/modernization-ui/vite.config.mts @@ -1,11 +1,10 @@ import { defineConfig, loadEnv } from 'vite'; import react from '@vitejs/plugin-react'; import tsconfigPaths from 'vite-tsconfig-paths'; +import legacy from '@vitejs/plugin-legacy'; import { resolve } from 'path'; export default defineConfig(({ mode }) => { - // note: Will load ports from .env file in root (of the project) - const env = loadEnv(mode, process.cwd(), ''); const NBS_API_PORT = env.VITE_NBS_API_PORT || 8080; const DEDUPLICATION_PORT = env.VITE_DEDUPLICATION_PORT || 8083; @@ -14,12 +13,16 @@ export default defineConfig(({ mode }) => { return { appType: 'spa', define: { - // Disable Apollo development mode checks/warnings in production 'globalThis.__DEV__': JSON.stringify(mode !== 'production'), }, - plugins: [react(), tsconfigPaths()], + plugins: [ + react(), + tsconfigPaths(), + legacy({ + targets: ['>0.2%', 'not dead', 'not op_mini all'], + }), + ], publicDir: 'public', - // Only needed for scss imports resolve: { alias: { styles: resolve('src/styles'),