From 742cb2260c6821f068cb9b117bf4b54c7d86c88b Mon Sep 17 00:00:00 2001 From: TaskeenAbdoola Date: Mon, 11 May 2026 20:48:46 +0200 Subject: [PATCH 01/16] Updated versions in package-lock.json --- package-lock.json | 105 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 7 ++++ 2 files changed, 112 insertions(+) create mode 100644 package-lock.json create mode 100644 package.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b35a75d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,105 @@ +{ + "name": "CodeClash", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "CodeClash", + "dependencies": { + "@monaco-editor/react": "^4.7.0", + "dompurify": "^3.4.2", + "monaco-editor": "^0.53.0" + } + }, + "node_modules/@monaco-editor/loader": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.7.0.tgz", + "integrity": "sha512-gIwR1HrJrrx+vfyOhYmCZ0/JcWqG5kbfG7+d3f/C1LXk2EvzAbHSg3MQ5lO2sMlo9izoAZ04shohfKLVT6crVA==", + "license": "MIT", + "dependencies": { + "state-local": "^1.0.6" + } + }, + "node_modules/@monaco-editor/react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.7.0.tgz", + "integrity": "sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==", + "license": "MIT", + "dependencies": { + "@monaco-editor/loader": "^1.5.0" + }, + "peerDependencies": { + "monaco-editor": ">= 0.25.0 < 1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/dompurify": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.2.tgz", + "integrity": "sha512-lHeS9SA/IKeIFFyYciHBr2n0v1VMPlSj843HdLOwjb2OxNwdq9Xykxqhk+FE42MzAdHvInbAolSE4mhahPpjXA==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/monaco-editor": { + "version": "0.53.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.53.0.tgz", + "integrity": "sha512-0WNThgC6CMWNXXBxTbaYYcunj08iB5rnx4/G56UOPeL9UVIUGGHA1GR0EWIh9Ebabj7NpCRawQ5b0hfN1jQmYQ==", + "license": "MIT", + "dependencies": { + "@types/trusted-types": "^1.0.6" + } + }, + "node_modules/monaco-editor/node_modules/@types/trusted-types": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz", + "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==", + "license": "MIT" + }, + "node_modules/react": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", + "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz", + "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==", + "license": "MIT", + "peer": true, + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.6" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT", + "peer": true + }, + "node_modules/state-local": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz", + "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==", + "license": "MIT" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a4dcbe4 --- /dev/null +++ b/package.json @@ -0,0 +1,7 @@ +{ + "dependencies": { + "@monaco-editor/react": "^4.7.0", + "dompurify": "^3.4.2", + "monaco-editor": "^0.53.0" + } +} From 79646f92855da296caa32350c222c9a0f45d8dea Mon Sep 17 00:00:00 2001 From: TaskeenAbdoola Date: Mon, 11 May 2026 20:49:02 +0200 Subject: [PATCH 02/16] css for sign up page --- cognito/sign_up.css | 146 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 cognito/sign_up.css diff --git a/cognito/sign_up.css b/cognito/sign_up.css new file mode 100644 index 0000000..9267d79 --- /dev/null +++ b/cognito/sign_up.css @@ -0,0 +1,146 @@ +:root { + --primary: #3B82F6; + --secondary: #A78BFA; + --background: #F8FAFC; + --surface: #FFFFFF; + --text-primary: #0F182A; + --text-secondary: #64748B; + --success: #22C55E; + --danger: #EF4444; + --border: #E2E8F0; +} + +body { + background: var(--background) !important; + font-family: "Baloo Bhai 2", Arial, sans-serif !important; + color: var(--text-primary) !important; +} + +.panel-customizable { + background: transparent !important; + border: none !important; + box-shadow: none !important; + max-width: 430px !important; + margin: 40px auto !important; +} + +.panel-heading { + background: transparent !important; + border: none !important; + text-align: center !important; +} + +.panel-heading h1, +.panel-heading h2, +.panel-heading h3, +.panel-title { + font-family: "Gloock", Georgia, serif !important; + font-size: 42px !important; + color: var(--text-primary) !important; + font-weight: 700 !important; +} + +.panel-body { + background: transparent !important; + padding: 20px 36px !important; +} + +label { + font-family: "Baloo Bhai 2", Arial, sans-serif !important; + color: var(--text-secondary) !important; + font-size: 14px !important; +} + +input { + background: var(--surface) !important; + border: 1px solid var(--border) !important; + border-radius: 2px !important; + color: var(--text-primary) !important; + height: 48px !important; + font-size: 15px !important; + padding: 12px 14px !important; + box-shadow: none !important; +} + +input::placeholder { + color: var(--text-secondary) !important; +} + +input:focus { + border-color: var(--primary) !important; + box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.18) !important; +} + +.btn-primary, +button[type="submit"] { + background: var(--primary) !important; + border: none !important; + border-radius: 4px !important; + color: var(--text-primary) !important; + font-family: "Baskerville", Georgia, serif !important; + font-size: 16px !important; + height: 48px !important; + width: 100% !important; +} + +.btn-primary:hover, +button[type="submit"]:hover { + background: #2563EB !important; +} + +a { + color: var(--text-primary) !important; + text-decoration: underline !important; +} + +a:hover { + color: var(--primary) !important; +} + +.alert-danger, +.text-danger { + background: rgba(239, 68, 68, 0.08) !important; + border-color: var(--danger) !important; + color: var(--danger) !important; +} + +.alert-success { + background: rgba(34, 197, 94, 0.08) !important; + border-color: var(--success) !important; + color: var(--success) !important; +} + +.redirect-customizable { + border-radius: 4px !important; + height: 48px !important; + font-family: "Baskerville", Georgia, serif !important; + font-size: 16px !important; + border: none !important; +} + +.redirect-customizable:first-of-type { + background: var(--secondary) !important; + color: var(--text-primary) !important; +} + +.redirect-customizable:not(:first-of-type) { + background: var(--primary) !important; + color: var(--text-primary) !important; +} + +.divider-customizable { + color: var(--text-secondary) !important; +} + +.btn-default { + background: var(--surface) !important; + border: 1px solid var(--border) !important; + color: var(--text-primary) !important; + border-radius: 4px !important; +} + +input[type="checkbox"] { + height: 18px !important; + width: 18px !important; + accent-color: var(--primary); +} \ No newline at end of file From cd6f78e818c919379cb9df8c963142b5dea5920d Mon Sep 17 00:00:00 2001 From: TaskeenAbdoola Date: Mon, 11 May 2026 23:49:23 +0200 Subject: [PATCH 03/16] installed aws amplify for auth login and signup flows --- package-lock.json | 2941 ++++++++++++++++++++++++++++++++++++++++++++- package.json | 1 + 2 files changed, 2930 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index b35a75d..d0da943 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,36 +4,2700 @@ "requires": true, "packages": { "": { - "name": "CodeClash", "dependencies": { "@monaco-editor/react": "^4.7.0", + "aws-amplify": "^6.17.0", "dompurify": "^3.4.2", "monaco-editor": "^0.53.0" } }, + "node_modules/@aws-amplify/analytics": { + "version": "7.0.94", + "resolved": "https://registry.npmjs.org/@aws-amplify/analytics/-/analytics-7.0.94.tgz", + "integrity": "sha512-HNBq12e+ZFY7EqqlK2sAX165Vp5M4bx40a26f8ej6bDolZG5kkn4cYmERQX8LaWp0iVpfNUWAWPEppwZiLMMcw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-firehose": "^3.1012.0", + "@aws-sdk/client-kinesis": "^3.1012.0", + "@aws-sdk/client-personalize-events": "^3.1012.0", + "@smithy/util-utf8": "2.0.0", + "tslib": "^2.5.0" + }, + "peerDependencies": { + "@aws-amplify/core": "^6.16.2" + } + }, + "node_modules/@aws-amplify/api": { + "version": "6.3.26", + "resolved": "https://registry.npmjs.org/@aws-amplify/api/-/api-6.3.26.tgz", + "integrity": "sha512-4uPCH2w1VO+lH24umwRlYKBOijq7Jl/Tj1nVrSGuU/3s+KtilC+l7BFGTPI5pllFR1oj0WUF0oiGu936+aSuSA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-amplify/api-graphql": "4.8.7", + "@aws-amplify/api-rest": "4.6.4", + "@aws-amplify/data-schema": "^1.7.0", + "rxjs": "^7.8.1", + "tslib": "^2.5.0" + }, + "peerDependencies": { + "@aws-amplify/core": "^6.16.2" + } + }, + "node_modules/@aws-amplify/api-graphql": { + "version": "4.8.7", + "resolved": "https://registry.npmjs.org/@aws-amplify/api-graphql/-/api-graphql-4.8.7.tgz", + "integrity": "sha512-6e+V7SYybxZghTNVmd5DLRSSIbEs64VaXBZNA0vHXKEvXerSAcCwCjbyoKAzPaBgMgflsN8hFJI3xL1IZokM3Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-amplify/api-rest": "4.6.4", + "@aws-amplify/core": "6.16.3", + "@aws-amplify/data-schema": "^1.7.0", + "@aws-sdk/types": "^3.973.6", + "graphql": "15.8.0", + "rxjs": "^7.8.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-amplify/api-rest": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/@aws-amplify/api-rest/-/api-rest-4.6.4.tgz", + "integrity": "sha512-/gGTP2/vWKma6ApVG56y9/1qh2/i4hDp37sm1zRSM0EMNdKr5RIgHbQ0W1l1gaJHRmPXb2lqUDfj9ZYFQATjQg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.5.0" + }, + "peerDependencies": { + "@aws-amplify/core": "^6.16.2" + } + }, + "node_modules/@aws-amplify/auth": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/@aws-amplify/auth/-/auth-6.20.0.tgz", + "integrity": "sha512-y58KFRvmq7PoAboeiubU0qschyzcvis6erP+K3rsMBImjbwGLJGfDWYikdpw//JLw7L7NZzqt+mvtrZW9ITqeg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-js": "5.2.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.5.0" + }, + "peerDependencies": { + "@aws-amplify/core": "^6.16.2", + "@aws-amplify/react-native": "^1.1.10" + }, + "peerDependenciesMeta": { + "@aws-amplify/react-native": { + "optional": true + } + } + }, + "node_modules/@aws-amplify/core": { + "version": "6.16.3", + "resolved": "https://registry.npmjs.org/@aws-amplify/core/-/core-6.16.3.tgz", + "integrity": "sha512-wfB9lLEoLiyUEZAYgy1pOoqJqvkBTPMsx/F406HQNTg7b8+fHi7j5GVapJAg7JhmbJbjfmGtTg6EKY/DqF19kw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/util-hex-encoding": "2.0.0", + "@types/uuid": "^9.0.0", + "js-cookie": "^3.0.5", + "rxjs": "^7.8.1", + "tslib": "^2.5.0", + "uuid": "^11.0.0" + } + }, + "node_modules/@aws-amplify/data-schema": { + "version": "1.25.6", + "resolved": "https://registry.npmjs.org/@aws-amplify/data-schema/-/data-schema-1.25.6.tgz", + "integrity": "sha512-vW9YDrWXOIKtUecVsV+j+hSbib2z5P2XpwJevwYidqyLSnI6h4wf8Pm++ksk5iguhSsanuxGlfFNoiOODjw2Sw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-amplify/data-schema-types": "*", + "@smithy/util-base64": "^3.0.0", + "@types/aws-lambda": "^8.10.134", + "@types/json-schema": "^7.0.15", + "rxjs": "^7.8.1" + } + }, + "node_modules/@aws-amplify/data-schema-types": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@aws-amplify/data-schema-types/-/data-schema-types-1.2.1.tgz", + "integrity": "sha512-SuYVcy9Hg8Ox9P0QCXEPwqHxX5zVPgVo2YvNBOm5TpkZr4UK6ir3USame7dELZsk5/9f6KoP70QAYhTvp/j1Og==", + "license": "Apache-2.0", + "dependencies": { + "graphql": "15.8.0", + "rxjs": "^7.8.1" + } + }, + "node_modules/@aws-amplify/datastore": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/@aws-amplify/datastore/-/datastore-5.1.7.tgz", + "integrity": "sha512-305zhly/f0LLWyjo1NP6lZl6J3DDiUIm5Tfzl3rJIEqjixHEH+vXGjGvJXl8V6UOxj/D7BPoBnqDpU/l8nyyaw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-amplify/api": "6.3.26", + "@aws-amplify/api-graphql": "4.8.7", + "buffer": "4.9.2", + "idb": "5.0.6", + "immer": "9.0.6", + "rxjs": "^7.8.1", + "ulid": "^2.3.0" + }, + "peerDependencies": { + "@aws-amplify/core": "^6.16.2" + } + }, + "node_modules/@aws-amplify/notifications": { + "version": "2.0.94", + "resolved": "https://registry.npmjs.org/@aws-amplify/notifications/-/notifications-2.0.94.tgz", + "integrity": "sha512-SFROWgXVWRoaO4vKXoQV/rDIS3gb7+LQT2W6HSpLsuVuNgHjvR1fUnOeGiZq0x3FhSJnHi9nlqZLtgQZ1aUYkQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "lodash": "^4.18.1", + "tslib": "^2.5.0" + }, + "peerDependencies": { + "@aws-amplify/core": "^6.16.2" + } + }, + "node_modules/@aws-amplify/storage": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@aws-amplify/storage/-/storage-6.15.0.tgz", + "integrity": "sha512-xMHR9mJilg55PEKYXSuvTMeKxNShC4Tosmu+DCCrYRnf0IjoN5yapcxCVt3xyOryvoQEKTIu1VHlOwYWdm+qkQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/md5-js": "2.0.7", + "buffer": "4.9.2", + "crc-32": "1.2.2", + "fast-xml-parser": "^5.7.2", + "tslib": "^2.5.0" + }, + "peerDependencies": { + "@aws-amplify/core": "^6.16.2" + } + }, + "node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-firehose": { + "version": "3.1045.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-firehose/-/client-firehose-3.1045.0.tgz", + "integrity": "sha512-zlFxZMLtZDzNTct4tp4jE3PTEx2Jv6W7KPYyz53uJtFHObAPDH6HG7R09GwAxbpYZbent88W3C3ltsKPQV/G+Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/credential-provider-node": "^3.972.39", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.38", + "@aws-sdk/region-config-resolver": "^3.972.13", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.8", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.24", + "@smithy/config-resolver": "^4.4.17", + "@smithy/core": "^3.23.17", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.32", + "@smithy/middleware-retry": "^4.5.7", + "@smithy/middleware-serde": "^4.2.20", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.6.1", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.49", + "@smithy/util-defaults-mode-node": "^4.2.54", + "@smithy/util-endpoints": "^3.4.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.6", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-firehose/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-firehose/node_modules/@smithy/util-base64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-firehose/node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-kinesis": { + "version": "3.1045.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-kinesis/-/client-kinesis-3.1045.0.tgz", + "integrity": "sha512-yx6KdlUNSx6oRewQ+n+/BWHehR7uy5X1TmDBywnPU+7Bv9/0XCw9A+PC94Z9Il8rZ1u2TmhXR60/cbPMxZfSXQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/credential-provider-node": "^3.972.39", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.38", + "@aws-sdk/region-config-resolver": "^3.972.13", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.8", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.24", + "@smithy/config-resolver": "^4.4.17", + "@smithy/core": "^3.23.17", + "@smithy/eventstream-serde-browser": "^4.2.14", + "@smithy/eventstream-serde-config-resolver": "^4.3.14", + "@smithy/eventstream-serde-node": "^4.2.14", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.32", + "@smithy/middleware-retry": "^4.5.7", + "@smithy/middleware-serde": "^4.2.20", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.6.1", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.49", + "@smithy/util-defaults-mode-node": "^4.2.54", + "@smithy/util-endpoints": "^3.4.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.6", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-kinesis/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-kinesis/node_modules/@smithy/util-base64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-kinesis/node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-personalize-events": { + "version": "3.1045.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-personalize-events/-/client-personalize-events-3.1045.0.tgz", + "integrity": "sha512-0MjotN6HS6C1Q43m5hTvFw8tOjmEWFF9KPxFGEZGnBPacw0jylP4mHjgHRJ8WeG6k7Ddtf9WTkJ7htTRE0ERIg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/credential-provider-node": "^3.972.39", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.38", + "@aws-sdk/region-config-resolver": "^3.972.13", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.8", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.24", + "@smithy/config-resolver": "^4.4.17", + "@smithy/core": "^3.23.17", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.32", + "@smithy/middleware-retry": "^4.5.7", + "@smithy/middleware-serde": "^4.2.20", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.6.1", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.49", + "@smithy/util-defaults-mode-node": "^4.2.54", + "@smithy/util-endpoints": "^3.4.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.6", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-personalize-events/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-personalize-events/node_modules/@smithy/util-base64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-personalize-events/node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.974.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.8.tgz", + "integrity": "sha512-njR2qoG6ZuB0kvAS2FyICsFZJ6gmCcf2X/7JcD14sUvGDm26wiZ5BrA6LOiUxKFEF+IVe7kdroxyE00YlkiYsw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/xml-builder": "^3.972.22", + "@smithy/core": "^3.23.17", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/signature-v4": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.6", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/core/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/core/node_modules/@smithy/util-base64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/core/node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.34", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.34.tgz", + "integrity": "sha512-XT0jtf8Fw9JE6ppsQeoNnZRiG+jqRixMT1v1ZR17G60UvVdsQmTG8nbEyHuEPfMxDXEhfdARaM/XiEhca4lGHQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.36", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.36.tgz", + "integrity": "sha512-DPoGWfy7J7RKxvbf5kOKIGQkD2ek3dbKgzKIGrnLuvZBz5myU+Im/H6pmc14QcnFbqHMqxvtWSgRDSJW3qXLQg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/types": "^3.973.8", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/node-http-handler": "^4.6.1", + "@smithy/property-provider": "^4.2.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/util-stream": "^4.5.25", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.38.tgz", + "integrity": "sha512-oDzUBu2MGJFgoar05sPMCwSrhw44ASyccrHzj66vO69OZqi7I6hZZxXfuPLC8OCzW7C+sU+bI73XHij41yekgQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/credential-provider-env": "^3.972.34", + "@aws-sdk/credential-provider-http": "^3.972.36", + "@aws-sdk/credential-provider-login": "^3.972.38", + "@aws-sdk/credential-provider-process": "^3.972.34", + "@aws-sdk/credential-provider-sso": "^3.972.38", + "@aws-sdk/credential-provider-web-identity": "^3.972.38", + "@aws-sdk/nested-clients": "^3.997.6", + "@aws-sdk/types": "^3.973.8", + "@smithy/credential-provider-imds": "^4.2.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login": { + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.38.tgz", + "integrity": "sha512-g1NosS8qe4OF++G2UFCM5ovSkgipC7YYor5KCWatG0UoMSO5YFj9C8muePlyVmOBV/WTI16Jo3/s1NUo/o1Bww==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/nested-clients": "^3.997.6", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.39", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.39.tgz", + "integrity": "sha512-HEswDQyxUtadoZ/bJsPPENHg7R0Lzym5LuMksJeHvqhCOpP+rtkDLKI4/ZChH4w3cf5kG8n6bZuI8PzajoiqMg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "^3.972.34", + "@aws-sdk/credential-provider-http": "^3.972.36", + "@aws-sdk/credential-provider-ini": "^3.972.38", + "@aws-sdk/credential-provider-process": "^3.972.34", + "@aws-sdk/credential-provider-sso": "^3.972.38", + "@aws-sdk/credential-provider-web-identity": "^3.972.38", + "@aws-sdk/types": "^3.973.8", + "@smithy/credential-provider-imds": "^4.2.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.34", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.34.tgz", + "integrity": "sha512-T3IFs4EVmVi1dVN5RciFnklCANSzvrQd/VuHY9ThHSQmYkTogjcGkoJEr+oNUPQZnso52183088NqysMPji1/Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.38.tgz", + "integrity": "sha512-5ZxG+t0+3Q3QPh8KEjX6syskhgNf7I0MN7oGioTf6Lm1NTjfP7sIcYGNsthXC2qR8vcD3edNZwCr2ovfSSWuRA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/nested-clients": "^3.997.6", + "@aws-sdk/token-providers": "3.1041.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.38.tgz", + "integrity": "sha512-lYHFF30DGI20jZcYX8cm6Ns0V7f1dDN6g/MBDLTyD/5iw+bXs3yBr2iAiHDkx4RFU5JgsnZvCHYKiRVPRdmOgw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/nested-clients": "^3.997.6", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.10.tgz", + "integrity": "sha512-IJSsIMeVQ8MMCPbuh1AbltkFhLBLXn7aejzfX5YKT/VLDHn++Dcz8886tXckE+wQssyPUhaXrJhdakO2VilRhg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.8", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.10.tgz", + "integrity": "sha512-OOuGvvz1Dm20SjZo5oEBePFqxt5nf8AwkNDSyUHvD9/bfNASmstcYxFAHUowy4n6Io7mWUZ04JURZwSBvyQanQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.11.tgz", + "integrity": "sha512-+zz6f79Kj9V5qFK2P+D8Ehjnw4AhphAlCAsPjUqEcInA9umtSSKMrHbSagEeOIsDNuvVrH98bjRHcyQukTrhaQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.8", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.972.37", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.37.tgz", + "integrity": "sha512-Km7M+i8DrLArVzrid1gfxeGhYHBd3uxvE77g0s5a52zPSVosxzQBnJ0gwWb6NIp/DOk8gsBMhi7V+cpJG0ndTA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-arn-parser": "^3.972.3", + "@smithy/core": "^3.23.17", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/signature-v4": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-stream": "^4.5.25", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.38.tgz", + "integrity": "sha512-iz+B29TXcAZsJpwB+AwG/TTGA5l/VnmMZ2UxtiySOZjI6gCdmviXPwdgzcmuazMy16rXoPY4mYCGe7zdNKfx5A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.8", + "@smithy/core": "^3.23.17", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-retry": "^4.3.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients": { + "version": "3.997.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.6.tgz", + "integrity": "sha512-WBDnqatJl+kGObpfmfSxqnXeYTu3Me8wx8WCtvoxX3pfWrrTv8I4WTMSSs7PZqcRcVh8WeUKMgGFjMG+52SR1w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.38", + "@aws-sdk/region-config-resolver": "^3.972.13", + "@aws-sdk/signature-v4-multi-region": "^3.996.25", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.8", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.24", + "@smithy/config-resolver": "^4.4.17", + "@smithy/core": "^3.23.17", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.32", + "@smithy/middleware-retry": "^4.5.7", + "@smithy/middleware-serde": "^4.2.20", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.6.1", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.49", + "@smithy/util-defaults-mode-node": "^4.2.54", + "@smithy/util-endpoints": "^3.4.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.6", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-base64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.972.13", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.13.tgz", + "integrity": "sha512-CvJ2ZIjK/jVD/lbOpowBVElJyC1YxLTIJ13yM0AEo0t2v7swOzGjSA6lJGH+DwZXQhcjUjoYwc8bVYCX5MDr1A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.8", + "@smithy/config-resolver": "^4.4.17", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.996.25", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.25.tgz", + "integrity": "sha512-+CMIt3e1VzlklAECmG+DtP1sV8iKq25FuA0OKpnJ4KA0kxUtd7CgClY7/RU6VzJBQwbN4EJ9Ue6plvqx1qGadw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "^3.972.37", + "@aws-sdk/types": "^3.973.8", + "@smithy/protocol-http": "^5.3.14", + "@smithy/signature-v4": "^5.3.14", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.1041.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1041.0.tgz", + "integrity": "sha512-Th7kPI6YPtvJUcdznooXJMy+9rQWjmEF81LxaJssngBzuysK4a/x+l8kjm1zb7nYsUPbndnBdUnwng/3PLvtGw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/nested-clients": "^3.997.6", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/token-providers/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.973.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", + "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/types/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz", + "integrity": "sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.996.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.8.tgz", + "integrity": "sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-endpoints": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.965.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", + "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.10.tgz", + "integrity": "sha512-FAzqXvfEssGdSIz8ejatan0bOdx1qefBWKF/gWmVBXIP1HkS7v/wjjaqrAGGKvyihrXTXW00/2/1nTJtxpXz7g==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.973.24", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.24.tgz", + "integrity": "sha512-ZWwlkjcIp7cEL8ZfTpTAPNkwx25p7xol0xlKoWVVf22+nsjwmLcHYtTPjIV1cSpmB/b6DaK4cb1fSkvCXHgRdw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "^3.972.38", + "@aws-sdk/types": "^3.973.8", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-config-provider": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/util-user-agent-node/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.972.22", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.22.tgz", + "integrity": "sha512-PMYKKtJd70IsSG0yHrdAbxBr+ZWBKLvzFZfD3/urxgf6hXVMzuU5M+3MJ5G67RpOmLBu1fAUN65SbWuKUCOlAA==", + "license": "Apache-2.0", + "dependencies": { + "@nodable/entities": "2.1.0", + "@smithy/types": "^4.14.1", + "fast-xml-parser": "5.7.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz", + "integrity": "sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "@nodable/entities": "^2.1.0", + "fast-xml-builder": "^1.1.5", + "path-expression-matcher": "^1.5.0", + "strnum": "^2.2.3" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@aws/lambda-invoke-store": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", + "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@monaco-editor/loader": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.7.0.tgz", "integrity": "sha512-gIwR1HrJrrx+vfyOhYmCZ0/JcWqG5kbfG7+d3f/C1LXk2EvzAbHSg3MQ5lO2sMlo9izoAZ04shohfKLVT6crVA==", "license": "MIT", "dependencies": { - "state-local": "^1.0.6" + "state-local": "^1.0.6" + } + }, + "node_modules/@monaco-editor/react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.7.0.tgz", + "integrity": "sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==", + "license": "MIT", + "dependencies": { + "@monaco-editor/loader": "^1.5.0" + }, + "peerDependencies": { + "monaco-editor": ">= 0.25.0 < 1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@nodable/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/nodable" + } + ], + "license": "MIT" + }, + "node_modules/@smithy/config-resolver": { + "version": "4.4.17", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.17.tgz", + "integrity": "sha512-TzDZcAnhTyAHbXVxWZo7/tEcrIeFq20IBk8So3OLOetWpR8EwY/yEqBMBFaJMeyEiREDq4NfEl+qO3OAUD+vbQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-endpoints": "^3.4.2", + "@smithy/util-middleware": "^4.2.14", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/config-resolver/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "3.23.17", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.17.tgz", + "integrity": "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-stream": "^4.5.25", + "@smithy/util-utf8": "^4.2.2", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core/node_modules/@smithy/util-base64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core/node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.14.tgz", + "integrity": "sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.14.tgz", + "integrity": "sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.14.1", + "@smithy/util-hex-encoding": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", + "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.14.tgz", + "integrity": "sha512-8IelTCtTctWRbb+0Dcy+C0aICh1qa0qWXqgjcXDmMuCvPJRnv26hiDZoAau2ILOniki65mCPKqOQs/BaWvO4CQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.14", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.3.14", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.14.tgz", + "integrity": "sha512-sqHiHpYRYo3FJlaIxD1J8PhbcmJAm7IuM16mVnwSkCToD7g00IBZzKuiLNMGmftULmEUX6/UAz8/NN5uMP8bVA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.14.tgz", + "integrity": "sha512-Ht/8BuGlKfFTy0H3+8eEu0vdpwGztCnaLLXtpXNdQqiR7Hj4vFScU3T436vRAjATglOIPjJXronY+1WxxNLSiw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.14", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.14.tgz", + "integrity": "sha512-lWyt4T2XQZUZgK3tQ3Wn0w3XBvZsK/vjTuJl6bXbnGZBHH0ZUSONTYiK9TgjTTzU54xQr3DRFwpjmhp0oLm3gg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^4.2.14", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.17.tgz", + "integrity": "sha512-bXOvQzaSm6MnmLaWA1elgfQcAtN4UP3vXqV97bHuoOrHQOJiLT3ds6o9eo5bqd0TJfRFpzdGnDQdW3FACiAVdw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.14", + "@smithy/querystring-builder": "^4.2.14", + "@smithy/types": "^4.14.1", + "@smithy/util-base64": "^4.3.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler/node_modules/@smithy/util-base64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler/node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.14.tgz", + "integrity": "sha512-8ZBDY2DD4wr+GGjTpPtiglEsqr0lUP+KHqgZcWczFf6qeZ/YRjMIOoQWVQlmwu7EtxKTd8YXD8lblmYcpBIA1g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.1", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node/node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.14.tgz", + "integrity": "sha512-c21qJiTSb25xvvOp+H2TNZzPCngrvl5vIPqPB8zQ/DmJF4QWXO19x1dWfMJZ6wZuuWUPPm0gV8C0cU3+ifcWuw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/invalid-dependency/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", + "integrity": "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.0.7.tgz", + "integrity": "sha512-2i2BpXF9pI5D1xekqUsgQ/ohv5+H//G9FlawJrkOJskV18PgJ8LiNbLiskMeYt07yAsSTZR7qtlcAaa/GQLWww==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.3.1", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/md5-js/node_modules/@smithy/types": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", + "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.14.tgz", + "integrity": "sha512-xhHq7fX4/3lv5NHxLUk3OeEvl0xZ+Ek3qIbWaCL4f9JwgDZEclPBElljaZCAItdGPQl/kSM4LPMOpy1MYgprpw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-content-length/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "4.4.32", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.32.tgz", + "integrity": "sha512-ZZkgyjnJppiZbIm6Qbx92pbXYi1uzenIvGhBSCDlc7NwuAkiqSgS75j1czAD25ZLs2FjMjYy1q7gyRVWG6JA0Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.23.17", + "@smithy/middleware-serde": "^4.2.20", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-middleware": "^4.2.14", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "4.5.7", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.5.7.tgz", + "integrity": "sha512-bRt6ZImqVSeTk39Nm81K20ObIiAZ3WefY7G6+iz/0tZjs4dgRRjvRX2sgsH+zi6iDCRR/aQvQofLKxxz4rPBZg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.23.17", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/service-error-classification": "^4.3.1", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.6", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-retry/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "4.2.20", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.20.tgz", + "integrity": "sha512-Lx9JMO9vArPtiChE3wbEZ5akMIDQpWQtlu90lhACQmNOXcGXRbaDywMHDzuDZ2OkZzP+9wQfZi3YJT9F67zTQQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.23.17", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.14.tgz", + "integrity": "sha512-2dvkUKLuFdKsCRmOE4Mn63co0Djtsm+JMh0bYZQupN1pJwMeE8FmQmRLLzzEMN0dnNi7CDCYYH8F0EVwWiPBeA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-stack/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "4.3.14", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.14.tgz", + "integrity": "sha512-S+gFjyo/weSVL0P1b9Ts8C/CwIfNCgUPikk3sl6QVsfE/uUuO+QsF+NsE/JkpvWqqyz1wg7HFdiaZuj5CoBMRg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.6.1.tgz", + "integrity": "sha512-iB+orM4x3xrr57X3YaXazfKnntl0LHlZB1kcXSGzMV1Tt0+YwEjGlbjk/44qEGtBzXAz6yFDzkYTKSV6Pj2HUg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.14", + "@smithy/querystring-builder": "^4.2.14", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.14.tgz", + "integrity": "sha512-WuM31CgfsnQ/10i7NYr0PyxqknD72Y5uMfUMVSniPjbEPceiTErb4eIqJQ+pdxNEAUEWrewrGjIRjVbVHsxZiQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/property-provider/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.14.tgz", + "integrity": "sha512-dN5F8kHx8RNU0r+pCwNmFZyz6ChjMkzShy/zup6MtkRmmix4vZzJdW+di7x//b1LiynIev88FM18ie+wwPcQtQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/protocol-http/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.14.tgz", + "integrity": "sha512-XYA5Z0IqTeF+5XDdh4BBmSA0HvbgVZIyv4cmOoUheDNR57K1HgBp9ukUMx3Cr3XpDHHpLBnexPE3LAtDsZkj2A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.1", + "@smithy/util-uri-escape": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-builder/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.14.tgz", + "integrity": "sha512-hr+YyqBD23GVvRxGGrcc/oOeNlK3PzT5Fu4dzrDXxzS1LpFiuL2PQQqKPs87M79aW7ziMs+nvB3qdw77SqE7Lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-parser/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.3.1.tgz", + "integrity": "sha512-aUQuDGh760ts/8MU+APjIZhlLPKhIIfqyzZaJikLEIMrdxFvxuLYD0WxWzaYWpmLbQlXDe9p7EWM3HsBe0K6Gw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/service-error-classification/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.9.tgz", + "integrity": "sha512-495/V2I15SHgedSJoDPD23JuSfKAp726ZI1V0wtjB07Wh7q/0tri/0e0DLefZCHgxZonrGKt/OCTpAtP1wE1kQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.14.tgz", + "integrity": "sha512-1D9Y/nmlVjCeSivCbhZ7hgEpmHyY1h0GvpSZt3l0xcD9JjmjVC1CHOozS6+Gh+/ldMH8JuJ6cujObQqfayAVFA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-uri-escape": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", + "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4/node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "4.12.13", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.13.tgz", + "integrity": "sha512-y/Pcj1V9+qG98gyu1gvftHB7rDpdh+7kIBIggs55yGm3JdtBV8GT8IFF3a1qxZ79QnaJHX9GXzvBG6tAd+czJA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.23.17", + "@smithy/middleware-endpoint": "^4.4.32", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-stream": "^4.5.25", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@monaco-editor/react": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.7.0.tgz", - "integrity": "sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==", - "license": "MIT", + "node_modules/@smithy/smithy-client/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", "dependencies": { - "@monaco-editor/loader": "^1.5.0" + "tslib": "^2.6.2" }, - "peerDependencies": { - "monaco-editor": ">= 0.25.0 < 1", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz", + "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.14.tgz", + "integrity": "sha512-p06BiBigJ8bTA3MgnOfCtDUWnAMY0YfedO/GRpmc7p+wg3KW8vbXy1xwSu5ASy0wV7rRYtlfZOIKH4XqfhjSQQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.14", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/url-parser/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-base64/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-base64/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-base64/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", + "integrity": "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", + "integrity": "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", + "integrity": "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", + "integrity": "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.49", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.49.tgz", + "integrity": "sha512-a5bNrdiONYB/qE2BuKegvUMd/+ZDwdg4vsNuuSzYE8qs2EYAdK9CynL+Rzn29PbPiUqoz/cbpRbcLzD5lEevHw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.54", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.54.tgz", + "integrity": "sha512-g1cvrJvOnzeJgEdf7AE4luI7gp6L8weE0y9a9wQUSGtjb8QRHDbCJYuE4Sy0SD9N8RrnNPFsPltAz/OSoBR9Zw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.17", + "@smithy/credential-provider-imds": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.4.2.tgz", + "integrity": "sha512-a55Tr+3OKld4TTtnT+RhKOQHyPxm3j/xL4OR83WBUhLJaKDS9dnJ7arRMOp3t31dcLhApwG9bgvrRXBHlLdIkg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.14", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-endpoints/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.0.0.tgz", + "integrity": "sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.14.tgz", + "integrity": "sha512-1Su2vj9RYNDEv/V+2E+jXkkwGsgR7dc4sfHn9Z7ruzQHJIEni9zzw5CauvRXlFJfmgcqYP8fWa0dkh2Q2YaQyw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-middleware/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.3.8.tgz", + "integrity": "sha512-LUIxbTBi+OpvXpg91poGA6BdyoleMDLnfXjVDqyi2RvZmTveY5loE/FgYUBCR5LU2BThW2SoZRh8dTIIy38IPw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.3.1", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-retry/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "4.5.25", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.25.tgz", + "integrity": "sha512-/PFpG4k8Ze8Ei+mMKj3oiPICYekthuzePZMgZbCqMiXIHHf4n2aZ4Ps0aSRShycFTGuj/J6XldmC0x0DwednIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/node-http-handler": "^4.6.1", + "@smithy/types": "^4.14.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream/node_modules/@smithy/util-base64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", + "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream/node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", + "integrity": "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.0.tgz", + "integrity": "sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-utf8/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.3.0.tgz", + "integrity": "sha512-JyjYmLAfS+pdxF92o4yLgEoy0zhayKTw73FU1aofLWwLcJw7iSqIY2exGmMTrl/lmZugP5p/zxdFSippJDfKWA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-waiter/node_modules/@smithy/types": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, + "node_modules/@smithy/uuid": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.2.tgz", + "integrity": "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@types/aws-lambda": { + "version": "8.10.161", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.161.tgz", + "integrity": "sha512-rUYdp+MQwSFocxIOcSsYSF3YYYC/uUpMbCY/mbO21vGqfrEYvNSoPyKYDj6RhXXpPfS0KstW9RwG3qXh9sL7FQ==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", @@ -41,6 +2705,77 @@ "license": "MIT", "optional": true }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "license": "MIT" + }, + "node_modules/aws-amplify": { + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/aws-amplify/-/aws-amplify-6.17.0.tgz", + "integrity": "sha512-608h5BZvhbKGTN3sJwMoL6CJ8GPZWfgElywvuPr07IhxWklR6Y3BPwOgM4XC4F1sIsjxRdwh5BBHaSbn1BDUxQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-amplify/analytics": "7.0.94", + "@aws-amplify/api": "6.3.26", + "@aws-amplify/auth": "6.20.0", + "@aws-amplify/core": "6.16.3", + "@aws-amplify/datastore": "5.1.7", + "@aws-amplify/notifications": "2.0.94", + "@aws-amplify/storage": "6.15.0", + "tslib": "^2.5.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bowser": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", + "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", + "license": "MIT" + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/dompurify": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.2.tgz", @@ -50,6 +2785,109 @@ "@types/trusted-types": "^2.0.7" } }, + "node_modules/fast-xml-builder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz", + "integrity": "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "path-expression-matcher": "^1.5.0", + "xml-naming": "^0.1.0" + } + }, + "node_modules/fast-xml-parser": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.3.tgz", + "integrity": "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "@nodable/entities": "^2.1.0", + "fast-xml-builder": "^1.1.7", + "path-expression-matcher": "^1.5.0", + "strnum": "^2.2.3" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/graphql": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", + "license": "MIT", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/idb": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/idb/-/idb-5.0.6.tgz", + "integrity": "sha512-/PFvOWPzRcEPmlDt5jEvzVZVs0wyd/EvGvkDIcbBpGuMMLQKrTPG0TxvE2UJtgZtCQCmOtM2QD7yQJBVEjKGOw==", + "license": "ISC" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/immer": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.6.tgz", + "integrity": "sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "license": "MIT" + }, "node_modules/monaco-editor": { "version": "0.53.0", "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.53.0.tgz", @@ -65,6 +2903,21 @@ "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==", "license": "MIT" }, + "node_modules/path-expression-matcher": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", + "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/react": { "version": "19.2.6", "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", @@ -88,6 +2941,15 @@ "react": "^19.2.6" } }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/scheduler": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", @@ -100,6 +2962,61 @@ "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz", "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==", "license": "MIT" + }, + "node_modules/strnum": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.3.0.tgz", + "integrity": "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/ulid": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ulid/-/ulid-2.4.0.tgz", + "integrity": "sha512-fIRiVTJNcSRmXKPZtGzFQv9WRrZ3M9eoptl/teFJvjOzmpU+/K/JH6HZ8deBfb5vMEpicJcLn7JmvdknlMq7Zg==", + "license": "MIT", + "bin": { + "ulid": "bin/cli.js" + } + }, + "node_modules/uuid": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.1.tgz", + "integrity": "sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/xml-naming": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz", + "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } } } } diff --git a/package.json b/package.json index a4dcbe4..8bac068 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "dependencies": { "@monaco-editor/react": "^4.7.0", + "aws-amplify": "^6.17.0", "dompurify": "^3.4.2", "monaco-editor": "^0.53.0" } From 76c1326ab048496d577ea7fbecd2d127f941c2be Mon Sep 17 00:00:00 2001 From: TaskeenAbdoola Date: Tue, 12 May 2026 00:10:22 +0200 Subject: [PATCH 04/16] Login page --- frontend/src/pages/Login.jsx | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 frontend/src/pages/Login.jsx diff --git a/frontend/src/pages/Login.jsx b/frontend/src/pages/Login.jsx new file mode 100644 index 0000000..5054c47 --- /dev/null +++ b/frontend/src/pages/Login.jsx @@ -0,0 +1,45 @@ +import "../styles/auth.css"; +import shieldImg from "../assets/LightMode_Shield.png" + +export default function Login() { + return ( +
+ +
+ +

