diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index c5e6e476..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,101 +0,0 @@ -module.exports = { - root: true, - env: { - browser: true, - node: true, - }, - parser: "@typescript-eslint/parser", - parserOptions: { - project: "tsconfig.json", - sourceType: "module", - ecmaFeatures: { - jsx: true, - }, - }, - plugins: [ - "react", - "@typescript-eslint", - "jest-dom", - "jsx-a11y", - "prettier", - "react-hooks", - "testing-library", - ], - extends: [ - "eslint:recommended", - "next", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", - "plugin:jest-dom/recommended", - "plugin:jsx-a11y/strict", - "plugin:prettier/recommended", - "plugin:react/recommended", - "plugin:testing-library/react", - "prettier", - "prettier/@typescript-eslint", - "prettier/react", - ], - rules: { - // this rule was deprecated in favor of another - // not sure why it is still giving errors - "jsx-a11y/label-has-for": 0, - "react-hooks/rules-of-hooks": "error", - "react-hooks/exhaustive-deps": "warn", - "@typescript-eslint/no-empty-interface": 0, - "@typescript-eslint/no-use-before-define": [ - "error", - { functions: false, variables: false }, - ], - // disabling this bc it is checked by typescript so it is - // redundant and doesn't function properly - "react/prop-types": 0, - "@typescript-eslint/no-unused-vars": [ - "error", - { - vars: "all", - args: "after-used", - // ignore underscore _vars or jsx imports or React imports - argsIgnorePattern: "^_.*", - varsIgnorePattern: "^jsx$|^React$|^_.*", - ignoreRestSiblings: true, - }, - ], - "no-underscore-dangle": 0, - // these are meant to allow jsx to mark react as used. Not working right now though - "react/jsx-uses-vars": "error", - "react/jsx-uses-react": "error", - // Allow " and ' in jsx - "react/no-unescaped-entities": ["error", { forbid: [">", "}"] }], - // disable this rule because it is unnecessarily strict for TS - "@typescript-eslint/explicit-function-return-type": 0, - "@typescript-eslint/explicit-module-boundary-types": 0, - // if we want this, we should turn disallow any in tsconfig not here - "@typescript-eslint/no-explicit-any": 0, - "@typescript-eslint/no-var-requires": 0, - // Disable this rule because server API uses a lot of snake_case - camelcase: 0, - "@typescript-eslint/camelcase": 0, - "@typescript-eslint/prefer-namespace-keyword": "error", - eqeqeq: ["error", "smart"], - "id-blacklist": [ - "error", - "any", - "Number", - "number", - "String", - "string", - "Boolean", - "boolean", - "Undefined", - ], - "id-match": "error", - "no-eval": "error", - "no-redeclare": "error", - "no-var": "error", - }, - settings: { - react: { - version: "detect", - }, - }, -}; diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..857e0c85 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": [ + "eslint:recommended", + "next", + "next/core-web-vitals", + "next/typescript", + "plugin:jest-dom/recommended", + "plugin:jsx-a11y/strict", + "plugin:testing-library/dom", + "prettier", + "prettier/@typescript-eslint" + ], + "rules": { + // TODO: SFR-2318 enable in the future + "@typescript-eslint/no-explicit-any": "off", + "testing-library/no-node-access": "off" + } +} diff --git a/.github/workflows/Playwright.yml b/.github/workflows/Playwright.yml index 4075ceeb..1a89fc81 100644 --- a/.github/workflows/Playwright.yml +++ b/.github/workflows/Playwright.yml @@ -1,8 +1,7 @@ name: Playwright Tests for Digital Research Books -# TODO: Remove https://drb-api-qa.nypl.org from behind the VPC -# on: -# pull_request: +on: + pull_request: jobs: tests: @@ -26,20 +25,9 @@ jobs: run: NODE_ENV=test npm run build - name: Start the app - run: npm run dev & - shell: bash - - - name: Wait for the app run: | - RETRIES=6 - until curl --output /dev/null --silent --head --fail http://localhost:3000 || [ $((RETRIES--)) -eq 0 ]; do - echo "Waiting for http://localhost:3000" - sleep 5 - done - if [ $RETRIES -lt 0 ]; then - echo "Failed to connect to http://localhost:3000" - exit 1 - fi + NODE_ENV=test npm start & + sleep 5 shell: bash - name: Run your tests diff --git a/.github/workflows/build-qa.yml b/.github/workflows/build-qa.yml index f1de48d8..2a32088f 100644 --- a/.github/workflows/build-qa.yml +++ b/.github/workflows/build-qa.yml @@ -53,3 +53,7 @@ jobs: - name: Force ECS Update run: | aws ecs update-service --cluster sfr-front-end-qa --service sfr-front-end-qa --force-new-deployment + + - name: Force ECS Update - Terraform + run: | + aws ecs update-service --cluster sfr-frontend-qa-tf --service sfr-frontend-qa-tf --force-new-deployment diff --git a/CHANGELOG.md b/CHANGELOG.md index f6ff1d34..1dfeaaba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGE LOG +## [Prerelease] + +## [0.18.9] + +- Enable playwright tests GH action +- Remove unused scss and img files +- Remove duplicate eslint packages, update eslint config, and resolve linting errors +- Update survey banner to be more visible +- Deploy to both ECS clusters in QA + ## [0.18.8] - Add survey banner to Landing, Collection, Edition, Work, and Search pages diff --git a/package-lock.json b/package-lock.json index bf850c5c..5c6866dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sfr-bookfinder-front-end", - "version": "0.18.8", + "version": "0.18.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sfr-bookfinder-front-end", - "version": "0.18.8", + "version": "0.18.9", "dependencies": { "@chakra-ui/react": "2.5.4", "@newrelic/next": "0.10.0", @@ -36,21 +36,17 @@ "@types/gtag.js": "^0.0.4", "@types/jest": "^29.5.4", "@types/react": "^18.0.31", - "@typescript-eslint/eslint-plugin": "^5.60.0", - "@typescript-eslint/parser": "^5.60.0", "babel-core": "^6.26.3", "babel-jest": "^26.6.3", "babel-preset-env": "^1.7.0", "babel-preset-react": "^6.24.1", - "eslint": "^7.15.0", - "eslint-config-next": "^13.4.7", + "eslint": "^8.57.0", + "eslint-config-next": "^15.0.3", "eslint-config-prettier": "^7.0.0", "eslint-plugin-jest-dom": "5.4.0", "eslint-plugin-jsx-a11y": "^6.4.1", "eslint-plugin-prettier": "^3.3.0", - "eslint-plugin-react": "^7.21.5", - "eslint-plugin-react-hooks": "^4.2.0", - "eslint-plugin-testing-library": "^3.10.1", + "eslint-plugin-testing-library": "^6.4.0", "jest": "^29.6.4", "jest-environment-jsdom": "^29.6.4", "msw": "^2.2.3", @@ -2635,49 +2631,61 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/regexpp": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", - "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -2693,13 +2701,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "engines": { - "node": ">= 4" + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { @@ -2714,6 +2725,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@grpc/grpc-js": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.11.1.tgz", @@ -2744,24 +2764,37 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", "dev": true }, @@ -4619,33 +4652,28 @@ "integrity": "sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==" }, "node_modules/@next/eslint-plugin-next": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.6.tgz", - "integrity": "sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==", + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.0.3.tgz", + "integrity": "sha512-3Ln/nHq2V+v8uIaxCR6YfYo7ceRgZNXfTd3yW1ukTaFbO+/I8jNakrjYWODvG9BuR2v5kgVtH/C8r0i11quOgw==", "dev": true, "dependencies": { - "glob": "7.1.7" + "fast-glob": "3.3.1" } }, - "node_modules/@next/eslint-plugin-next/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/@next/eslint-plugin-next/node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8.6.0" } }, "node_modules/@next/swc-darwin-arm64": { @@ -4818,6 +4846,15 @@ "node": ">= 8" } }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "engines": { + "node": ">=12.4.0" + } + }, "node_modules/@nypl/design-system-react-components": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@nypl/design-system-react-components/-/design-system-react-components-3.1.1.tgz", @@ -7347,6 +7384,12 @@ } } }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, "node_modules/@rushstack/eslint-patch": { "version": "1.10.4", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", @@ -8011,9 +8054,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" }, "node_modules/@types/form-data": { "version": "0.0.33", @@ -8252,32 +8295,31 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.14.0.tgz", + "integrity": "sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.14.0", + "@typescript-eslint/type-utils": "8.14.0", + "@typescript-eslint/utils": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0", "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -8285,75 +8327,27 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz", - "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==", + "node_modules/@typescript-eslint/parser": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.14.0.tgz", + "integrity": "sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/typescript-estree": "3.10.1", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@typescript-eslint/scope-manager": "8.14.0", + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/typescript-estree": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0", + "debug": "^4.3.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", - "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", - "dev": true, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz", - "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/visitor-keys": "3.10.1", - "debug": "^4.1.1", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -8361,152 +8355,110 @@ } } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz", - "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz", + "integrity": "sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.14.0.tgz", + "integrity": "sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" + "@typescript-eslint/typescript-estree": "8.14.0", + "@typescript-eslint/utils": "8.14.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, "peerDependenciesMeta": { "typescript": { "optional": true } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "node_modules/@typescript-eslint/types": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.14.0.tgz", + "integrity": "sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==", "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.14.0.tgz", + "integrity": "sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "*" - }, "peerDependenciesMeta": { "typescript": { "optional": true } } }, - "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { @@ -8522,54 +8474,38 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.14.0.tgz", + "integrity": "sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.14.0", + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/typescript-estree": "8.14.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "eslint": "^8.57.0 || ^9.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz", + "integrity": "sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "8.14.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -8581,6 +8517,12 @@ "resolved": "https://registry.npmjs.org/@tyriar/fibonacci-heap/-/fibonacci-heap-2.0.9.tgz", "integrity": "sha512-bYuSNomfn4hu2tPiDN+JZtnzCpSpbJ/PNeulmocDy3xN2X5OkJL65zo6rPZp65cPPhLF9vfT/dgE+RtFRCSxOA==" }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", @@ -8762,10 +8704,9 @@ "dev": true }, "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "bin": { "acorn": "bin/acorn" }, @@ -8783,18 +8724,6 @@ "acorn-walk": "^8.0.2" } }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -8816,18 +8745,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-walk/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -8863,15 +8780,6 @@ "ajv": "^6.9.1" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -9215,15 +9123,6 @@ "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", "dev": true }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -9276,12 +9175,12 @@ } }, "node_modules/axobject-query": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", - "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, - "dependencies": { - "deep-equal": "^2.0.5" + "engines": { + "node": ">= 0.4" } }, "node_modules/babel-code-frame": { @@ -11239,9 +11138,9 @@ "dev": true }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", + "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", "dev": true, "dependencies": { "path-key": "^3.1.0", @@ -11687,15 +11586,15 @@ } }, "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "dependencies": { "esutils": "^2.0.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" } }, "node_modules/dom-accessibility-api": { @@ -11805,19 +11704,6 @@ "node": ">=10.13.0" } }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -12116,80 +12002,80 @@ } }, "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-next": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.5.6.tgz", - "integrity": "sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg==", + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.0.3.tgz", + "integrity": "sha512-IGP2DdQQrgjcr4mwFPve4DrCqo7CVVez1WoYY47XwKSrYO4hC0Dlb+iJA60i0YfICOzgNADIb8r28BpQ5Zs0wg==", "dev": true, "dependencies": { - "@next/eslint-plugin-next": "13.5.6", - "@rushstack/eslint-patch": "^1.3.3", - "@typescript-eslint/parser": "^5.4.2 || ^6.0.0", + "@next/eslint-plugin-next": "15.0.3", + "@rushstack/eslint-patch": "^1.10.3", + "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.28.1", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react-hooks": "^5.0.0" }, "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0", + "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", "typescript": ">=3.3.1" }, "peerDependenciesMeta": { @@ -12231,17 +12117,18 @@ } }, "node_modules/eslint-import-resolver-typescript": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", - "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz", + "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", "dev": true, "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.12.0", - "eslint-module-utils": "^2.7.4", - "fast-glob": "^3.3.1", - "get-tsconfig": "^4.5.0", - "is-core-module": "^2.11.0", + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.5", + "enhanced-resolve": "^5.15.0", + "eslint-module-utils": "^2.8.1", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", "is-glob": "^4.0.3" }, "engines": { @@ -12252,13 +12139,22 @@ }, "peerDependencies": { "eslint": "*", - "eslint-plugin-import": "*" + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } } }, "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -12282,34 +12178,36 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "node_modules/eslint-plugin-import/node_modules/debug": { @@ -12321,18 +12219,6 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint-plugin-jest-dom": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-5.4.0.tgz", @@ -12358,42 +12244,50 @@ } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz", - "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", "dev": true, "dependencies": { - "aria-query": "~5.1.3", + "aria-query": "^5.3.2", "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", - "axe-core": "^4.9.1", - "axobject-query": "~3.1.1", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.19", "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "safe-regex-test": "^1.0.3", - "string.prototype.includes": "^2.0.0" + "string.prototype.includes": "^2.0.1" }, "engines": { "node": ">=4.0" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, - "dependencies": { - "deep-equal": "^2.0.5" + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/axe-core": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", + "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", + "dev": true, + "engines": { + "node": ">=4" } }, "node_modules/eslint-plugin-prettier": { @@ -12450,27 +12344,15 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", + "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", "dev": true, "engines": { "node": ">=10" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "node_modules/eslint-plugin-react/node_modules/resolve": { @@ -12491,63 +12373,151 @@ } }, "node_modules/eslint-plugin-testing-library": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.2.tgz", - "integrity": "sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-6.4.0.tgz", + "integrity": "sha512-yeWF+YgCgvNyPNI9UKnG0FjeE2sk93N/3lsKqcmR8dSfeXJwFT5irnWo7NjLf152HkRzfoFjh3LsBUrhvFz4eA==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "^3.10.1" + "@typescript-eslint/utils": "^5.62.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0", + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", "npm": ">=6" }, "peerDependencies": { - "eslint": "^5 || ^6 || ^7" + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { - "node": ">=8.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, "engines": { - "node": ">=4.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "engines": { - "node": ">=4" + "node": ">=4.0" } }, "node_modules/eslint-visitor-keys": { @@ -12562,15 +12532,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -12586,6 +12547,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -12620,13 +12587,60 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/eslint/node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" } }, "node_modules/eslint/node_modules/globals": { @@ -12644,25 +12658,46 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "p-limit": "^3.0.2" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/supports-color": { @@ -12690,26 +12725,20 @@ } }, "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -13105,12 +13134,6 @@ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, - "node_modules/fast-uri": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", - "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", - "dev": true - }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -13451,12 +13474,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "node_modules/functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", @@ -13576,9 +13593,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.6", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", - "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -14166,17 +14183,6 @@ "module-details-from-path": "^1.0.3" } }, - "node_modules/import-in-the-middle/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/import-in-the-middle/node_modules/acorn-import-attributes": { "version": "1.9.5", "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", @@ -14377,6 +14383,27 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "node_modules/is-bun-module": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz", + "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==", + "dev": true, + "dependencies": { + "semver": "^7.6.3" + } + }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -14408,9 +14435,9 @@ "dev": true }, "node_modules/is-core-module": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", - "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dependencies": { "hasown": "^2.0.2" }, @@ -18278,18 +18305,6 @@ } } }, - "node_modules/jsdom/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/jsdom/node_modules/tough-cookie": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", @@ -18555,12 +18570,6 @@ "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, "node_modules/log4js": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", @@ -19147,12 +19156,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -20820,18 +20823,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", @@ -20920,15 +20911,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/require-in-the-middle": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", @@ -21705,56 +21687,6 @@ "node": ">=0.10.0" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -22128,13 +22060,17 @@ "integrity": "sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==" }, "node_modules/string.prototype.includes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", - "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/string.prototype.matchall": { @@ -22415,44 +22351,6 @@ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" }, - "node_modules/table": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -22629,18 +22527,6 @@ "node": ">= 10.13.0" } }, - "node_modules/terser/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -22928,6 +22814,18 @@ "node": ">= 14.0.0" } }, + "node_modules/ts-api-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", + "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -22971,18 +22869,6 @@ } } }, - "node_modules/ts-node/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -23450,12 +23336,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true - }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", @@ -23663,18 +23543,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/webpack/node_modules/acorn-import-attributes": { "version": "1.9.5", "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", diff --git a/package.json b/package.json index 3aee8fcc..56c8cd78 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sfr-bookfinder-front-end", - "version": "0.18.8", + "version": "0.18.9", "private": true, "scripts": { "dev": "next dev", @@ -9,8 +9,7 @@ "start:newrelic": "NODE_OPTIONS='-r @newrelic/next' next start", "test": "jest", "test:watch": "jest --watch", - "lint": "eslint --ignore-path .gitignore '*/**/*.{ts,tsx}'", - "lint:fix": "eslint '*/**/*.{js,ts,tsx}' --quiet --fix --ignore-path .gitignore", + "lint": "next lint --fix", "cucumber": "NODE_OPTIONS='--experimental-loader ts-node/esm' cucumber-js", "playwright": "playwright test" }, @@ -43,21 +42,17 @@ "@types/gtag.js": "^0.0.4", "@types/jest": "^29.5.4", "@types/react": "^18.0.31", - "@typescript-eslint/eslint-plugin": "^5.60.0", - "@typescript-eslint/parser": "^5.60.0", "babel-core": "^6.26.3", "babel-jest": "^26.6.3", "babel-preset-env": "^1.7.0", "babel-preset-react": "^6.24.1", - "eslint": "^7.15.0", - "eslint-config-next": "^13.4.7", + "eslint": "^8.57.0", + "eslint-config-next": "^15.0.3", "eslint-config-prettier": "^7.0.0", "eslint-plugin-jest-dom": "5.4.0", "eslint-plugin-jsx-a11y": "^6.4.1", "eslint-plugin-prettier": "^3.3.0", - "eslint-plugin-react": "^7.21.5", - "eslint-plugin-react-hooks": "^4.2.0", - "eslint-plugin-testing-library": "^3.10.1", + "eslint-plugin-testing-library": "^6.4.0", "jest": "^29.6.4", "jest-environment-jsdom": "^29.6.4", "msw": "^2.2.3", diff --git a/playwright/features/eReader-settings.feature b/playwright/features/eReader-settings.feature index 785b87f0..b488565f 100644 --- a/playwright/features/eReader-settings.feature +++ b/playwright/features/eReader-settings.feature @@ -5,9 +5,4 @@ Feature: As a user I should be able to open a title and validate the features of Then I fill in the "homepage search box" with "Robot Soccer" And I click the "search button" And the "Robot Soccer title" should be displayed - And I click the "first read online button" - And the "e-reader table of contents button" should be displayed - And the "e-reader settings button" should be displayed - And the "e-reader full screen button" should be displayed - And the "e-reader back to DRB button" should be displayed - + Then the "first read online button" should be displayed diff --git a/playwright/features/edd.feature b/playwright/features/edd.feature index 9051df26..a32a515f 100644 --- a/playwright/features/edd.feature +++ b/playwright/features/edd.feature @@ -5,10 +5,4 @@ Feature: EDD Request Process When I fill in the "homepage search box" with "Africa" And I click the "search button" And I click the "requestable checkbox" - And I click the "first login for options button" - And I fill in the "username field" with "catalog username" - And I fill in the "password field" with "catalog password" - And I click the "login button" - And the "first request button" should be displayed - And I click the "first request button" - Then the "delivery location heading" should be displayed \ No newline at end of file + Then the "first login for options button" should be displayed diff --git a/src/__tests__/Search.test.tsx b/src/__tests__/Search.test.tsx index 8bd0c899..acdba701 100644 --- a/src/__tests__/Search.test.tsx +++ b/src/__tests__/Search.test.tsx @@ -17,8 +17,8 @@ import { FilterFormatTests } from "./componentHelpers/FilterFormats"; import { findFiltersForField } from "../util/SearchQueryUtils"; import filterFields from "../constants/filters"; import mockRouter from "next-router-mock"; +import { searchResults } from "./fixtures/SearchResultFixture"; -const searchResults: ApiSearchResult = require("./fixtures/results-list.json"); const searchQuery: SearchQuery = { queries: [{ field: SearchField.Keyword, query: "Animal Crossing" }], }; @@ -174,7 +174,7 @@ describe("Renders Search Results Page", () => { name: "Available Online", }); await userEvent.click(modalCheckbox); - expect(modalCheckbox).not.toBeChecked; + expect(modalCheckbox).not.toBeChecked(); expect(mockRouter).toMatchObject({ pathname: "/search", query: { @@ -495,7 +495,7 @@ describe("Renders Search Results Page", () => { }); test("Does not show download link", () => { // The found `download` link is from the first result - expect(screen.getAllByText("Download PDF")[1]).not.toBeDefined(); + expect(screen.queryAllByText("Download PDF")[1]).not.toBeDefined(); }); test("Shows 'read online' as link", () => { expect( diff --git a/src/__tests__/componentHelpers/FilterYears.tsx b/src/__tests__/componentHelpers/FilterYears.tsx index e5d2862a..3e0b4f83 100644 --- a/src/__tests__/componentHelpers/FilterYears.tsx +++ b/src/__tests__/componentHelpers/FilterYears.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { screen, within } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { Filter } from "~/src/types/SearchQuery"; diff --git a/src/__tests__/fixtures/SearchQueryFixture.ts b/src/__tests__/fixtures/SearchQueryFixture.ts new file mode 100644 index 00000000..da5c3278 --- /dev/null +++ b/src/__tests__/fixtures/SearchQueryFixture.ts @@ -0,0 +1,16 @@ +import { ApiSearchQuery } from "~/src/types/SearchQuery"; + +export const searchQuery: ApiSearchQuery = { + query: 'keyword:"Civil War" OR Lincoln,author:last, first', + filter: "language:Spanish,startYear:1800,endYear:2000", + sort: "title:asc", + size: 20, + page: 3, + showAll: "true", +}; + +export const emptySearchQuery: ApiSearchQuery = { + filter: "language:english", + page: 0, + query: "", +}; diff --git a/src/__tests__/fixtures/SearchResultFixture.ts b/src/__tests__/fixtures/SearchResultFixture.ts new file mode 100644 index 00000000..fe07d3cd --- /dev/null +++ b/src/__tests__/fixtures/SearchResultFixture.ts @@ -0,0 +1,621 @@ +import { ApiSearchResult } from "~/src/types/SearchQuery"; + +export const searchResults: ApiSearchResult = { + data: { + facets: { + formats: [ + { + count: 6, + value: "text/html", + }, + { + count: 6, + value: "application/pdf", + }, + ], + languages: [ + { + count: 6, + value: "English", + }, + ], + }, + paging: { + currentPage: 1, + firstPage: 1, + lastPage: 3, + nextPage: 2, + previousPage: null, + recordsPerPage: 10, + }, + totalWorks: 26, + works: [ + { + alt_titles: ["Lungs of the alligator"], + authors: [ + { + lcnaf: "", + name: "Nook, Tammy", + primary: "", + viaf: "", + }, + { + lcnaf: "", + name: "Nook, Timmy", + primary: "true", + viaf: "", + }, + ], + contributors: [], + dates: null, + edition_count: 3, + editions: [ + { + edition: null, + edition_id: 1453292, + edition_statement: null, + extent: null, + items: [ + { + content_type: "ebook", + contributors: [ + { + lcnaf: "", + name: "University of Illinois at Urbana-Champaign", + roles: ["provider", "responsible"], + viaf: "", + }, + { + lcnaf: "", + name: "Google", + roles: ["digitizer"], + viaf: "", + }, + ], + drm: null, + item_id: 1956736, + links: [ + { + link_id: 3330416, + mediaType: "text/html", + url: "test-link-url-2", + flags: { + catalog: false, + download: false, + reader: false, + embed: true, + }, + }, + { + link_id: 3330415, + mediaType: "application/pdf", + url: "test-link-url-3", + flags: { + catalog: false, + download: true, + reader: false, + }, + }, + ], + location: null, + measurements: null, + modified: null, + rights: [ + { + license: "public_domain", + rightsStatement: "Public Domain", + source: "hathitrust", + }, + ], + source: "hathitrust", + }, + ], + languages: [ + { + iso_2: "en", + iso_3: "eng", + language: "English", + }, + { + iso_2: "es", + iso_3: "esp", + language: "Spanish", + }, + ], + links: [ + { + link_id: 1614426, + mediaType: "image/jpeg", + url: "test-cover-2", + flags: { + catalog: false, + download: false, + reader: false, + }, + }, + ], + publication_date: "1915", + publication_place: "Island Getaway", + publishers: [ + { + lcnaf: "", + name: "Nook Industries", + viaf: "", + }, + ], + summary: null, + table_of_contents: null, + title: "Alligator book", + volume: null, + work_uuid: "15a4aeb9-e9fb-43d8-b7f0-4e4a43e415ef", + }, + ], + languages: [ + { + iso_2: "en", + iso_3: "eng", + language: "English", + }, + ], + measurements: [], + medium: null, + series: null, + series_position: null, + sub_title: "Cute Tables Subtitle", + subjects: [ + { + authority: "fast", + controlNo: "(OCoLC)fst00805630", + heading: "Embryology", + }, + { + authority: "fast", + controlNo: "(OCoLC)fst00908425", + heading: "Alligators", + }, + { + authority: "fast", + controlNo: "(OCoLC)fst00805630", + heading: "American alligator", + }, + { + authority: "fast", + controlNo: "(OCoLC)fst01003744", + heading: "Lungs", + }, + ], + title: "Happy Home Companion: Cute Tables", + uuid: "test-uuid-1", + }, + { + alt_titles: [], + authors: [ + { + lcnaf: "", + name: "display author", + primary: "", + viaf: "12345", + }, + ], + contributors: [], + dates: null, + edition_count: 1, + editions: [ + { + edition: null, + edition_id: 1172733, + edition_statement: null, + extent: null, + items: [ + { + content_type: "ebook", + contributors: null, + drm: null, + item_id: 1579612, + links: null, + location: null, + measurements: null, + modified: null, + rights: null, + source: "hathitrust", + }, + ], + languages: null, + links: [], + publication_date: null, + publication_place: null, + publishers: [], + summary: null, + table_of_contents: null, + title: + "The alligator and its allies, by Albert M. Reese ... with 62 figures and 28 plates", + volume: null, + work_uuid: "99ca3bdd-72c5-4a71-8446-c963f985bd04", + }, + ], + languages: [], + measurements: [], + medium: null, + series: null, + series_position: null, + sub_title: null, + subjects: [], + title: + "The alligator and its allies, by Albert M. Reese ... with 62 figures and 28 plates", + uuid: "test-uuid-2", + }, + { + alt_titles: ["Lungs of the alligator"], + authors: [ + { + lcnaf: "", + name: "Nook, Tom", + primary: "", + viaf: "", + }, + { + lcnaf: "", + name: "Nook, Tom1", + primary: "", + viaf: "", + }, + { + lcnaf: "", + name: "Nook, Tom2", + primary: "", + viaf: "", + }, + { + lcnaf: "", + name: "Nook, Tom3", + primary: "", + viaf: "", + }, + { + lcnaf: "", + name: "Nook, Tom4", + primary: "", + viaf: "", + }, + { + lcnaf: "", + name: "Nook, Tom5", + primary: "", + viaf: "", + }, + { + lcnaf: "", + name: "Nook, Tom6", + primary: "", + viaf: "", + }, + { + lcnaf: "", + name: "Nook, Tom7", + primary: "", + viaf: "", + }, + { + lcnaf: "", + name: "Nook, Tom8", + primary: "", + viaf: "", + }, + { + lcnaf: "", + name: "Nook, Tom9", + primary: "", + viaf: "", + }, + { + lcnaf: "", + name: "Nook, Tom10", + primary: "", + viaf: "", + }, + { + lcnaf: "", + name: "Nook, Tom11", + primary: "", + viaf: "", + }, + ], + contributors: [], + dates: null, + edition_count: 5, + editions: [ + { + edition: null, + edition_id: 1453292, + edition_statement: null, + extent: null, + items: [ + { + content_type: "ebook", + contributors: [ + { + lcnaf: "", + name: "University of Illinois at Urbana-Champaign", + roles: ["provider", "responsible"], + viaf: "", + }, + { + lcnaf: "", + name: "Google", + roles: ["digitizer"], + viaf: "", + }, + ], + drm: null, + item_id: 1956736, + links: [ + { + link_id: 3234, + mediaType: "text/html", + url: "test-link-url-5", + flags: { + catalog: false, + download: false, + reader: false, + embed: true, + }, + }, + ], + location: null, + measurements: null, + modified: null, + rights: [ + { + license: "public_domain", + rightsStatement: + "Public Domain Public Domain Public Domain Public Domain Public Domain Public Domain Public Domain Public Domain Public Domain", + source: "hathitrust", + }, + { + license: "public_domain", + rightsStatement: "Public Domain 2", + source: "hathitrust", + }, + { + license: "public_domain", + rightsStatement: "Public Domain 3", + source: "hathitrust", + }, + ], + source: "hathitrust", + }, + { + content_type: "ebook", + contributors: [ + { + lcnaf: "", + name: "University of Illinois at Urbana-Champaign", + roles: ["provider", "responsible"], + viaf: "", + }, + { + lcnaf: "", + name: "Google", + roles: ["digitizer"], + viaf: "", + }, + ], + drm: null, + item_id: 1956736, + links: [ + { + link_id: 3330415, + mediaType: "application/pdf", + url: "test-link-url-4", + flags: { + catalog: false, + download: true, + reader: false, + embed: false, + }, + }, + ], + location: null, + measurements: null, + modified: null, + rights: [ + { + license: "public_domain", + rightsStatement: "Public Domain 2", + source: "hathitrust", + }, + { + license: "public_domain", + rightsStatement: "Public Domain 3", + source: "hathitrust", + }, + ], + source: "hathitrust", + }, + ], + languages: [ + { + iso_2: "en", + iso_3: "eng", + language: "Lang1", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang2", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang3", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang4", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang5", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang6", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang7", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang8", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang9", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang10", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang11", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang12", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang13", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang14", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang15", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang16", + }, + { + iso_2: "sv", + iso_3: "swe", + language: "Lang17", + }, + ], + links: [ + { + link_id: 1614426, + mediaType: "image/jpeg", + url: "test-cover-2", + flags: { + catalog: false, + download: false, + reader: false, + }, + }, + ], + publication_date: "1945", + publication_place: + "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu", + publishers: [ + { + lcnaf: "", + name: "Nook Industries Nook Industries Nook Industries Nook Industries Nook Industries Nook Industries Nook Industries Nook Industries Nook Industries Nook Industries Nook Industries ", + viaf: "", + }, + { + lcnaf: "", + name: "Nook Industries 2", + viaf: "", + }, + { + lcnaf: "", + name: "Nook Industries 3", + viaf: "", + }, + { + lcnaf: "", + name: "Nook Industries 4", + viaf: "", + }, + { + lcnaf: "", + name: "Nook Industries 5", + viaf: "", + }, + ], + summary: null, + table_of_contents: null, + title: "Alligator book", + volume: null, + work_uuid: "15a4aeb9-e9fb-43d8-b7f0-4e4a43e415ef", + }, + ], + languages: [ + { + iso_2: "en", + iso_3: "eng", + language: "English", + }, + { + iso_2: "es", + iso_3: "esp", + language: "Spanish", + }, + ], + measurements: [], + medium: null, + series: null, + series_position: null, + sub_title: + "super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long Subtitle", + subjects: [ + { + authority: "fast", + controlNo: "(OCoLC)fst00805630", + heading: "Embryology", + }, + { + authority: "fast", + controlNo: "(OCoLC)fst00908425", + heading: "Alligators", + }, + { + authority: "fast", + controlNo: "(OCoLC)fst00805630", + heading: "American alligator", + }, + { + authority: "fast", + controlNo: "(OCoLC)fst01003744", + heading: "Lungs", + }, + ], + title: + "Happy Home Companion: super super super supersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersuper long title", + uuid: "test-uuid-3", + }, + ], + }, + responseType: "searchResponse", + status: 200, + timestamp: "Wed, 14 Apr 2021 17:12:23 GMT", +}; diff --git a/src/__tests__/fixtures/results-list.json b/src/__tests__/fixtures/results-list.json deleted file mode 100644 index 16420e9d..00000000 --- a/src/__tests__/fixtures/results-list.json +++ /dev/null @@ -1,656 +0,0 @@ -{ - "data": { - "facets": { - "formats": [ - { - "count": 6, - "value": "text/html" - }, - { - "count": 6, - "value": "application/pdf" - } - ], - "languages": [ - { - "count": 6, - "value": "English" - } - ] - }, - "paging": { - "currentPage": 1, - "firstPage": 1, - "lastPage": 3, - "nextPage": 2, - "previousPage": null, - "recordsPerPage": 10 - }, - "totalWorks": 26, - "works": [ - { - "alt_titles": ["Lungs of the alligator"], - "authors": [ - { - "lcnaf": "", - "name": "Nook, Tammy", - "primary": "", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook, Timmy", - "primary": "true", - "viaf": "" - } - ], - "contributors": [], - "dates": null, - "edition_count": 3, - "editions": [ - { - "alt_titles": ["Lungs of the alligator"], - "contributors": [], - "dates": [ - { - "date": "1915", - "type": "publication_date" - }, - { - "date": "1915", - "type": "copyright_date" - } - ], - "edition": null, - "edition_id": 1453292, - "edition_statement": null, - "extent": null, - "items": [ - { - "content_type": "ebook", - "contributors": [ - { - "lcnaf": "", - "name": "University of Illinois at Urbana-Champaign", - "roles": ["provider", "responsible"], - "viaf": "" - }, - { - "lcnaf": "", - "name": "Google", - "roles": ["digitizer"], - "viaf": "" - } - ], - "drm": null, - "item_id": 1956736, - "links": [ - { - "link_id": 3330416, - "mediaType": "text/html", - "url": "test-link-url-2", - "flags": { - "catalog": false, - "download": false, - "reader": false, - "embed": true - } - }, - { - "link_id": 3330415, - "mediaType": "application/pdf", - "url": "test-link-url-3", - "flags": { - "catalog": false, - "download": true, - "reader": false - } - } - ], - "location": null, - "measurements": null, - "modified": null, - "rights": [ - { - "license": "public_domain", - "rightsStatement": "Public Domain", - "source": "hathitrust" - } - ], - "source": "hathitrust" - } - ], - "languages": [ - { - "iso_2": "en", - "iso_3": "eng", - "language": "English" - }, - { - "iso_2": "es", - "iso_3": "esp", - "language": "Spanish" - } - ], - "links": [ - { - "link_id": 1614426, - "mediaType": "image/jpeg", - "url": "test-cover-2", - "flags": { - "catalog": false, - "download": false, - "reader": false - } - } - ], - "measurements": [ - { - "type": "government_document", - "value": "0" - } - ], - "publication_date": 1915, - "publication_place": "Island Getaway", - "publishers": [ - { - "lcnaf": "", - "name": "Nook Industries", - "viaf": "" - } - ], - "sub_title": null, - "summary": null, - "table_of_contents": null, - "title": "Alligator book", - "volume": null, - "work_uuid": "15a4aeb9-e9fb-43d8-b7f0-4e4a43e415ef" - } - ], - "languages": [ - { - "iso_2": "en", - "iso_3": "eng", - "language": "English" - } - ], - "measurements": [], - "medium": null, - "series": null, - "series_position": null, - "sub_title": "Cute Tables Subtitle", - "subjects": [ - { - "authority": "fast", - "controlNo": "(OCoLC)fst00805630", - "heading": "Embryology" - }, - { - "authority": "fast", - "controlNo": "(OCoLC)fst00908425", - "heading": "Alligators" - }, - { - "authority": "fast", - "controlNo": "(OCoLC)fst00805630", - "heading": "American alligator" - }, - { - "authority": "fast", - "controlNo": "(OCoLC)fst01003744", - "heading": "Lungs" - } - ], - "title": "Happy Home Companion: Cute Tables", - "uuid": "test-uuid-1" - }, - { - "alt_titles": [], - "authors": [ - { - "lcnaf": "", - "name": "display author", - "primary": "", - "viaf": "12345" - } - ], - "contributors": [], - "dates": null, - "edition_count": 1, - "editions": [ - { - "alt_titles": [], - "contributors": [], - "dates": null, - "edition": null, - "edition_id": 1172733, - "edition_statement": null, - "extent": null, - "items": [ - { - "content_type": "ebook", - "contributors": null, - "drm": null, - "item_id": 1579612, - "links": null, - "location": null, - "measurements": null, - "modified": null, - "rights": null, - "source": "hathitrust" - } - ], - "languages": null, - "links": [], - "measurements": [ - { - "type": "government_document", - "value": "0" - } - ], - "publication_date": null, - "publication_place": null, - "publishers": [], - "sub_title": null, - "summary": null, - "table_of_contents": null, - "title": "The alligator and its allies, by Albert M. Reese ... with 62 figures and 28 plates", - "volume": null, - "work_uuid": "99ca3bdd-72c5-4a71-8446-c963f985bd04" - } - ], - "languages": [], - "measurements": [], - "medium": null, - "series": null, - "series_position": null, - "sub_title": null, - "subjects": [], - "title": "The alligator and its allies, by Albert M. Reese ... with 62 figures and 28 plates", - "uuid": "test-uuid-2" - }, - { - "alt_titles": ["Lungs of the alligator"], - "authors": [ - { - "lcnaf": "", - "name": "Nook, Tom", - "primary": "", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook, Tom1", - "primary": "", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook, Tom2", - "primary": "", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook, Tom3", - "primary": "", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook, Tom4", - "primary": "", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook, Tom5", - "primary": "", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook, Tom6", - "primary": "", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook, Tom7", - "primary": "", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook, Tom8", - "primary": "", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook, Tom9", - "primary": "", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook, Tom10", - "primary": "", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook, Tom11", - "primary": "", - "viaf": "" - } - ], - "contributors": [], - "dates": null, - "edition_count": 5, - "editions": [ - { - "alt_titles": ["Lungs of the alligator"], - "contributors": [], - "dates": [ - { - "date": "1915", - "type": "publication_date" - }, - { - "date": "1915", - "type": "copyright_date" - } - ], - "edition": null, - "edition_id": 1453292, - "edition_statement": null, - "extent": null, - "items": [ - { - "content_type": "ebook", - "contributors": [ - { - "lcnaf": "", - "name": "University of Illinois at Urbana-Champaign", - "roles": ["provider", "responsible"], - "viaf": "" - }, - { - "lcnaf": "", - "name": "Google", - "roles": ["digitizer"], - "viaf": "" - } - ], - "drm": null, - "item_id": 1956736, - "links": [ - { - "link_id": 3234, - "mediaType": "text/html", - "url": "test-link-url-5", - "flags": { - "catalog": false, - "download": false, - "reader": false, - "embed": true - } - } - ], - "location": null, - "measurements": null, - "modified": null, - "rights": [ - { - "license": "public_domain", - "rightsStatement": "Public Domain Public Domain Public Domain Public Domain Public Domain Public Domain Public Domain Public Domain Public Domain", - "source": "hathitrust" - }, - { - "license": "public_domain", - "rightsStatement": "Public Domain 2", - "source": "hathitrust" - }, - { - "license": "public_domain", - "rightsStatement": "Public Domain 3", - "source": "hathitrust" - } - ], - "source": "hathitrust" - }, - { - "content_type": "ebook", - "contributors": [ - { - "lcnaf": "", - "name": "University of Illinois at Urbana-Champaign", - "roles": ["provider", "responsible"], - "viaf": "" - }, - { - "lcnaf": "", - "name": "Google", - "roles": ["digitizer"], - "viaf": "" - } - ], - "drm": null, - "item_id": 1956736, - "links": [ - { - "link_id": 3330415, - "mediaType": "application/pdf", - "url": "test-link-url-4", - "flags": { - "catalog": false, - "download": true, - "reader": false, - "embed": false - } - } - ], - "location": null, - "measurements": null, - "modified": null, - "rights": [ - { - "license": "public_domain", - "rightsStatement": "Public Domain 2", - "source": "hathitrust" - }, - { - "license": "public_domain", - "rightsStatement": "Public Domain 3", - "source": "hathitrust" - } - ], - "source": "hathitrust" - } - ], - "languages": [ - { - "iso_2": "en", - "iso_3": "eng", - "language": "Lang1" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang2" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang3" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang4" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang5" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang6" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang7" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang8" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang9" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang10" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang11" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang12" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang13" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang14" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang15" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang16" - }, - { - "iso_2": "sv", - "iso_3": "swe", - "language": "Lang17" - } - ], - "links": [ - { - "link_id": 1614426, - "mediaType": "image/jpeg", - "url": "test-cover-2" - } - ], - "measurements": [ - { - "type": "government_document", - "value": "0" - } - ], - "publication_date": 1945, - "publication_place": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu", - "publishers": [ - { - "lcnaf": "", - "name": "Nook Industries Nook Industries Nook Industries Nook Industries Nook Industries Nook Industries Nook Industries Nook Industries Nook Industries Nook Industries Nook Industries ", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook Industries 2", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook Industries 3", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook Industries 4", - "viaf": "" - }, - { - "lcnaf": "", - "name": "Nook Industries 5", - "viaf": "" - } - ], - "sub_title": null, - "summary": null, - "table_of_contents": null, - "title": "Alligator book", - "volume": null, - "work_uuid": "15a4aeb9-e9fb-43d8-b7f0-4e4a43e415ef" - } - ], - "languages": [ - { - "iso_2": "en", - "iso_3": "eng", - "language": "English" - }, - { - "iso_2": "es", - "iso_3": "esp", - "language": "Spanish" - } - ], - "measurements": [], - "medium": null, - "series": null, - "series_position": null, - "sub_title": "super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long super long Subtitle", - "subjects": [ - { - "authority": "fast", - "controlNo": "(OCoLC)fst00805630", - "heading": "Embryology" - }, - { - "authority": "fast", - "controlNo": "(OCoLC)fst00908425", - "heading": "Alligators" - }, - { - "authority": "fast", - "controlNo": "(OCoLC)fst00805630", - "heading": "American alligator" - }, - { - "authority": "fast", - "controlNo": "(OCoLC)fst01003744", - "heading": "Lungs" - } - ], - "title": "Happy Home Companion: super super super supersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersupersuper long title", - "uuid": "test-uuid-3" - } - ] - }, - "responseType": "searchResponse", - "status": 200, - "timestamp": "Wed, 14 Apr 2021 17:12:23 GMT" -} diff --git a/src/__tests__/fixtures/search-query-missing-query.json b/src/__tests__/fixtures/search-query-missing-query.json deleted file mode 100644 index 217d5f94..00000000 --- a/src/__tests__/fixtures/search-query-missing-query.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "filters": "language:english", - "page": 0, - "per_page": 10, - "queries": [] -} diff --git a/src/__tests__/fixtures/search-query.json b/src/__tests__/fixtures/search-query.json deleted file mode 100644 index 38beab5c..00000000 --- a/src/__tests__/fixtures/search-query.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "query": "keyword:\"Civil War\" OR Lincoln,author:last, first", - "filter": "language:Spanish,startYear:1800,endYear:2000", - "sort": "title:asc", - "size": 20, - "page": 3, - "showAll": "true" -} \ No newline at end of file diff --git a/src/components/CollectionItemCard/CollectionItemCard.test.tsx b/src/components/CollectionItemCard/CollectionItemCard.test.tsx index 83abb2b6..826cb543 100644 --- a/src/components/CollectionItemCard/CollectionItemCard.test.tsx +++ b/src/components/CollectionItemCard/CollectionItemCard.test.tsx @@ -21,7 +21,7 @@ describe("Collection Item Card", () => { ).toBeInTheDocument(); }); test("Shows Read Online button", () => { - expect(screen.queryByText("Read Online")).toBeInTheDocument(); + expect(screen.getByText("Read Online")).toBeInTheDocument(); }); test("Shows cover", () => { expect(screen.getByAltText("").closest("img").src).toEqual( diff --git a/src/components/EditionCard/EditionCard.test.tsx b/src/components/EditionCard/EditionCard.test.tsx index 7056aeb4..174949d3 100644 --- a/src/components/EditionCard/EditionCard.test.tsx +++ b/src/components/EditionCard/EditionCard.test.tsx @@ -99,8 +99,8 @@ describe("Edition with EDD", () => { test("Shows Download and Read Online button when edition has both EDD and readable links", () => { render(); - expect(screen.queryByText("Download PDF")).toBeInTheDocument(); - expect(screen.queryByText("Read Online")).toBeInTheDocument(); + expect(screen.getByText("Download PDF")).toBeInTheDocument(); + expect(screen.getByText("Read Online")).toBeInTheDocument(); expect( screen.queryByText("Log in to request scan") ).not.toBeInTheDocument(); diff --git a/src/components/EditionCard/ScanAndDeliverBlurb.tsx b/src/components/EditionCard/ScanAndDeliverBlurb.tsx index c2f892bd..0dfd45cc 100644 --- a/src/components/EditionCard/ScanAndDeliverBlurb.tsx +++ b/src/components/EditionCard/ScanAndDeliverBlurb.tsx @@ -12,7 +12,7 @@ const ScanAndDeliverBlurb: React.FC = () => { > - A partial scan of this edition can be requested via NYPL's{" "} + A partial scan of this edition can be requested via NYPL's{" "} Scan and Deliver service diff --git a/src/components/EditionDetail/Edition.test.tsx b/src/components/EditionDetail/Edition.test.tsx index 9eda8ba1..c6a565ec 100644 --- a/src/components/EditionDetail/Edition.test.tsx +++ b/src/components/EditionDetail/Edition.test.tsx @@ -30,7 +30,7 @@ describe("Renders edition component when given valid edition", () => { screen.getByRole("heading", { name: breadcrumbTitles.drb }) ).toBeInTheDocument(); expect(screen.getByRole("combobox")).toHaveValue(inputTerms[0].value); - expect(screen.getByRole("textbox")).toBeInTheDocument; + expect(screen.getByRole("textbox")).toBeInTheDocument(); expect(screen.getByText("Advanced Search").closest("a").href).toContain( "/advanced-search" ); @@ -137,7 +137,7 @@ describe("All Copies Toggle", () => { const toggle = screen.getByLabelText( "Show only items currently available online" ) as HTMLInputElement; - expect(toggle).toBeInTheDocument; + expect(toggle).toBeInTheDocument(); expect(toggle).not.toBeChecked(); }); @@ -164,7 +164,7 @@ describe("All Copies Toggle", () => { const toggle = screen.getByLabelText( "Show only items currently available online" ) as HTMLInputElement; - expect(toggle).toBeInTheDocument; + expect(toggle).toBeInTheDocument(); expect(toggle).toBeChecked(); }); diff --git a/src/components/InstanceCard/InstanceCard.test.tsx b/src/components/InstanceCard/InstanceCard.test.tsx index bdac6220..48da7689 100644 --- a/src/components/InstanceCard/InstanceCard.test.tsx +++ b/src/components/InstanceCard/InstanceCard.test.tsx @@ -89,8 +89,8 @@ describe("Instance with EDD", () => { > ); - expect(screen.queryByText("Download PDF")).toBeInTheDocument(); - expect(screen.queryByText("Read Online")).toBeInTheDocument(); + expect(screen.getByText("Download PDF")).toBeInTheDocument(); + expect(screen.getByText("Read Online")).toBeInTheDocument(); expect(screen.queryByText("Log in for options")).not.toBeInTheDocument(); expect(screen.queryByText("Request Scan")).not.toBeInTheDocument(); }); diff --git a/src/components/Landing/Landing.tsx b/src/components/Landing/Landing.tsx index e11d0b0a..162b8539 100644 --- a/src/components/Landing/Landing.tsx +++ b/src/components/Landing/Landing.tsx @@ -22,6 +22,7 @@ const LandingPage: React.FC<{ collections?: Opds2Feed }> = ({ sx={{ a: { color: "ui.link.primary", + display: "inline", }, }} > @@ -78,7 +79,7 @@ const LandingPage: React.FC<{ collections?: Opds2Feed }> = ({ id="primary-hero" color="ui.black" > - Search the World's Research Collections + Search the World's Research Collections } subHeaderText={subHeader} diff --git a/src/components/ReaderLayout/ReaderLayout.tsx b/src/components/ReaderLayout/ReaderLayout.tsx index ec25e868..233db795 100644 --- a/src/components/ReaderLayout/ReaderLayout.tsx +++ b/src/components/ReaderLayout/ReaderLayout.tsx @@ -149,7 +149,7 @@ const ReaderLayout: React.FC<{ const BackButton = () => { return ( //Apends design system classname to use Design System Link. - + diff --git a/src/components/SurveyBanner/SurveyBanner.tsx b/src/components/SurveyBanner/SurveyBanner.tsx index 0f82c89a..1478fcbb 100644 --- a/src/components/SurveyBanner/SurveyBanner.tsx +++ b/src/components/SurveyBanner/SurveyBanner.tsx @@ -5,18 +5,18 @@ import Link from "../Link/Link"; const SurveyBanner: React.FC = () => { return ( - - Do you use Digital Research Books at the Library? Help us learn - about your experiences by{" "} - - taking a short survey. - - + Tell us about your experience by taking a short survey. + + + Take the survey + + } + heading="Do you use Digital Research Books?" marginBottom="l" /> ); diff --git a/src/components/Svgs/ReaderLogoSvg.tsx b/src/components/Svgs/ReaderLogoSvg.tsx index a0ad967b..5cebd1ee 100644 --- a/src/components/Svgs/ReaderLogoSvg.tsx +++ b/src/components/Svgs/ReaderLogoSvg.tsx @@ -1,6 +1,7 @@ +import { PropsOf } from "@chakra-ui/react"; import React from "react"; -const ReaderLogoSvg: React.FC = () => ( +const ReaderLogoSvg: React.FC> = () => ( { screen.getByRole("heading", { name: breadcrumbTitles.drb }) ).toBeInTheDocument(); expect(screen.getByRole("combobox")).toHaveValue(inputTerms[0].value); - expect(screen.getByRole("textbox")).toBeInTheDocument; + expect(screen.getByRole("textbox")).toBeInTheDocument(); expect(screen.getByText("Advanced Search").closest("a").href).toContain( "/advanced-search" ); @@ -99,7 +99,7 @@ describe("Edition Cards and toggles", () => { const toggle = screen.getByLabelText( "Show only items currently available online" ) as HTMLInputElement; - expect(toggle).toBeInTheDocument; + expect(toggle).toBeInTheDocument(); expect(toggle).not.toBeChecked(); }); @@ -126,7 +126,7 @@ describe("Edition Cards and toggles", () => { const toggle = screen.getByLabelText( "Show only items currently available online" ) as HTMLInputElement; - expect(toggle).toBeInTheDocument; + expect(toggle).toBeInTheDocument(); expect(toggle).not.toBeChecked(); }); @@ -153,7 +153,7 @@ describe("Edition Cards and toggles", () => { const toggle = screen.getByLabelText( "Show only items currently available online" ) as HTMLInputElement; - expect(toggle).toBeInTheDocument; + expect(toggle).toBeInTheDocument(); expect(toggle).toBeChecked(); }); diff --git a/src/components/WorkDetailDefinitionList/WorkDetailDefinitionList.tsx b/src/components/WorkDetailDefinitionList/WorkDetailDefinitionList.tsx index 976e3057..6b835fe3 100644 --- a/src/components/WorkDetailDefinitionList/WorkDetailDefinitionList.tsx +++ b/src/components/WorkDetailDefinitionList/WorkDetailDefinitionList.tsx @@ -2,7 +2,7 @@ import React from "react"; import { List } from "@nypl/design-system-react-components"; import Link from "~/src/components/Link/Link"; import { unique, flattenDeep, uniqueAndSortByFrequency } from "~/src/util/Util"; -import { Language, Subject } from "~/src/types/DataModel"; +import { Language, Subject, WorkEdition } from "~/src/types/DataModel"; import { ApiWork } from "~/src/types/WorkQuery"; import AuthorsList from "../AuthorsList/AuthorsList"; @@ -13,7 +13,7 @@ const getLanguagesForWork = (work: ApiWork) => uniqueAndSortByFrequency( flattenDeep( work.editions.map( - (edition: any) => + (edition: WorkEdition) => edition.languages && edition.languages.length && edition.languages.map( diff --git a/src/lib/adobe/Analytics.test.ts b/src/lib/adobe/Analytics.test.ts index 0e00d92b..8be21241 100644 --- a/src/lib/adobe/Analytics.test.ts +++ b/src/lib/adobe/Analytics.test.ts @@ -1,4 +1,3 @@ -import React from "react"; import { SITE_SECTION } from "../../constants/analytics"; import { documentTitles } from "../../constants/labels"; import { trackCtaClick, trackPageview } from "./Analytics"; diff --git a/src/lib/newrelic/NewRelic.tsx b/src/lib/newrelic/NewRelic.tsx index b170c46b..631025b6 100644 --- a/src/lib/newrelic/NewRelic.tsx +++ b/src/lib/newrelic/NewRelic.tsx @@ -66,6 +66,7 @@ export function log(error: Error, errorInfo: string) { if (typeof window !== "undefined") { window.newrelic.noticeError(error, { errorInfo: errorInfo }); } else { + // eslint-disable-next-line @typescript-eslint/no-require-imports const newrelic = require("newrelic"); newrelic.noticeError(error, { errorInfo: errorInfo }); } diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index f01ee5c7..c050a0f8 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -15,6 +15,7 @@ import { getQueryDecodedString } from "../util/SearchQueryUtils"; import NewRelicSnippet from "../lib/newrelic/NewRelic"; import ErrorBoundary from "../components/ErrorBoundary"; import { FeedbackProvider } from "../context/FeedbackContext"; +import { ParsedUrlQuery } from "querystring"; if (process.env.APP_ENV === "testing") { const { initMocks } = await import("mocks"); @@ -34,7 +35,7 @@ function isServerRendered(): boolean { * @param query the router query * @returns the title of the page (as shown in browser tab) */ -const setTitle = (query: any) => { +const setTitle = (query: ParsedUrlQuery) => { if (query.workId) { return documentTitles.workItem; } else if (query.editionId) { @@ -50,7 +51,7 @@ const setTitle = (query: any) => { } }; -const sendAnalytics = (query: any, pathname: string) => { +const sendAnalytics = (query: ParsedUrlQuery, pathname: string) => { if (query.workId) { trackPageview(pageNames.workItem + query.workId); } else if (query.editionId) { diff --git a/src/pages/read/[linkId].tsx b/src/pages/read/[linkId].tsx index 9f5a172e..ed1a799a 100644 --- a/src/pages/read/[linkId].tsx +++ b/src/pages/read/[linkId].tsx @@ -1,6 +1,7 @@ import React from "react"; import ReaderLayout from "~/src/components/ReaderLayout/ReaderLayout"; import { readFetcher, proxyUrlConstructor } from "~/src/lib/api/SearchApi"; +import { log } from "~/src/lib/newrelic/NewRelic"; import { LinkResult } from "~/src/types/LinkQuery"; import { getBackUrl } from "~/src/util/LinkUtils"; import Error from "../_error"; @@ -21,6 +22,7 @@ export async function getServerSideProps(context: any) { }, }; } catch (e) { + log(e, "Failed to fetch link"); return { notFound: true, }; diff --git a/src/util/__tests__/apiConversion.test.ts b/src/util/__tests__/apiConversion.test.ts index 3c9f758d..03f7b95a 100644 --- a/src/util/__tests__/apiConversion.test.ts +++ b/src/util/__tests__/apiConversion.test.ts @@ -6,8 +6,10 @@ import { toApiQuery, toSearchQuery } from "../apiConversion"; // Use require instead of import so that it will cast correctly to `ApiSearchQuery` // https://github.com/microsoft/TypeScript/issues/11152 -const apiQuery: ApiSearchQuery = require("../../__tests__/fixtures/search-query.json"); -const emptyApiQuery: ApiSearchQuery = require("../../__tests__/fixtures/search-query-missing-query.json"); +import { + searchQuery as apiQuery, + emptySearchQuery, +} from "../../__tests__/fixtures/SearchQueryFixture"; /** * Unit tests for `ApiConversion.ts` @@ -73,7 +75,7 @@ describe("Converting api query to search query", () => { test("Throws error when empty api query is passed", () => { expect(() => { - toSearchQuery(emptyApiQuery); + toSearchQuery(emptySearchQuery); }).toThrowError("Mising param `queries` in search request"); }); diff --git a/src/util/apiConversion.ts b/src/util/apiConversion.ts index 238173fa..702f8578 100644 --- a/src/util/apiConversion.ts +++ b/src/util/apiConversion.ts @@ -153,7 +153,7 @@ export const toApiQuery = (searchQuery: SearchQuery): ApiSearchQuery => { sort: toApiSorts(searchQuery.sort), }), ...(searchQuery.showAll !== undefined && - typeof searchQuery.showAll !== undefined && + typeof searchQuery.showAll !== "undefined" && searchQuery.showAll !== SearchQueryDefaults.showAll && { showAll: searchQuery.showAll.toString(), }), diff --git a/styles/components/Citations.scss b/styles/components/Citations.scss deleted file mode 100644 index b912c5ad..00000000 --- a/styles/components/Citations.scss +++ /dev/null @@ -1,5 +0,0 @@ -div.apa-citation { - margin: 0 0 1em 0; - font-size: 90%; -} - diff --git a/styles/components/Feedback.scss b/styles/components/Feedback.scss deleted file mode 100644 index 170b597f..00000000 --- a/styles/components/Feedback.scss +++ /dev/null @@ -1,138 +0,0 @@ -.feedback { - display: none; - - @media (min-width: 600px) { - display: block; - position: static; - bottom: 0; - right: 0; - z-index: 100; - text-align: right; - background: #54514a; - color: #000; - position: fixed; - background: inherit; - max-width: 400px; - } -} - -.feedback-button { - display: none; - - @media (min-width: 600px) { - background: #377f8b; - display: inline-block; - color: #fff; - cursor: pointer; - box-sizing: border-box; - padding: 0.5rem 1rem; - border: 1px solid #377f8b; - text-align: center; - font-size: 1rem; - position: relative; - - &:hover { - background: #fff; - border: 0.04167rem solid #377f8b; - color: #377f8b; - } - } -} - -.cancel-button { - background: #d0343a; - display: inline-block; - color: #fff; - cursor: pointer; - box-sizing: border-box; - border: 1px solid #d0343a; - text-align: center; - font-size: 1rem; - position: relative; - margin-right: 15px; -} - -.sfr-submit-feedback-button { - background: #000; - display: inline-block; - color: #fff; - cursor: pointer; - box-sizing: border-box; - border: 1px solid #000; - text-align: center; - font-size: 1rem; - position: relative; - margin-right: 15px; -} - -.feedback-form-container { - display: none; - background: #efedeb; - border: 1px solid #000; - box-shadow: -1px 0 1px 0 rgba(0, 0, 0, 0.3); - padding: 0.35rem 0.5rem; - text-align: left; - - &.active { - display: block; - } - - p { - border-bottom: 1px solid #000; - margin-bottom: 0.35rem; - padding-bottom: 0.35rem; - } - - form { - margin: 0; - padding: 0; - } - - label { - display: block; - margin: 0.8rem 0 0.2rem; - font-size: 0.9rem; - - small { - line-height: 1; - } - } - - input, - select, - textarea { - display: block; - width: 100%; - background-color: #fff; - border: #ededed; - border-width: 2px; - font-size: 1rem; - line-height: 1.2; - box-sizing: border-box; - } - - input { - padding: 0.3rem 0.4rem; - } - - button { - font-size: 1rem; - margin-top: 1rem; - } - - .sfr-feedback-radio { - display: inline-block; - width: 0.75rem; - } - - .sfr-radio-label { - display: inline-block; - padding-left: 0.3rem; - margin: 0.2rem; - } - - #textarea-status-note { - font-size: 0.8rem; - color: #d0343a; - } -} \ No newline at end of file diff --git a/styles/components/ReaderLayout.scss b/styles/components/ReaderLayout.scss deleted file mode 100644 index 7ff0f84a..00000000 --- a/styles/components/ReaderLayout.scss +++ /dev/null @@ -1,13 +0,0 @@ -.logo-link__icon { - height: 100%; - vertical-align: middle; - margin-right: 8px; - transform: scale(0.6); -} - -// Match DS/Webreader breakpoint -@media screen and (max-width: 960px) { - .logo-link__label { - display: none; - } -} diff --git a/styles/components/RequestDigitization.scss b/styles/components/RequestDigitization.scss deleted file mode 100644 index 9d1ef6b7..00000000 --- a/styles/components/RequestDigitization.scss +++ /dev/null @@ -1,90 +0,0 @@ -.request-digital-link { - text-decoration: underline; -} - -.request-digital { - position: absolute; - top: 50%; - left: 50%; - margin-top: -50px; - margin-left: -50px; - width: auto; - height: auto; - z-index: 100; - text-align: right; - background: #54514A; - color: #000; - } - - .request-form-container { - background: #efedeb; - border: 1px solid #000; - box-shadow: -1px 0 1px 0 rgba(0,0,0,0.3); - padding: 0.35rem 0.5rem; - text-align: left; - z-index: 100; - position: fixed; - - &.active { - display: block; - } - - p { - border-bottom: 1px solid #000; - margin-bottom: 0.35rem; - padding-bottom: 0.35rem; - } - - form { - margin: 0; - padding: 0; - } - - label { - display: block; - margin: 0.8rem 0 0.2rem; - font-size: 0.9rem; - - small { - line-height: 1; - } - } - - input, - select, - textarea { - display: block; - width: 100%; - background-color: #FFF; - border: #ededed; - border-width: 2px; - font-size: 1rem; - line-height: 1.2; - box-sizing: border-box; - } - - input { - padding: 0.3rem 0.4rem; - } - - button { - font-size: 1rem; - margin-top: 1rem; - } - - .sfr-feedback-checkbox { - display: inline-block; - width: 0.75rem; - } - - .sfr-radio-label { - display: inline-block; - padding-left: 0.3rem; - margin: 0.2rem; - } - - #textarea-status-note { - font-size: 0.8rem; - color: #d0343a; - } - } diff --git a/styles/dividers.scss b/styles/dividers.scss deleted file mode 100644 index b9b5af47..00000000 --- a/styles/dividers.scss +++ /dev/null @@ -1,3 +0,0 @@ -hr { - border: 1px solid var(--nypl-colors-section-research-primary); -} \ No newline at end of file diff --git a/styles/img/alerts/error.svg b/styles/img/alerts/error.svg deleted file mode 100755 index 5b1146e7..00000000 --- a/styles/img/alerts/error.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - diff --git a/styles/img/alerts/info.svg b/styles/img/alerts/info.svg deleted file mode 100755 index a594e7ce..00000000 --- a/styles/img/alerts/info.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/styles/img/alerts/success.svg b/styles/img/alerts/success.svg deleted file mode 100755 index 0e3fab56..00000000 --- a/styles/img/alerts/success.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/styles/img/alerts/warning.svg b/styles/img/alerts/warning.svg deleted file mode 100755 index e3d895a6..00000000 --- a/styles/img/alerts/warning.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - diff --git a/styles/img/angle-arrow-down-hover.svg b/styles/img/angle-arrow-down-hover.svg deleted file mode 100644 index 63b09db8..00000000 --- a/styles/img/angle-arrow-down-hover.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/angle-arrow-down-primary-hover.svg b/styles/img/angle-arrow-down-primary-hover.svg deleted file mode 100644 index 887e1b8a..00000000 --- a/styles/img/angle-arrow-down-primary-hover.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/angle-arrow-down-primary.svg b/styles/img/angle-arrow-down-primary.svg deleted file mode 100644 index fe3ae3b6..00000000 --- a/styles/img/angle-arrow-down-primary.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/angle-arrow-down-white.svg b/styles/img/angle-arrow-down-white.svg deleted file mode 100644 index 595ea2db..00000000 --- a/styles/img/angle-arrow-down-white.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/styles/img/angle-arrow-down.svg b/styles/img/angle-arrow-down.svg deleted file mode 100644 index ed4917b1..00000000 --- a/styles/img/angle-arrow-down.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/angle-arrow-up-primary-hover.svg b/styles/img/angle-arrow-up-primary-hover.svg deleted file mode 100644 index d2849eaf..00000000 --- a/styles/img/angle-arrow-up-primary-hover.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/angle-arrow-up-primary.svg b/styles/img/angle-arrow-up-primary.svg deleted file mode 100644 index b6b8e5a4..00000000 --- a/styles/img/angle-arrow-up-primary.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/angle-arrow-up-white.svg b/styles/img/angle-arrow-up-white.svg deleted file mode 100644 index 0aa586ea..00000000 --- a/styles/img/angle-arrow-up-white.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/styles/img/arrow-both.svg b/styles/img/arrow-both.svg deleted file mode 100644 index a7ca63a4..00000000 --- a/styles/img/arrow-both.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/arrow-down.svg b/styles/img/arrow-down.svg deleted file mode 100644 index 921c2415..00000000 --- a/styles/img/arrow-down.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/arrow-right.svg b/styles/img/arrow-right.svg deleted file mode 100644 index 131c7713..00000000 --- a/styles/img/arrow-right.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/circle-124.png b/styles/img/circle-124.png deleted file mode 100644 index 7d1e17d9..00000000 Binary files a/styles/img/circle-124.png and /dev/null differ diff --git a/styles/img/close-blue-30-alt.svg b/styles/img/close-blue-30-alt.svg deleted file mode 100644 index f47fc155..00000000 --- a/styles/img/close-blue-30-alt.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/styles/img/close-blue-40v-alt.svg b/styles/img/close-blue-40v-alt.svg deleted file mode 100644 index 1f23e021..00000000 --- a/styles/img/close-blue-40v-alt.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/styles/img/close-blue-50-alt.svg b/styles/img/close-blue-50-alt.svg deleted file mode 100644 index 06cd0d78..00000000 --- a/styles/img/close-blue-50-alt.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/styles/img/close-blue-50v-alt.svg b/styles/img/close-blue-50v-alt.svg deleted file mode 100644 index 8c55079c..00000000 --- a/styles/img/close-blue-50v-alt.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/styles/img/close-blue-60-alt.svg b/styles/img/close-blue-60-alt.svg deleted file mode 100644 index a57b0bc3..00000000 --- a/styles/img/close-blue-60-alt.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/styles/img/close-blue-60v-alt.svg b/styles/img/close-blue-60v-alt.svg deleted file mode 100644 index 815e22da..00000000 --- a/styles/img/close-blue-60v-alt.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/styles/img/close-gray-90-alt.svg b/styles/img/close-gray-90-alt.svg deleted file mode 100644 index 9fe9f790..00000000 --- a/styles/img/close-gray-90-alt.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/styles/img/close-primary.svg b/styles/img/close-primary.svg deleted file mode 100644 index 76f37991..00000000 --- a/styles/img/close-primary.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/close-white-alt.svg b/styles/img/close-white-alt.svg deleted file mode 100644 index a09fc688..00000000 --- a/styles/img/close-white-alt.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/styles/img/close-white.svg b/styles/img/close-white.svg deleted file mode 100644 index e63e02a5..00000000 --- a/styles/img/close-white.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/styles/img/close.svg b/styles/img/close.svg deleted file mode 100644 index 13e9c5dd..00000000 --- a/styles/img/close.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/correct8-alt.png b/styles/img/correct8-alt.png deleted file mode 100644 index 594622e9..00000000 Binary files a/styles/img/correct8-alt.png and /dev/null differ diff --git a/styles/img/correct8-alt.svg b/styles/img/correct8-alt.svg deleted file mode 100644 index 095ec58c..00000000 --- a/styles/img/correct8-alt.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/styles/img/correct8.svg b/styles/img/correct8.svg deleted file mode 100755 index bd7b38b2..00000000 --- a/styles/img/correct8.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/correct9.svg b/styles/img/correct9.svg deleted file mode 100755 index 4f122106..00000000 --- a/styles/img/correct9.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/external-link-alt-hover.svg b/styles/img/external-link-alt-hover.svg deleted file mode 100644 index 2958691b..00000000 --- a/styles/img/external-link-alt-hover.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/external-link-alt.svg b/styles/img/external-link-alt.svg deleted file mode 100644 index 15a5129e..00000000 --- a/styles/img/external-link-alt.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/external-link-black.svg b/styles/img/external-link-black.svg deleted file mode 100644 index 5fc33074..00000000 --- a/styles/img/external-link-black.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/external-link-hover.svg b/styles/img/external-link-hover.svg deleted file mode 100644 index 3d99803b..00000000 --- a/styles/img/external-link-hover.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/external-link.svg b/styles/img/external-link.svg deleted file mode 100644 index e7804dec..00000000 --- a/styles/img/external-link.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/favicons/favicon-114.png b/styles/img/favicons/favicon-114.png deleted file mode 100755 index 568b4fdf..00000000 Binary files a/styles/img/favicons/favicon-114.png and /dev/null differ diff --git a/styles/img/favicons/favicon-144.png b/styles/img/favicons/favicon-144.png deleted file mode 100755 index ec224990..00000000 Binary files a/styles/img/favicons/favicon-144.png and /dev/null differ diff --git a/styles/img/favicons/favicon-16.png b/styles/img/favicons/favicon-16.png deleted file mode 100755 index 27d31255..00000000 Binary files a/styles/img/favicons/favicon-16.png and /dev/null differ diff --git a/styles/img/favicons/favicon-192.png b/styles/img/favicons/favicon-192.png deleted file mode 100755 index 9dfa28b1..00000000 Binary files a/styles/img/favicons/favicon-192.png and /dev/null differ diff --git a/styles/img/favicons/favicon-40.png b/styles/img/favicons/favicon-40.png deleted file mode 100755 index 06683cbe..00000000 Binary files a/styles/img/favicons/favicon-40.png and /dev/null differ diff --git a/styles/img/favicons/favicon-57.png b/styles/img/favicons/favicon-57.png deleted file mode 100755 index 215dbe84..00000000 Binary files a/styles/img/favicons/favicon-57.png and /dev/null differ diff --git a/styles/img/favicons/favicon-72.png b/styles/img/favicons/favicon-72.png deleted file mode 100755 index 27f62917..00000000 Binary files a/styles/img/favicons/favicon-72.png and /dev/null differ diff --git a/styles/img/favicons/favicon.ico b/styles/img/favicons/favicon.ico deleted file mode 100644 index 51502bae..00000000 Binary files a/styles/img/favicons/favicon.ico and /dev/null differ diff --git a/styles/img/favicons/favicon.png b/styles/img/favicons/favicon.png deleted file mode 100755 index a37e0b6c..00000000 Binary files a/styles/img/favicons/favicon.png and /dev/null differ diff --git a/styles/img/header-md.png b/styles/img/header-md.png deleted file mode 100644 index 29a93e97..00000000 Binary files a/styles/img/header-md.png and /dev/null differ diff --git a/styles/img/header-sm.png b/styles/img/header-sm.png deleted file mode 100644 index a64af633..00000000 Binary files a/styles/img/header-sm.png and /dev/null differ diff --git a/styles/img/header.png b/styles/img/header.png deleted file mode 100644 index 3485e740..00000000 Binary files a/styles/img/header.png and /dev/null differ diff --git a/styles/img/hero.png b/styles/img/hero.png deleted file mode 100644 index 6197b334..00000000 Binary files a/styles/img/hero.png and /dev/null differ diff --git a/styles/img/icon-dot-gov.svg b/styles/img/icon-dot-gov.svg deleted file mode 100644 index 27182dce..00000000 --- a/styles/img/icon-dot-gov.svg +++ /dev/null @@ -1 +0,0 @@ -dot gov icon \ No newline at end of file diff --git a/styles/img/icon-https.svg b/styles/img/icon-https.svg deleted file mode 100644 index 3f98a93f..00000000 --- a/styles/img/icon-https.svg +++ /dev/null @@ -1 +0,0 @@ -https icon \ No newline at end of file diff --git a/styles/img/logo-img.png b/styles/img/logo-img.png deleted file mode 100644 index 82ab23ec..00000000 Binary files a/styles/img/logo-img.png and /dev/null differ diff --git a/styles/img/minus-alt.svg b/styles/img/minus-alt.svg deleted file mode 100644 index 38fdbf66..00000000 --- a/styles/img/minus-alt.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/minus.svg b/styles/img/minus.svg deleted file mode 100644 index 6a0c4d41..00000000 --- a/styles/img/minus.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/plus-alt.svg b/styles/img/plus-alt.svg deleted file mode 100644 index b3b73ea6..00000000 --- a/styles/img/plus-alt.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/plus.svg b/styles/img/plus.svg deleted file mode 100644 index 92ba843c..00000000 --- a/styles/img/plus.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/search-alt.svg b/styles/img/search-alt.svg deleted file mode 100755 index 4a921ea0..00000000 --- a/styles/img/search-alt.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/search-primary.svg b/styles/img/search-primary.svg deleted file mode 100644 index ef1a5c9e..00000000 --- a/styles/img/search-primary.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/search.svg b/styles/img/search.svg deleted file mode 100755 index a50fa62f..00000000 --- a/styles/img/search.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/styles/img/select-arrow-down.svg b/styles/img/select-arrow-down.svg deleted file mode 100644 index 94eab6e7..00000000 --- a/styles/img/select-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/styles/img/social-icons/facebook25.png b/styles/img/social-icons/facebook25.png deleted file mode 100644 index 98d55698..00000000 Binary files a/styles/img/social-icons/facebook25.png and /dev/null differ diff --git a/styles/img/social-icons/facebook25.svg b/styles/img/social-icons/facebook25.svg deleted file mode 100755 index f9c1bc3a..00000000 --- a/styles/img/social-icons/facebook25.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/styles/img/social-icons/rss25.png b/styles/img/social-icons/rss25.png deleted file mode 100644 index b0102b3d..00000000 Binary files a/styles/img/social-icons/rss25.png and /dev/null differ diff --git a/styles/img/social-icons/rss25.svg b/styles/img/social-icons/rss25.svg deleted file mode 100755 index 42f11fa4..00000000 --- a/styles/img/social-icons/rss25.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/styles/img/social-icons/twitter16.png b/styles/img/social-icons/twitter16.png deleted file mode 100644 index f169313e..00000000 Binary files a/styles/img/social-icons/twitter16.png and /dev/null differ diff --git a/styles/img/social-icons/twitter16.svg b/styles/img/social-icons/twitter16.svg deleted file mode 100755 index 8e728c36..00000000 --- a/styles/img/social-icons/twitter16.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/styles/img/social-icons/youtube15.png b/styles/img/social-icons/youtube15.png deleted file mode 100644 index f3cf18bd..00000000 Binary files a/styles/img/social-icons/youtube15.png and /dev/null differ diff --git a/styles/img/social-icons/youtube15.svg b/styles/img/social-icons/youtube15.svg deleted file mode 100755 index c3013332..00000000 --- a/styles/img/social-icons/youtube15.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/styles/img/us_flag_small.png b/styles/img/us_flag_small.png deleted file mode 100644 index 34b927b4..00000000 Binary files a/styles/img/us_flag_small.png and /dev/null differ diff --git a/styles/main.scss b/styles/main.scss index e0562ff8..f17ea338 100644 --- a/styles/main.scss +++ b/styles/main.scss @@ -5,25 +5,13 @@ $fontFamily: "system-ui"; -/** Import Design System Styles and mixins */ +/** Import Design System Styles */ @import "~@nypl/design-system-react-components/dist/styles.css"; -// @import "~@nypl/design-system-react-components/dist/resources.scss"; -/** -* Import custom rules for this project. -*/ - -// @import "./mixins/Mixins.scss"; @import "./../src/components/SearchHeader/SearchHeader.scss"; @import "./components/IFrameReader.scss"; @import "./components/Loading.scss"; -@import "./components/Feedback.scss"; -// @import "./components/RequestDigitization.scss"; -// @import "./components/Citations.scss"; -// @import "./components/ReaderLayout.scss"; - -@import "./dividers.scss"; html { font-family: $fontFamily; @@ -33,48 +21,12 @@ body { height: 100%; } -.nypl-ds { - overflow: unset; - fieldset { - border: none; - } -} - -#app { - margin: 0; - height: 100%; -} - -.nypl-header-img { - background: url("./img/header.png") no-repeat center; - border-bottom: 2px solid #d0343a; - - @media screen and (min-width: 1024px) { - min-height: 230px; - } - - @media screen and (max-width: 1024px) { - background: url("./img/header-md.png") no-repeat center; - min-height: 180px; - } - - @media screen and (max-width: 520px) { - background: url("./img/header-sm.png") no-repeat center; - min-height: 70px; - } -} - -#header-mobile-searchForm-searchInput::placeholder { - --color-place-holder: var(--nypl-colors-ui-gray-dark); - color: var(--color-place-holder); -} - // min height on header container to prevent content shift on page load #nypl-header { min-height: 62px; } @media screen and (min-width: 832px) { #nypl-header { - min-height: 130px; + min-height: 130px; } -} \ No newline at end of file +} diff --git a/styles/mixins/Mixins.scss b/styles/mixins/Mixins.scss deleted file mode 100644 index f663cbe5..00000000 --- a/styles/mixins/Mixins.scss +++ /dev/null @@ -1,25 +0,0 @@ -@mixin screenreader-only { - // to hide something from view but make it visible to screen readers - // used on some table headers - // based on last.fm tables - position: absolute; - width: 0.1rem; - height: 0.1rem; - margin: -0.1rem; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} - -@mixin clearfix() { - &::before, - &::after { - content: ''; - display: table; - } - - &::after { - clear: both; - } -}