diff --git a/e2e/package.json b/e2e/package.json index 5bdc4466f5..3820bbcddc 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -10,7 +10,9 @@ "test:debug": "DEBUG_LOG=true pnpm test", "lint": "eslint './tests/**/*.{js,ts}' && prettier -c ./tests", "lint:fix": "eslint --fix './tests/**/*.{js,ts}' && prettier -w ./tests", - "check": "tsc && pnpm lint", + "check": "pnpm check:api && pnpm check:ui && pnpm lint", + "check:api": "tsc --project './tests/api-driven/tsconfig.json' && pnpm lint", + "check:ui": "tsc --project './tests/ui-driven/tsconfig.json' && pnpm lint", "postinstall": "cd tests/ui-driven && pnpm install && cd ../api-driven && pnpm install", "prepare": "cd .. && husky install e2e/.husky" }, diff --git a/e2e/tests/api-driven/cucumber.json b/e2e/tests/api-driven/cucumber.json index 373668d045..51a8c90e13 100644 --- a/e2e/tests/api-driven/cucumber.json +++ b/e2e/tests/api-driven/cucumber.json @@ -1,10 +1,9 @@ { "default": { - "requireModule": ["ts-node/register"], - "require": ["src/env.ts", "src/**/*.ts"], + "loader": ["ts-node/esm"], + "import": ["src/env.ts", "src/**/*.ts"], "paths": ["src/**/*.feature"], "format": ["summary"], - "publishQuiet": true, "formatOptions": { "snippetInterface": "async-await" } diff --git a/e2e/tests/api-driven/package.json b/e2e/tests/api-driven/package.json index a29b5dfa94..b216e214b5 100644 --- a/e2e/tests/api-driven/package.json +++ b/e2e/tests/api-driven/package.json @@ -4,9 +4,10 @@ "test": "cucumber-js --tags 'not @regression'", "test:regression": "cucumber-js" }, + "type": "module", "packageManager": "pnpm@8.6.6", "dependencies": { - "@cucumber/cucumber": "^9.3.0", + "@cucumber/cucumber": "^11.1.1", "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#a7ec46d", "axios": "^1.7.4", "dotenv": "^16.3.1", @@ -17,6 +18,7 @@ "nock": "^13.3.1" }, "devDependencies": { + "@types/jsonwebtoken": "^9.0.7", "@types/lodash.zipobject": "^4.1.7", "@types/node": "18.16.1", "ts-node": "^10.9.1", diff --git a/e2e/tests/api-driven/pnpm-lock.yaml b/e2e/tests/api-driven/pnpm-lock.yaml index 44e1a5fa12..23f166ffad 100644 --- a/e2e/tests/api-driven/pnpm-lock.yaml +++ b/e2e/tests/api-driven/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@cucumber/cucumber': - specifier: ^9.3.0 - version: 9.3.0 + specifier: ^11.1.1 + version: 11.1.1 '@opensystemslab/planx-core': specifier: git+https://github.com/theopensystemslab/planx-core#a7ec46d version: github.com/theopensystemslab/planx-core/a7ec46d @@ -34,6 +34,9 @@ dependencies: version: 13.3.1 devDependencies: + '@types/jsonwebtoken': + specifier: ^9.0.7 + version: 9.0.7 '@types/lodash.zipobject': specifier: ^4.1.7 version: 4.1.7 @@ -159,30 +162,31 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@cucumber/ci-environment@9.2.0: - resolution: {integrity: sha512-jLzRtVwdtNt+uAmTwvXwW9iGYLEOJFpDSmnx/dgoMGKXUWRx1UHT86Q696CLdgXO8kyTwsgJY0c6n5SW9VitAA==} + /@cucumber/ci-environment@10.0.1: + resolution: {integrity: sha512-/+ooDMPtKSmvcPMDYnMZt4LuoipfFfHaYspStI4shqw8FyKcfQAmekz6G+QKWjQQrvM+7Hkljwx58MEwPCwwzg==} dev: false - /@cucumber/cucumber-expressions@16.1.2: - resolution: {integrity: sha512-CfHEbxJ5FqBwF6mJyLLz4B353gyHkoi6cCL4J0lfDZ+GorpcWw4n2OUAdxJmP7ZlREANWoTFlp4FhmkLKrCfUA==} + /@cucumber/cucumber-expressions@17.1.0: + resolution: {integrity: sha512-PCv/ppsPynniKPWJr5v566daCVe+pbxQpHGrIu/Ev57cCH9Rv+X0F6lio4Id3Z64TaG7btCRLUGewIgLwmrwOA==} dependencies: regexp-match-indices: 1.0.2 dev: false - /@cucumber/cucumber@9.3.0: - resolution: {integrity: sha512-8QvcQVJzRra3pZpV0dITPcFuT2yYH0C1fEgzDlqe6+Zpz9k3z+ov9xUWEYgKp0VMx65JxNKAYYYWmG6cWOiYQQ==} - engines: {node: 14 || 16 || >=18} + /@cucumber/cucumber@11.1.1: + resolution: {integrity: sha512-4i2vk4R1Ffi1JXiNrVMLxLJFgZ7e0BHdoRN6QiWdz5EDPS+Qv9ld4wGZWeahBH5ncDygIrkkhtYxDhqOBXLPxQ==} + engines: {node: 18 || 20 || 22 || >=23} hasBin: true dependencies: - '@cucumber/ci-environment': 9.2.0 - '@cucumber/cucumber-expressions': 16.1.2 - '@cucumber/gherkin': 26.2.0 - '@cucumber/gherkin-streams': 5.0.1(@cucumber/gherkin@26.2.0)(@cucumber/message-streams@4.0.1)(@cucumber/messages@22.0.0) - '@cucumber/gherkin-utils': 8.0.2 - '@cucumber/html-formatter': 20.4.0(@cucumber/messages@22.0.0) - '@cucumber/message-streams': 4.0.1(@cucumber/messages@22.0.0) - '@cucumber/messages': 22.0.0 - '@cucumber/tag-expressions': 5.0.1 + '@cucumber/ci-environment': 10.0.1 + '@cucumber/cucumber-expressions': 17.1.0 + '@cucumber/gherkin': 28.0.0 + '@cucumber/gherkin-streams': 5.0.1(@cucumber/gherkin@28.0.0)(@cucumber/message-streams@4.0.1)(@cucumber/messages@24.1.0) + '@cucumber/gherkin-utils': 9.0.0 + '@cucumber/html-formatter': 21.6.0(@cucumber/messages@24.1.0) + '@cucumber/junit-xml-formatter': 0.6.0(@cucumber/messages@24.1.0) + '@cucumber/message-streams': 4.0.1(@cucumber/messages@24.1.0) + '@cucumber/messages': 24.1.0 + '@cucumber/tag-expressions': 6.1.1 assertion-error-formatter: 3.0.0 capital-case: 1.0.4 chalk: 4.1.2 @@ -191,7 +195,7 @@ packages: debug: 4.4.0(supports-color@8.1.1) error-stack-parser: 2.1.4 figures: 3.2.0 - glob: 7.2.3 + glob: 10.4.5 has-ansi: 4.0.1 indent-string: 4.0.0 is-installed-globally: 0.4.0 @@ -200,23 +204,23 @@ packages: lodash.merge: 4.6.2 lodash.mergewith: 4.6.2 luxon: 3.2.1 + mime: 3.0.0 mkdirp: 2.1.6 mz: 2.7.0 progress: 2.0.3 + read-pkg-up: 7.0.1 resolve-pkg: 2.0.0 semver: 7.5.3 - string-argv: 0.3.2 - strip-ansi: 6.0.1 + string-argv: 0.3.1 supports-color: 8.1.1 tmp: 0.2.3 + type-fest: 4.30.2 util-arity: 1.1.0 - verror: 1.10.1 - xmlbuilder: 15.1.1 yaml: 2.6.1 - yup: 0.32.11 + yup: 1.2.0 dev: false - /@cucumber/gherkin-streams@5.0.1(@cucumber/gherkin@26.2.0)(@cucumber/message-streams@4.0.1)(@cucumber/messages@22.0.0): + /@cucumber/gherkin-streams@5.0.1(@cucumber/gherkin@28.0.0)(@cucumber/message-streams@4.0.1)(@cucumber/messages@24.1.0): resolution: {integrity: sha512-/7VkIE/ASxIP/jd4Crlp4JHXqdNFxPGQokqWqsaCCiqBiu5qHoKMxcWNlp9njVL/n9yN4S08OmY3ZR8uC5x74Q==} hasBin: true peerDependencies: @@ -224,72 +228,77 @@ packages: '@cucumber/message-streams': '>=4.0.0' '@cucumber/messages': '>=17.1.1' dependencies: - '@cucumber/gherkin': 26.2.0 - '@cucumber/message-streams': 4.0.1(@cucumber/messages@22.0.0) - '@cucumber/messages': 22.0.0 + '@cucumber/gherkin': 28.0.0 + '@cucumber/message-streams': 4.0.1(@cucumber/messages@24.1.0) + '@cucumber/messages': 24.1.0 commander: 9.1.0 source-map-support: 0.5.21 dev: false - /@cucumber/gherkin-utils@8.0.2: - resolution: {integrity: sha512-aQlziN3r3cTwprEDbLEcFoMRQajb9DTOu2OZZp5xkuNz6bjSTowSY90lHUD2pWT7jhEEckZRIREnk7MAwC2d1A==} + /@cucumber/gherkin-utils@9.0.0: + resolution: {integrity: sha512-clk4q39uj7pztZuZtyI54V8lRsCUz0Y/p8XRjIeHh7ExeEztpWkp4ca9q1FjUOPfQQ8E7OgqFbqoQQXZ1Bx7fw==} hasBin: true dependencies: - '@cucumber/gherkin': 25.0.2 - '@cucumber/messages': 19.1.4 - '@teppeis/multimaps': 2.0.0 - commander: 9.4.1 + '@cucumber/gherkin': 28.0.0 + '@cucumber/messages': 24.1.0 + '@teppeis/multimaps': 3.0.0 + commander: 12.0.0 source-map-support: 0.5.21 dev: false - /@cucumber/gherkin@25.0.2: - resolution: {integrity: sha512-EdsrR33Y5GjuOoe2Kq5Y9DYwgNRtUD32H4y2hCrT6+AWo7ibUQu7H+oiWTgfVhwbkHsZmksxHSxXz/AwqqyCRQ==} + /@cucumber/gherkin@28.0.0: + resolution: {integrity: sha512-Ee6zJQq0OmIUPdW0mSnsCsrWA2PZAELNDPICD2pLfs0Oz7RAPgj80UsD2UCtqyAhw2qAR62aqlktKUlai5zl/A==} dependencies: - '@cucumber/messages': 19.1.4 + '@cucumber/messages': 24.1.0 dev: false - /@cucumber/gherkin@26.2.0: - resolution: {integrity: sha512-iRSiK8YAIHAmLrn/mUfpAx7OXZ7LyNlh1zT89RoziSVCbqSVDxJS6ckEzW8loxs+EEXl0dKPQOXiDmbHV+C/fA==} + /@cucumber/html-formatter@21.6.0(@cucumber/messages@24.1.0): + resolution: {integrity: sha512-Qw1tdObBJrgXgXwVjKVjB3hFhFPI8WhIFb+ULy8g5lDl5AdnKDiyDXAMvAWRX+pphnRMMNdkPCt6ZXEfWvUuAA==} + peerDependencies: + '@cucumber/messages': '>=18' dependencies: - '@cucumber/messages': 22.0.0 + '@cucumber/messages': 24.1.0 dev: false - /@cucumber/html-formatter@20.4.0(@cucumber/messages@22.0.0): - resolution: {integrity: sha512-TnLSXC5eJd8AXHENo69f5z+SixEVtQIf7Q2dZuTpT/Y8AOkilGpGl1MQR1Vp59JIw+fF3EQSUKdf+DAThCxUNg==} + /@cucumber/junit-xml-formatter@0.6.0(@cucumber/messages@24.1.0): + resolution: {integrity: sha512-++PAuxliQhq7yr2Bn9P0fwBUo46OoKAK5f6M4PrwoHBqIsl/6pUS4mqpviuBrgZ8RD7BTrmASk4lUDJClAz/qA==} peerDependencies: - '@cucumber/messages': '>=18' + '@cucumber/messages': '*' dependencies: - '@cucumber/messages': 22.0.0 + '@cucumber/messages': 24.1.0 + '@cucumber/query': 13.0.3(@cucumber/messages@24.1.0) + '@teppeis/multimaps': 3.0.0 + xmlbuilder: 15.1.1 dev: false - /@cucumber/message-streams@4.0.1(@cucumber/messages@22.0.0): + /@cucumber/message-streams@4.0.1(@cucumber/messages@24.1.0): resolution: {integrity: sha512-Kxap9uP5jD8tHUZVjTWgzxemi/0uOsbGjd4LBOSxcJoOCRbESFwemUzilJuzNTB8pcTQUh8D5oudUyxfkJOKmA==} peerDependencies: '@cucumber/messages': '>=17.1.1' dependencies: - '@cucumber/messages': 22.0.0 + '@cucumber/messages': 24.1.0 dev: false - /@cucumber/messages@19.1.4: - resolution: {integrity: sha512-Pksl0pnDz2l1+L5Ug85NlG6LWrrklN9qkMxN5Mv+1XZ3T6u580dnE6mVaxjJRdcOq4tR17Pc0RqIDZMyVY1FlA==} + /@cucumber/messages@24.1.0: + resolution: {integrity: sha512-hxVHiBurORcobhVk80I9+JkaKaNXkW6YwGOEFIh/2aO+apAN+5XJgUUWjng9NwqaQrW1sCFuawLB1AuzmBaNdQ==} dependencies: - '@types/uuid': 8.3.4 + '@types/uuid': 9.0.8 class-transformer: 0.5.1 - reflect-metadata: 0.1.13 - uuid: 9.0.0 + reflect-metadata: 0.2.1 + uuid: 9.0.1 dev: false - /@cucumber/messages@22.0.0: - resolution: {integrity: sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==} + /@cucumber/query@13.0.3(@cucumber/messages@24.1.0): + resolution: {integrity: sha512-OdGea9D9wIoCY2RvcdG5/b2FYASvOdsOIObtv8dU8/kwPXHPo/UxcF+fWElr8yciu+BQMBa8NCxDsoU3ijQqZg==} + peerDependencies: + '@cucumber/messages': '*' dependencies: - '@types/uuid': 9.0.1 - class-transformer: 0.5.1 - reflect-metadata: 0.1.13 - uuid: 9.0.0 + '@cucumber/messages': 24.1.0 + '@teppeis/multimaps': 3.0.0 dev: false - /@cucumber/tag-expressions@5.0.1: - resolution: {integrity: sha512-N43uWud8ZXuVjza423T9ZCIJsaZhFekmakt7S9bvogTxqdVGbRobjR663s0+uW0Rz9e+Pa8I6jUuWtoBLQD2Mw==} + /@cucumber/tag-expressions@6.1.1: + resolution: {integrity: sha512-0oj5KTzf2DsR3DhL3hYeI9fP3nyKzs7TQdpl54uJelJ3W3Hlyyet2Hib+8LK7kNnqJsXENnJg9zahRYyrtvNEg==} dev: false /@emotion/babel-plugin@11.13.5: @@ -536,6 +545,18 @@ packages: deprecated: Use @eslint/object-schema instead dev: false + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: false + /@jridgewell/gen-mapping@0.3.5: resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -771,13 +792,20 @@ packages: fastq: 1.17.1 dev: false + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: false + optional: true + /@popperjs/core@2.11.8: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: false - /@teppeis/multimaps@2.0.0: - resolution: {integrity: sha512-TL1adzq1HdxUf9WYduLcQ/DNGYiz71U31QRgbnr0Ef1cPyOUOsBojxHVWpFeOSUucB6Lrs0LxFRA14ntgtkc9w==} - engines: {node: '>=10.17'} + /@teppeis/multimaps@3.0.0: + resolution: {integrity: sha512-ID7fosbc50TbT0MK0EG12O+gAP3W3Aa/Pz4DaTtQtEvlc9Odaqi0de+xuZ7Li2GtK4HzEX7IuRWS/JmZLksR3Q==} + engines: {node: '>=14'} dev: false /@tsconfig/node10@1.0.11: @@ -800,6 +828,12 @@ packages: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} dev: false + /@types/jsonwebtoken@9.0.7: + resolution: {integrity: sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==} + dependencies: + '@types/node': 18.16.1 + dev: true + /@types/lodash.zipobject@4.1.7: resolution: {integrity: sha512-bsFXX/ac3fFgW3l/yxwRx7NvTXryi4bMaNcsbSK2MJnTPn0nHvs7NdwfHtvOkNKxSQ0dXgnNwI5oEGLoMA1mug==} dependencies: @@ -819,6 +853,10 @@ packages: undici-types: 6.20.0 dev: false + /@types/normalize-package-data@2.4.4: + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + dev: false + /@types/parse-json@4.0.2: resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} dev: false @@ -839,12 +877,8 @@ packages: csstype: 3.1.3 dev: false - /@types/uuid@8.3.4: - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - dev: false - - /@types/uuid@9.0.1: - resolution: {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==} + /@types/uuid@9.0.8: + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} dev: false /@ungap/structured-clone@1.2.1: @@ -910,6 +944,11 @@ packages: engines: {node: '>=8'} dev: false + /ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + dev: false + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -917,6 +956,11 @@ packages: color-convert: 2.0.1 dev: false + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: false + /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: false @@ -929,11 +973,6 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: false - /assert-plus@1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - dev: false - /assertion-error-formatter@3.0.0: resolution: {integrity: sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ==} dependencies: @@ -980,6 +1019,12 @@ packages: concat-map: 0.0.1 dev: false + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false + /buffer-equal-constant-time@1.0.1: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} dev: false @@ -1086,13 +1131,13 @@ packages: engines: {node: '>=14'} dev: false - /commander@9.1.0: - resolution: {integrity: sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==} - engines: {node: ^12.20.0 || >=14} + /commander@12.0.0: + resolution: {integrity: sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==} + engines: {node: '>=18'} dev: false - /commander@9.4.1: - resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} + /commander@9.1.0: + resolution: {integrity: sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==} engines: {node: ^12.20.0 || >=14} dev: false @@ -1117,10 +1162,6 @@ packages: yargs: 16.2.0 dev: false - /core-util-is@1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - dev: false - /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: false @@ -1269,6 +1310,10 @@ packages: engines: {node: '>=12'} dev: false + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: false + /ecdsa-sig-formatter@1.0.11: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} dependencies: @@ -1279,6 +1324,10 @@ packages: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: false + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false + /encoding-sniffer@0.2.0: resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} dependencies: @@ -1412,11 +1461,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /extsprintf@1.4.1: - resolution: {integrity: sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==} - engines: {'0': node >=0.6.0} - dev: false - /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: false @@ -1475,6 +1519,14 @@ packages: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} dev: false + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: false + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -1506,6 +1558,14 @@ packages: optional: true dev: false + /foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + dev: false + /form-data@4.0.1: resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} engines: {node: '>= 6'} @@ -1535,6 +1595,18 @@ packages: is-glob: 4.0.3 dev: false + /glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + dev: false + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -1634,6 +1706,10 @@ packages: react-is: 16.13.1 dev: false + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: false + /htmlparser2@9.1.0: resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} dependencies: @@ -1752,6 +1828,14 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: false + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: false + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: false @@ -1879,6 +1963,13 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: false + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: false + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -1943,6 +2034,10 @@ packages: tslib: 2.8.1 dev: false + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + dev: false + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -1977,6 +2072,12 @@ packages: mime-db: 1.52.0 dev: false + /mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: false + /minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} dev: false @@ -1987,10 +2088,22 @@ packages: brace-expansion: 1.1.11 dev: false + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: false + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: false + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false + /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -2015,10 +2128,6 @@ packages: thenify-all: 1.6.0 dev: false - /nanoclone@0.2.1: - resolution: {integrity: sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==} - dev: false - /nanoid@5.0.9: resolution: {integrity: sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==} engines: {node: ^18 || >=20} @@ -2067,6 +2176,15 @@ packages: readable-stream: 1.0.34 dev: false + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + dev: false + /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: @@ -2096,6 +2214,13 @@ packages: word-wrap: 1.2.5 dev: false + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: false + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -2103,6 +2228,13 @@ packages: yocto-queue: 0.1.0 dev: false + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: false + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -2110,6 +2242,15 @@ packages: p-limit: 3.1.0 dev: false + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: false + + /package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + dev: false + /pad-right@0.2.2: resolution: {integrity: sha512-4cy8M95ioIGolCoMmm2cMntGR1lPLEbOMzOKu8bzjuJP6JpzEMQcDHmh7hHLYGgob+nKe1YHFMaG4V59HQa89g==} engines: {node: '>=0.10.0'} @@ -2176,6 +2317,14 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: false + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + dev: false + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -2279,6 +2428,25 @@ packages: loose-envify: 1.4.0 dev: false + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: false + + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: false + /readable-stream@1.0.34: resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} dependencies: @@ -2300,8 +2468,9 @@ packages: util-deprecate: 1.0.2 dev: false - /reflect-metadata@0.1.13: - resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + /reflect-metadata@0.2.1: + resolution: {integrity: sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==} + deprecated: This version has a critical bug in fallback handling. Please upgrade to reflect-metadata@0.2.2 or newer. dev: false /regenerator-runtime@0.14.1: @@ -2405,6 +2574,11 @@ packages: resolution: {integrity: sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ==} dev: false + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: false + /semver@7.5.3: resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} engines: {node: '>=10'} @@ -2435,6 +2609,11 @@ packages: engines: {node: '>=8'} dev: false + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: @@ -2452,12 +2631,34 @@ packages: engines: {node: '>=0.10.0'} dev: false + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.20 + dev: false + + /spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + dev: false + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.20 + dev: false + + /spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + dev: false + /stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} dev: false - /string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + /string-argv@0.3.1: + resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} dev: false @@ -2470,6 +2671,15 @@ packages: strip-ansi: 6.0.1 dev: false + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: false + /string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} dev: false @@ -2487,6 +2697,13 @@ packages: ansi-regex: 5.0.1 dev: false + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.1.0 + dev: false + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -2543,6 +2760,10 @@ packages: xtend: 4.0.2 dev: false + /tiny-case@1.0.3: + resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} + dev: false + /tinyglobby@0.2.10: resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} engines: {node: '>=12.0.0'} @@ -2611,6 +2832,21 @@ packages: engines: {node: '>=10'} dev: false + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: false + + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: false + + /type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + dev: false + /type-fest@4.30.2: resolution: {integrity: sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==} engines: {node: '>=16'} @@ -2661,8 +2897,8 @@ packages: hasBin: true dev: false - /uuid@9.0.0: - resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true dev: false @@ -2670,13 +2906,11 @@ packages: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true - /verror@1.10.1: - resolution: {integrity: sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==} - engines: {node: '>=0.6.0'} + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.4.1 + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 dev: false /webidl-conversions@3.0.1: @@ -2724,6 +2958,15 @@ packages: strip-ansi: 6.0.1 dev: false + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: false + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false @@ -2797,17 +3040,13 @@ packages: engines: {node: '>=10'} dev: false - /yup@0.32.11: - resolution: {integrity: sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==} - engines: {node: '>=10'} + /yup@1.2.0: + resolution: {integrity: sha512-PPqYKSAXjpRCgLgLKVGPA33v5c/WgEx3wi6NFjIiegz90zSwyMpvTFp/uGcVnnbx6to28pgnzp/q8ih3QRjLMQ==} dependencies: - '@babel/runtime': 7.26.0 - '@types/lodash': 4.17.13 - lodash: 4.17.21 - lodash-es: 4.17.21 - nanoclone: 0.2.1 property-expr: 2.0.6 + tiny-case: 1.0.3 toposort: 2.0.2 + type-fest: 2.19.0 dev: false /zod@3.24.0: diff --git a/e2e/tests/api-driven/src/client.ts b/e2e/tests/api-driven/src/client.ts index 19513cadf6..fdf0058e58 100644 --- a/e2e/tests/api-driven/src/client.ts +++ b/e2e/tests/api-driven/src/client.ts @@ -1,6 +1,6 @@ import assert from "node:assert"; import { CoreDomainClient } from "@opensystemslab/planx-core"; -import { buildJWT } from "./jwt"; +import { buildJWT } from "./jwt.js"; // check env variables are defined assert(process.env.HASURA_GRAPHQL_ADMIN_SECRET); diff --git a/e2e/tests/api-driven/src/demo-workspace/helper.ts b/e2e/tests/api-driven/src/demo-workspace/helper.ts index e3a203e035..fb1970b1ff 100644 --- a/e2e/tests/api-driven/src/demo-workspace/helper.ts +++ b/e2e/tests/api-driven/src/demo-workspace/helper.ts @@ -1,5 +1,5 @@ -import gql from "graphql-tag"; -import { $admin } from "../client"; +import { gql } from "graphql-tag"; +import { $admin } from "../client.js"; import { Team, User } from "@opensystemslab/planx-core/types"; import { UUID } from "crypto"; diff --git a/e2e/tests/api-driven/src/demo-workspace/steps/background_steps.ts b/e2e/tests/api-driven/src/demo-workspace/steps/background_steps.ts index ae33e477b6..50d429bb0c 100644 --- a/e2e/tests/api-driven/src/demo-workspace/steps/background_steps.ts +++ b/e2e/tests/api-driven/src/demo-workspace/steps/background_steps.ts @@ -9,8 +9,8 @@ import { DataTableArray, DataTableRecord, Flow, -} from "../helper"; -import { $admin, getClient } from "../../client"; +} from "../helper.js"; +import { $admin, getClient } from "../../client.js"; import { strict as assert } from "node:assert"; import { CoreDomainClient } from "@opensystemslab/planx-core"; import { Team, User } from "@opensystemslab/planx-core/types"; diff --git a/e2e/tests/api-driven/src/demo-workspace/steps/navigation_steps.ts b/e2e/tests/api-driven/src/demo-workspace/steps/navigation_steps.ts index dbc9248802..2f4258558a 100644 --- a/e2e/tests/api-driven/src/demo-workspace/steps/navigation_steps.ts +++ b/e2e/tests/api-driven/src/demo-workspace/steps/navigation_steps.ts @@ -1,8 +1,8 @@ import { When } from "@cucumber/cucumber"; -import { $admin } from "../../client"; +import { $admin } from "../../client.js"; import { strict as assert } from "node:assert"; -import { getFlowBySlug, getTeamAndFlowsBySlug, getTeams } from "../helper"; -import { CustomWorld } from "./background_steps"; +import { getFlowBySlug, getTeamAndFlowsBySlug, getTeams } from "../helper.js"; +import { CustomWorld } from "./background_steps.js"; When("I am in the {string} team", async function (this, teamSlug) { const team = await getTeamAndFlowsBySlug(this.demoClient, teamSlug); diff --git a/e2e/tests/api-driven/src/demo-workspace/steps/verification_steps.ts b/e2e/tests/api-driven/src/demo-workspace/steps/verification_steps.ts index d24f727f46..5d54bf22d1 100644 --- a/e2e/tests/api-driven/src/demo-workspace/steps/verification_steps.ts +++ b/e2e/tests/api-driven/src/demo-workspace/steps/verification_steps.ts @@ -1,5 +1,5 @@ import { Then } from "@cucumber/cucumber"; -import { CustomWorld } from "./background_steps"; +import { CustomWorld } from "./background_steps.js"; import { strict as assert } from "node:assert"; import { createFlow, @@ -8,7 +8,7 @@ import { getFlowBySlug, updateFlow, updateTeamSettings, -} from "../helper"; +} from "../helper.js"; Then("I should only see my own flows", async function (this) { assert.equal( diff --git a/e2e/tests/api-driven/src/flowStatusHistory/helpers.ts b/e2e/tests/api-driven/src/flowStatusHistory/helpers.ts index 808cb1c37d..f93af1213a 100644 --- a/e2e/tests/api-driven/src/flowStatusHistory/helpers.ts +++ b/e2e/tests/api-driven/src/flowStatusHistory/helpers.ts @@ -1,7 +1,7 @@ import { FlowStatus } from "@opensystemslab/planx-core/types"; -import { $admin } from "../client"; -import { createTeam } from "../globalHelpers"; -import gql from "graphql-tag"; +import { $admin } from "../client.js"; +import { createTeam } from "../globalHelpers.js"; +import { gql } from "graphql-tag"; export const setup = async () => { const teamId = await createTeam(); diff --git a/e2e/tests/api-driven/src/flowStatusHistory/steps.ts b/e2e/tests/api-driven/src/flowStatusHistory/steps.ts index 798c4e9b87..abab998258 100644 --- a/e2e/tests/api-driven/src/flowStatusHistory/steps.ts +++ b/e2e/tests/api-driven/src/flowStatusHistory/steps.ts @@ -1,8 +1,13 @@ import { When, Then, World, After, Before, Given } from "@cucumber/cucumber"; import assert from "assert"; -import { cleanup, getFlowStatus, getFlowStatusHistory, setup } from "./helpers"; -import { createFlow } from "../globalHelpers"; -import { $admin } from "../client"; +import { + cleanup, + getFlowStatus, + getFlowStatusHistory, + setup, +} from "./helpers.js"; +import { createFlow } from "../globalHelpers.js"; +import { $admin } from "../client.js"; export class CustomWorld extends World { teamId!: number; diff --git a/e2e/tests/api-driven/src/globalHelpers.ts b/e2e/tests/api-driven/src/globalHelpers.ts index 98371f73b7..31ed04b520 100644 --- a/e2e/tests/api-driven/src/globalHelpers.ts +++ b/e2e/tests/api-driven/src/globalHelpers.ts @@ -1,5 +1,9 @@ -import { TEST_EMAIL } from "../../ui-driven/src/helpers/globalHelpers"; -import { $admin } from "./client"; +import { $admin } from "./client.js"; + +// Gov.uk Notify requests testing service use smoke test email addresses +// see https://docs.notifications.service.gov.uk/rest-api.html#smoke-testing +export const TEST_EMAIL = + "simulate-delivered@notifications.service.gov.uk" as const; export function createTeam( args?: Partial[0]>, diff --git a/e2e/tests/api-driven/src/hasuraTriggers/helpers.ts b/e2e/tests/api-driven/src/hasuraTriggers/helpers.ts index afd4d15fa9..55b1f0d998 100644 --- a/e2e/tests/api-driven/src/hasuraTriggers/helpers.ts +++ b/e2e/tests/api-driven/src/hasuraTriggers/helpers.ts @@ -1,7 +1,6 @@ -import { TEST_EMAIL } from "../../../ui-driven/src/helpers/globalHelpers"; -import { $admin } from "../client"; -import { safely } from "../globalHelpers"; -import gql from "graphql-tag"; +import { $admin } from "../client.js"; +import { safely, TEST_EMAIL } from "../globalHelpers.js"; +import { gql } from "graphql-tag"; export const cleanup = async () => { await $admin.user._destroyAll(); diff --git a/e2e/tests/api-driven/src/hasuraTriggers/steps.ts b/e2e/tests/api-driven/src/hasuraTriggers/steps.ts index 8fc34686f7..604afa1bc9 100644 --- a/e2e/tests/api-driven/src/hasuraTriggers/steps.ts +++ b/e2e/tests/api-driven/src/hasuraTriggers/steps.ts @@ -1,9 +1,9 @@ import { After, Given, Then, When, World } from "@cucumber/cucumber"; -import { cleanup, createDemoUser } from "./helpers"; +import { cleanup, createDemoUser } from "./helpers.js"; import { User } from "@opensystemslab/planx-core/types"; -import { $admin } from "../client"; +import { $admin } from "../client.js"; import assert from "assert"; -import { createTeam, createUser } from "../globalHelpers"; +import { createTeam, createUser } from "../globalHelpers.js"; export class CustomWorld extends World { user!: User; diff --git a/e2e/tests/api-driven/src/invite-to-pay/helpers.ts b/e2e/tests/api-driven/src/invite-to-pay/helpers.ts index d78807bb85..e762010641 100644 --- a/e2e/tests/api-driven/src/invite-to-pay/helpers.ts +++ b/e2e/tests/api-driven/src/invite-to-pay/helpers.ts @@ -3,18 +3,17 @@ import type { PaymentRequest, } from "@opensystemslab/planx-core/types"; import axios from "axios"; -import gql from "graphql-tag"; +import { gql } from "graphql-tag"; import { readFileSync } from "node:fs"; -import { TEST_EMAIL } from "../../../ui-driven/src/helpers/globalHelpers"; -import { $admin } from "../client"; -import { createTeam, createUser } from "../globalHelpers"; +import { $admin } from "../client.js"; +import { createTeam, createUser, TEST_EMAIL } from "../globalHelpers.js"; import { inviteToPayFlowGraph, mockBreadcrumbs, mockPassport, sendNodeWithDestination, -} from "./mocks"; -import { CustomWorld } from "./steps"; +} from "./mocks/index.js"; +import { CustomWorld } from "./steps.js"; export async function setUpMocks() { const serverMockFile = readFileSync(`${__dirname}/mocks/server-mocks.yaml`); diff --git a/e2e/tests/api-driven/src/invite-to-pay/mocks/index.ts b/e2e/tests/api-driven/src/invite-to-pay/mocks/index.ts index d7d6498d99..637541c386 100644 --- a/e2e/tests/api-driven/src/invite-to-pay/mocks/index.ts +++ b/e2e/tests/api-driven/src/invite-to-pay/mocks/index.ts @@ -5,14 +5,14 @@ import type { Node, } from "@opensystemslab/planx-core/types"; import { ComponentType } from "@opensystemslab/planx-core/types"; -import flow from "./flow.json"; -import session from "./session.json"; +import flow from "./flow.json" assert { type: "json" }; +import session from "./session.json" assert { type: "json" }; export const mockBreadcrumbs = session.data?.breadcrumbs as Breadcrumbs; export const mockPassport = session.data?.passport as Passport; -export const inviteToPayFlowGraph = flow.data as FlowGraph; +export const inviteToPayFlowGraph = flow?.data as FlowGraph; export function sendNodeWithDestination(destination: string): Node { return { diff --git a/e2e/tests/api-driven/src/invite-to-pay/steps.ts b/e2e/tests/api-driven/src/invite-to-pay/steps.ts index 84e2eb6caa..7e6aa11899 100644 --- a/e2e/tests/api-driven/src/invite-to-pay/steps.ts +++ b/e2e/tests/api-driven/src/invite-to-pay/steps.ts @@ -10,7 +10,7 @@ import { waitForResponse, cleanup, setup, -} from "./helpers"; +} from "./helpers.js"; export class CustomWorld extends World { teamId!: number; diff --git a/e2e/tests/api-driven/src/jwt.ts b/e2e/tests/api-driven/src/jwt.ts index 3b80d47860..6ffa49fc1d 100644 --- a/e2e/tests/api-driven/src/jwt.ts +++ b/e2e/tests/api-driven/src/jwt.ts @@ -1,6 +1,6 @@ -import { sign } from "jsonwebtoken"; +import JWT from "jsonwebtoken"; import { User, Role } from "@opensystemslab/planx-core/types"; -import { $admin } from "./client"; +import { $admin } from "./client.js"; // This code is copied from api.planx.uk/modules/auth/service.ts @@ -13,7 +13,7 @@ export const buildJWT = async (email: string): Promise => { "https://hasura.io/jwt/claims": generateHasuraClaimsForUser(user), }; - const jwt = sign(data, process.env.JWT_SECRET!); + const jwt = JWT.sign(data, process.env.JWT_SECRET!); return jwt; }; diff --git a/e2e/tests/api-driven/src/permissions/helpers.ts b/e2e/tests/api-driven/src/permissions/helpers.ts index 521523c540..85c24127ae 100644 --- a/e2e/tests/api-driven/src/permissions/helpers.ts +++ b/e2e/tests/api-driven/src/permissions/helpers.ts @@ -1,8 +1,8 @@ -import { DocumentNode, Kind } from "graphql/language"; -import { $admin, getClient } from "../client"; -import { CustomWorld } from "./steps"; -import { queries } from "./queries"; -import { createFlow, createTeam, createUser } from "../globalHelpers"; +import { DocumentNode, Kind } from "graphql/language/index.js"; +import { $admin, getClient } from "../client.js"; +import { CustomWorld } from "./steps.js"; +import { queries } from "./queries/index.js"; +import { createFlow, createTeam, createUser } from "../globalHelpers.js"; export type Action = "insert" | "update" | "delete" | "select"; export type Table = keyof typeof queries; diff --git a/e2e/tests/api-driven/src/permissions/queries/index.ts b/e2e/tests/api-driven/src/permissions/queries/index.ts index de10fd1385..e852894e44 100644 --- a/e2e/tests/api-driven/src/permissions/queries/index.ts +++ b/e2e/tests/api-driven/src/permissions/queries/index.ts @@ -2,11 +2,14 @@ import { DELETE_FLOW_QUERY, INSERT_FLOW_QUERY, UPDATE_FLOW_QUERY, -} from "./flows"; -import { INSERT_OPERATION_QUERY, UPDATE_OPERATION_QUERY } from "./operations"; -import { INSERT_PUBLISHED_FLOW_QUERY } from "./publishedFlows"; -import { SELECT_TEAM_MEMBERS_QUERY } from "./teamMembers"; -import { SELECT_USERS_QUERY } from "./users"; +} from "./flows.js"; +import { + INSERT_OPERATION_QUERY, + UPDATE_OPERATION_QUERY, +} from "./operations.js"; +import { INSERT_PUBLISHED_FLOW_QUERY } from "./publishedFlows.js"; +import { SELECT_TEAM_MEMBERS_QUERY } from "./teamMembers.js"; +import { SELECT_USERS_QUERY } from "./users.js"; export const queries = { flows: { diff --git a/e2e/tests/api-driven/src/permissions/queries/publishedFlows.ts b/e2e/tests/api-driven/src/permissions/queries/publishedFlows.ts index ff2e13165a..10bc0a2d1d 100644 --- a/e2e/tests/api-driven/src/permissions/queries/publishedFlows.ts +++ b/e2e/tests/api-driven/src/permissions/queries/publishedFlows.ts @@ -1,4 +1,4 @@ -import gql from "graphql-tag"; +import { gql } from "graphql-tag"; export const INSERT_PUBLISHED_FLOW_QUERY = gql` mutation InsertPublishedFlowsE2E($team1FlowId: uuid!, $activeUserId: Int) { diff --git a/e2e/tests/api-driven/src/permissions/queries/teamMembers.ts b/e2e/tests/api-driven/src/permissions/queries/teamMembers.ts index 5432a2bd9a..b10311f997 100644 --- a/e2e/tests/api-driven/src/permissions/queries/teamMembers.ts +++ b/e2e/tests/api-driven/src/permissions/queries/teamMembers.ts @@ -1,4 +1,4 @@ -import gql from "graphql-tag"; +import { gql } from "graphql-tag"; export const SELECT_TEAM_MEMBERS_QUERY = gql` query SelectTeamMembersE2E($user1Id: Int) { diff --git a/e2e/tests/api-driven/src/permissions/queries/users.ts b/e2e/tests/api-driven/src/permissions/queries/users.ts index b83638e8f7..1fff236fb5 100644 --- a/e2e/tests/api-driven/src/permissions/queries/users.ts +++ b/e2e/tests/api-driven/src/permissions/queries/users.ts @@ -1,4 +1,4 @@ -import gql from "graphql-tag"; +import { gql } from "graphql-tag"; export const SELECT_USERS_QUERY = gql` query SelectUsersE2E($user1Id: Int!) { diff --git a/e2e/tests/api-driven/src/permissions/steps.ts b/e2e/tests/api-driven/src/permissions/steps.ts index 31d84c5880..2354536c1f 100644 --- a/e2e/tests/api-driven/src/permissions/steps.ts +++ b/e2e/tests/api-driven/src/permissions/steps.ts @@ -1,6 +1,6 @@ import { After, Before, Given, Then, When, World } from "@cucumber/cucumber"; import { strict as assert } from "node:assert"; -import { getUser } from "../globalHelpers"; +import { getUser } from "../globalHelpers.js"; import { Action, GQLQueryResult, @@ -9,7 +9,7 @@ import { cleanup, performGQLQuery, setup, -} from "./helpers"; +} from "./helpers.js"; export class CustomWorld extends World { // A teamEditor for team1 diff --git a/e2e/tests/api-driven/tsconfig.json b/e2e/tests/api-driven/tsconfig.json new file mode 100644 index 0000000000..7bdfe43277 --- /dev/null +++ b/e2e/tests/api-driven/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "lib": ["DOM", "ESNext"], + "module": "NodeNext", + "moduleResolution": "nodenext", + "rootDir": "./src" + } +} diff --git a/e2e/tests/ui-driven/tsconfig.json b/e2e/tests/ui-driven/tsconfig.json new file mode 100644 index 0000000000..bccc94946c --- /dev/null +++ b/e2e/tests/ui-driven/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "." + } +}