Let's sign you in

+

Welcome back!

+ +
+ + + +
+
+

or

+
+
+ + +
+

+ Are you a new user? Sign up +

+
+
+ ); +} \ No newline at end of file From 426a6ac76ef712a18dd763ca74cb8504f85d1318 Mon Sep 17 00:00:00 2001 From: TaskeenAbdoola Date: Tue, 12 May 2026 00:26:07 +0200 Subject: [PATCH 05/16] sign up page --- cognito/sign_up.css | 146 ---------------------------------- frontend/src/pages/SignUp.jsx | 71 +++++++++++++++++ 2 files changed, 71 insertions(+), 146 deletions(-) delete mode 100644 cognito/sign_up.css create mode 100644 frontend/src/pages/SignUp.jsx diff --git a/cognito/sign_up.css b/cognito/sign_up.css deleted file mode 100644 index 9267d79..0000000 --- a/cognito/sign_up.css +++ /dev/null @@ -1,146 +0,0 @@ -:root { - --primary: #3B82F6; - --secondary: #A78BFA; - --background: #F8FAFC; - --surface: #FFFFFF; - --text-primary: #0F182A; - --text-secondary: #64748B; - --success: #22C55E; - --danger: #EF4444; - --border: #E2E8F0; -} - -body { - background: var(--background) !important; - font-family: "Baloo Bhai 2", Arial, sans-serif !important; - color: var(--text-primary) !important; -} - -.panel-customizable { - background: transparent !important; - border: none !important; - box-shadow: none !important; - max-width: 430px !important; - margin: 40px auto !important; -} - -.panel-heading { - background: transparent !important; - border: none !important; - text-align: center !important; -} - -.panel-heading h1, -.panel-heading h2, -.panel-heading h3, -.panel-title { - font-family: "Gloock", Georgia, serif !important; - font-size: 42px !important; - color: var(--text-primary) !important; - font-weight: 700 !important; -} - -.panel-body { - background: transparent !important; - padding: 20px 36px !important; -} - -label { - font-family: "Baloo Bhai 2", Arial, sans-serif !important; - color: var(--text-secondary) !important; - font-size: 14px !important; -} - -input { - background: var(--surface) !important; - border: 1px solid var(--border) !important; - border-radius: 2px !important; - color: var(--text-primary) !important; - height: 48px !important; - font-size: 15px !important; - padding: 12px 14px !important; - box-shadow: none !important; -} - -input::placeholder { - color: var(--text-secondary) !important; -} - -input:focus { - border-color: var(--primary) !important; - box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.18) !important; -} - -.btn-primary, -button[type="submit"] { - background: var(--primary) !important; - border: none !important; - border-radius: 4px !important; - color: var(--text-primary) !important; - font-family: "Baskerville", Georgia, serif !important; - font-size: 16px !important; - height: 48px !important; - width: 100% !important; -} - -.btn-primary:hover, -button[type="submit"]:hover { - background: #2563EB !important; -} - -a { - color: var(--text-primary) !important; - text-decoration: underline !important; -} - -a:hover { - color: var(--primary) !important; -} - -.alert-danger, -.text-danger { - background: rgba(239, 68, 68, 0.08) !important; - border-color: var(--danger) !important; - color: var(--danger) !important; -} - -.alert-success { - background: rgba(34, 197, 94, 0.08) !important; - border-color: var(--success) !important; - color: var(--success) !important; -} - -.redirect-customizable { - border-radius: 4px !important; - height: 48px !important; - font-family: "Baskerville", Georgia, serif !important; - font-size: 16px !important; - border: none !important; -} - -.redirect-customizable:first-of-type { - background: var(--secondary) !important; - color: var(--text-primary) !important; -} - -.redirect-customizable:not(:first-of-type) { - background: var(--primary) !important; - color: var(--text-primary) !important; -} - -.divider-customizable { - color: var(--text-secondary) !important; -} - -.btn-default { - background: var(--surface) !important; - border: 1px solid var(--border) !important; - color: var(--text-primary) !important; - border-radius: 4px !important; -} - -input[type="checkbox"] { - height: 18px !important; - width: 18px !important; - accent-color: var(--primary); -} \ No newline at end of file diff --git a/frontend/src/pages/SignUp.jsx b/frontend/src/pages/SignUp.jsx new file mode 100644 index 0000000..bba7905 --- /dev/null +++ b/frontend/src/pages/SignUp.jsx @@ -0,0 +1,71 @@ +import "../styles/auth.css"; +import shieldImg from "../assets/LightMode_Shield.png" + +export default function SignUp() { + return ( +
+ + + +
+ + +

Sign Up

+ +
+ + + + + + + + + +
+ + +

+ Accept Terms & Conditions +

+
+ + + +
+
+

or

+
+
+ + + + + +
+
+
+ ); +} \ No newline at end of file From eb8026b9e5edb03713b6d5762237d7253c4aee23 Mon Sep 17 00:00:00 2001 From: TaskeenAbdoola Date: Tue, 12 May 2026 00:28:42 +0200 Subject: [PATCH 06/16] css for login and signup, and shield from logo for background --- frontend/src/assets/LightMode_Shield.png | Bin 0 -> 51245 bytes frontend/src/styles/auth.css | 242 +++++++++++++++++++++++ 2 files changed, 242 insertions(+) create mode 100644 frontend/src/assets/LightMode_Shield.png create mode 100644 frontend/src/styles/auth.css diff --git a/frontend/src/assets/LightMode_Shield.png b/frontend/src/assets/LightMode_Shield.png new file mode 100644 index 0000000000000000000000000000000000000000..3b3427af73eb1040875ec95f4a19f730c739083e GIT binary patch literal 51245 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 DFCGAk literal 0 HcmV?d00001 diff --git a/frontend/src/styles/auth.css b/frontend/src/styles/auth.css new file mode 100644 index 0000000..02e9bb0 --- /dev/null +++ b/frontend/src/styles/auth.css @@ -0,0 +1,242 @@ +@import url('https://fonts.googleapis.com/css2?family=El+Messiri:wght@400;500;600;700&family=Cormorant+Infant:ital,wght@0,400;0,500;1,400&family=Baloo+Bhai+2:wght@400;500;600&display=swap'); + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +.signup-page { + min-height: 100vh; + background: #F5F1E8; + display: flex; + justify-content: center; + align-items: flex-start; + padding-top: 30px; + position: relative; + overflow: hidden; +} + +.signup-container { + width: 100%; + max-width: 420px; + position: relative; + z-index: 1; + min-height: 100vh; +} + +.back-button { + position: relative; + top: 30px; + left: 30px; + border: none; + background: #E7DFC6; + border-radius: 8px; + padding: 8px 14px; + cursor: pointer; + font-family: 'Baloo Bhai 2', sans-serif; + font-size: 14px; + color: #2F2F2F; + box-shadow: 0 2px 6px rgba(0,0,0,0.08); + border: 1px solid #D4A017; +} + +.signup-title { + text-align: center; + font-family: 'El Messiri', serif; + font-size: 48px; + color: #2F2F2F; + margin-bottom: 16px; + line-height: 1.1; +} + +.login-subtitle, +.signup-subtitle { + text-align: center; + font-family: 'Cormorant Infant', serif; + font-size: 18px; + color: #6B6B6B; + margin-top: -8px; + margin-bottom: 32px; +} + +.shield-background { + position: absolute; + width: 1208px; + height: 1208px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + opacity: 0.2; + z-index: 0; +} + +.signup-form { + display: flex; + flex-direction: column; + gap: 22px; +} + +.signup-input { + width: 100%; + height: 58px; + background: #E7DFC6; + border: 2px solid #D4A017; + border-radius: 6px; + padding: 0 18px; + font-size: 18px; + font-family: 'Cormorant Infant', serif; + color: #2F2F2F; + transition: 0.2s; +} + +.signup-input::placeholder { + color: #6B6B6B; +} + +.signup-input:focus { + outline: none; + border-color: #6B8E23; + box-shadow: 0 0 0 4px rgba(107,142,35,0.15); +} + +.terms-row { + display: flex; + align-items: center; + gap: 12px; + margin-top: -4px; +} + +.checkbox { + width: 20px; + height: 20px; + accent-color: #6B8E23; + cursor: pointer; +} + +.terms-row p { + font-family: 'Baloo Bhai 2', sans-serif; + font-size: 15px; + color: #2F2F2F; +} + +.terms-row span { + text-decoration: underline; + font-weight: 600; + cursor: pointer; + color: #6B8E23; +} + +.signup-button { + width: 100%; + height: 58px; + background: #6B8E23; + border: none; + border-radius: 6px; + color: #F5F1E8; + font-size: 24px; + font-family: 'El Messiri', serif; + cursor: pointer; + transition: 0.2s; + letter-spacing: 0.02em; +} + +.signup-button:hover { + background: #5a7a1c; +} + +.divider { + display: flex; + align-items: center; + gap: 18px; + margin: 4px 0; +} + +.line { + flex: 1; + height: 1px; + background: #D4A017; +} + +.divider p { + font-family: 'Baloo Bhai 2', sans-serif; + color: #6B6B6B; + font-size: 14px; +} + +.social-button { + width: 100%; + height: 58px; + border: none; + border-radius: 6px; + display: flex; + align-items: center; + justify-content: center; + gap: 14px; + cursor: pointer; + font-size: 22px; + font-family: 'El Messiri', serif; + transition: 0.2s; + letter-spacing: 0.02em; +} + +.google-button { + background: #C97C5D; + color: #F5F1E8; + border: none; +} + +.google-button:hover { + background: #b56d4f; +} + +.apple-button { + background: #6B8E23; + color: #F5F1E8; +} + +.apple-button:hover { + background: #1a1a1a; +} + +.social-icon { + font-size: 24px; + line-height: 1; +} + +.login-redirect { + text-align: center; + font-family: 'Baloo Bhai 2', sans-serif; + font-size: 15px; + color: #2F2F2F; + margin-top: 24px; + padding-bottom: 40px; +} + +.login-redirect-link { + color: #6B8E23; + text-decoration: underline; + font-weight: 600; + cursor: pointer; +} + +.login-redirect-link:hover { + color: #5a7a1c; +} + +@media (max-width: 600px) { + .signup-page { + padding: 20px; + } + + .signup-title { + font-size: 40px; + } + + .signup-input, + .signup-button, + .social-button { + height: 54px; + font-size: 20px; + } +} \ No newline at end of file From 08b58d4f03430b8d0d87a517ea1f48f2e6183462 Mon Sep 17 00:00:00 2001 From: TaskeenAbdoola Date: Thu, 14 May 2026 15:58:07 +0200 Subject: [PATCH 07/16] commiting to merge --- frontend/src/App.jsx | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 4f03aa1..fb400b9 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,11 +1,14 @@ -import { useState } from 'react' +/*import { useState } from 'react' import reactLogo from './assets/react.svg' import viteLogo from './assets/vite.svg' import heroImg from './assets/hero.png' -import './App.css' +import './App.css'*/ + +import SignUp from './pages/SignUp' +import Login from './pages/Login' function App() { - const [count, setCount] = useState(0) + /*const [count, setCount] = useState(0) return ( <> @@ -116,7 +119,9 @@ function App() {
- ) + )*/ + + return ; } export default App From 6a993c22f07a9df4ec0afadd5c20254f38c171ec Mon Sep 17 00:00:00 2001 From: TaskeenAbdoola Date: Fri, 15 May 2026 12:44:39 +0200 Subject: [PATCH 08/16] Images for frontend pages --- frontend/src/assets/Apple_Icon.png | Bin 0 -> 1353 bytes frontend/src/assets/Google_Icon.png | Bin 0 -> 34165 bytes frontend/src/assets/LightMode_Logo.png | Bin 0 -> 109338 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 frontend/src/assets/Apple_Icon.png create mode 100644 frontend/src/assets/Google_Icon.png create mode 100644 frontend/src/assets/LightMode_Logo.png diff --git a/frontend/src/assets/Apple_Icon.png b/frontend/src/assets/Apple_Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4d79278a7f4190385cb2935a163ff53bee6e43f5 GIT binary patch literal 1353 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 TxNic9?M( Date: Fri, 15 May 2026 12:45:40 +0200 Subject: [PATCH 09/16] Updated --- frontend/index.html | 5 +- frontend/package-lock.json | 587 ++++++++++++++++++++++++++++----- frontend/package.json | 8 +- frontend/src/main.tsx | 21 +- frontend/src/styles/auth.css | 242 -------------- frontend/src/styles/global.css | 9 + 6 files changed, 535 insertions(+), 337 deletions(-) delete mode 100644 frontend/src/styles/auth.css create mode 100644 frontend/src/styles/global.css diff --git a/frontend/index.html b/frontend/index.html index 94337a7..aa47e1a 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1,10 +1,9 @@ - + - - codeclash + Vite React App
diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 36e3176..472e430 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9,7 +9,8 @@ "version": "0.0.0", "dependencies": { "react": "^19.2.6", - "react-dom": "^19.2.6" + "react-dom": "^19.2.6", + "react-router-dom": "^7.15.0" }, "devDependencies": { "@eslint/js": "^10.0.1", @@ -23,7 +24,8 @@ "globals": "^17.6.0", "typescript": "~6.0.2", "typescript-eslint": "^8.59.2", - "vite": "^8.0.12" + "vite": "^8.0.12", + "vitest": "^4.1.6" } }, "node_modules/@babel/code-frame": { @@ -564,9 +566,9 @@ } }, "node_modules/@oxc-project/types": { - "version": "0.129.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.129.0.tgz", - "integrity": "sha512-3oz8m3FGdr2nDXVqmFUw7jolKliC4MoyXYIG2c7gpjBnzUWQpUGIYcXYKxTdTi+N2jusvt610ckTMkxdwHkYEg==", + "version": "0.130.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.130.0.tgz", + "integrity": "sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q==", "dev": true, "license": "MIT", "funding": { @@ -574,9 +576,9 @@ } }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0.tgz", - "integrity": "sha512-TWMZnRLMe63C2Lhyicviu7ZHaU4kxa6PS3rofvc9GmcvptzNN11BcfQ4Sl7MwTOsisQoa2keB/EBdNCAnUo8vA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.1.tgz", + "integrity": "sha512-fJI3I0r3C3Oj/zdBCpaCmBRZYf07xpaq4yCfDDoSFm+beWNzbIl26puW8RraUdugoJw/95zerNOn6jasAhzSmg==", "cpu": [ "arm64" ], @@ -591,9 +593,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0.tgz", - "integrity": "sha512-6XcD+8k0gPVItNagEw78/qqcBDwKcwDYS8V2hRmVsfUSIrd8cWe/CBvRDI5toqFyPfj+FJr6t8U6Xj2P2prEew==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.1.tgz", + "integrity": "sha512-cKnAhWEsV7TPcA/5EAteDp6KcJZBQ2G+BqE7zayMMi7kMvwRsbv7WT9aOnn0WNl4SKEIf43vjS31iUPu80nzXg==", "cpu": [ "arm64" ], @@ -608,9 +610,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0.tgz", - "integrity": "sha512-iN/tWVXRQDWvmZlKdceP1Dwug9GDpEymhb9p4xnEe6zvCg5lFmzVljl+1qR1NVx3yfGpr2Na+CuLmv5IU8uzfQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.1.tgz", + "integrity": "sha512-YKrVwQjIRBPo+5G/u03wGjbdy4q7pyzCe93DK9VJ7zkVmeg8LJ7GbgsiHWdR4xSoe4CAXRD7Bcjgbtr64bkXNg==", "cpu": [ "x64" ], @@ -625,9 +627,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0.tgz", - "integrity": "sha512-jjQMDvvwSOuhOwMszD/klSOjyWMM3zI64hWTj9KT5x4MxRbZAf+7vLQ6qouRhtsLVFHr3f0ILaJAfgENPiQdAQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.1.tgz", + "integrity": "sha512-z/oBsREo46SsFqBwYtFe0kpJeBijAT48O/WXLI4suiCLBkr03RTtTJMCzSdDd2znlh8VJizL09XVkQgk8IZonw==", "cpu": [ "x64" ], @@ -642,9 +644,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0.tgz", - "integrity": "sha512-d//Dtg2x6/m3mbV64yUGNnDGNZaDGRpDLLNGerHQUVObuNaIQaaDp25yUiqGXtHEXX+NP2d0wAlmKgpYgIAJ2A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.1.tgz", + "integrity": "sha512-ik8q7GM11zxvYxFc2PeDcT6TBvhCQMaUxfph/M5l9sKuTs/Sjg3L+Byw0F7w0ZVLBZmx30P+gG0ECzzN+MFcmQ==", "cpu": [ "arm" ], @@ -659,9 +661,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0.tgz", - "integrity": "sha512-n7Ofp0mx+aB2cC+Sdy5YtMnXtY9lchnHbY+3Yt0uq9JsWQExf4f5Whu0tK0R8Jdc9S6RchTHjIFY7uc92puOVQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.1.tgz", + "integrity": "sha512-QoSx2EkyrrdZ6kcyE8stqZ62t0Yra8Fs5ia9lOxJrh6TMQJK7gQKmscdTHf7pOXKREKrVwOtJcQG3qVSfc866A==", "cpu": [ "arm64" ], @@ -676,9 +678,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0.tgz", - "integrity": "sha512-EIVjy2cgd7uuMMo94FVkBp7F6DhcZAUwNURkSG3RwUmvAXR6s0ISxM81U+IydcZByPG0pZIHsf1b6kTxoFDgJA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.1.tgz", + "integrity": "sha512-uwNwFpwKeNiZawfAWBgg0VIztPTV3ihhh1vV334h9ivnNLorxnQMU6Fz8wG1Zb4Qh9LC1/MkcyT3YlDXG3Rsgg==", "cpu": [ "arm64" ], @@ -693,9 +695,9 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0.tgz", - "integrity": "sha512-JEwwOPcwTLAcpDQlqSmjEmfs63xJnSiUNIGvLcDLUHCWK4XowpS/7c7tUsUH6uT/ct6bMUTdXKfI8967FYj6mg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.1.tgz", + "integrity": "sha512-zY1bul7OWr7DFBiJ++wofXvnr8B45ce3QsQUhKrIhXsygAh7bTkwyeM1bi1a2g5C/yC/N8TZyGDEoMfm/l9mpg==", "cpu": [ "ppc64" ], @@ -710,9 +712,9 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0.tgz", - "integrity": "sha512-0wjCFhLrihtAubnT9iA0N++0pSV0z5Hg7tNGdNJ4RFaINceHadoF+kiFGyY1qSSNVIAZtLotG8Ju1bgDPkjnFA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.1.tgz", + "integrity": "sha512-0frlsT/f4Ft6I7SMESTKnF3cZsdicQn1dCMkF/jT9wDLE+gGoiQfv1nmT9e+s7s/fekvvy6tZM2jHvI2tkbJDQ==", "cpu": [ "s390x" ], @@ -727,9 +729,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0.tgz", - "integrity": "sha512-Dfn7iak9BcMMePxcoJfpSbWqnEyrp/dRF63/8qW/eHBdOZov6x5aShLLEYGYdIeSJ6vMLK/XCVB+lGIxm41bQA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.1.tgz", + "integrity": "sha512-XABVmGp9Tg0WspTVvwduTc4fpqy6JnAUrSQe6OuyqD/03nI7r0O9OWUkMIwFrjKAIqolvqoA4ZrJppgwE0Gxmw==", "cpu": [ "x64" ], @@ -744,9 +746,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0.tgz", - "integrity": "sha512-5/utzzDmD/pD/bmuaUcbTf/sZYy0aztwIVlfpoW1fTjCZ0BaPOMVWGZL1zvgxyi7ZIVYWlxKONHmSbHuiOh8Jw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.1.tgz", + "integrity": "sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ==", "cpu": [ "x64" ], @@ -761,9 +763,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0.tgz", - "integrity": "sha512-ouJs8VcUomfLfpbUECqFMRqdV4x6aeAK3MA4m6vTrJJjKyWTV5KnxZx7Jd9G+GlDaQQxubcba00x16OyJ1meig==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.1.tgz", + "integrity": "sha512-/Mh0Zhq3OP7fVs0kcQHZP6lZEthMGTaSf8UBQYSFEZDWGXXlEC+nJ6EqenaK2t4LBXMe3A+K/G2BVXXdtOr4PQ==", "cpu": [ "arm64" ], @@ -778,9 +780,9 @@ } }, "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0.tgz", - "integrity": "sha512-E+oHKGiDA+lsKMmFtffDDw91EryDT7uJocrIuCHqhm6bCTM6xFK+3gaCkYOHfPwQr0cCNarSM2xaELoQDz9jJg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.1.tgz", + "integrity": "sha512-+1xc9X45l8ufsBAm6Gjvx2qDRIY9lTVt0cgWNcJ+1gdhXvkbxePA60yRTwSTuXL09CMhyJmjpV7E3NoyxbqFQQ==", "cpu": [ "wasm32" ], @@ -797,9 +799,9 @@ } }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0.tgz", - "integrity": "sha512-yYK02n8Rngo+gbm1y6G0+7jk1sJ/2Wt7K0me0Y7k/ErBpyf+LJ2gFpqWVTcRV1rUepBlQRmpgWkTQCiiwrK0Ow==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.1.tgz", + "integrity": "sha512-1D+UqZdfnuR+Jy1GgMJwi85bD40H21uNmOPRWQhw4oRSuolZ/B5rixZ45DK2KXOTCvmVCecauWgEhbw8bI7tOw==", "cpu": [ "arm64" ], @@ -814,9 +816,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0.tgz", - "integrity": "sha512-14bpChMahXRRXiTwahSl+zzHPW6qQTXtkMuJBFlbo+pqSAews2d4BdCSHfrJ/MBsCZtpmTafsY+1QhBzitcmdg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.1.tgz", + "integrity": "sha512-INAycaWuhlOK3wk4mRHGsdgwYWmd9cChdPdE9bwWmy6rn9VqVNYNFGhOdXrofXUxwHIncSiPNb8tNm8knDVIeQ==", "cpu": [ "x64" ], @@ -837,6 +839,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, "node_modules/@tybys/wasm-util": { "version": "0.10.2", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", @@ -848,6 +857,24 @@ "tslib": "^2.4.0" } }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/esrecurse": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", @@ -1168,6 +1195,119 @@ } } }, + "node_modules/@vitest/expect": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.6.tgz", + "integrity": "sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.1.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.1.6", + "@vitest/utils": "4.1.6", + "chai": "^6.2.2", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.6.tgz", + "integrity": "sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.1.6", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.6.tgz", + "integrity": "sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.6.tgz", + "integrity": "sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.1.6", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.6.tgz", + "integrity": "sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.1.6", + "@vitest/utils": "4.1.6", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.6.tgz", + "integrity": "sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.6.tgz", + "integrity": "sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.1.6", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, "node_modules/acorn": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", @@ -1208,6 +1348,16 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", @@ -1299,6 +1449,16 @@ ], "license": "CC-BY-4.0" }, + "node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -1306,6 +1466,19 @@ "dev": true, "license": "MIT" }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -1364,12 +1537,19 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.354", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.354.tgz", - "integrity": "sha512-JaBHwWcfIdmSAfWM5l3uwjGd431j8YEMikZ+K/2nXVuBqJKyZ0f+2h4n4JY5AyNiZmnY9qQr2RU3v9DxDmHMNg==", + "version": "1.5.355", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.355.tgz", + "integrity": "sha512-LUPZhKzZPYSPme1jEYohpkA+ybYCJztr1quAdBd7E7h3+VOBVcKkwwtBJu41nrjawrRzfb8mtMfzWozoaK0ZIQ==", "dev": true, "license": "ISC" }, + "node_modules/es-module-lexer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", + "dev": true, + "license": "MIT" + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -1565,6 +1745,16 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1575,6 +1765,16 @@ "node": ">=0.10.0" } }, + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2148,6 +2348,16 @@ "yallist": "^3.0.2" } }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, "node_modules/minimatch": { "version": "10.2.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", @@ -2204,6 +2414,17 @@ "dev": true, "license": "MIT" }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -2274,6 +2495,13 @@ "node": ">=8" } }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -2364,15 +2592,53 @@ "react": "^19.2.6" } }, + "node_modules/react-router": { + "version": "7.15.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.15.1.tgz", + "integrity": "sha512-R8rl9HhgikFYoPJymnUtPXWbnDb3oget6lQnfIoupbt61aT9aOhRkDsY2XRhZRyX1Z/8a5sL74fXmFNm3NRK5A==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.15.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.15.1.tgz", + "integrity": "sha512-AzF62gjY6U9rkMq4RfP/r2EVtQ7DMfNMjyOp/flLTCrtRylLiK4wT4pSq6O8rOXZ2eXdZYJPEYe+ifomiv+Igg==", + "license": "MIT", + "dependencies": { + "react-router": "7.15.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, "node_modules/rolldown": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0.tgz", - "integrity": "sha512-yD986aXDESFGS95spT1LAv0jssywP4npMEjmMHyN2/5+eE8qQJUype2AaKkRiLgBgyD0LFlubwAht7VmY8rGoA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.1.tgz", + "integrity": "sha512-X0KQHljNnEkWNqqiz9zJrGunh1B0HgOxLXvnFpCOcadzcy5qohZ3tqMEUg00vncoRovXuK3ZqCT9KnnKzoInFQ==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.129.0", - "@rolldown/pluginutils": "1.0.0" + "@oxc-project/types": "=0.130.0", + "@rolldown/pluginutils": "^1.0.0" }, "bin": { "rolldown": "bin/cli.mjs" @@ -2381,27 +2647,27 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.0.0", - "@rolldown/binding-darwin-arm64": "1.0.0", - "@rolldown/binding-darwin-x64": "1.0.0", - "@rolldown/binding-freebsd-x64": "1.0.0", - "@rolldown/binding-linux-arm-gnueabihf": "1.0.0", - "@rolldown/binding-linux-arm64-gnu": "1.0.0", - "@rolldown/binding-linux-arm64-musl": "1.0.0", - "@rolldown/binding-linux-ppc64-gnu": "1.0.0", - "@rolldown/binding-linux-s390x-gnu": "1.0.0", - "@rolldown/binding-linux-x64-gnu": "1.0.0", - "@rolldown/binding-linux-x64-musl": "1.0.0", - "@rolldown/binding-openharmony-arm64": "1.0.0", - "@rolldown/binding-wasm32-wasi": "1.0.0", - "@rolldown/binding-win32-arm64-msvc": "1.0.0", - "@rolldown/binding-win32-x64-msvc": "1.0.0" + "@rolldown/binding-android-arm64": "1.0.1", + "@rolldown/binding-darwin-arm64": "1.0.1", + "@rolldown/binding-darwin-x64": "1.0.1", + "@rolldown/binding-freebsd-x64": "1.0.1", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.1", + "@rolldown/binding-linux-arm64-gnu": "1.0.1", + "@rolldown/binding-linux-arm64-musl": "1.0.1", + "@rolldown/binding-linux-ppc64-gnu": "1.0.1", + "@rolldown/binding-linux-s390x-gnu": "1.0.1", + "@rolldown/binding-linux-x64-gnu": "1.0.1", + "@rolldown/binding-linux-x64-musl": "1.0.1", + "@rolldown/binding-openharmony-arm64": "1.0.1", + "@rolldown/binding-wasm32-wasi": "1.0.1", + "@rolldown/binding-win32-arm64-msvc": "1.0.1", + "@rolldown/binding-win32-x64-msvc": "1.0.1" } }, "node_modules/rolldown/node_modules/@rolldown/pluginutils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0.tgz", - "integrity": "sha512-aKs/3GSWyV0mrhNmt/96/Z3yczC3yvrzYATCiCXQebBsGyYzjNdUphRVLeJQ67ySKVXRfMxt2lm12pmXvbPFQQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", "dev": true, "license": "MIT" }, @@ -2421,6 +2687,12 @@ "semver": "bin/semver.js" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -2444,6 +2716,13 @@ "node": ">=8" } }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -2454,6 +2733,37 @@ "node": ">=0.10.0" } }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz", + "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.2.tgz", + "integrity": "sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/tinyglobby": { "version": "0.2.16", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", @@ -2471,6 +2781,16 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tinyrainbow": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/ts-api-utils": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", @@ -2592,16 +2912,16 @@ } }, "node_modules/vite": { - "version": "8.0.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.12.tgz", - "integrity": "sha512-w2dDofOWv2QB09ZITZBsvKTVAlYvPR4IAmrY/v0ir9KvLs0xybR7i48wxhM1/oyBWO34wPns+bPGw5ZrZqDpZg==", + "version": "8.0.13", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.13.tgz", + "integrity": "sha512-MFtjBYgzmSxmgA4RAfjIyXWpGe1oALnjgUTzzV7QLx/TKxCzjtMH6Fd9/eVK+5Fg1qNoz5VAwsmMs/NofrmJvw==", "dev": true, "license": "MIT", "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.14", - "rolldown": "1.0.0", + "rolldown": "1.0.1", "tinyglobby": "^0.2.16" }, "bin": { @@ -2669,6 +2989,96 @@ } } }, + "node_modules/vitest": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.6.tgz", + "integrity": "sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.1.6", + "@vitest/mocker": "4.1.6", + "@vitest/pretty-format": "4.1.6", + "@vitest/runner": "4.1.6", + "@vitest/snapshot": "4.1.6", + "@vitest/spy": "4.1.6", + "@vitest/utils": "4.1.6", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^4.0.0-rc.1", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.1.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.1.6", + "@vitest/browser-preview": "4.1.6", + "@vitest/browser-webdriverio": "4.1.6", + "@vitest/coverage-istanbul": "4.1.6", + "@vitest/coverage-v8": "4.1.6", + "@vitest/ui": "4.1.6", + "happy-dom": "*", + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/coverage-istanbul": { + "optional": true + }, + "@vitest/coverage-v8": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "vite": { + "optional": false + } + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2685,6 +3095,23 @@ "node": ">= 8" } }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", diff --git a/frontend/package.json b/frontend/package.json index e78f2cd..ddc12dc 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -14,7 +14,8 @@ }, "dependencies": { "react": "^19.2.6", - "react-dom": "^19.2.6" + "react-dom": "^19.2.6", + "react-router-dom": "^7.15.0" }, "devDependencies": { "@eslint/js": "^10.0.1", @@ -28,6 +29,7 @@ "globals": "^17.6.0", "typescript": "~6.0.2", "typescript-eslint": "^8.59.2", - "vite": "^8.0.12" + "vite": "^8.0.12", + "vitest": "^4.1.6" } -} \ No newline at end of file +} diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index e6b5fe0..d53eb22 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -1,10 +1,13 @@ -import { StrictMode } from 'react' -import { createRoot } from 'react-dom/client' -import './index.css' -//import App from './App.tsx' +import React from 'react' +import ReactDOM from 'react-dom/client' +import { BrowserRouter } from 'react-router-dom' +import App from './App' +import './styles/global.css' -createRoot(document.getElementById('root')!).render( - - {/* */} - , -) +ReactDOM.createRoot(document.getElementById('root')!).render( + + + + + , +) \ No newline at end of file diff --git a/frontend/src/styles/auth.css b/frontend/src/styles/auth.css deleted file mode 100644 index 02e9bb0..0000000 --- a/frontend/src/styles/auth.css +++ /dev/null @@ -1,242 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=El+Messiri:wght@400;500;600;700&family=Cormorant+Infant:ital,wght@0,400;0,500;1,400&family=Baloo+Bhai+2:wght@400;500;600&display=swap'); - -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -.signup-page { - min-height: 100vh; - background: #F5F1E8; - display: flex; - justify-content: center; - align-items: flex-start; - padding-top: 30px; - position: relative; - overflow: hidden; -} - -.signup-container { - width: 100%; - max-width: 420px; - position: relative; - z-index: 1; - min-height: 100vh; -} - -.back-button { - position: relative; - top: 30px; - left: 30px; - border: none; - background: #E7DFC6; - border-radius: 8px; - padding: 8px 14px; - cursor: pointer; - font-family: 'Baloo Bhai 2', sans-serif; - font-size: 14px; - color: #2F2F2F; - box-shadow: 0 2px 6px rgba(0,0,0,0.08); - border: 1px solid #D4A017; -} - -.signup-title { - text-align: center; - font-family: 'El Messiri', serif; - font-size: 48px; - color: #2F2F2F; - margin-bottom: 16px; - line-height: 1.1; -} - -.login-subtitle, -.signup-subtitle { - text-align: center; - font-family: 'Cormorant Infant', serif; - font-size: 18px; - color: #6B6B6B; - margin-top: -8px; - margin-bottom: 32px; -} - -.shield-background { - position: absolute; - width: 1208px; - height: 1208px; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - opacity: 0.2; - z-index: 0; -} - -.signup-form { - display: flex; - flex-direction: column; - gap: 22px; -} - -.signup-input { - width: 100%; - height: 58px; - background: #E7DFC6; - border: 2px solid #D4A017; - border-radius: 6px; - padding: 0 18px; - font-size: 18px; - font-family: 'Cormorant Infant', serif; - color: #2F2F2F; - transition: 0.2s; -} - -.signup-input::placeholder { - color: #6B6B6B; -} - -.signup-input:focus { - outline: none; - border-color: #6B8E23; - box-shadow: 0 0 0 4px rgba(107,142,35,0.15); -} - -.terms-row { - display: flex; - align-items: center; - gap: 12px; - margin-top: -4px; -} - -.checkbox { - width: 20px; - height: 20px; - accent-color: #6B8E23; - cursor: pointer; -} - -.terms-row p { - font-family: 'Baloo Bhai 2', sans-serif; - font-size: 15px; - color: #2F2F2F; -} - -.terms-row span { - text-decoration: underline; - font-weight: 600; - cursor: pointer; - color: #6B8E23; -} - -.signup-button { - width: 100%; - height: 58px; - background: #6B8E23; - border: none; - border-radius: 6px; - color: #F5F1E8; - font-size: 24px; - font-family: 'El Messiri', serif; - cursor: pointer; - transition: 0.2s; - letter-spacing: 0.02em; -} - -.signup-button:hover { - background: #5a7a1c; -} - -.divider { - display: flex; - align-items: center; - gap: 18px; - margin: 4px 0; -} - -.line { - flex: 1; - height: 1px; - background: #D4A017; -} - -.divider p { - font-family: 'Baloo Bhai 2', sans-serif; - color: #6B6B6B; - font-size: 14px; -} - -.social-button { - width: 100%; - height: 58px; - border: none; - border-radius: 6px; - display: flex; - align-items: center; - justify-content: center; - gap: 14px; - cursor: pointer; - font-size: 22px; - font-family: 'El Messiri', serif; - transition: 0.2s; - letter-spacing: 0.02em; -} - -.google-button { - background: #C97C5D; - color: #F5F1E8; - border: none; -} - -.google-button:hover { - background: #b56d4f; -} - -.apple-button { - background: #6B8E23; - color: #F5F1E8; -} - -.apple-button:hover { - background: #1a1a1a; -} - -.social-icon { - font-size: 24px; - line-height: 1; -} - -.login-redirect { - text-align: center; - font-family: 'Baloo Bhai 2', sans-serif; - font-size: 15px; - color: #2F2F2F; - margin-top: 24px; - padding-bottom: 40px; -} - -.login-redirect-link { - color: #6B8E23; - text-decoration: underline; - font-weight: 600; - cursor: pointer; -} - -.login-redirect-link:hover { - color: #5a7a1c; -} - -@media (max-width: 600px) { - .signup-page { - padding: 20px; - } - - .signup-title { - font-size: 40px; - } - - .signup-input, - .signup-button, - .social-button { - height: 54px; - font-size: 20px; - } -} \ No newline at end of file diff --git a/frontend/src/styles/global.css b/frontend/src/styles/global.css new file mode 100644 index 0000000..5a83623 --- /dev/null +++ b/frontend/src/styles/global.css @@ -0,0 +1,9 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Baloo Bhai 2', cursive; +} \ No newline at end of file From 7bd2707229b379dbdc882e23f4d065a92657d9a1 Mon Sep 17 00:00:00 2001 From: TaskeenAbdoola Date: Fri, 15 May 2026 12:46:11 +0200 Subject: [PATCH 10/16] Implemented Welcome Page --- frontend/index.html | 7 +- frontend/src/pages/Welcome.css | 119 +++++++++++++++++++++++++++++++++ frontend/src/pages/Welcome.tsx | 44 ++++++++++++ 3 files changed, 167 insertions(+), 3 deletions(-) create mode 100644 frontend/src/pages/Welcome.css create mode 100644 frontend/src/pages/Welcome.tsx diff --git a/frontend/index.html b/frontend/index.html index aa47e1a..561cf96 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1,12 +1,13 @@ - + + - Vite React App + codeclash
- + \ No newline at end of file diff --git a/frontend/src/pages/Welcome.css b/frontend/src/pages/Welcome.css new file mode 100644 index 0000000..916bf08 --- /dev/null +++ b/frontend/src/pages/Welcome.css @@ -0,0 +1,119 @@ +@import url('https://fonts.googleapis.com/css2?family=Baloo+Bhai+2:wght@400;600;700;800&display=swap'); + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Baloo Bhai 2', cursive; + background-color: #f1f5f9; + min-height: 100vh; + display: flex; + align-items: center; + justify-content: center; +} + +.page-wrapper { + width: 1440px; + height: 1024px; + background-color: #f8fafc; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; +} + +.welcome-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 0; + width: 100%; + height: 100%; +} + +.logo-wrapper { + width: 561px; + height: 561px; + display: flex; + align-items: center; + justify-content: center; + margin-bottom: -16px; +} + +.logo-image { + width: 561px; + height: 561px; + object-fit: contain; +} + +.welcome-heading { + font-family: 'Baloo Bhai 2', cursive; + font-weight: 700; + font-size: 64px; + color: #0f172a; + line-height: 1.1; + text-align: center; + margin-bottom: 32px; +} + +.signin-button { + width: 500px; + height: 60px; + background-color: #3b82f6; + border: none; + border-radius: 8px; + font-family: 'Baloo Bhai 2', cursive; + font-size: 32px; + font-weight: 600; + color: #0f172a; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: background-color 0.2s ease, transform 0.15s ease; + margin-bottom: 24px; +} + +.signin-button:hover { + background-color: #2563eb; + transform: translateY(-1px); +} + +.signin-button:active { + background-color: #1d4ed8; + transform: translateY(0); +} + +.new-user-row { + display: flex; + align-items: center; + gap: 6px; +} + +.new-user-text { + font-family: 'Baloo Bhai 2', cursive; + font-size: 24px; + font-weight: 400; + color: #0f172a; +} + +.signup-link { + font-family: 'Baloo Bhai 2', cursive; + font-size: 24px; + font-weight: 400; + color: #0f172a; + text-decoration: underline; + cursor: pointer; + background: none; + border: none; + padding: 0; + transition: color 0.15s ease; +} + +.signup-link:hover { + color: #3b82f6; +} \ No newline at end of file diff --git a/frontend/src/pages/Welcome.tsx b/frontend/src/pages/Welcome.tsx new file mode 100644 index 0000000..cea51ea --- /dev/null +++ b/frontend/src/pages/Welcome.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import './Welcome.css'; +import logoImage from '../assets/LightMode_Logo.png'; + +interface WelcomeProps { + onSignIn?: () => void; + onSignUp?: () => void; +} + +const Welcome: React.FC = ({ onSignIn, onSignUp }) => { + return ( +
+
+
+ CodeClash logo +
+ +

Welcome to CodeClash Gaming

+ + + +
+ Are you a new user? + +
+ +
+
+ ); +}; + +export default Welcome; \ No newline at end of file From 7c0686eee5caebf3dd112b93bad4fa9388625077 Mon Sep 17 00:00:00 2001 From: TaskeenAbdoola Date: Fri, 15 May 2026 12:46:38 +0200 Subject: [PATCH 11/16] Implemented SignUp page --- frontend/src/pages/SignUp.css | 256 ++++++++++++++++++++++++++++++++++ frontend/src/pages/SignUp.jsx | 71 ---------- frontend/src/pages/SignUp.tsx | 152 ++++++++++++++++++++ 3 files changed, 408 insertions(+), 71 deletions(-) create mode 100644 frontend/src/pages/SignUp.css delete mode 100644 frontend/src/pages/SignUp.jsx create mode 100644 frontend/src/pages/SignUp.tsx diff --git a/frontend/src/pages/SignUp.css b/frontend/src/pages/SignUp.css new file mode 100644 index 0000000..f55de99 --- /dev/null +++ b/frontend/src/pages/SignUp.css @@ -0,0 +1,256 @@ +@import url('https://fonts.googleapis.com/css2?family=Baloo+Bhai+2:wght@400;600;700;800&display=swap'); + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Baloo Bhai 2', cursive; + background-color: #f8fafc; + min-height: 100vh; + display: flex; + align-items: center; + justify-content: center; +} + +.page-wrapper { + width: 1440px; + height: 1024px; + background-color: #f8fafc; + display: flex; + align-items: center; + justify-content: center; + position: relative; + overflow: hidden; +} + +.back-button { + position: absolute; + top: 40px; + left: 40px; + width: 91px; + height: 31px; + background-color: #ffffff; + border: 1px solid #0f172a; + border-radius: 6px; + font-family: 'Baloo Bhai 2', cursive; + font-size: 16px; + font-weight: 400; + color: #0f172a; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + gap: 4px; + transition: background-color 0.15s ease; +} + +.back-button:hover { + background-color: #f1f5f9; +} + +.shield-bg { + position: absolute; + width: 1208px; + height: 1208px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + opacity: 0.10; + pointer-events: none; + z-index: 0; + object-fit: contain; +} + +.signup-container { + display: flex; + flex-direction: column; + align-items: center; + gap: 16px; + width: 560px; + position: relative; + z-index: 1; +} + +.signup-heading { + font-family: 'Baloo Bhai 2', cursive; + font-weight: 700; + font-size: 64px; + color: #0f172a; + line-height: 1.1; + text-align: center; + margin-bottom: 4px; +} + +.input-field { + width: 500px; + height: 60px; + background-color: #ffffff; + border: 1px solid #0f172a; + border-radius: 8px; + padding: 0 20px; + font-family: 'Baloo Bhai 2', cursive; + font-size: 24px; + font-weight: 400; + color: rgba(15, 23, 42, 0.6); /* #0f172a at 60% */ + outline: none; + transition: border-color 0.2s ease, box-shadow 0.2s ease; +} + +.input-field::placeholder { + color: rgba(15, 23, 42, 0.6); +} + +.input-field:focus { + border-color: #3b82f6; + box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15); + color: #0f172a; +} + +.terms-row { + width: 500px; + display: flex; + align-items: center; + gap: 12px; +} + +.terms-checkbox { + width: 31px; + height: 31px; + min-width: 31px; + appearance: none; + -webkit-appearance: none; + background-color: #ffffff; + border: 1px solid #0f172a; + border-radius: 4px; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + position: relative; + transition: background-color 0.15s ease; +} + +.terms-checkbox:checked { + background-color: #3b82f6; + border-color: #3b82f6; +} + +.terms-checkbox:checked::after { + content: ''; + position: absolute; + width: 10px; + height: 16px; + border: 2px solid #ffffff; + border-top: none; + border-left: none; + transform: rotate(45deg) translate(-1px, -2px); +} + +.terms-label { + font-family: 'Baloo Bhai 2', cursive; + font-size: 16px; + font-weight: 400; + color: #0f172a; + cursor: pointer; +} + +.terms-label a { + color: #0f172a; + text-decoration: underline; +} + +.signup-button { + width: 500px; + height: 60px; + background-color: #3b82f6; + border: 2px solid #0f172a; + border-radius: 8px; + font-family: 'Baloo Bhai 2', cursive; + font-size: 32px; + font-weight: 600; + color: #0f172a; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: background-color 0.2s ease, transform 0.15s ease; +} + +.signup-button:hover { + background-color: #2563eb; + transform: translateY(-1px); +} + +.signup-button:active { + background-color: #1d4ed8; + transform: translateY(0); +} + +.or-divider { + width: 500px; + display: flex; + align-items: center; + gap: 12px; +} + +.or-line { + flex: none; + width: 218px; + height: 1px; + background-color: rgba(15, 23, 42, 0.1); +} + +.or-text { + font-family: 'Baloo Bhai 2', cursive; + font-size: 16px; + font-weight: 400; + color: #0f172a; + white-space: nowrap; +} + +.social-button { + width: 500px; + height: 60px; + border: 1px solid #0f172a; + border-radius: 8px; + font-family: 'Baloo Bhai 2', cursive; + font-size: 24px; + font-weight: 600; + color: #0f172a; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + gap: 12px; + transition: opacity 0.2s ease, transform 0.15s ease; +} + +.social-button:hover { + opacity: 0.88; + transform: translateY(-1px); +} + +.social-button:active { + transform: translateY(0); +} + +.social-button.google { + background-color: #a78bfa; +} + +.social-button.apple { + background-color: #3b82f6; +} + +.icon-google { + width: 28px; + height: 28px; +} + +.icon-apple { + width: 28px; + height: 28px; +} \ No newline at end of file diff --git a/frontend/src/pages/SignUp.jsx b/frontend/src/pages/SignUp.jsx deleted file mode 100644 index bba7905..0000000 --- a/frontend/src/pages/SignUp.jsx +++ /dev/null @@ -1,71 +0,0 @@ -import "../styles/auth.css"; -import shieldImg from "../assets/LightMode_Shield.png" - -export default function SignUp() { - return ( -
- - - -
- - -

Sign Up

- -
- - - - - - - - - -
- - -

- Accept Terms & Conditions -

-
- - - -
-
-

or

-
-
- - - - - -
-
-
- ); -} \ No newline at end of file diff --git a/frontend/src/pages/SignUp.tsx b/frontend/src/pages/SignUp.tsx new file mode 100644 index 0000000..01bb3c9 --- /dev/null +++ b/frontend/src/pages/SignUp.tsx @@ -0,0 +1,152 @@ +import React, { useState } from 'react'; +import './SignUp.css'; +import shieldImage from '../assets/LightMode_Shield.png'; +import googleIcon from '../assets/Google_Icon.png'; +import appleIcon from '../assets/Apple_Icon.png'; + +interface SignUpProps { + onBack?: () => void; + onSignUp?: (data: SignUpData) => void; + onGoogleSignUp?: () => void; + onAppleSignUp?: () => void; +} + +interface SignUpData { + firstName: string; + lastName: string; + email: string; + password: string; + acceptedTerms: boolean; +} + +const SignUp: React.FC = ({ + onBack, + onSignUp, + onGoogleSignUp, + onAppleSignUp, +}) => { + const [formData, setFormData] = useState({ + firstName: '', + lastName: '', + email: '', + password: '', + acceptedTerms: false, + }); + + const handleChange = (e: React.ChangeEvent) => { + const { name, value, type, checked } = e.target; + setFormData((prev) => ({ + ...prev, + [name]: type === 'checkbox' ? checked : value, + })); + }; + + const handleSubmit = () => { + onSignUp?.(formData); + }; + + return ( +
+ + + + + +
+ +

Sign Up

+ + + + + + + + + +
+ + + +
+
+ or +
+
+ + + + + +
+
+ ); +}; + +export default SignUp; \ No newline at end of file From 9cc1ae9b5b1e3921eb2788c49e6ebd471060e468 Mon Sep 17 00:00:00 2001 From: TaskeenAbdoola Date: Fri, 15 May 2026 12:47:00 +0200 Subject: [PATCH 12/16] Implemented SignIn page --- frontend/src/pages/Login.jsx | 45 ------- frontend/src/pages/SignIn.css | 244 ++++++++++++++++++++++++++++++++++ frontend/src/pages/SignIn.tsx | 123 +++++++++++++++++ 3 files changed, 367 insertions(+), 45 deletions(-) delete mode 100644 frontend/src/pages/Login.jsx create mode 100644 frontend/src/pages/SignIn.css create mode 100644 frontend/src/pages/SignIn.tsx diff --git a/frontend/src/pages/Login.jsx b/frontend/src/pages/Login.jsx deleted file mode 100644 index 5054c47..0000000 --- a/frontend/src/pages/Login.jsx +++ /dev/null @@ -1,45 +0,0 @@ -import "../styles/auth.css"; -import shieldImg from "../assets/LightMode_Shield.png" - -export default function Login() { - return ( -
- -
- -

Let's sign you in

-

Welcome back!

- -
- - - -
-
-

or

-
-
- - -
-

- Are you a new user? Sign up -

-
-
- ); -} \ No newline at end of file diff --git a/frontend/src/pages/SignIn.css b/frontend/src/pages/SignIn.css new file mode 100644 index 0000000..cf58ff3 --- /dev/null +++ b/frontend/src/pages/SignIn.css @@ -0,0 +1,244 @@ +@import url('https://fonts.googleapis.com/css2?family=Baloo+Bhai+2:wght@400;600;700;800&display=swap'); + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Baloo Bhai 2', cursive; + background-color: #f8fafc; + min-height: 100vh; + display: flex; + align-items: center; + justify-content: center; +} + +.page-wrapper { + width: 1440px; + height: 1024px; + background-color: #f8fafc; + display: flex; + align-items: center; + justify-content: center; + position: relative; + overflow: hidden; +} + +.back-button { + position: absolute; + top: 40px; + left: 40px; + width: 91px; + height: 31px; + background-color: #ffffff; + border: 1px solid #0f172a; + border-radius: 6px; + font-family: 'Baloo Bhai 2', cursive; + font-size: 16px; + font-weight: 400; + color: #0f172a; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + gap: 4px; + transition: background-color 0.15s ease; +} + +.back-button:hover { + background-color: #f1f5f9; +} + +.shield-bg { + position: absolute; + width: 1208px; + height: 1208px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + opacity: 0.10; + pointer-events: none; + z-index: 0; + object-fit: contain; +} + +.SignIn-container { + display: flex; + flex-direction: column; + align-items: center; + gap: 16px; + width: 560px; + position: relative; + z-index: 1; +} + +.SignIn-heading { + font-family: 'Baloo Bhai 2', cursive; + font-weight: 700; + font-size: 64px; + color: #0f172a; + line-height: 1.1; + text-align: center; + margin-bottom: 0; +} + +.welcome-back { + font-family: 'Baloo Bhai 2', cursive; + font-weight: 700; + font-size: 32px; + color: #64748b; + text-align: center; + margin-top: -4px; + margin-bottom: 8px; +} + +.input-field { + width: 500px; + height: 60px; + background-color: #ffffff; + border: 1px solid #0f172a; + border-radius: 8px; + padding: 0 20px; + font-family: 'Baloo Bhai 2', cursive; + font-size: 24px; + font-weight: 400; + color: rgba(15, 23, 42, 0.6); + outline: none; + transition: border-color 0.2s ease, box-shadow 0.2s ease; +} + +.input-field::placeholder { + color: rgba(15, 23, 42, 0.6); +} + +.input-field:focus { + border-color: #3b82f6; + box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15); + color: #0f172a; +} + +.signin-button { + width: 500px; + height: 60px; + background-color: #3b82f6; + border: 2px solid #0f172a; + border-radius: 8px; + font-family: 'Baloo Bhai 2', cursive; + font-size: 32px; + font-weight: 600; + color: #0f172a; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: background-color 0.2s ease, transform 0.15s ease; +} + +.signin-button:hover { + background-color: #2563eb; + transform: translateY(-1px); +} + +.signin-button:active { + background-color: #1d4ed8; + transform: translateY(0); +} + +.or-divider { + width: 500px; + display: flex; + align-items: center; + gap: 12px; +} + +.or-line { + flex: none; + width: 218px; + height: 1px; + background-color: rgba(15, 23, 42, 0.1); +} + +.or-text { + font-family: 'Baloo Bhai 2', cursive; + font-size: 16px; + font-weight: 400; + color: #0f172a; + white-space: nowrap; +} + +.social-button { + width: 500px; + height: 60px; + border: 1px solid #0f172a; + border-radius: 8px; + font-family: 'Baloo Bhai 2', cursive; + font-size: 24px; + font-weight: 600; + color: #0f172a; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + gap: 12px; + transition: opacity 0.2s ease, transform 0.15s ease; +} + +.social-button:hover { + opacity: 0.88; + transform: translateY(-1px); +} + +.social-button:active { + transform: translateY(0); +} + +.social-button.google { + background-color: #a78bfa; +} + +.social-button.apple { + background-color: #3b82f6; +} + +.icon-google { + width: 28px; + height: 28px; +} + +.icon-apple { + width: 28px; + height: 28px; +} + +.new-user-row { + display: flex; + flex-direction: column; + align-items: center; + gap: 2px; +} + +.new-user-text { + font-family: 'Baloo Bhai 2', cursive; + font-size: 24px; + font-weight: 400; + color: #0f172a; +} + +.signup-link { + font-family: 'Baloo Bhai 2', cursive; + font-size: 24px; + font-weight: 400; + color: #0f172a; + text-decoration: underline; + cursor: pointer; + background: none; + border: none; + padding: 0; + transition: color 0.15s ease; +} + +.signup-link:hover { + color: #3b82f6; +} \ No newline at end of file diff --git a/frontend/src/pages/SignIn.tsx b/frontend/src/pages/SignIn.tsx new file mode 100644 index 0000000..89c6507 --- /dev/null +++ b/frontend/src/pages/SignIn.tsx @@ -0,0 +1,123 @@ +import React, { useState } from 'react'; +import './SignIn.css'; +import shieldImage from '../assets/LightMode_Shield.png'; +import googleIcon from '../assets/Google_Icon.png'; +import appleIcon from '../assets/Apple_Icon.png'; + +interface SignInProps { + onBack?: () => void; + onSignIn?: (data: SignInData) => void; + onGoogleSignIn?: () => void; + onAppleSignIn?: () => void; + onSignUp?: () => void; +} + +interface SignInData { + email: string; + password: string; +} + +const SignIn: React.FC = ({ + onBack, + onSignIn, + onGoogleSignIn, + onAppleSignIn, + onSignUp, +}) => { + const [formData, setFormData] = useState({ + email: '', + password: '', + }); + + const handleChange = (e: React.ChangeEvent) => { + const { name, value } = e.target; + setFormData((prev) => ({ ...prev, [name]: value })); + }; + + const handleSubmit = () => { + onSignIn?.(formData); + }; + + return ( +
+ + + + + +
+ +

Let's sign you in

+

Welcome back!

+ + + + + + + +
+
+ or +
+
+ + + + + +
+ Are you a new user? + +
+ +
+
+ ); +}; + +export default SignIn; \ No newline at end of file From a5e3301b06dc31e499d85e4119a218be27a03b0a Mon Sep 17 00:00:00 2001 From: TaskeenAbdoola Date: Fri, 15 May 2026 12:50:07 +0200 Subject: [PATCH 13/16] Updated App.tsx for all 3 pages --- frontend/src/App.tsx | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 5f8e169..72e30d2 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,7 +1,35 @@ -import './App.css' +import React, { useState } from 'react'; +import Welcome from './pages/Welcome'; +import SignIn from './pages/SignIn'; +import SignUp from './pages/SignUp'; -function App() { - -} +type Page = 'welcome' | 'signin' | 'signup'; -export default App +const App: React.FC = () => { + const [page, setPage] = useState('welcome'); + return ( + <> + {page === 'welcome' && ( + setPage('signin')} + onSignUp={() => setPage('signup')} + /> + )} + {page === 'signin' && ( + setPage('welcome')} + onSignUp={() => setPage('signup')} + onSignIn={(data) => console.log('Sign in:', data)} + /> + )} + {page === 'signup' && ( + setPage('welcome')} + onSignUp={(data) => console.log('Sign up:', data)} + /> + )} + + ); +}; + +export default App; \ No newline at end of file From 282905b28b022aa9c7854be2efee87e2b11b1c37 Mon Sep 17 00:00:00 2001 From: TaskeenAbdoola Date: Sat, 16 May 2026 14:26:25 +0200 Subject: [PATCH 14/16] Frontend readme --- frontend/README.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/frontend/README.md b/frontend/README.md index e69de29..44253bc 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -0,0 +1,45 @@ +# CodeClash Frontend + +We're using a React + TypeScript frontend built with vite. + +## Tech Stacke + +## Tech Stack + +| Tool | Purpose | +|------------------|------------------------| +| React | UI framework | +| TypeScript | Type safety | +| Vite | Dev server and bundler | +| React Router DOM | Page routing | + +## Installation + +cd frontend +npm install +npm install react-router-dom + +## Running the App + +npm run dev + +## Page URL's + +The pages are currently using state-based routing, so they are live at the same URL. Navigation is done through the buttons via 'useState'. + +## Navigation Flow + +Welcome page + ├── Sign in → SignIn page + │ └── ← Back → Welcome + │ └── Sign up → SignUp page + └── Sign up → SignUp page + └── ← Back → Welcome + +## Fonts + +"Baloo Bhai 2" font is loaded via Goggle Fonts in each of the CSS files. This requires an internet connection when running. + +## Notes + +Google and Apple OAuth sign-ins are not implemented yet. The buttons are wired to prop callbacks (`onGoogleSignIn`, `onAppleSignIn`) and is ready for future integration. \ No newline at end of file From d9cca263f8e6b774f79fe64b49bd2e4b7f0859be Mon Sep 17 00:00:00 2001 From: TaskeenAbdoola Date: Sat, 16 May 2026 14:33:39 +0200 Subject: [PATCH 15/16] updated read me --- frontend/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/README.md b/frontend/README.md index 44253bc..2cd7b48 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -2,7 +2,7 @@ We're using a React + TypeScript frontend built with vite. -## Tech Stacke +## Tech Stack ## Tech Stack @@ -15,9 +15,9 @@ We're using a React + TypeScript frontend built with vite. ## Installation -cd frontend -npm install -npm install react-router-dom +- cd frontend +- npm install +- npm install react-router-dom ## Running the App From cb08df77c84ac9ce83784efa1114a619195b2351 Mon Sep 17 00:00:00 2001 From: TaskeenAbdoola Date: Sat, 16 May 2026 14:37:50 +0200 Subject: [PATCH 16/16] Fixed readme --- frontend/README.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/frontend/README.md b/frontend/README.md index 2cd7b48..1697af3 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -29,12 +29,15 @@ The pages are currently using state-based routing, so they are live at the same ## Navigation Flow -Welcome page - ├── Sign in → SignIn page - │ └── ← Back → Welcome - │ └── Sign up → SignUp page - └── Sign up → SignUp page - └── ← Back → Welcome +- Welcome page + - Sign in → SignIn page + - Sign up → SignUp page +- SignIn page + - ← Back → Welcome page + - Sign up → SignUp page +- SignUp page + - ← Back → Welcome page + ## Fonts