From f97cef94c449b30cdd505cbc2e33193bb241d408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=A9o=20M=C3=A9vollon?= Date: Wed, 12 Apr 2023 12:23:19 +0200 Subject: [PATCH 1/7] feat: example e2esdk implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Test e2e2 (#155) * fix * cosmetics * fix * fix: dockerfile hasura dev: e2e (#156) * fix * fixe * fix * cleanup * basic upload * add dropzone * fix: more * fix: keys * fix: answers in nav * feat: upload files * fix: file key leak * feat: read files * feat: random files gen + refine files read * fix: use keycloak UUID + cosmetics * fix: fake submissions * doc * csp * fix * fix csp + upload dir * upload * disable-size * debug * clean --------- Co-authored-by: Matéo Mévollon Co-authored-by: devthejo fix: cleanup (#157) * fix-csp * cleanup * Update src/lib/e2esdk.ts Co-authored-by: François Best * fix: use @socialgouv/e2esdk-crypto.fileMetadataSchema * fix: readAndEncryptFile signature * feat: use modal for file previews * dummy --------- Co-authored-by: François Best Update .gitignore Update config.yaml chore(deps): Update e2esdk to latest version (#160) This includes API breaking changes, though they are not used here. However, there are data breaking changes that will require resetting the e2esdk database when upgrading the server. Update values.yaml Update values.yaml Update answers.tsx Update form.tsx feat: add export new device key (#161) * feat: add export new device key * Update pages/profil.tsx Co-authored-by: François Best --------- Co-authored-by: François Best --- .gitignore | 5 +- .kontinuous/values.yaml | 9 + .talismanrc | 268 ++- csp.config.js | 6 +- hasura/Dockerfile | 2 +- .../default/tables/public_answers.yaml | 40 + .../default/tables/public_answers_files.yaml | 23 + .../default/tables/public_files.yaml | 22 + .../databases/default/tables/tables.yaml | 2 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 4 + .../up.sql | 2 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 4 + .../up.sql | 2 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 8 + .../up.sql | 1 + .../down.sql | 4 + .../up.sql | 2 + .../down.sql | 4 + .../up.sql | 6 + .../down.sql | 1 + .../up.sql | 5 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 4 + .../up.sql | 2 + .../down.sql | 1 + .../up.sql | 5 + .../down.sql | 4 + .../up.sql | 2 + .../down.sql | 5 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../1684316904382_run_sql_migration/down.sql | 3 + .../1684316904382_run_sql_migration/up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 2 + .../up.sql | 1 + next-auth.d.ts | 10 + package.json | 14 +- src/components/devtools.tsx | 17 + src/config/index.ts | 5 + src/lib/e2esdk.ts | 209 +++ src/lib/hasura.ts | 4 +- src/lib/serialExec.ts | 18 + src/pages/_app.tsx | 54 +- src/pages/answers.tsx | 257 +++ src/pages/api/auth/[...nextauth].ts | 1 + src/pages/api/storage.ts | 32 + src/pages/api/upload-answers-files.ts | 76 + src/pages/form.tsx | 285 ++++ src/pages/mui.tsx | 10 +- src/pages/profil.tsx | 57 +- src/queries/form.ts | 37 + src/services/fake-form-data.ts | 137 ++ yarn.lock | 1502 ++++++++++++++++- 67 files changed, 3007 insertions(+), 185 deletions(-) create mode 100644 hasura/metadata/databases/default/tables/public_answers.yaml create mode 100644 hasura/metadata/databases/default/tables/public_answers_files.yaml create mode 100644 hasura/metadata/databases/default/tables/public_files.yaml create mode 100644 hasura/migrations/default/1681303296141_create_table_public_answers/down.sql create mode 100644 hasura/migrations/default/1681303296141_create_table_public_answers/up.sql create mode 100644 hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/down.sql create mode 100644 hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/up.sql create mode 100644 hasura/migrations/default/1684314835951_create_table_public_files/down.sql create mode 100644 hasura/migrations/default/1684314835951_create_table_public_files/up.sql create mode 100644 hasura/migrations/default/1684314945514_create_table_public_answers_files/down.sql create mode 100644 hasura/migrations/default/1684314945514_create_table_public_answers_files/up.sql create mode 100644 hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/down.sql create mode 100644 hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/up.sql create mode 100644 hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/down.sql create mode 100644 hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/up.sql create mode 100644 hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/down.sql create mode 100644 hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/up.sql create mode 100644 hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/down.sql create mode 100644 hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/up.sql create mode 100644 hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/down.sql create mode 100644 hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/up.sql create mode 100644 hasura/migrations/default/1684315633710_modify_primarykey_public_answers/down.sql create mode 100644 hasura/migrations/default/1684315633710_modify_primarykey_public_answers/up.sql create mode 100644 hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/down.sql create mode 100644 hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/up.sql create mode 100644 hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/down.sql create mode 100644 hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/up.sql create mode 100644 hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/down.sql create mode 100644 hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/up.sql create mode 100644 hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/down.sql create mode 100644 hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/up.sql create mode 100644 hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/down.sql create mode 100644 hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/up.sql create mode 100644 hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/down.sql create mode 100644 hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/up.sql create mode 100644 hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/down.sql create mode 100644 hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/up.sql create mode 100644 hasura/migrations/default/1684316904382_run_sql_migration/down.sql create mode 100644 hasura/migrations/default/1684316904382_run_sql_migration/up.sql create mode 100644 hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/down.sql create mode 100644 hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/up.sql create mode 100644 hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/down.sql create mode 100644 hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/up.sql create mode 100644 next-auth.d.ts create mode 100644 src/components/devtools.tsx create mode 100644 src/config/index.ts create mode 100644 src/lib/e2esdk.ts create mode 100644 src/lib/serialExec.ts create mode 100644 src/pages/answers.tsx create mode 100644 src/pages/api/storage.ts create mode 100644 src/pages/api/upload-answers-files.ts create mode 100644 src/pages/form.tsx create mode 100644 src/queries/form.ts create mode 100644 src/services/fake-form-data.ts diff --git a/.gitignore b/.gitignore index 5ff890ea..4d9ccfac 100644 --- a/.gitignore +++ b/.gitignore @@ -44,4 +44,7 @@ cypress/videos cypress/screenshots # Robots.txt -robots.txt \ No newline at end of file +robots.txt + +# local volume +.storage diff --git a/.kontinuous/values.yaml b/.kontinuous/values.yaml index cf3b9952..19486dfa 100644 --- a/.kontinuous/values.yaml +++ b/.kontinuous/values.yaml @@ -18,6 +18,15 @@ app: imagePackage: app containerPort: 3000 probesPath: "/healthz" + volumes: + - name: uploads + emptyDir: {} + volumeMounts: + - name: uploads + mountPath: /uploads + env: + - name: STORAGE_DIR + value: /uploads envFrom: - configMapRef: name: app diff --git a/.talismanrc b/.talismanrc index 6da1097a..d1ea8508 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,94 +1,180 @@ fileignoreconfig: -- filename: .env.development - checksum: 6b4ffd2159670a9a52374a966de7c1a357838b9246101d974b3dbd6e6e1e834d -- filename: .env.production - checksum: 1f7c9755c1b8a65fb48f6343ea05d6afb9c4d0e085b6b964441f68ae524fda04 -- filename: .env.staging - checksum: 4344984233f1d2f630c6164bf630769851db42b7e143b56e5d0321139b0054fe -- filename: .github/workflows/e2e.yml - checksum: 9a29ecef215d5685eda60acb00c5484ca65137ac98094f5a8f4160264f9c15ab -- filename: .kontinuous/env/dev/templates/app.configmap.yaml - checksum: 2b8e04a067d47b19c9d21d7c46270d5f0a661018b3350179b94068c811e9582e -- filename: .kontinuous/env/dev/templates/app.sealed.secret.yaml - checksum: 6e59395de2ed6aec2913e7b7c8823ec5ffca5cb28304100f78b7db6cb2553005 -- filename: .kontinuous/env/dev/templates/franceconnect.sealed.secret.yaml - checksum: dcad58403a06374fa32467557b985bc0b268d890d432fdc23dcaffca283c1955 -- filename: .kontinuous/env/dev/templates/hasura.sealed.secret.yaml - checksum: 29aa6bf631a495f6bd4ccd3d1df88f48918a8b8e56eb5241169b2849d8929eda -- filename: .kontinuous/env/dev/templates/keycloak.sealed.secret.yaml - checksum: 074d8dab3a9d9890a3b1b4e398e1066848002eb852a49379e6906f400599b1aa -- filename: .kontinuous/env/dev/templates/smtp.sealed.secret.yaml - checksum: 3d07a05a96266af28a79117b6447c9f61f01d3f017a0c3947a66ce8866dbe6d2 -- filename: .kontinuous/env/dev/values.yaml - checksum: 5a6f30deeb1184ac9d3723edd73462af8bee83e5223c697513ecfe7628af2fa6 -- filename: .kontinuous/env/preprod/templates/app.configmap.yaml - checksum: d388d2ea2935ab0e9a231434f8e8270a2f008479907249160d9327896d1d1b07 -- filename: .kontinuous/env/preprod/templates/app.sealed.secret.yaml - checksum: 6d0bdcef816f00308d8bfdbdb9aeca94dfaee5b54f29f2b868a9085fd6428829 -- filename: .kontinuous/env/preprod/templates/franceconnect.sealed.secret.yaml - checksum: 48b38e6033283722a1c9465ba5eb8c03b06a4eaf9564c59b0284c90c0bf37d5b -- filename: .kontinuous/env/preprod/templates/hasura.sealed.secret.yaml - checksum: 3df5dbc49f3eb0ce29f02ff0bab1861bf30a43d271517d1a2a51cf5d4407909e -- filename: .kontinuous/env/preprod/templates/keycloak.sealed.secret.yaml - checksum: e1eb6dee86f882ca6dce6aeaeca82a0711d1a15b3464fe617702184507e03a7b -- filename: .kontinuous/env/preprod/templates/smtp.sealed.secret.yaml - checksum: 96329d5fa5a5a34d2ceb99fb4cef9c107e2dfdf8b9b392e725a8e89753a26205 -- filename: .kontinuous/env/preprod/values.yaml - checksum: d73837d6c38a5f27b53435a576287d4a069e23736580d6a19c9eb3fc68e792b4 -- filename: .kontinuous/env/prod/templates/app.configmap.yaml - checksum: 0e1d907bb3d3e63bf5fd83c0e3bbd87af4814cffa31f71ff0ecf8e69305ca4a9 -- filename: .kontinuous/env/prod/templates/app.sealed.secret.yaml - checksum: 6869d898af4187aba5744a959b334b16f2ead1c8896f9f1591ecba849ba44a29 -- filename: .kontinuous/env/prod/templates/franceconnect.sealed.secret.yaml - checksum: 57d1f143dcf7878d997062ff08cdbcff21bc81c4cfff0acaa24b5345df9a3c08 -- filename: .kontinuous/env/prod/templates/hasura.sealed.secret.yaml - checksum: f05e1d7a075abecaafec37d390fdd538dbe99eea6e0d1c26a01e29e850c838ff -- filename: .kontinuous/env/prod/templates/keycloak.sealed.secret.yaml - checksum: ccf81976a79ced16448be59c5ec7278e05e1aebd5d9019789f9b6fb260d2f4ec -- filename: .kontinuous/env/prod/templates/smtp.sealed.secret.yaml - checksum: 3145443490e01a8e9f121bc242f7611bf9705d6362f1c8361b77b893cce1ea1f -- filename: .kontinuous/env/prod/values.yaml - checksum: d7e76dd44f7f22ad1ea569369b4159aed0026d0b4c22fe4179835bf46e912284 -- filename: .kontinuous/files/realm-export.json - checksum: e2b00a73de2b1ef4e4601f46e0c783233b06cbefe598f37dff0924e522bebcc9 -- filename: .kontinuous/values.yaml - checksum: e5111b2d119bda782cb25e7bb8f218512c9a8a4d135ff2c2ad50b1ea85660b8b -- filename: Dockerfile - checksum: d44d4622a3b55fe2f61d8fc97a527293a0dc36facb58504fabb543219eba2cb2 -- filename: README.md - checksum: 69f16f81ce480d7e1e0bde5b20acf2ca0eadfa7a7acfaf72c77348a567b087ae -- filename: docker-compose.yaml - checksum: 697e6c3117fd0c210816d179335f09a8dcc75a9a03d6c08a6aa9ff009e4a519a -- filename: hasura/migrations/default/1659018828697_init/up.sql - checksum: 35d9f9dd5380b853fe9ead2e36b97158de39be0a1b9aaee0071b1f43fbdfb211 -- filename: hasura/migrations/default/1659130257063_alter_table_public_books_add_column_user_id/down.sql - checksum: f9adad1b9373228c99d82fbf32a9d053540e062e7378e12628674b9dd312caa9 -- filename: hasura/migrations/default/1659130257063_alter_table_public_books_add_column_user_id/up.sql - checksum: 803f634b1833b97fb7a63f28cfd450f28b83dca850c20e5a44df33094e673994 -- filename: hasura/seeds/default/books.sql - checksum: 40e5ea9f6cf231cd04fa3c40aa27b4f311f240dac730a26ac55afc3204d1bc14 -- filename: keycloak/config/realm-export-local.json - checksum: 9ebc94d1d4542ee609132f6417a07e14f3668d5caeeaa72ac81829ed6a7ecaa7 -- filename: keycloak/scripts/keycloak.sh - checksum: efed473c9b23bca81ec472c7e227ee6df94e322ca64341fedd15b57124338a01 -- filename: package.json - checksum: a98fc3969b8c79204c0bf9bebef3ba22d5bc120ef71b93402cc85dc7d265402b -- filename: pages/_app.tsx - checksum: 2e537774bb8a2ea8cc1930a697d1ee3575c9893ca197f1d08f8f5ca8003a5d60 -- filename: pages/api/auth/[...nextauth].ts - checksum: 5763374ce8f74c303b6d1073462c572ee6df8f8528e3aae8df664bbab77460cc -- filename: pages/books.tsx - checksum: 8e3b60571bf9cfca7740ef1b22661109699ebe88c5bef0b39cde25a08f4aa664 -- filename: scripts/pg/create-multiple-postgresql-databases.sh - checksum: 2989dcdba68c9586ff81c53ccbddb452225127b9fb8db9bbcea22be26076e922 -- filename: src/components/header/index.tsx - checksum: a271fa91331ce68190cab5ed6c686529cf3bc406d2a2557139c061d5d18baa0d -- filename: src/lib/auth.ts - checksum: ba1373e7718c001b838459240de8f34e886a772f13178804101d4893982de5a3 -- filename: src/pages/api/auth/\[...nextauth\].ts - checksum: 695f5f301551c6d15b51ab60c0a0c70b38d87b36bf1e6bc4145603340b9abdf6 -- filename: src/pages/books.tsx - checksum: f648286c7ecb383f245f35456ffdaab4086b3b4cababe012dc6435cba57bfbe1 + - filename: .env.development + checksum: 6b4ffd2159670a9a52374a966de7c1a357838b9246101d974b3dbd6e6e1e834d + - filename: .env.production + checksum: 1f7c9755c1b8a65fb48f6343ea05d6afb9c4d0e085b6b964441f68ae524fda04 + - filename: .env.staging + checksum: 4344984233f1d2f630c6164bf630769851db42b7e143b56e5d0321139b0054fe + - filename: .github/workflows/e2e.yml + checksum: 9a29ecef215d5685eda60acb00c5484ca65137ac98094f5a8f4160264f9c15ab + - filename: .kontinuous/env/dev/templates/app.configmap.yaml + checksum: 2b8e04a067d47b19c9d21d7c46270d5f0a661018b3350179b94068c811e9582e + - filename: .kontinuous/env/dev/templates/app.sealed.secret.yaml + checksum: 6e59395de2ed6aec2913e7b7c8823ec5ffca5cb28304100f78b7db6cb2553005 + - filename: .kontinuous/env/dev/templates/franceconnect.sealed.secret.yaml + checksum: dcad58403a06374fa32467557b985bc0b268d890d432fdc23dcaffca283c1955 + - filename: .kontinuous/env/dev/templates/hasura.sealed.secret.yaml + checksum: 29aa6bf631a495f6bd4ccd3d1df88f48918a8b8e56eb5241169b2849d8929eda + - filename: .kontinuous/env/dev/templates/keycloak.sealed.secret.yaml + checksum: 074d8dab3a9d9890a3b1b4e398e1066848002eb852a49379e6906f400599b1aa + - filename: .kontinuous/env/dev/templates/smtp.sealed.secret.yaml + checksum: 3d07a05a96266af28a79117b6447c9f61f01d3f017a0c3947a66ce8866dbe6d2 + - filename: .kontinuous/env/preprod/templates/app.configmap.yaml + checksum: d388d2ea2935ab0e9a231434f8e8270a2f008479907249160d9327896d1d1b07 + - filename: .kontinuous/env/preprod/templates/app.sealed.secret.yaml + checksum: 6d0bdcef816f00308d8bfdbdb9aeca94dfaee5b54f29f2b868a9085fd6428829 + - filename: .kontinuous/env/preprod/templates/franceconnect.sealed.secret.yaml + checksum: 48b38e6033283722a1c9465ba5eb8c03b06a4eaf9564c59b0284c90c0bf37d5b + - filename: .kontinuous/env/preprod/templates/hasura.sealed.secret.yaml + checksum: 3df5dbc49f3eb0ce29f02ff0bab1861bf30a43d271517d1a2a51cf5d4407909e + - filename: .kontinuous/env/preprod/templates/keycloak.sealed.secret.yaml + checksum: e1eb6dee86f882ca6dce6aeaeca82a0711d1a15b3464fe617702184507e03a7b + - filename: .kontinuous/env/preprod/templates/smtp.sealed.secret.yaml + checksum: 96329d5fa5a5a34d2ceb99fb4cef9c107e2dfdf8b9b392e725a8e89753a26205 + - filename: .kontinuous/env/preprod/values.yaml + checksum: d73837d6c38a5f27b53435a576287d4a069e23736580d6a19c9eb3fc68e792b4 + - filename: .kontinuous/env/prod/templates/app.configmap.yaml + checksum: 0e1d907bb3d3e63bf5fd83c0e3bbd87af4814cffa31f71ff0ecf8e69305ca4a9 + - filename: .kontinuous/env/prod/templates/app.sealed.secret.yaml + checksum: 6869d898af4187aba5744a959b334b16f2ead1c8896f9f1591ecba849ba44a29 + - filename: .kontinuous/env/prod/templates/franceconnect.sealed.secret.yaml + checksum: 57d1f143dcf7878d997062ff08cdbcff21bc81c4cfff0acaa24b5345df9a3c08 + - filename: .kontinuous/env/prod/templates/hasura.sealed.secret.yaml + checksum: f05e1d7a075abecaafec37d390fdd538dbe99eea6e0d1c26a01e29e850c838ff + - filename: .kontinuous/env/prod/templates/keycloak.sealed.secret.yaml + checksum: ccf81976a79ced16448be59c5ec7278e05e1aebd5d9019789f9b6fb260d2f4ec + - filename: .kontinuous/env/prod/templates/smtp.sealed.secret.yaml + checksum: 3145443490e01a8e9f121bc242f7611bf9705d6362f1c8361b77b893cce1ea1f + - filename: .kontinuous/env/prod/values.yaml + checksum: d7e76dd44f7f22ad1ea569369b4159aed0026d0b4c22fe4179835bf46e912284 + - filename: .kontinuous/files/realm-export.json + checksum: e2b00a73de2b1ef4e4601f46e0c783233b06cbefe598f37dff0924e522bebcc9 + - filename: .kontinuous/values.yaml + checksum: e5111b2d119bda782cb25e7bb8f218512c9a8a4d135ff2c2ad50b1ea85660b8b + - filename: Dockerfile + checksum: d44d4622a3b55fe2f61d8fc97a527293a0dc36facb58504fabb543219eba2cb2 + - filename: README.md + checksum: 69f16f81ce480d7e1e0bde5b20acf2ca0eadfa7a7acfaf72c77348a567b087ae + - filename: hasura/migrations/default/1659018828697_init/up.sql + checksum: 35d9f9dd5380b853fe9ead2e36b97158de39be0a1b9aaee0071b1f43fbdfb211 + - filename: hasura/migrations/default/1659130257063_alter_table_public_books_add_column_user_id/down.sql + checksum: f9adad1b9373228c99d82fbf32a9d053540e062e7378e12628674b9dd312caa9 + - filename: hasura/migrations/default/1659130257063_alter_table_public_books_add_column_user_id/up.sql + checksum: 803f634b1833b97fb7a63f28cfd450f28b83dca850c20e5a44df33094e673994 + - filename: hasura/migrations/default/1681303296141_create_table_public_answers/down.sql + checksum: 7db4fecd1b24fdcea10617ceb4842381d10bc6242924b4c2f974c77fb5935e9c + - filename: hasura/migrations/default/1681303296141_create_table_public_answers/up.sql + checksum: 0b43b7f6611dc733f27c1f632ffbaf0a265fec144a344c3a78c1eb912bfbf0cd + - filename: hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/down.sql + checksum: 8477739170155724e1c5629129ec22444dd2af53fe04f26f6028783abb125135 + - filename: hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/up.sql + checksum: 0304fe5ecdc9eb6bde037de85a82c2a70f4bfb6b4566d956ad5eadecf9d8169c + - filename: hasura/migrations/default/1684314835951_create_table_public_files/down.sql + checksum: 6c2703260490eccd10858046af53b33cdbf86ba62ea48cbf7aa7b969c91618a2 + - filename: hasura/migrations/default/1684314835951_create_table_public_files/up.sql + checksum: 71222c539960f1dfc10f01a99ac6520b976ccf9d831e44bca80a1a0633ec6917 + - filename: hasura/migrations/default/1684314945514_create_table_public_answers_files/down.sql + checksum: 9989fc6a804bb48257720db6c3c1f718109402b11c2e064f52bb1e6710433511 + - filename: hasura/migrations/default/1684314945514_create_table_public_answers_files/up.sql + checksum: fec002e5b511be371fad0a8a685c5ba727ddac5915e4ca2ac852c9f45e205928 + - filename: hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/down.sql + checksum: 3f8e8f4bd481eefd99fdea2af388f57a7621d29dd6c17d1d60be74f15a430150 + - filename: hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/up.sql + checksum: a8c8ca41f5fcbf4a23d5fb814484fdce8a04f006bdb3ead80c8aab38f2ee0630 + - filename: hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/down.sql + checksum: 581331332aa2121b4b5160704c09305169e2f0e276515993929e554939b5b560 + - filename: hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/up.sql + checksum: e5d164a31be5cd0238bdacf3c7fede4ba03a42f01dc290680b16df646726d9c6 + - filename: hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/down.sql + checksum: 534b60b957a23effee67d7d08e15e7ff35a987989253ffbc786e306889c38466 + - filename: hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/up.sql + checksum: 1b59ea369b35494d3df85398b59d1266b359f3d0962108b944d8e82cb19ca44f + - filename: hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/down.sql + checksum: 73ef953b790755b5968b2fb2f03a21c7993fa146c05c7f085ec1d7ce35b4d8e2 + - filename: hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/up.sql + checksum: 4dff0097ad4d4fb48da7ed7f32e01787558dd3a710339aa0ceb30cb05a036a96 + - filename: hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/down.sql + checksum: 3cc63739d321146efc7fb954f42222ee0389cdcb28c59a94260d33f26c700f1a + - filename: hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/up.sql + checksum: be2ef7400e22782fb1c6e9df883a3dabcb53fa1e179cfef133ebfa839cb8600e + - filename: hasura/migrations/default/1684315633710_modify_primarykey_public_answers/down.sql + checksum: bc6573c3203727f4f7300a90c90feaa003fc7d567f9717a86b1bd52f4aeac7bc + - filename: hasura/migrations/default/1684315633710_modify_primarykey_public_answers/up.sql + checksum: 0a7d95a2c2a16a805abb82e6c4a1541b0384c5272b671fa19e73ab0f557ecbd0 + - filename: hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/down.sql + checksum: b3c14cd15ef84c004a55dd254b226aa1322f5a1290c7b518e92b6fad2e461140 + - filename: hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/up.sql + checksum: d745547365d22f0fbe15ee770444d40f2715d9c20d023841bd209097f8a75c2d + - filename: hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/down.sql + checksum: 126a3416c110dfb62e57abd30435ecf15f249d9baf6945a3f02a10f75f0cb373 + - filename: hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/up.sql + checksum: 1aa4b7b0858c2976f3a090e87c073ff1a8f2178486547dead4ea19728a5949ad + - filename: hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/down.sql + checksum: b3b74011c27052ae66c511a28d4d6510a122b91175f52d744a9e88c92559bd10 + - filename: hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/up.sql + checksum: 50d7aeeeb9b7a0034a9e5aee03d4b1b7d06bfeec927dff9d68e614626d00144f + - filename: hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/down.sql + checksum: b10dcb13e1ba144c0981a07c5bb2c4ab76af0c202ee864370f7b9e14ad641a60 + - filename: hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/up.sql + checksum: 7ff83a3d01c3913693299ddd79fca77a9cfacad8883201817e4460c0abb11ffe + - filename: hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/down.sql + checksum: 067147e86a6c7434a52d638312ef69581bd4e2498f9be3cf3e60652b9be40b8c + - filename: hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/up.sql + checksum: 875e9efd7e051491b3627bd1cf8cbf852491a777682740f155f104638fc70c20 + - filename: hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/down.sql + checksum: cd90ee4d8342c72a17ea1ab12666629d5fa4c68180cd89503cb53d0c5abe39e2 + - filename: hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/up.sql + checksum: 37a0cc594434c0185ad5c70779d0e913b028c0d2a70465b138959314f1b977cd + - filename: hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/down.sql + checksum: f0b96ad0ab124e3168738a1cecbcd7e2b3118494dbf251db760530b80262099f + - filename: hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/up.sql + checksum: 9db5c78de2300bdc7770b6d1d6b3d6ec346b86f0043067c8f77bea8c3f00f34d + - filename: hasura/migrations/default/1684316904382_run_sql_migration/down.sql + checksum: ee8f124f122f04ff4642efa52493d92f6213cfe62d1e1ac4c7e4ee5fcdf97b56 + - filename: hasura/migrations/default/1684316904382_run_sql_migration/up.sql + checksum: 63577acf368a5adbadb714ebaf7a08cc9c6e07e5f936206ace21748cc445a135 + - filename: hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/down.sql + checksum: c91f7639218ed6829b9874a71b9522cd440c5f1f47ccec384295bae61fac62c3 + - filename: hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/up.sql + checksum: d63aa44d7e252e93b1c25502214fb2e27b5c827e6a0eb94220a38361a1fff495 + - filename: hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/down.sql + checksum: 6f197d3f8c57135029f04b414ab2e9a8d11d7718e2b641495fdfe98ae76cf697 + - filename: hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/up.sql + checksum: 001dd978bf9cc3c63638b10445f72f157ed625ea0625fb3a05636c23bd2dc4a9 + - filename: hasura/seeds/default/books.sql + checksum: 40e5ea9f6cf231cd04fa3c40aa27b4f311f240dac730a26ac55afc3204d1bc14 + - filename: keycloak/config/realm-export-local.json + checksum: 9ebc94d1d4542ee609132f6417a07e14f3668d5caeeaa72ac81829ed6a7ecaa7 + - filename: keycloak/scripts/keycloak.sh + checksum: efed473c9b23bca81ec472c7e227ee6df94e322ca64341fedd15b57124338a01 + - filename: package.json + checksum: a98fc3969b8c79204c0bf9bebef3ba22d5bc120ef71b93402cc85dc7d265402b + - filename: pages/_app.tsx + checksum: 86b00324ee8b65d9c72701f8f7ef07a57fd8e7c775c50fdb6e365f604420a756 + - filename: pages/answers.tsx + checksum: c20e57ac78ddbeb8f8435a7479538107f32582a56b8c490aa9d06006f5d3af77 + - filename: pages/api/auth/[...nextauth].ts + checksum: 5763374ce8f74c303b6d1073462c572ee6df8f8528e3aae8df664bbab77460cc + - filename: pages/books.tsx + checksum: 8e3b60571bf9cfca7740ef1b22661109699ebe88c5bef0b39cde25a08f4aa664 + - filename: pages/form.tsx + checksum: b954b4a530b279d5713477c73e70faba1c579b3972344f6db2d326197367dec8 + - filename: pages/profil.tsx + checksum: 5f85579232df5641aa38d24c486e14216cc9aa0af87c3466184cae126e86980a + - filename: scripts/pg/create-multiple-postgresql-databases.sh + checksum: 2989dcdba68c9586ff81c53ccbddb452225127b9fb8db9bbcea22be26076e922 + - filename: src/components/header/index.tsx + checksum: a271fa91331ce68190cab5ed6c686529cf3bc406d2a2557139c061d5d18baa0d + - filename: src/lib/auth.ts + checksum: ba1373e7718c001b838459240de8f34e886a772f13178804101d4893982de5a3 + - filename: src/lib/e2esdk.ts + checksum: 56afd278d488c820882bd65fe58c333f7df8fa82ced3b42edc8c64095df7b2f6 + - filename: src/pages/api/auth/\[...nextauth\].ts + checksum: 695f5f301551c6d15b51ab60c0a0c70b38d87b36bf1e6bc4145603340b9abdf6 + - filename: src/pages/books.tsx + checksum: f648286c7ecb383f245f35456ffdaab4086b3b4cababe012dc6435cba57bfbe1 + - filename: src/queries/form.ts + checksum: 416d3702bda5149d13e2e3822956d39a82260f87b35497b1fd652787aa4622f6 scopeconfig: -- scope: node + - scope: node version: "1.0" diff --git a/csp.config.js b/csp.config.js index 1f4dd1e9..8bbb2f0f 100644 --- a/csp.config.js +++ b/csp.config.js @@ -1,10 +1,10 @@ const ContentSecurityPolicy = ` default-src 'self' *.fabrique.social.gouv.fr; - img-src 'self' data: *.fabrique.social.gouv.fr https://dummyimage.com/; - script-src 'self' *.fabrique.social.gouv.fr ${ + img-src 'self' blob: data: *.fabrique.social.gouv.fr https://dummyimage.com/; + script-src 'self' *.fabrique.social.gouv.fr 'wasm-unsafe-eval' ${ process.env.NODE_ENV !== "production" && "'unsafe-eval' 'unsafe-inline'" }; - connect-src 'self' *.fabrique.social.gouv.fr ${ + connect-src 'self' data: wss: *.fabrique.social.gouv.fr ${ process.env.NODE_ENV !== "production" && "http://localhost:8082" }; frame-src 'self' *.fabrique.social.gouv.fr; diff --git a/hasura/Dockerfile b/hasura/Dockerfile index 965d73db..9f518b75 100644 --- a/hasura/Dockerfile +++ b/hasura/Dockerfile @@ -1,4 +1,4 @@ -FROM hasura/graphql-engine:v2.30.1-ce.cli-migrations-v3 +FROM hasura/graphql-engine:v2.30.1-ce.cli-migrations-v3:@sha256:bf2b81244da9e8a6812d668cdcfb40f444d514e9a5f2b15d2dafe5c907fab3b6 ENV HASURA_GRAPHQL_ENABLE_TELEMETRY=false ENV HASURA_GRAPHQL_MIGRATIONS_SERVER_TIMEOUT=360 diff --git a/hasura/metadata/databases/default/tables/public_answers.yaml b/hasura/metadata/databases/default/tables/public_answers.yaml new file mode 100644 index 00000000..8c77a332 --- /dev/null +++ b/hasura/metadata/databases/default/tables/public_answers.yaml @@ -0,0 +1,40 @@ +table: + name: answers + schema: public +array_relationships: + - name: answers_files + using: + foreign_key_constraint_on: + column: answer_uuid + table: + name: answers_files + schema: public +insert_permissions: + - role: anonymous + permission: + check: {} + columns: + - created_at + - data + - id + - public_key + - sealed_secret + - signature + - submission_bucket_id +select_permissions: + - role: anonymous + permission: + columns: + - id + filter: {} + - role: user + permission: + columns: + - id + - data + - public_key + - sealed_secret + - signature + - submission_bucket_id + - created_at + filter: {} diff --git a/hasura/metadata/databases/default/tables/public_answers_files.yaml b/hasura/metadata/databases/default/tables/public_answers_files.yaml new file mode 100644 index 00000000..277cbccd --- /dev/null +++ b/hasura/metadata/databases/default/tables/public_answers_files.yaml @@ -0,0 +1,23 @@ +table: + name: answers_files + schema: public +object_relationships: + - name: answer + using: + foreign_key_constraint_on: answer_uuid +insert_permissions: + - role: anonymous + permission: + check: {} + columns: + - answer_uuid + - file_hash +select_permissions: + - role: user + permission: + columns: + - answer_uuid + - file_hash + - id + filter: {} + allow_aggregations: true diff --git a/hasura/metadata/databases/default/tables/public_files.yaml b/hasura/metadata/databases/default/tables/public_files.yaml new file mode 100644 index 00000000..ac4e83cd --- /dev/null +++ b/hasura/metadata/databases/default/tables/public_files.yaml @@ -0,0 +1,22 @@ +table: + name: files + schema: public +insert_permissions: + - role: anonymous + permission: + check: {} + columns: + - hash + - key +select_permissions: + - role: user + permission: + columns: + - hash + - key + filter: {} +delete_permissions: + - role: user + permission: + backend_only: false + filter: {} diff --git a/hasura/metadata/databases/default/tables/tables.yaml b/hasura/metadata/databases/default/tables/tables.yaml index 6be8f90c..84ae083c 100644 --- a/hasura/metadata/databases/default/tables/tables.yaml +++ b/hasura/metadata/databases/default/tables/tables.yaml @@ -1 +1,3 @@ +- "!include public_answers.yaml" +- "!include public_answers_files.yaml" - "!include public_books.yaml" diff --git a/hasura/migrations/default/1681303296141_create_table_public_answers/down.sql b/hasura/migrations/default/1681303296141_create_table_public_answers/down.sql new file mode 100644 index 00000000..a8566f94 --- /dev/null +++ b/hasura/migrations/default/1681303296141_create_table_public_answers/down.sql @@ -0,0 +1 @@ +DROP TABLE "public"."answers"; diff --git a/hasura/migrations/default/1681303296141_create_table_public_answers/up.sql b/hasura/migrations/default/1681303296141_create_table_public_answers/up.sql new file mode 100644 index 00000000..ea435722 --- /dev/null +++ b/hasura/migrations/default/1681303296141_create_table_public_answers/up.sql @@ -0,0 +1 @@ +CREATE TABLE "public"."answers" ("id" serial NOT NULL, "created_at" timestamptz NOT NULL DEFAULT now(), "submission_bucket_id" text NOT NULL, "sealed_secret" text NOT NULL, "public_key" text NOT NULL, "data" text NOT NULL, PRIMARY KEY ("id") , UNIQUE ("id"), UNIQUE ("sealed_secret"), UNIQUE ("public_key")); diff --git a/hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/down.sql b/hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/down.sql new file mode 100644 index 00000000..b6e7326b --- /dev/null +++ b/hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/down.sql @@ -0,0 +1,4 @@ +-- Could not auto-generate a down migration. +-- Please write an appropriate down migration for the SQL below: +-- alter table "public"."answers" add column "signature" text +-- not null unique; diff --git a/hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/up.sql b/hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/up.sql new file mode 100644 index 00000000..d7a69ad1 --- /dev/null +++ b/hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/up.sql @@ -0,0 +1,2 @@ +alter table "public"."answers" add column "signature" text + not null unique; diff --git a/hasura/migrations/default/1684314835951_create_table_public_files/down.sql b/hasura/migrations/default/1684314835951_create_table_public_files/down.sql new file mode 100644 index 00000000..9bd02859 --- /dev/null +++ b/hasura/migrations/default/1684314835951_create_table_public_files/down.sql @@ -0,0 +1 @@ +DROP TABLE "public"."files"; diff --git a/hasura/migrations/default/1684314835951_create_table_public_files/up.sql b/hasura/migrations/default/1684314835951_create_table_public_files/up.sql new file mode 100644 index 00000000..48eb744b --- /dev/null +++ b/hasura/migrations/default/1684314835951_create_table_public_files/up.sql @@ -0,0 +1 @@ +CREATE TABLE "public"."files" ("hash" text NOT NULL, "key" text NOT NULL, PRIMARY KEY ("hash") ); diff --git a/hasura/migrations/default/1684314945514_create_table_public_answers_files/down.sql b/hasura/migrations/default/1684314945514_create_table_public_answers_files/down.sql new file mode 100644 index 00000000..5807d7d7 --- /dev/null +++ b/hasura/migrations/default/1684314945514_create_table_public_answers_files/down.sql @@ -0,0 +1 @@ +DROP TABLE "public"."answers_files"; diff --git a/hasura/migrations/default/1684314945514_create_table_public_answers_files/up.sql b/hasura/migrations/default/1684314945514_create_table_public_answers_files/up.sql new file mode 100644 index 00000000..50ec1783 --- /dev/null +++ b/hasura/migrations/default/1684314945514_create_table_public_answers_files/up.sql @@ -0,0 +1 @@ +CREATE TABLE "public"."answers_files" ("id" serial NOT NULL, "answer_id" integer NOT NULL, "file_hash" text NOT NULL, PRIMARY KEY ("id") , FOREIGN KEY ("answer_id") REFERENCES "public"."answers"("id") ON UPDATE cascade ON DELETE cascade, FOREIGN KEY ("file_hash") REFERENCES "public"."files"("hash") ON UPDATE cascade ON DELETE cascade, UNIQUE ("answer_id", "file_hash")); diff --git a/hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/down.sql b/hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/down.sql new file mode 100644 index 00000000..25c2e5e3 --- /dev/null +++ b/hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/down.sql @@ -0,0 +1 @@ +alter table "public"."files" drop constraint "files_hash_key"; diff --git a/hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/up.sql b/hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/up.sql new file mode 100644 index 00000000..348ada0b --- /dev/null +++ b/hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/up.sql @@ -0,0 +1 @@ +alter table "public"."files" add constraint "files_hash_key" unique ("hash"); diff --git a/hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/down.sql b/hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/down.sql new file mode 100644 index 00000000..520eaba9 --- /dev/null +++ b/hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/down.sql @@ -0,0 +1,4 @@ +-- Could not auto-generate a down migration. +-- Please write an appropriate down migration for the SQL below: +-- alter table "public"."answers" add column "uuid" uuid +-- not null; diff --git a/hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/up.sql b/hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/up.sql new file mode 100644 index 00000000..42a93c00 --- /dev/null +++ b/hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/up.sql @@ -0,0 +1,2 @@ +alter table "public"."answers" add column "uuid" uuid + not null; diff --git a/hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/down.sql b/hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/down.sql new file mode 100644 index 00000000..06556671 --- /dev/null +++ b/hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/down.sql @@ -0,0 +1 @@ +ALTER TABLE "public"."answers" ALTER COLUMN "uuid" drop default; diff --git a/hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/up.sql b/hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/up.sql new file mode 100644 index 00000000..f6f07642 --- /dev/null +++ b/hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/up.sql @@ -0,0 +1 @@ +alter table "public"."answers" alter column "uuid" set default gen_random_uuid(); diff --git a/hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/down.sql b/hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/down.sql new file mode 100644 index 00000000..7d149f98 --- /dev/null +++ b/hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/down.sql @@ -0,0 +1,8 @@ +alter table "public"."answers_files" add constraint "answers_files_answer_id_file_hash_key" unique (answer_id, file_hash); +alter table "public"."answers_files" + add constraint "answers_files_answer_id_fkey" + foreign key (answer_id) + references "public"."answers" + (id) on update cascade on delete cascade; +alter table "public"."answers_files" alter column "answer_id" drop not null; +alter table "public"."answers_files" add column "answer_id" int4; diff --git a/hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/up.sql b/hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/up.sql new file mode 100644 index 00000000..bb670268 --- /dev/null +++ b/hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/up.sql @@ -0,0 +1 @@ +alter table "public"."answers_files" drop column "answer_id" cascade; diff --git a/hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/down.sql b/hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/down.sql new file mode 100644 index 00000000..20cd00ca --- /dev/null +++ b/hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/down.sql @@ -0,0 +1,4 @@ +-- Could not auto-generate a down migration. +-- Please write an appropriate down migration for the SQL below: +-- alter table "public"."answers_files" add column "answer_uuid" uuid +-- not null; diff --git a/hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/up.sql b/hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/up.sql new file mode 100644 index 00000000..6795eb62 --- /dev/null +++ b/hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/up.sql @@ -0,0 +1,2 @@ +alter table "public"."answers_files" add column "answer_uuid" uuid + not null; diff --git a/hasura/migrations/default/1684315633710_modify_primarykey_public_answers/down.sql b/hasura/migrations/default/1684315633710_modify_primarykey_public_answers/down.sql new file mode 100644 index 00000000..7c3fd5d3 --- /dev/null +++ b/hasura/migrations/default/1684315633710_modify_primarykey_public_answers/down.sql @@ -0,0 +1,4 @@ +alter table "public"."answers" drop constraint "answers_pkey"; +alter table "public"."answers" + add constraint "answers_pkey" + primary key ("id"); diff --git a/hasura/migrations/default/1684315633710_modify_primarykey_public_answers/up.sql b/hasura/migrations/default/1684315633710_modify_primarykey_public_answers/up.sql new file mode 100644 index 00000000..fa8bdcd6 --- /dev/null +++ b/hasura/migrations/default/1684315633710_modify_primarykey_public_answers/up.sql @@ -0,0 +1,6 @@ +BEGIN TRANSACTION; +ALTER TABLE "public"."answers" DROP CONSTRAINT "answers_pkey"; + +ALTER TABLE "public"."answers" + ADD CONSTRAINT "answers_pkey" PRIMARY KEY ("uuid"); +COMMIT TRANSACTION; diff --git a/hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/down.sql b/hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/down.sql new file mode 100644 index 00000000..688d39f9 --- /dev/null +++ b/hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/down.sql @@ -0,0 +1 @@ +alter table "public"."answers_files" drop constraint "answers_files_answer_uuid_fkey"; diff --git a/hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/up.sql b/hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/up.sql new file mode 100644 index 00000000..eb9db5e2 --- /dev/null +++ b/hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/up.sql @@ -0,0 +1,5 @@ +alter table "public"."answers_files" + add constraint "answers_files_answer_uuid_fkey" + foreign key ("answer_uuid") + references "public"."answers" + ("uuid") on update cascade on delete cascade; diff --git a/hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/down.sql b/hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/down.sql new file mode 100644 index 00000000..7ddd7167 --- /dev/null +++ b/hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/down.sql @@ -0,0 +1 @@ +alter table "public"."answers_files" drop constraint "answers_files_file_hash_answer_uuid_key"; diff --git a/hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/up.sql b/hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/up.sql new file mode 100644 index 00000000..9297b3da --- /dev/null +++ b/hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/up.sql @@ -0,0 +1 @@ +alter table "public"."answers_files" add constraint "answers_files_file_hash_answer_uuid_key" unique ("file_hash", "answer_uuid"); diff --git a/hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/down.sql b/hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/down.sql new file mode 100644 index 00000000..97a1cc41 --- /dev/null +++ b/hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/down.sql @@ -0,0 +1,4 @@ +-- Could not auto-generate a down migration. +-- Please write an appropriate down migration for the SQL below: +-- alter table "public"."files" add column "answers_files_id" integer +-- null; diff --git a/hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/up.sql b/hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/up.sql new file mode 100644 index 00000000..efce4fe6 --- /dev/null +++ b/hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/up.sql @@ -0,0 +1,2 @@ +alter table "public"."files" add column "answers_files_id" integer + null; diff --git a/hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/down.sql b/hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/down.sql new file mode 100644 index 00000000..b5dc7ab0 --- /dev/null +++ b/hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/down.sql @@ -0,0 +1 @@ +alter table "public"."files" drop constraint "files_answers_files_id_fkey"; diff --git a/hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/up.sql b/hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/up.sql new file mode 100644 index 00000000..0fece3ee --- /dev/null +++ b/hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/up.sql @@ -0,0 +1,5 @@ +alter table "public"."files" + add constraint "files_answers_files_id_fkey" + foreign key ("answers_files_id") + references "public"."answers_files" + ("id") on update cascade on delete cascade; diff --git a/hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/down.sql b/hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/down.sql new file mode 100644 index 00000000..6020ed98 --- /dev/null +++ b/hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/down.sql @@ -0,0 +1,4 @@ +-- Could not auto-generate a down migration. +-- Please write an appropriate down migration for the SQL below: +-- alter table "public"."answers_files" add column "key" text +-- not null; diff --git a/hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/up.sql b/hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/up.sql new file mode 100644 index 00000000..1a543ae4 --- /dev/null +++ b/hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/up.sql @@ -0,0 +1,2 @@ +alter table "public"."answers_files" add column "key" text + not null; diff --git a/hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/down.sql b/hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/down.sql new file mode 100644 index 00000000..0fece3ee --- /dev/null +++ b/hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/down.sql @@ -0,0 +1,5 @@ +alter table "public"."files" + add constraint "files_answers_files_id_fkey" + foreign key ("answers_files_id") + references "public"."answers_files" + ("id") on update cascade on delete cascade; diff --git a/hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/up.sql b/hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/up.sql new file mode 100644 index 00000000..b5dc7ab0 --- /dev/null +++ b/hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/up.sql @@ -0,0 +1 @@ +alter table "public"."files" drop constraint "files_answers_files_id_fkey"; diff --git a/hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/down.sql b/hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/down.sql new file mode 100644 index 00000000..348ada0b --- /dev/null +++ b/hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/down.sql @@ -0,0 +1 @@ +alter table "public"."files" add constraint "files_hash_key" unique ("hash"); diff --git a/hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/up.sql b/hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/up.sql new file mode 100644 index 00000000..25c2e5e3 --- /dev/null +++ b/hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/up.sql @@ -0,0 +1 @@ +alter table "public"."files" drop constraint "files_hash_key"; diff --git a/hasura/migrations/default/1684316904382_run_sql_migration/down.sql b/hasura/migrations/default/1684316904382_run_sql_migration/down.sql new file mode 100644 index 00000000..408b2708 --- /dev/null +++ b/hasura/migrations/default/1684316904382_run_sql_migration/down.sql @@ -0,0 +1,3 @@ +-- Could not auto-generate a down migration. +-- Please write an appropriate down migration for the SQL below: +-- DROP TABLE files CASCADE; diff --git a/hasura/migrations/default/1684316904382_run_sql_migration/up.sql b/hasura/migrations/default/1684316904382_run_sql_migration/up.sql new file mode 100644 index 00000000..8f57d3f8 --- /dev/null +++ b/hasura/migrations/default/1684316904382_run_sql_migration/up.sql @@ -0,0 +1 @@ +DROP TABLE files CASCADE; diff --git a/hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/down.sql b/hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/down.sql new file mode 100644 index 00000000..38fb3a22 --- /dev/null +++ b/hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/down.sql @@ -0,0 +1 @@ +alter table "public"."answers_files" rename column "file_key" to "key"; diff --git a/hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/up.sql b/hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/up.sql new file mode 100644 index 00000000..e528ff0b --- /dev/null +++ b/hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/up.sql @@ -0,0 +1 @@ +alter table "public"."answers_files" rename column "key" to "file_key"; diff --git a/hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/down.sql b/hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/down.sql new file mode 100644 index 00000000..2d26ad7a --- /dev/null +++ b/hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/down.sql @@ -0,0 +1,2 @@ +alter table "public"."answers_files" alter column "file_key" drop not null; +alter table "public"."answers_files" add column "file_key" text; diff --git a/hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/up.sql b/hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/up.sql new file mode 100644 index 00000000..80e2d6b6 --- /dev/null +++ b/hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/up.sql @@ -0,0 +1 @@ +alter table "public"."answers_files" drop column "file_key" cascade; diff --git a/next-auth.d.ts b/next-auth.d.ts new file mode 100644 index 00000000..edbc1ee2 --- /dev/null +++ b/next-auth.d.ts @@ -0,0 +1,10 @@ +import NextAuth, { DefaultSession } from "next-auth"; + +// augment default Session type +declare module "next-auth" { + interface Session { + user: { + id: string; + } & DefaultSession["user"]; + } +} diff --git a/package.json b/package.json index 1e608d88..bb626c06 100644 --- a/package.json +++ b/package.json @@ -36,13 +36,24 @@ "@mui/x-data-grid": "^5.17.16", "@mui/x-date-pickers": "^5.0.11", "@sentry/nextjs": "^7.60.1", + "@socialgouv/e2esdk-client": "1.0.0-beta.28", + "@socialgouv/e2esdk-crypto": "1.0.0-beta.20", + "@socialgouv/e2esdk-devtools": "1.0.0-beta.38", + "@socialgouv/e2esdk-react": "1.0.0-beta.28", "@socialgouv/matomo-next": "^1.6.1", + "boring-avatars": "^1.7.0", "dayjs": "^1.11.9", + "formidable": "3.2.5", + "js-image-generator": "^1.0.4", "next": "13.4.12", "next-auth": "^4.22.3", + "random-words": "^1.3.0", "react": "18.2.0", "react-dom": "18.2.0", - "tss-react": "^4.8.8" + "react-dropzone": "^14.2.3", + "react-hook-form": "^7.44.2", + "tss-react": "^4.8.8", + "zod": "^3.21.4" }, "devDependencies": { "@babel/core": "^7.22.9", @@ -55,6 +66,7 @@ "@storybook/testing-library": "^0.0.11", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^14.0.0", + "@types/formidable": "^2.0.6", "@types/node": "18.11.17", "@types/react": "^18.2.0", "@types/react-dom": "^18.2.0", diff --git a/src/components/devtools.tsx b/src/components/devtools.tsx new file mode 100644 index 00000000..59295ed9 --- /dev/null +++ b/src/components/devtools.tsx @@ -0,0 +1,17 @@ +import '@socialgouv/e2esdk-devtools' +import { E2ESDKDevtoolsElement } from '@socialgouv/e2esdk-devtools' +import { useE2ESDKClient } from '@socialgouv/e2esdk-react' +import React from 'react' + +export const Devtools = () => { + const client = useE2ESDKClient() + const ref = React.useRef(null) + React.useEffect(() => { + if (!ref.current) { + return + } + ref.current.client = client + }, [client]) + return +} + diff --git a/src/config/index.ts b/src/config/index.ts new file mode 100644 index 00000000..22c69801 --- /dev/null +++ b/src/config/index.ts @@ -0,0 +1,5 @@ +import path from "node:path"; + +export const storageDir = + process.env.STORAGE_DIR || + path.resolve(process.cwd(), "./.storage/answers_files"); diff --git a/src/lib/e2esdk.ts b/src/lib/e2esdk.ts new file mode 100644 index 00000000..ac465f28 --- /dev/null +++ b/src/lib/e2esdk.ts @@ -0,0 +1,209 @@ +import { z } from "zod"; + +import { + EncryptedFormLocalState, + base64UrlDecode, + encryptFile, + encryptFormData, + initializeEncryptedFormLocalState, + decryptFileContents, + FileMetadata, + Sodium, +} from "@socialgouv/e2esdk-crypto"; + +import { Client } from "@socialgouv/e2esdk-client"; + +import { decryptedDataSchema } from "../../src/pages/form"; +import { fetchHasura } from "./hasura"; +import { insert_one } from "../queries/form"; + +const formMetadata = z.object({ + id: z.number(), + created_at: z.string(), + public_key: z.string(), + sealed_secret: z.string(), + signature: z.string(), +}); + +export type EncryptedAnswer = z.infer & { data: string }; + +type SubmissionQueryVariables = { + submissionBucketId: string; + signature: string; + sealedSecret: string; + publicKey: string; + answersFiles: any[]; + data: string; +}; + +/** + * Download a file based on its metadata : + * - use the hash to download encrypted blob + * - use the metadata to decipher + * todo: extract to e2esdk ? + */ +export async function downloadAndDecryptFile( + sodium: Sodium, + metadata: FileMetadata +) { + const res = await fetch(`/api/storage?hash=${metadata.hash}`); + const blob = await res.blob(); + const cleartext = decryptFileContents( + sodium, + new Uint8Array(await blob.arrayBuffer()), + { + algorithm: "secretBox", + key: sodium.from_base64(metadata.key), + } + ); + return new File([cleartext], metadata.name, { + type: metadata.type, + lastModified: metadata.lastModified, + }); +} + +/** + * Decrypt a given answer + * - decrypt the encrypted values + * - parse and validate with zod + * todo: extract to e2esdk + */ +export const decryptAnswer = ( + client: Client, + nameFingerprint: string, + answer: EncryptedAnswer +) => { + try { + const values = client.unsealFormData( + { + metadata: { + publicKey: answer.public_key, + sealedSecret: answer.sealed_secret, + signature: answer.signature, + }, + encrypted: { data: answer.data }, + }, + nameFingerprint + ) as Record<"data", string>; + + const decryptedValues: FormData = JSON.parse(values.data); + const res = decryptedDataSchema.safeParse(decryptedValues); + if (!res.success) { + console.error(`Zod: Impossible de parser la réponse ${answer.id}`); + console.error(res.error); + // warning : returning null here is recommended to avoid security issues where malicious content is sent that could break the rendering process, and lead to a blank page. + // return null; + + return { + ...answer, + ...decryptedValues, + }; + } + return { + ...answer, + ...res.data, + data: undefined, + }; + } catch (e) { + console.error(`e2esdk: Impossible de parser la réponse ${answer.id}`); + console.error(e); + return null; + } +}; + +/** + * return encrypted version and metadata for a given `File` + * todo: extract to e2esdk + */ +export const readAndEncryptFile = async ( + file: File, + encryptionState: EncryptedFormLocalState +): Promise> => + new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onabort = () => reject("file reading was aborted"); + reader.onerror = () => reject("file reading has failed"); + reader.onload = async () => { + const binaryStr = reader.result; + if (binaryStr) { + const { encryptedFile, metadata } = await encryptFile( + encryptionState.sodium, + file + ); + resolve({ encryptedFile, metadata }); + } + }; + reader.readAsArrayBuffer(file); + }); + +/** + * Encrypt input data using e2esdk and submit to the server + * - create a dedicated FormLocalState + * - encrypt files using e2esdk readAndEncryptFile + * - upload encrypted files and keep track of files in submitted data + * - submit the whole encrypted form data, with files references + */ +export const encryptAndSubmitForm = async ( + formPublicKeyString: string, + formName: string, + data: Record +) => { + const formPublicKey = base64UrlDecode(formPublicKeyString); + + // initialize form encryption context + const state = await initializeEncryptedFormLocalState( + formName, + formPublicKey + ); + + // first encrypt files if any + const answersFiles = []; + if (data.files) { + const { files } = data; + delete data.files; + const encryptedFiles = await Promise.all( + files.map((file: File) => readAndEncryptFile(file, state)) + ); + const formData = new FormData(); + for (let i = 0; i < encryptedFiles.length; i++) { + const { encryptedFile, metadata } = encryptedFiles[i]; + formData.set(`file_${i}`, encryptedFile); + } + // add `filesMetadata` to our data object, it will be encrypted too + data.filesMetadata = {}; + // upload files and save metadata + if (Array.from(formData.values()).flat().length > 0) { + await fetch("/api/upload-answers-files", { + method: "POST", + body: formData, + }); + for (const { metadata } of encryptedFiles) { + const { hash } = metadata; + // the file_hash is kept as a reference in cleartext in the application database + answersFiles.push({ file_hash: hash }); + data.filesMetadata[hash] = metadata; + } + } + } + + // encrypt our `data` object + const { metadata, encrypted } = encryptFormData( + { data: JSON.stringify(data) }, + state + ); + + // prepare hasura graphql query variables + const variables: SubmissionQueryVariables = { + submissionBucketId: formName, + sealedSecret: metadata.sealedSecret, + signature: metadata.signature, + publicKey: metadata.publicKey, + answersFiles, + ...encrypted, + }; + + return fetchHasura({ + query: insert_one, + variables, + }); +}; diff --git a/src/lib/hasura.ts b/src/lib/hasura.ts index d26fab85..36bf0584 100644 --- a/src/lib/hasura.ts +++ b/src/lib/hasura.ts @@ -23,7 +23,7 @@ export type Token = { export const fetchHasura = ( params: HasuraParams, - token: Token, + token?: Token, retry: number = 5 ): Promise => { const checkExpiredToken = async (res: HasuraJsonResponse) => { @@ -58,7 +58,7 @@ export const fetchHasura = ( body: JSON.stringify(params), headers: { "Content-Type": "application/json", - ...(token.accessToken + ...(token?.accessToken ? { Authorization: `Bearer ${token.accessToken}` } : {}), // allow anonymous users with no Authorization header }, diff --git a/src/lib/serialExec.ts b/src/lib/serialExec.ts new file mode 100644 index 00000000..fca83f6c --- /dev/null +++ b/src/lib/serialExec.ts @@ -0,0 +1,18 @@ +const wait = + (timeout = 500) => + (args: any) => + new Promise((resolve) => setTimeout(() => resolve(args), timeout)); + +export const serialExec = (promises: any[], options = { randomTimeout: 0 }) => { + const next = (res = null) => + options.randomTimeout ? wait(options.randomTimeout) : Promise.resolve(res); + return promises.reduce( + (chain, c) => + chain.then((res: any) => + c() + .then(next()) + .then((cur: any) => [...res, cur]) + ), + Promise.resolve([]) + ); +}; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 0ce4f031..ab158420 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -4,6 +4,7 @@ import Head from "next/head"; import Link from "next/link"; import { useRouter } from "next/router"; import { SessionProvider, signIn, useSession } from "next-auth/react"; +import dynamic from "next/dynamic"; import { createEmotionSsrAdvancedApproach } from "tss-react/next/pagesDir"; import { createNextDsfrIntegrationApi } from "@codegouvfr/react-dsfr/next-pagesdir"; @@ -15,12 +16,28 @@ import { MuiDsfrThemeProvider } from "@codegouvfr/react-dsfr/mui"; import { init } from "@socialgouv/matomo-next"; import { useStyles } from "tss-react/dsfr"; +import { Client } from "@socialgouv/e2esdk-client"; +import { E2ESDKClientProvider } from "@socialgouv/e2esdk-react"; + declare module "@codegouvfr/react-dsfr/next-pagesdir" { interface RegisterLink { Link: typeof Link; } } +const e2esdkClient = new Client({ + serverURL: "https://e2esdk.dev.fabrique.social.gouv.fr", + serverSignaturePublicKey: "_XDQj6-paJAnpCp_pfBhGUUe6cA0MjLXsgAOgYDhCRI", +}); + +const Devtools = dynamic( + () => import("../components/devtools").then((m) => m.Devtools), + { + ssr: false, + } +); + +// Only in TypeScript projects declare module "@codegouvfr/react-dsfr" { interface RegisterLink { Link: typeof Link; @@ -53,7 +70,7 @@ const { augmentDocumentWithEmotionCache, withAppEmotionCache } = key: "css", }); -export { dsfrDocumentApi, augmentDocumentWithEmotionCache }; +export { augmentDocumentWithEmotionCache, dsfrDocumentApi }; const brandTop = ( <> @@ -156,6 +173,24 @@ const Layout = ({ children }: { children: ReactNode }) => { }, isActive: router.asPath === "/books", }, + { + menuLinks: [ + { + text: "Form", + linkProps: { + href: "/form", + }, + }, + { + text: "Answers", + linkProps: { + href: "/answers", + }, + }, + ], + isActive: ["/form", "/answers"].includes(router.asPath), + text: "E2ESDK forms", + }, ]; return ( @@ -184,7 +219,7 @@ const Layout = ({ children }: { children: ReactNode }) => {
- + + - -
+ + + ); } diff --git a/src/pages/answers.tsx b/src/pages/answers.tsx new file mode 100644 index 00000000..437593db --- /dev/null +++ b/src/pages/answers.tsx @@ -0,0 +1,257 @@ +/* eslint-disable @next/next/no-img-element */ +import { useCallback, useEffect, useMemo, useState } from "react"; +import type { NextPage } from "next"; +import { useSession } from "next-auth/react"; + +import { fr } from "@codegouvfr/react-dsfr"; +import { Alert } from "@codegouvfr/react-dsfr/Alert"; +import { createModal } from "@codegouvfr/react-dsfr/Modal"; +import { useIsModalOpen } from "@codegouvfr/react-dsfr/Modal/useIsModalOpen"; + +import { DataGrid, GridColDef } from "@mui/x-data-grid"; + +import { + useE2ESDKClient, + useE2ESDKClientIdentity, +} from "@socialgouv/e2esdk-react"; +import { FileMetadata } from "@socialgouv/e2esdk-crypto"; + +import { fetchHasura } from "../lib/hasura"; +import { query } from "../queries/form"; +import { + decryptAnswer, + downloadAndDecryptFile, + EncryptedAnswer, +} from "../lib/e2esdk"; + +type AnswersResponse = { + errors?: { message: string }[]; + data: { + answers: EncryptedAnswer[]; + }; +}; + +// nameFingerprint of the form sealedBox +const formNameFingerprint = "QyUHkrtl2FmtRyXHbsmf_EIwKGv5wRUZpU9X7Gm4tZw"; + +const modal = createModal({ + id: "preview", + isOpenedByDefault: false, +}); + +const EncryptedImagePreview = ({ file }: { file: File }) => { + return ( + {file.name} + ); +}; + +// to download the file +// function saveFile(file: File) { +// const link = document.createElement("a"); +// link.setAttribute("href", URL.createObjectURL(file)); +// link.setAttribute("download", file.name); +// link.click(); +// URL.revokeObjectURL(link.href); +// } + +const Answers: NextPage = () => { + const client = useE2ESDKClient(); + + const isOpen = useIsModalOpen(modal); + + const onFileClick = useCallback( + (metadata: FileMetadata) => { + setPreviewImage(null); + downloadAndDecryptFile(client.sodium, metadata).then((rawImage) => { + setPreviewImage(rawImage); // or saveFile(rawImage) + // ensure state is updated before showing the modal + setTimeout(() => { + if (!isOpen) { + modal.open(); + } + }); + }); + }, + [client, isOpen] + ); + + const columns: GridColDef[] = useMemo( + () => [ + { field: "id", headerName: "ID", width: 70 }, + + { + field: "created_at", + headerName: "Date", + width: 130, + type: "date", + valueGetter: (val) => new Date(val.row.created_at), + }, + { + field: "firstName", + type: "string", + headerName: "Prénom", + width: 120, + }, + { + field: "lastName", + type: "string", + headerName: "Nom", + width: 120, + }, + { + field: "email", + headerName: "Email", + type: "email", + width: 150, + renderCell: (cell) => ( + {cell.row.email} + ), + }, + { + field: "newsletter", + headerName: "Emails", + width: 70, + align: "center", + valueGetter: (val) => (val.row.newsletter && "✅") || "❌", + }, + { + field: "alerts", + headerName: "Alertes", + width: 70, + align: "center", + valueGetter: (val) => (val.row.alerts && "✅") || "❌", + }, + { + field: "message", + headerName: "Message", + type: "text", + flex: 1, + }, + { + field: "filesData", + headerName: "Fichiers", + type: "text", + flex: 1, + width: 70, + cellClassName: "no-outline", + renderCell: (cell) => { + const fileList: FileMetadata[] = Object.values( + cell.row.filesMetadata || {} + ); + return fileList.map((metadata, i) => ( + { + e.preventDefault(); + e.stopPropagation(); + onFileClick(metadata); + }} + aria-hidden={true} + > + )); + }, + }, + ], + [onFileClick] + ); + + const { data: session } = useSession(); + const token = useMemo( + () => ({ + //@ts-ignore + accessToken: session?.accessToken || "", + //@ts-ignore + refreshToken: session?.refreshToken || "", + //@ts-ignore + accessTokenExpires: session?.accessTokenExpires || 0, + }), + [session] + ); + const [answers, setAnswers] = useState([]); + const [error, setError] = useState(null); + const [previewImage, setPreviewImage] = useState(null); + + const identity = useE2ESDKClientIdentity(); + + const fetchAnswers = useCallback( + () => + fetchHasura({ query }, token).then((res: AnswersResponse) => + res.data.answers + .map((answer) => decryptAnswer(client, formNameFingerprint, answer)) + .filter(Boolean) + ), + [client, token] + ); + + useEffect(() => { + setError(null); + if (session?.user?.id) { + // autologin / signup to e2esdk using user UUID + const e2esdkUserId = session.user.id; + // if alreay logged in e2esdk in with application account id + if (identity && identity.userId === e2esdkUserId) { + console.log("fetchAnswers"); + fetchAnswers().then(setAnswers); + } else { + // log the user to e2esdk + console.log("client.login(e2esdkUserId)", e2esdkUserId); + client.login(e2esdkUserId).catch(async (e) => { + console.log(e); + // if not logged in, force new application register in e2esdk + if (e.message.match("Device is not enrolled for this user")) { + console.log("client.logout()"); + await client.logout(); + console.log("client.signup(e2esdkUserId)"); + await client.signup(e2esdkUserId); + return; + } + throw e; + }); + } + } + }, [fetchAnswers, identity, client, session]); + + return ( + <> + {error && ( + + )} +
+ + {previewImage && } + + +
+ + ); +}; + +export default Answers; diff --git a/src/pages/api/auth/[...nextauth].ts b/src/pages/api/auth/[...nextauth].ts index dafd55d2..6c6559ff 100644 --- a/src/pages/api/auth/[...nextauth].ts +++ b/src/pages/api/auth/[...nextauth].ts @@ -36,6 +36,7 @@ export default NextAuth({ account: Account; }) { // Initial sign in + //console.log("jwt", { token, user, account }); if (account && user) { return { diff --git a/src/pages/api/storage.ts b/src/pages/api/storage.ts new file mode 100644 index 00000000..dde4a9a5 --- /dev/null +++ b/src/pages/api/storage.ts @@ -0,0 +1,32 @@ +// https://chadalen.com/blog/how-to-use-a-multipart-form-in-nextjs-using-api-routes + +import { fileMetadataSchema } from "@socialgouv/e2esdk-crypto"; +import type { NextApiRequest, NextApiResponse } from "next"; +import { createReadStream } from "node:fs"; +import fs from "node:fs/promises"; +import path from "node:path"; + +import { storageDir } from "../../config"; + +const validFileName = fileMetadataSchema.shape.hash; + +export default async function storageEndpoint( + req: NextApiRequest, + res: NextApiResponse +) { + // todo: Add authentication + + const hash = validFileName.parse([req.query["hash"]].flat()[0]); + if (!hash) { + return res.status(400).send("Expected hash query string"); + } + const filePath = path.resolve(storageDir, hash); + const stat = await fs.stat(filePath); + if (!stat.isFile()) { + return res.status(404).send("Not found"); + } + return res + .setHeader("content-type", "application/octet-stream") + .setHeader("content-disposition", "inline") + .send(createReadStream(filePath)); +} diff --git a/src/pages/api/upload-answers-files.ts b/src/pages/api/upload-answers-files.ts new file mode 100644 index 00000000..5ef19fa6 --- /dev/null +++ b/src/pages/api/upload-answers-files.ts @@ -0,0 +1,76 @@ +// https://chadalen.com/blog/how-to-use-a-multipart-form-in-nextjs-using-api-routes + +import { fileMetadataSchema } from "@socialgouv/e2esdk-crypto"; +import formidable from "formidable"; +import type { NextApiRequest, NextApiResponse } from "next"; +import fs from "node:fs/promises"; +import path from "node:path"; + +import { storageDir } from "../../config"; + +export const config = { + api: { + bodyParser: false, + }, +}; + +// SHA-512 hex output +const validFileName = fileMetadataSchema.shape.hash; + +const form = formidable({ + multiples: true, + // maxFileSize: 10 * 1024 * 1024, // 10Mb + uploadDir: storageDir, + hashAlgorithm: "sha512", + filename(name, ext, part, form) { + if (!part.originalFilename) { + throw new Error("Missing file name (should be hash of content)"); + } + return validFileName.parse(part.originalFilename); + }, +}); + +form.on("file", (_formName, file) => { + if (!file.hash) { + console.error(`Skip file ${file.filepath}, no hash`); + return; + } + if (file.newFilename === file.hash) { + console.info(`Saved file ${file.filepath}`); + return; + } + console.error(`Invalid file name (does not match SHA-512 hash) + Received: ${file.newFilename} + Hashed: ${file.hash}`); + fs.rm(path.resolve(storageDir, file.newFilename)); +}); + +export default async function storageEndpoint( + req: NextApiRequest, + res: NextApiResponse +) { + // todo: Add authentication + await fs.mkdir(storageDir, { recursive: true }).catch(() => {}); + if ( + !req.headers["content-type"] || + req.headers["content-type"].indexOf("multipart/form-data") === -1 + ) { + return res + .status(415) + .send("Invalid content-type, only multipart/form-data is accepted"); + } + await new Promise((resolve, reject) => + form.parse(req, (err, _, files) => { + if (err) { + res.status(400).json({ + error: "Invalid request", + message: "Failed to parse multipart body", + reason: err, + }); + reject(err); + } + resolve(); + }) + ); + res.status(201).send(null); +} diff --git a/src/pages/form.tsx b/src/pages/form.tsx new file mode 100644 index 00000000..18857f9e --- /dev/null +++ b/src/pages/form.tsx @@ -0,0 +1,285 @@ +import React, { useState, useCallback } from "react"; +import type { NextPage } from "next"; +import Head from "next/head"; +import { useDropzone } from "react-dropzone"; +import { useForm } from "react-hook-form"; +import { z } from "zod"; + +import { fr } from "@codegouvfr/react-dsfr"; +import { useIsDark } from "@codegouvfr/react-dsfr/useIsDark"; +import { Input } from "@codegouvfr/react-dsfr/Input"; +import { RadioButtons } from "@codegouvfr/react-dsfr/RadioButtons"; +import { Checkbox } from "@codegouvfr/react-dsfr/Checkbox"; +import { Button } from "@codegouvfr/react-dsfr/Button"; +import { Alert } from "@codegouvfr/react-dsfr/Alert"; + +import { fileMetadataSchema } from "@socialgouv/e2esdk-crypto"; + +import { encryptAndSubmitForm } from "../lib/e2esdk"; +import { generateFormData } from "../services/fake-form-data"; +import { serialExec } from "../lib/serialExec"; + +// This form sealedBox public key +const formPublicKeyString = "CyLwBWHufxjHfzzI8BNgJXEBOEtIXV_NewC6VFrMkgk"; + +// Some unique id for this form submission. used for client localstorage +export const formName = "myapp-contact-form"; + +export const decryptedDataSchema = z.object({ + firstName: z.string(), + lastName: z.string().optional().nullable(), + message: z.string().optional().nullable(), + email: z.string().optional().nullable(), + color: z.string().optional().nullable(), + newsletter: z.boolean().optional().default(false), + alerts: z.boolean().optional().default(false), + files: z.array(z.any()).optional(), + filesMetadata: fileMetadataSchema, +}); + +type FormData = z.infer; + +const removeFromArray = (arr: any[], value: any) => { + const index = arr.indexOf(value); + if (index > -1) { + return [...arr.slice(0, index), ...arr.slice(index + 1)]; + } + return arr; +}; + +const Form: NextPage = () => { + const { + register, + handleSubmit, + reset, + formState: { isDirty, isValid }, + } = useForm({ mode: "onChange" }); + const { isDark } = useIsDark(); + const [formSuccess, setFormSuccess] = useState(null); + const [formError, setFormError] = useState(null); + const [uploads, setUploads] = useState([]); + + const generateSubmissions = useCallback(async () => { + // generate and submit bunch of fake submissions + const rows = await Promise.all( + Array.from({ length: 10 }, generateFormData) + ); + console.time("encryptAndSubmitForm"); + return serialExec( + rows.map( + (row) => () => encryptAndSubmitForm(formPublicKeyString, formName, row) + ) + ).then(() => { + console.timeEnd("encryptAndSubmitForm"); + setFormError(false); + setFormSuccess(true); + setUploads([]); + reset(); + }); + }, [reset]); + + const onDrop = (acceptedFiles: File[]) => { + setUploads([...uploads, ...acceptedFiles]); + }; + + const onRemoveUploadClick = (upload: File) => { + const handler: React.MouseEventHandler = (e) => { + e.preventDefault(); + e.stopPropagation(); + const newUploads = removeFromArray(uploads, upload); + setUploads(newUploads); + }; + return handler; + }; + + const { + getRootProps: getDropZoneRootProps, + getInputProps: getDropZoneInputProps, + isDragActive, + } = useDropzone({ + onDrop, + accept: { + "image/png": [".png"], + "image/jpg": [".jpg", ".jpeg"], + "image/gif": [".gif"], + }, + }); + + const onSubmit = handleSubmit(async (data) => { + console.log("handleSubmit", data); + setFormError(null); + setFormSuccess(null); + + data.files = uploads; // use local state for uploads + + encryptAndSubmitForm(formPublicKeyString, formName, data) + .then((res) => { + if (res?.data?.insert_answers_one?.id) { + setFormError(false); + setFormSuccess(true); + setUploads([]); + reset(); + } + }) + .catch((e) => { + console.error(e); + setFormError(true); + setFormSuccess(false); + }); + }); + + return ( + <> + + e2esdk demo - SocialGouv/ + +
+ + {formSuccess && ( + + )} + {formError && ( + + )} +
+
+ + + + + + +
+ +
+ Déposez vos fichiers ici... + {(uploads.length && ( +
+ {uploads.map((upload, i) => ( +
  • + {upload.name}{" "} + {/* eslint-disable-next-line react/jsx-no-comment-textnodes, jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */} + + X + +
  • + ))} +
    + )) || + null} +
    +
    +
    + +
    +
    + + +
    + + ); +}; + +export default Form; diff --git a/src/pages/mui.tsx b/src/pages/mui.tsx index ed302fb3..63fc2ead 100644 --- a/src/pages/mui.tsx +++ b/src/pages/mui.tsx @@ -648,15 +648,7 @@ const { DataGridDemo } = (() => { function MyDataGridDemo() { return ( - + ); } diff --git a/src/pages/profil.tsx b/src/pages/profil.tsx index 64609500..ff7b2639 100644 --- a/src/pages/profil.tsx +++ b/src/pages/profil.tsx @@ -1,15 +1,42 @@ -import React from "react"; +import React, { useCallback } from "react"; import { withAuth } from "../lib/auth"; import { useSession, signOut } from "next-auth/react"; -import { Button } from "@codegouvfr/react-dsfr/Button"; +import { ButtonsGroup } from "@codegouvfr/react-dsfr/ButtonsGroup"; +import { useE2ESDKClient } from "@socialgouv/e2esdk-react"; +import { fr } from "@codegouvfr/react-dsfr"; const ProfilPage = () => { + const client = useE2ESDKClient(); const { data: session } = useSession(); + + const backupKey = useCallback(async () => { + const deviceQR = await client.enrollNewDevice(); + const textFile = new File([deviceQR], "key-backup.txt", { + type: "text", + }); + const link = document.createElement("a"); + link.setAttribute("href", URL.createObjectURL(textFile)); + link.setAttribute("download", textFile.name); + link.click(); + URL.revokeObjectURL(link.href); + }, [client]); + + const logout = useCallback(async () => { + signOut({ + // @ts-ignore // todo + callbackUrl: `/api/logout?id_token_hint=${session?.idToken}`, + }); + }, [session]); + return (

    Mes informations

      +
    • + Id : + {session?.user?.id ?? ""} +
    • Email : {session?.user?.email ?? ""} @@ -19,16 +46,22 @@ const ProfilPage = () => { {session?.user?.name}
    - +
    ); diff --git a/src/queries/form.ts b/src/queries/form.ts new file mode 100644 index 00000000..9f52ffa1 --- /dev/null +++ b/src/queries/form.ts @@ -0,0 +1,37 @@ +export const insert_one = ` + mutation MyMutation( + $data: String, + $publicKey: String, + $sealedSecret: String, + $signature: String, + $submissionBucketId: String, + $answersFiles: [answers_files_insert_input!]! + ) { + insert_answers_one(object: { + data: $data, + public_key: $publicKey, + sealed_secret: $sealedSecret, + signature: $signature, + submission_bucket_id: $submissionBucketId + answers_files: { + data: $answersFiles + } + }) { + id + } + } +`; + +export const query = ` + query MyQuery { + answers { + created_at + data + id + public_key + sealed_secret + signature + submission_bucket_id + } + } +`; diff --git a/src/services/fake-form-data.ts b/src/services/fake-form-data.ts new file mode 100644 index 00000000..3815cc42 --- /dev/null +++ b/src/services/fake-form-data.ts @@ -0,0 +1,137 @@ +import randomWords from "random-words"; +import imgGen from "js-image-generator"; + +const frenchFirstNames = [ + "Emma", + "Lucas", + "Chloé", + "Louis", + "Léa", + "Hugo", + "Jade", + "Adam", + "Lina", + "Gabriel", + "Inès", + "Raphaël", + "Manon", + "Arthur", + "Louise", + "Noah", + "Alice", + "Théo", + "Rose", + "Ethan", + "Juliette", + "Gabin", + "Anna", + "Timéo", + "Clara", + "Eliott", + "Alix", +]; + +const frenchLastNames = [ + "Dupont", + "Dubois", + "Martin", + "Bernard", + "Thomas", + "Petit", + "Robert", + "Richard", + "Durand", + "Moreau", + "Simon", + "Laurent", + "Lefebvre", + "Michel", + "Girard", + "Roux", + "Vincent", + "Fournier", + "Morel", + "Garnier", + "Barbier", + "Perrin", + "Gauthier", + "Dumont", + "Moulin", + "Gonzalez", + "Bertrand", + "Renaud", + "Fontaine", + "Caron", + "Faure", + "Mercier", + "Blanc", + "Legrand", + "Guillaume", +]; + +const universeQuotes = [ + "La vie est une chance, saisis-la. La vie est beauté, admire-la. La vie est béatitude, savoure-la. La vie est un rêve, fais-en une réalité.", + "La science de l'univers, c'est d'abord l'amour de l'univers.", + "L'univers est une symphonie harmonieuse où chaque élément a sa place et son rôle.", + "Nous sommes tous des poussières d'étoiles.", + "L'univers est plein de magie et il attend patiemment que notre intelligence s'affine.", + "La science n'a pas de patrie, parce que la connaissance est le patrimoine de l'humanité, l'émancipation de l'homme de toute contrainte et de toute oppression.", + "Il y a des moments où les étoiles, comme les gens, doivent se mettre à nu pour révéler leur vrai caractère.", + "Les étoiles sont les yeux du ciel.", + "L'univers est un livre dont on n'a lu que la première page quand on n'a vu que son propre pays.", + "Nous sommes des êtres éphémères, mais notre univers est éternel.", +]; + +const funThemeColors = [ + "Bubblegum Pink", + "Lemon Yellow", + "Mint Green", + "Sky Blue", + "Lavender Purple", + "Tangerine Orange", + "Watermelon Red", + "Ocean Blue", + "Sunny Orange", + "Cotton Candy Blue", +]; + +const slufigy = (str: string) => str.toLowerCase().replace(/[^\w]/g, "-"); + +const pick = (arr: any[]) => arr[Math.floor(Math.random() * arr.length)]; + +const generateImage = async (): Promise => + new Promise((resolve, reject) => { + imgGen.generateImage(800, 600, 80, function (err, image) { + if (err) { + return reject(err); + } + resolve(image.data); + }); + }); + +export const generateFormData = async () => { + const firstName = pick(frenchFirstNames); + const lastName = pick(frenchLastNames); + + const files = []; + for (let i = 0; i < Math.floor(Math.random() * 5); i++) { + const [word] = randomWords(1); + const image = await generateImage(); + const file = new File([image], `${word}.jpg`, { + type: "image/jpeg", + lastModified: Date.now(), + }); + files.push(file); + } + + return { + firstName, + lastName, + message: pick(universeQuotes), + email: `${slufigy(firstName)}.${slufigy(lastName)}@mel.com`, + color: pick(funThemeColors), + newsletter: pick([true, false]), + alerts: pick([true, false]), + files, + }; +}; diff --git a/yarn.lock b/yarn.lock index a4618f32..c8c97482 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@47ng/opaque-client@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@47ng/opaque-client/-/opaque-client-2.1.5.tgz#c4c3e7acc893175dc01dac6cba982a1aba1095c0" + integrity sha512-uYxNuRtBlPEfTrxHqmDARDIiqwEVWzIL5C3I1kmX7P1cMNtjV0/mmUW73TX+l0+n3GGEivx/aCOhek209Y+LJw== + "@aashutoshrathi/word-wrap@^1.2.3": version "1.2.6" resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" @@ -1255,7 +1260,21 @@ dependencies: regenerator-runtime "^0.13.11" -"@babel/runtime@^7.20.13", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.22.6": +"@babel/runtime@^7.12.13", "@babel/runtime@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/runtime@^7.20.13": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.3.tgz#0a7fce51d43adbf0f7b517a71f4c3aaca92ebcbb" + integrity sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/runtime@^7.22.5", "@babel/runtime@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== @@ -1347,6 +1366,795 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@chakra-ui/accordion@2.1.11": + version "2.1.11" + resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-2.1.11.tgz#c6df0100c543645d0631df3aefde2ea2b8ed6313" + integrity sha512-mfVPmqETp9pyRDHJ33AdF19oHv/LyxVzQJtlxUByuvs8Cj9QQZ2LQLg5kejm+b3mj03A7A6yfbuo3RNaI4Bhsg== + dependencies: + "@chakra-ui/descendant" "3.0.14" + "@chakra-ui/icon" "3.0.16" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-use-controllable-state" "2.0.8" + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/shared-utils" "2.0.5" + "@chakra-ui/transition" "2.0.16" + +"@chakra-ui/alert@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-2.1.0.tgz#7a234ac6426231b39243088648455cbcf1cbdf24" + integrity sha512-OcfHwoXI5VrmM+tHJTHT62Bx6TfyfCxSa0PWUOueJzSyhlUOKBND5we6UtrOB7D0jwX45qKKEDJOLG5yCG21jQ== + dependencies: + "@chakra-ui/icon" "3.0.16" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/shared-utils" "2.0.5" + "@chakra-ui/spinner" "2.0.13" + +"@chakra-ui/anatomy@2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@chakra-ui/anatomy/-/anatomy-2.1.2.tgz#ea66b1841e7195da08ddc862daaa3f3e56e565f5" + integrity sha512-pKfOS/mztc4sUXHNc8ypJ1gPWSolWT770jrgVRfolVbYlki8y5Y+As996zMF6k5lewTu6j9DQequ7Cc9a69IVQ== + +"@chakra-ui/avatar@2.2.8": + version "2.2.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/avatar/-/avatar-2.2.8.tgz#a6e16accb2bb9c879f197090ccc9df1ff42992a6" + integrity sha512-uBs9PMrqyK111tPIYIKnOM4n3mwgKqGpvYmtwBnnbQLTNLg4gtiWWVbpTuNMpyu1av0xQYomjUt8Doed8w6p8g== + dependencies: + "@chakra-ui/image" "2.0.15" + "@chakra-ui/react-children-utils" "2.0.6" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/breadcrumb@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/breadcrumb/-/breadcrumb-2.1.5.tgz#a43b22cc8005291a615696a8c88efc37064562f3" + integrity sha512-p3eQQrHQBkRB69xOmNyBJqEdfCrMt+e0eOH+Pm/DjFWfIVIbnIaFbmDCeWClqlLa21Ypc6h1hR9jEmvg8kmOog== + dependencies: + "@chakra-ui/react-children-utils" "2.0.6" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/breakpoint-utils@2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.8.tgz#750d3712668b69f6e8917b45915cee0e08688eed" + integrity sha512-Pq32MlEX9fwb5j5xx8s18zJMARNHlQZH2VH1RZgfgRDpp7DcEgtRW5AInfN5CfqdHLO1dGxA7I3MqEuL5JnIsA== + dependencies: + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/button@2.0.18": + version "2.0.18" + resolved "https://registry.yarnpkg.com/@chakra-ui/button/-/button-2.0.18.tgz#c13d2e404e22a9873ba5373fde494bedafe32fdd" + integrity sha512-E3c99+lOm6ou4nQVOTLkG+IdOPMjsQK+Qe7VyP8A/xeAMFONuibrWPRPpprr4ZkB4kEoLMfNuyH2+aEza3ScUA== + dependencies: + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/shared-utils" "2.0.5" + "@chakra-ui/spinner" "2.0.13" + +"@chakra-ui/card@2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/card/-/card-2.1.6.tgz#27176bdee363ecab7d563c4997c4b2fe9e835ecc" + integrity sha512-fFd/WAdRNVY/WOSQv4skpy0WeVhhI0f7dTY1Sm0jVl0KLmuP/GnpsWtKtqWjNcV00K963EXDyhlk6+9oxbP4gw== + dependencies: + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/checkbox@2.2.14": + version "2.2.14" + resolved "https://registry.yarnpkg.com/@chakra-ui/checkbox/-/checkbox-2.2.14.tgz#902acc99a9a80c1c304788a230cf36f8116e8260" + integrity sha512-uqo6lFWLqYBujPglrvRhTAErtuIXpmdpc5w0W4bjK7kyvLhxOpUh1hlDb2WoqlNpfRn/OaNeF6VinPnf9BJL8w== + dependencies: + "@chakra-ui/form-control" "2.0.18" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-types" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.0.7" + "@chakra-ui/react-use-controllable-state" "2.0.8" + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/shared-utils" "2.0.5" + "@chakra-ui/visually-hidden" "2.0.15" + "@zag-js/focus-visible" "0.2.2" + +"@chakra-ui/clickable@2.0.14": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@chakra-ui/clickable/-/clickable-2.0.14.tgz#88093008672a2a30bdd2a30ff815dcc2c88c01a5" + integrity sha512-jfsM1qaD74ZykLHmvmsKRhDyokLUxEfL8Il1VoZMNX5RBI0xW/56vKpLTFF/v/+vLPLS+Te2cZdD4+2O+G6ulA== + dependencies: + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/close-button@2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-2.0.17.tgz#d43d3a2ea1f08250f8d0da7704baf0e1fbd91b4b" + integrity sha512-05YPXk456t1Xa3KpqTrvm+7smx+95dmaPiwjiBN3p7LHUQVHJd8ZXSDB0V+WKi419k3cVQeJUdU/azDO2f40sw== + dependencies: + "@chakra-ui/icon" "3.0.16" + +"@chakra-ui/color-mode@2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/color-mode/-/color-mode-2.1.12.tgz#c0caeadd5f87fadbeefc6826beabac6c4a88d8f5" + integrity sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw== + dependencies: + "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + +"@chakra-ui/control-box@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/control-box/-/control-box-2.0.13.tgz#ffe9634d0c3aecb8e1eb7da19e64fb3d2b181d03" + integrity sha512-FEyrU4crxati80KUF/+1Z1CU3eZK6Sa0Yv7Z/ydtz9/tvGblXW9NFanoomXAOvcIFLbaLQPPATm9Gmpr7VG05A== + +"@chakra-ui/counter@2.0.14": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@chakra-ui/counter/-/counter-2.0.14.tgz#6e37a863afd2e87d7c94208245e81777640e76e2" + integrity sha512-KxcSRfUbb94dP77xTip2myoE7P2HQQN4V5fRJmNAGbzcyLciJ+aDylUU/UxgNcEjawUp6Q242NbWb1TSbKoqog== + dependencies: + "@chakra-ui/number-utils" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.0.7" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/css-reset@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/css-reset/-/css-reset-2.1.1.tgz#c61f3d2103c13e62a86fd2d359682092e961852c" + integrity sha512-jwEOfIAWmQsnChHQTW/eRE+dfE4MjmhvSvoUug5nkV1pI7veC/20noFlIZxzi82EbiQI8Fs0+Jnusgxr2yaOHA== + +"@chakra-ui/descendant@3.0.14": + version "3.0.14" + resolved "https://registry.yarnpkg.com/@chakra-ui/descendant/-/descendant-3.0.14.tgz#fe8bac3f0e1ffe562e3e73eac393dbf222d57e13" + integrity sha512-+Ahvp9H4HMpfScIv9w1vaecGz7qWAaK1YFHHolz/SIsGLaLGlbdp+5UNabQC7L6TUnzzJDQDxzwif78rTD7ang== + dependencies: + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-use-merge-refs" "2.0.7" + +"@chakra-ui/dom-utils@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/dom-utils/-/dom-utils-2.0.6.tgz#68f49f3b4a0bdebd5e416d6fd2c012c9ad64b76a" + integrity sha512-PVtDkPrDD5b8aoL6Atg7SLjkwhWb7BwMcLOF1L449L3nZN+DAO3nyAh6iUhZVJyunELj9d0r65CDlnMREyJZmA== + +"@chakra-ui/editable@2.0.21": + version "2.0.21" + resolved "https://registry.yarnpkg.com/@chakra-ui/editable/-/editable-2.0.21.tgz#bc74510470d6d455844438e540851896d3879132" + integrity sha512-oYuXbHnggxSYJN7P9Pn0Scs9tPC91no4z1y58Oe+ILoJKZ+bFAEHtL7FEISDNJxw++MEukeFu7GU1hVqmdLsKQ== + dependencies: + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-types" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.0.7" + "@chakra-ui/react-use-controllable-state" "2.0.8" + "@chakra-ui/react-use-focus-on-pointer-down" "2.0.6" + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/event-utils@2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/event-utils/-/event-utils-2.0.8.tgz#e6439ba200825a2f15d8f1973d267d1c00a6d1b4" + integrity sha512-IGM/yGUHS+8TOQrZGpAKOJl/xGBrmRYJrmbHfUE7zrG3PpQyXvbLDP1M+RggkCFVgHlJi2wpYIf0QtQlU0XZfw== + +"@chakra-ui/focus-lock@2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@chakra-ui/focus-lock/-/focus-lock-2.0.16.tgz#bfb705b565d70b2f908d7c7a27f40426ac48dff8" + integrity sha512-UuAdGCPVrCa1lecoAvpOQD7JFT7a9RdmhKWhFt5ioIcekSLJcerdLHuuL3w0qz//8kd1/SOt7oP0aJqdAJQrCw== + dependencies: + "@chakra-ui/dom-utils" "2.0.6" + react-focus-lock "^2.9.2" + +"@chakra-ui/form-control@2.0.18": + version "2.0.18" + resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-2.0.18.tgz#1923f293afde70b2b07ca731d98fef3660098c56" + integrity sha512-I0a0jG01IAtRPccOXSNugyRdUAe8Dy40ctqedZvznMweOXzbMCF1m+sHPLdWeWC/VI13VoAispdPY0/zHOdjsQ== + dependencies: + "@chakra-ui/icon" "3.0.16" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-types" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/hooks@2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/hooks/-/hooks-2.1.6.tgz#4d829535868148912ef7a4ff274e03b8d1cf7c72" + integrity sha512-oMSOeoOF6/UpwTVlDFHSROAA4hPY8WgJ0erdHs1ZkuwAwHv7UzjDkvrb6xYzAAH9qHoFzc5RIBm6jVoh3LCc+Q== + dependencies: + "@chakra-ui/react-utils" "2.0.12" + "@chakra-ui/utils" "2.0.15" + compute-scroll-into-view "1.0.20" + copy-to-clipboard "3.3.3" + +"@chakra-ui/icon@3.0.16": + version "3.0.16" + resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-3.0.16.tgz#6413ec637c0c3acc204301485f05451b5bcd6ba4" + integrity sha512-RpA1X5Ptz8Mt39HSyEIW1wxAz2AXyf9H0JJ5HVx/dBdMZaGMDJ0HyyPBVci0m4RCoJuyG1HHG/DXJaVfUTVAeg== + dependencies: + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/image@2.0.15": + version "2.0.15" + resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-2.0.15.tgz#7f275f8f3edbb420e0613afd5023ad9cf442d09d" + integrity sha512-w2rElXtI3FHXuGpMCsSklus+pO1Pl2LWDwsCGdpBQUvGFbnHfl7MftQgTlaGHeD5OS95Pxva39hKrA2VklKHiQ== + dependencies: + "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/input@2.0.21": + version "2.0.21" + resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-2.0.21.tgz#a7e55ea6fa32ae39c0f6ec44ca2189933fda9eb5" + integrity sha512-AIWjjg6MgcOtlvKmVoZfPPfgF+sBSWL3Zq2HSCAMvS6h7jfxz/Xv0UTFGPk5F4Wt0YHT7qMySg0Jsm0b78HZJg== + dependencies: + "@chakra-ui/form-control" "2.0.18" + "@chakra-ui/object-utils" "2.0.8" + "@chakra-ui/react-children-utils" "2.0.6" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/layout@2.1.18": + version "2.1.18" + resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-2.1.18.tgz#f5dba687dfced9145d495f3a21edb5672df6bb73" + integrity sha512-F4Gh2e+DGdaWdWT5NZduIFD9NM7Bnuh8sXARFHWPvIu7yvAwZ3ddqC9GK4F3qUngdmkJxDLWQqRSwSh96Lxbhw== + dependencies: + "@chakra-ui/breakpoint-utils" "2.0.8" + "@chakra-ui/icon" "3.0.16" + "@chakra-ui/object-utils" "2.0.8" + "@chakra-ui/react-children-utils" "2.0.6" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/lazy-utils@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/lazy-utils/-/lazy-utils-2.0.5.tgz#363c3fa1d421362790b416ffa595acb835e1ae5b" + integrity sha512-UULqw7FBvcckQk2n3iPO56TMJvDsNv0FKZI6PlUNJVaGsPbsYxK/8IQ60vZgaTVPtVcjY6BE+y6zg8u9HOqpyg== + +"@chakra-ui/live-region@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/live-region/-/live-region-2.0.13.tgz#1d00a637b74372d1ee0b215c649ebd4a33893e58" + integrity sha512-Ja+Slk6ZkxSA5oJzU2VuGU7TpZpbMb/4P4OUhIf2D30ctmIeXkxTWw1Bs1nGJAVtAPcGS5sKA+zb89i8g+0cTQ== + +"@chakra-ui/media-query@3.2.12": + version "3.2.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-3.2.12.tgz#75e31f3c88818e687a4d90a2993286c2c3ca2453" + integrity sha512-8pSLDf3oxxhFrhd40rs7vSeIBfvOmIKHA7DJlGUC/y+9irD24ZwgmCtFnn+y3gI47hTJsopbSX+wb8nr7XPswA== + dependencies: + "@chakra-ui/breakpoint-utils" "2.0.8" + "@chakra-ui/react-env" "3.0.0" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/menu@2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-2.1.12.tgz#ab83b7a5165bd31a6c68328d7f65a79e3412c48d" + integrity sha512-ylNK1VJlr/3/EGg9dLPZ87cBJJjeiYXeU/gOAphsKXMnByrXWhbp4YVnyyyha2KZ0zEw0aPU4nCZ+A69aT9wrg== + dependencies: + "@chakra-ui/clickable" "2.0.14" + "@chakra-ui/descendant" "3.0.14" + "@chakra-ui/lazy-utils" "2.0.5" + "@chakra-ui/popper" "3.0.13" + "@chakra-ui/react-children-utils" "2.0.6" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-use-animation-state" "2.0.8" + "@chakra-ui/react-use-controllable-state" "2.0.8" + "@chakra-ui/react-use-disclosure" "2.0.8" + "@chakra-ui/react-use-focus-effect" "2.0.9" + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-outside-click" "2.0.7" + "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/shared-utils" "2.0.5" + "@chakra-ui/transition" "2.0.16" + +"@chakra-ui/modal@2.2.11": + version "2.2.11" + resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-2.2.11.tgz#8a964288759f3d681e23bfc3a837a3e2c7523f8e" + integrity sha512-2J0ZUV5tEzkPiawdkgPz6bmex7NXAde1VXooMwdvK+vuT8PV3U61yorTJOZVLdw7TjjI1Yo94mzsp6UwBud43Q== + dependencies: + "@chakra-ui/close-button" "2.0.17" + "@chakra-ui/focus-lock" "2.0.16" + "@chakra-ui/portal" "2.0.16" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-types" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/shared-utils" "2.0.5" + "@chakra-ui/transition" "2.0.16" + aria-hidden "^1.2.2" + react-remove-scroll "^2.5.5" + +"@chakra-ui/number-input@2.0.19": + version "2.0.19" + resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-2.0.19.tgz#82d4522036904c04d07e7050822fc522f9b32233" + integrity sha512-HDaITvtMEqOauOrCPsARDxKD9PSHmhWywpcyCSOX0lMe4xx2aaGhU0QQFhsJsykj8Er6pytMv6t0KZksdDv3YA== + dependencies: + "@chakra-ui/counter" "2.0.14" + "@chakra-ui/form-control" "2.0.18" + "@chakra-ui/icon" "3.0.16" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-types" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.0.7" + "@chakra-ui/react-use-event-listener" "2.0.7" + "@chakra-ui/react-use-interval" "2.0.5" + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/number-utils@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/number-utils/-/number-utils-2.0.7.tgz#aaee979ca2fb1923a0373a91619473811315db11" + integrity sha512-yOGxBjXNvLTBvQyhMDqGU0Oj26s91mbAlqKHiuw737AXHt0aPllOthVUqQMeaYLwLCjGMg0jtI7JReRzyi94Dg== + +"@chakra-ui/object-utils@2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/object-utils/-/object-utils-2.0.8.tgz#307f927f6434f99feb32ba92bdf451a6b59a6199" + integrity sha512-2upjT2JgRuiupdrtBWklKBS6tqeGMA77Nh6Q0JaoQuH/8yq+15CGckqn3IUWkWoGI0Fg3bK9LDlbbD+9DLw95Q== + +"@chakra-ui/pin-input@2.0.20": + version "2.0.20" + resolved "https://registry.yarnpkg.com/@chakra-ui/pin-input/-/pin-input-2.0.20.tgz#5bf115bf4282b69fc6532a9c542cbf41f815d200" + integrity sha512-IHVmerrtHN8F+jRB3W1HnMir1S1TUCWhI7qDInxqPtoRffHt6mzZgLZ0izx8p1fD4HkW4c1d4/ZLEz9uH9bBRg== + dependencies: + "@chakra-ui/descendant" "3.0.14" + "@chakra-ui/react-children-utils" "2.0.6" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-use-controllable-state" "2.0.8" + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/popover@2.1.9": + version "2.1.9" + resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-2.1.9.tgz#890cc0dfc5022757715ccf772ec194e7a409275f" + integrity sha512-OMJ12VVs9N32tFaZSOqikkKPtwAVwXYsES/D1pff/amBrE3ngCrpxJSIp4uvTdORfIYDojJqrR52ZplDKS9hRQ== + dependencies: + "@chakra-ui/close-button" "2.0.17" + "@chakra-ui/lazy-utils" "2.0.5" + "@chakra-ui/popper" "3.0.13" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-types" "2.0.7" + "@chakra-ui/react-use-animation-state" "2.0.8" + "@chakra-ui/react-use-disclosure" "2.0.8" + "@chakra-ui/react-use-focus-effect" "2.0.9" + "@chakra-ui/react-use-focus-on-pointer-down" "2.0.6" + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/popper@3.0.13": + version "3.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/popper/-/popper-3.0.13.tgz#914a90e9ae2b83d39a0f40a5454267f1266a2cb6" + integrity sha512-FwtmYz80Ju8oK3Z1HQfisUE7JIMmDsCQsRBu6XuJ3TFQnBHit73yjZmxKjuRJ4JgyT4WBnZoTF3ATbRKSagBeg== + dependencies: + "@chakra-ui/react-types" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@popperjs/core" "^2.9.3" + +"@chakra-ui/portal@2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@chakra-ui/portal/-/portal-2.0.16.tgz#e5ce3f9d9e559f17a95276e0c006d0e9b7703442" + integrity sha512-bVID0qbQ0l4xq38LdqAN4EKD4/uFkDnXzFwOlviC9sl0dNhzICDb1ltuH/Adl1d2HTMqyN60O3GO58eHy7plnQ== + dependencies: + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + +"@chakra-ui/progress@2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/progress/-/progress-2.1.6.tgz#398db20440979c37adb0a34821f805ae3471873b" + integrity sha512-hHh5Ysv4z6bK+j2GJbi/FT9CVyto2PtNUNwBmr3oNMVsoOUMoRjczfXvvYqp0EHr9PCpxqrq7sRwgQXUzhbDSw== + dependencies: + "@chakra-ui/react-context" "2.0.8" + +"@chakra-ui/provider@2.2.2": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@chakra-ui/provider/-/provider-2.2.2.tgz#a798d1c243f33e00c85763834a7350e0d1c643ad" + integrity sha512-UVwnIDnAWq1aKroN5AF+OpNpUqLVeIUk7tKvX3z4CY9FsPFFi6LTEhRHdhpwaU1Tau3Tf9agEu5URegpY7S8BA== + dependencies: + "@chakra-ui/css-reset" "2.1.1" + "@chakra-ui/portal" "2.0.16" + "@chakra-ui/react-env" "3.0.0" + "@chakra-ui/system" "2.5.5" + "@chakra-ui/utils" "2.0.15" + +"@chakra-ui/radio@2.0.22": + version "2.0.22" + resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-2.0.22.tgz#fad0ce7c9ba4051991ed517cac4cfe526d6d47d9" + integrity sha512-GsQ5WAnLwivWl6gPk8P1x+tCcpVakCt5R5T0HumF7DGPXKdJbjS+RaFySrbETmyTJsKY4QrfXn+g8CWVrMjPjw== + dependencies: + "@chakra-ui/form-control" "2.0.18" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-types" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/shared-utils" "2.0.5" + "@zag-js/focus-visible" "0.2.2" + +"@chakra-ui/react-children-utils@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-children-utils/-/react-children-utils-2.0.6.tgz#6c480c6a60678fcb75cb7d57107c7a79e5179b92" + integrity sha512-QVR2RC7QsOsbWwEnq9YduhpqSFnZGvjjGREV8ygKi8ADhXh93C8azLECCUVgRJF2Wc+So1fgxmjLcbZfY2VmBA== + +"@chakra-ui/react-context@2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-context/-/react-context-2.0.8.tgz#5e0ed33ac3995875a21dea0e12b0ee5fc4c2e3cc" + integrity sha512-tRTKdn6lCTXM6WPjSokAAKCw2ioih7Eg8cNgaYRSwKBck8nkz9YqxgIIEj3dJD7MGtpl24S/SNI98iRWkRwR/A== + +"@chakra-ui/react-env@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-env/-/react-env-3.0.0.tgz#2c3c9dc0e529b9b474a386a2b24988317b2a0811" + integrity sha512-tfMRO2v508HQWAqSADFrwZgR9oU10qC97oV6zGbjHh9ALP0/IcFR+Bi71KRTveDTm85fMeAzZYGj57P3Dsipkw== + dependencies: + "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + +"@chakra-ui/react-types@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-types/-/react-types-2.0.7.tgz#799c166a44882b23059c8f510eac9bd5d0869ac4" + integrity sha512-12zv2qIZ8EHwiytggtGvo4iLT0APris7T0qaAWqzpUGS0cdUtR8W+V1BJ5Ocq+7tA6dzQ/7+w5hmXih61TuhWQ== + +"@chakra-ui/react-use-animation-state@2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.8.tgz#544ef3007498d4a0629b9d1916056ddaf59aa286" + integrity sha512-xv9zSF2Rd1mHWQ+m5DLBWeh4atF8qrNvsOs3MNrvxKYBS3f79N3pqcQGrWAEvirXWXfiCeje2VAkEggqFRIo+Q== + dependencies: + "@chakra-ui/dom-utils" "2.0.6" + "@chakra-ui/react-use-event-listener" "2.0.7" + +"@chakra-ui/react-use-callback-ref@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.7.tgz#9b844a81037d0ecaaa8031979fa050165635e211" + integrity sha512-YjT76nTpfHAK5NxplAlZsQwNju5KmQExnqsWNPFeOR6vvbC34+iPSTr+r91i1Hdy7gBSbevsOsd5Wm6RN3GuMw== + +"@chakra-ui/react-use-controllable-state@2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.8.tgz#6b71187e03be632c244dde9f16ed685428087ec9" + integrity sha512-F7rdCbLEmRjwwODqWZ3y+mKgSSHPcLQxeUygwk1BkZPXbKkJJKymOIjIynil2cbH7ku3hcSIWRvuhpCcfQWJ7Q== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.7" + +"@chakra-ui/react-use-disclosure@2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.8.tgz#e0e0445afc6d6d96bb262b99751e675034c31497" + integrity sha512-2ir/mHe1YND40e+FyLHnDsnDsBQPwzKDLzfe9GZri7y31oU83JSbHdlAXAhp3bpjohslwavtRCp+S/zRxfO9aQ== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.7" + +"@chakra-ui/react-use-event-listener@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.7.tgz#ed08164164e79183d876eeb71e12c6bfaca3ad17" + integrity sha512-4wvpx4yudIO3B31pOrXuTHDErawmwiXnvAN7gLEOVREi16+YGNcFnRJ5X5nRrmB7j2MDUtsEDpRBFfw5Z9xQ5g== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.7" + +"@chakra-ui/react-use-focus-effect@2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.9.tgz#9f94c0cb54e6e14ac9f048ca4d32a1fdcea067c1" + integrity sha512-20nfNkpbVwyb41q9wxp8c4jmVp6TUGAPE3uFTDpiGcIOyPW5aecQtPmTXPMJH+2aa8Nu1wyoT1btxO+UYiQM3g== + dependencies: + "@chakra-ui/dom-utils" "2.0.6" + "@chakra-ui/react-use-event-listener" "2.0.7" + "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/react-use-update-effect" "2.0.7" + +"@chakra-ui/react-use-focus-on-pointer-down@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.6.tgz#13330eb518c17e591c908cb8f4a30d43a978e3f2" + integrity sha512-OigXiLRVySn3tyVqJ/rn57WGuukW8TQe8fJYiLwXbcNyAMuYYounvRxvCy2b53sQ7QIZamza0N0jhirbH5FNoQ== + dependencies: + "@chakra-ui/react-use-event-listener" "2.0.7" + +"@chakra-ui/react-use-interval@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-interval/-/react-use-interval-2.0.5.tgz#c1a0043bf188b19b790a27668f4e860391335a60" + integrity sha512-1nbdwMi2K87V6p5f5AseOKif2CkldLaJlq1TOqaPRwb7v3aU9rltBtYdf+fIyuHSToNJUV6wd9budCFdLCl3Fg== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.7" + +"@chakra-ui/react-use-latest-ref@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.5.tgz#b61dc4dadda340f7b14df0ec1d50ab2e507b3b3e" + integrity sha512-3mIuFzMyIo3Ok/D8uhV9voVg7KkrYVO/pwVvNPJOHsDQqCA6DpYE4WDsrIx+fVcwad3Ta7SupexR5PoI+kq6QQ== + +"@chakra-ui/react-use-merge-refs@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.7.tgz#1a1fe800fb5501ec3da4088fbac78c03bbad13a7" + integrity sha512-zds4Uhsc+AMzdH8JDDkLVet9baUBgtOjPbhC5r3A0ZXjZvGhCztFAVE3aExYiVoMPoHLKbLcqvCWE6ioFKz1lw== + +"@chakra-ui/react-use-outside-click@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.7.tgz#56c668f020fbc6331db4c3b61c8b845a68c4a134" + integrity sha512-MsAuGLkwYNxNJ5rb8lYNvXApXxYMnJ3MzqBpQj1kh5qP/+JSla9XMjE/P94ub4fSEttmNSqs43SmPPrmPuihsQ== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.7" + +"@chakra-ui/react-use-pan-event@2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.9.tgz#0ff33a285e75a692d1ed52dbb9f3046a593b8004" + integrity sha512-xu35QXkiyrgsHUOnctl+SwNcwf9Rl62uYE5y8soKOZdBm8E+FvZIt2hxUzK1EoekbJCMzEZ0Yv1ZQCssVkSLaQ== + dependencies: + "@chakra-ui/event-utils" "2.0.8" + "@chakra-ui/react-use-latest-ref" "2.0.5" + framesync "6.1.2" + +"@chakra-ui/react-use-previous@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-previous/-/react-use-previous-2.0.5.tgz#65836cc81e3a1bf4252cd08a71094f1be827b56c" + integrity sha512-BIZgjycPE4Xr+MkhKe0h67uHXzQQkBX/u5rYPd65iMGdX1bCkbE0oorZNfOHLKdTmnEb4oVsNvfN6Rfr+Mnbxw== + +"@chakra-ui/react-use-safe-layout-effect@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.5.tgz#6cf388c37fd2a42b5295a292e149b32f860a00a7" + integrity sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ== + +"@chakra-ui/react-use-size@2.0.10": + version "2.0.10" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-size/-/react-use-size-2.0.10.tgz#6131950852490c06e5fb3760bf64097c8057391f" + integrity sha512-fdIkH14GDnKQrtQfxX8N3gxbXRPXEl67Y3zeD9z4bKKcQUAYIMqs0MsPZY+FMpGQw8QqafM44nXfL038aIrC5w== + dependencies: + "@zag-js/element-size" "0.3.2" + +"@chakra-ui/react-use-timeout@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.5.tgz#13c4e48e48d4b84ce1e062f0f1c9ec401ece78c9" + integrity sha512-QqmB+jVphh3h/CS60PieorpY7UqSPkrQCB7f7F+i9vwwIjtP8fxVHMmkb64K7VlzQiMPzv12nlID5dqkzlv0mw== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.7" + +"@chakra-ui/react-use-update-effect@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.7.tgz#f94b7975ebb150c03d410e754b54f0e9dd263134" + integrity sha512-vBM2bmmM83ZdDtasWv3PXPznpTUd+FvqBC8J8rxoRmvdMEfrxTiQRBJhiGHLpS9BPLLPQlosN6KdFU97csB6zg== + +"@chakra-ui/react-utils@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-utils/-/react-utils-2.0.12.tgz#d6b773b9a5b2e51dce61f51ac8a0e9a0f534f479" + integrity sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw== + dependencies: + "@chakra-ui/utils" "2.0.15" + +"@chakra-ui/react@^2.5.2": + version "2.5.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-2.5.5.tgz#5ae2450ec0d10d63e1314747466f21cf542032ff" + integrity sha512-aBVMUtdWv2MrptD/tKSqICPsuJ+I+jvauegffO1qPUDlK3RrXIDeOHkLGWohgXNcjY5bGVWguFEzJm97//0ooQ== + dependencies: + "@chakra-ui/accordion" "2.1.11" + "@chakra-ui/alert" "2.1.0" + "@chakra-ui/avatar" "2.2.8" + "@chakra-ui/breadcrumb" "2.1.5" + "@chakra-ui/button" "2.0.18" + "@chakra-ui/card" "2.1.6" + "@chakra-ui/checkbox" "2.2.14" + "@chakra-ui/close-button" "2.0.17" + "@chakra-ui/control-box" "2.0.13" + "@chakra-ui/counter" "2.0.14" + "@chakra-ui/css-reset" "2.1.1" + "@chakra-ui/editable" "2.0.21" + "@chakra-ui/focus-lock" "2.0.16" + "@chakra-ui/form-control" "2.0.18" + "@chakra-ui/hooks" "2.1.6" + "@chakra-ui/icon" "3.0.16" + "@chakra-ui/image" "2.0.15" + "@chakra-ui/input" "2.0.21" + "@chakra-ui/layout" "2.1.18" + "@chakra-ui/live-region" "2.0.13" + "@chakra-ui/media-query" "3.2.12" + "@chakra-ui/menu" "2.1.12" + "@chakra-ui/modal" "2.2.11" + "@chakra-ui/number-input" "2.0.19" + "@chakra-ui/pin-input" "2.0.20" + "@chakra-ui/popover" "2.1.9" + "@chakra-ui/popper" "3.0.13" + "@chakra-ui/portal" "2.0.16" + "@chakra-ui/progress" "2.1.6" + "@chakra-ui/provider" "2.2.2" + "@chakra-ui/radio" "2.0.22" + "@chakra-ui/react-env" "3.0.0" + "@chakra-ui/select" "2.0.19" + "@chakra-ui/skeleton" "2.0.24" + "@chakra-ui/slider" "2.0.23" + "@chakra-ui/spinner" "2.0.13" + "@chakra-ui/stat" "2.0.18" + "@chakra-ui/styled-system" "2.8.0" + "@chakra-ui/switch" "2.0.26" + "@chakra-ui/system" "2.5.5" + "@chakra-ui/table" "2.0.17" + "@chakra-ui/tabs" "2.1.9" + "@chakra-ui/tag" "3.0.0" + "@chakra-ui/textarea" "2.0.19" + "@chakra-ui/theme" "3.0.1" + "@chakra-ui/theme-utils" "2.0.15" + "@chakra-ui/toast" "6.1.1" + "@chakra-ui/tooltip" "2.2.7" + "@chakra-ui/transition" "2.0.16" + "@chakra-ui/utils" "2.0.15" + "@chakra-ui/visually-hidden" "2.0.15" + +"@chakra-ui/select@2.0.19": + version "2.0.19" + resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-2.0.19.tgz#957e95a17a890d8c0a851e2f00a8d8dd17932d66" + integrity sha512-eAlFh+JhwtJ17OrB6fO6gEAGOMH18ERNrXLqWbYLrs674Le7xuREgtuAYDoxUzvYXYYTTdOJtVbcHGriI3o6rA== + dependencies: + "@chakra-ui/form-control" "2.0.18" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/shared-utils@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/shared-utils/-/shared-utils-2.0.5.tgz#cb2b49705e113853647f1822142619570feba081" + integrity sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q== + +"@chakra-ui/skeleton@2.0.24": + version "2.0.24" + resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-2.0.24.tgz#dc9dcca6fc43005544fabfd38a444943b0a29cad" + integrity sha512-1jXtVKcl/jpbrJlc/TyMsFyI651GTXY5ma30kWyTXoby2E+cxbV6OR8GB/NMZdGxbQBax8/VdtYVjI0n+OBqWA== + dependencies: + "@chakra-ui/media-query" "3.2.12" + "@chakra-ui/react-use-previous" "2.0.5" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/slider@2.0.23": + version "2.0.23" + resolved "https://registry.yarnpkg.com/@chakra-ui/slider/-/slider-2.0.23.tgz#9130c7aee8ca876be64d1aeba6b84fe421c8207b" + integrity sha512-/eyRUXLla+ZdBUPXpakE3SAS2JS8mIJR6qcUYiPVKSpRAi6tMyYeQijAXn2QC1AUVd2JrG8Pz+1Jy7Po3uA7cA== + dependencies: + "@chakra-ui/number-utils" "2.0.7" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-types" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.0.7" + "@chakra-ui/react-use-controllable-state" "2.0.8" + "@chakra-ui/react-use-latest-ref" "2.0.5" + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-pan-event" "2.0.9" + "@chakra-ui/react-use-size" "2.0.10" + "@chakra-ui/react-use-update-effect" "2.0.7" + +"@chakra-ui/spinner@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/spinner/-/spinner-2.0.13.tgz#64fe919c18305c653ced046e25d5883ee4c1e7d7" + integrity sha512-T1/aSkVpUIuiYyrjfn1+LsQEG7Onbi1UE9ccS/evgf61Dzy4GgTXQUnDuWFSgpV58owqirqOu6jn/9eCwDlzlg== + dependencies: + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/stat@2.0.18": + version "2.0.18" + resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-2.0.18.tgz#9e5d21d162b7cf2cf92065c19291ead2d4660772" + integrity sha512-wKyfBqhVlIs9bkSerUc6F9KJMw0yTIEKArW7dejWwzToCLPr47u+CtYO6jlJHV6lRvkhi4K4Qc6pyvtJxZ3VpA== + dependencies: + "@chakra-ui/icon" "3.0.16" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/styled-system@2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/styled-system/-/styled-system-2.8.0.tgz#c02aa7b4a15bd826c19d055cd226bd44f7470f26" + integrity sha512-bmRv/8ACJGGKGx84U1npiUddwdNifJ+/ETklGwooS5APM0ymwUtBYZpFxjYNJrqvVYpg3mVY6HhMyBVptLS7iA== + dependencies: + "@chakra-ui/shared-utils" "2.0.5" + csstype "^3.0.11" + lodash.mergewith "4.6.2" + +"@chakra-ui/switch@2.0.26": + version "2.0.26" + resolved "https://registry.yarnpkg.com/@chakra-ui/switch/-/switch-2.0.26.tgz#b93eeafd788e47c21222524adceffe9ef62602d6" + integrity sha512-x62lF6VazSZJQuVxosChVR6+0lIJe8Pxgkl/C9vxjhp2yVYb3mew5tcX/sDOu0dYZy8ro/9hMfGkdN4r9xEU8A== + dependencies: + "@chakra-ui/checkbox" "2.2.14" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/system@2.5.5": + version "2.5.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-2.5.5.tgz#b8b070d07ca9b0190363100396eea02cca754cec" + integrity sha512-52BIp/Zyvefgxn5RTByfkTeG4J+y81LWEjWm8jCaRFsLVm8IFgqIrngtcq4I7gD5n/UKbneHlb4eLHo4uc5yDQ== + dependencies: + "@chakra-ui/color-mode" "2.1.12" + "@chakra-ui/object-utils" "2.0.8" + "@chakra-ui/react-utils" "2.0.12" + "@chakra-ui/styled-system" "2.8.0" + "@chakra-ui/theme-utils" "2.0.15" + "@chakra-ui/utils" "2.0.15" + react-fast-compare "3.2.1" + +"@chakra-ui/table@2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@chakra-ui/table/-/table-2.0.17.tgz#ad394dc6dcbe5a8a9e6d899997ecca3471603977" + integrity sha512-OScheTEp1LOYvTki2NFwnAYvac8siAhW9BI5RKm5f5ORL2gVJo4I72RUqE0aKe1oboxgm7CYt5afT5PS5cG61A== + dependencies: + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/tabs@2.1.9": + version "2.1.9" + resolved "https://registry.yarnpkg.com/@chakra-ui/tabs/-/tabs-2.1.9.tgz#2e5214cb453c6cc0c240e82bd88af1042fc6fe0e" + integrity sha512-Yf8e0kRvaGM6jfkJum0aInQ0U3ZlCafmrYYni2lqjcTtThqu+Yosmo3iYlnullXxCw5MVznfrkb9ySvgQowuYg== + dependencies: + "@chakra-ui/clickable" "2.0.14" + "@chakra-ui/descendant" "3.0.14" + "@chakra-ui/lazy-utils" "2.0.5" + "@chakra-ui/react-children-utils" "2.0.6" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-use-controllable-state" "2.0.8" + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/tag@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-3.0.0.tgz#d86cdab59bb3ff7fc628c2dbe7a5ff1b36bd3e96" + integrity sha512-YWdMmw/1OWRwNkG9pX+wVtZio+B89odaPj6XeMn5nfNN8+jyhIEpouWv34+CO9G0m1lupJTxPSfgLAd7cqXZMA== + dependencies: + "@chakra-ui/icon" "3.0.16" + "@chakra-ui/react-context" "2.0.8" + +"@chakra-ui/textarea@2.0.19": + version "2.0.19" + resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-2.0.19.tgz#470b459f9cb3255d2abbe07d46b0a5b60a6a32c5" + integrity sha512-adJk+qVGsFeJDvfn56CcJKKse8k7oMGlODrmpnpTdF+xvlsiTM+1GfaJvgNSpHHuQFdz/A0z1uJtfGefk0G2ZA== + dependencies: + "@chakra-ui/form-control" "2.0.18" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/theme-tools@2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme-tools/-/theme-tools-2.0.17.tgz#9496094336c9480f950c8d7ab6e05f1c19caa955" + integrity sha512-Auu38hnihlJZQcPok6itRDBbwof3TpXGYtDPnOvrq4Xp7jnab36HLt7KEXSDPXbtOk3ZqU99pvI1en5LbDrdjg== + dependencies: + "@chakra-ui/anatomy" "2.1.2" + "@chakra-ui/shared-utils" "2.0.5" + color2k "^2.0.0" + +"@chakra-ui/theme-utils@2.0.15": + version "2.0.15" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme-utils/-/theme-utils-2.0.15.tgz#968a5e8c47bb403323fe67049c7b751a6e47f069" + integrity sha512-UuxtEgE7gwMTGDXtUpTOI7F5X0iHB9ekEOG5PWPn2wWBL7rlk2JtPI7UP5Um5Yg6vvBfXYGK1ySahxqsgf+87g== + dependencies: + "@chakra-ui/shared-utils" "2.0.5" + "@chakra-ui/styled-system" "2.8.0" + "@chakra-ui/theme" "3.0.1" + lodash.mergewith "4.6.2" + +"@chakra-ui/theme@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-3.0.1.tgz#151fc5d1e23d0fd0cd29d28acf8f6017269c13fc" + integrity sha512-92kDm/Ux/51uJqhRKevQo/O/rdwucDYcpHg2QuwzdAxISCeYvgtl2TtgOOl5EnqEP0j3IEAvZHZUlv8TTbawaw== + dependencies: + "@chakra-ui/anatomy" "2.1.2" + "@chakra-ui/shared-utils" "2.0.5" + "@chakra-ui/theme-tools" "2.0.17" + +"@chakra-ui/toast@6.1.1": + version "6.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-6.1.1.tgz#7ca78f38069bc87fa75b64de76c8fc2758bdf419" + integrity sha512-JtjIKkPVjEu8okGGCipCxNVgK/15h5AicTATZ6RbG2MsHmr4GfKG3fUCvpbuZseArqmLqGLQZQJjVE9vJzaSkQ== + dependencies: + "@chakra-ui/alert" "2.1.0" + "@chakra-ui/close-button" "2.0.17" + "@chakra-ui/portal" "2.0.16" + "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-use-timeout" "2.0.5" + "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/shared-utils" "2.0.5" + "@chakra-ui/styled-system" "2.8.0" + "@chakra-ui/theme" "3.0.1" + +"@chakra-ui/tooltip@2.2.7": + version "2.2.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-2.2.7.tgz#7c305efb057a5fe4694b1b8d82395aec776d8f57" + integrity sha512-ImUJ6NnVqARaYqpgtO+kzucDRmxo8AF3jMjARw0bx2LxUkKwgRCOEaaRK5p5dHc0Kr6t5/XqjDeUNa19/sLauA== + dependencies: + "@chakra-ui/popper" "3.0.13" + "@chakra-ui/portal" "2.0.16" + "@chakra-ui/react-types" "2.0.7" + "@chakra-ui/react-use-disclosure" "2.0.8" + "@chakra-ui/react-use-event-listener" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/transition@2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-2.0.16.tgz#498c91e6835bb5d950fd1d1402f483b85f7dcd87" + integrity sha512-E+RkwlPc3H7P1crEXmXwDXMB2lqY2LLia2P5siQ4IEnRWIgZXlIw+8Em+NtHNgusel2N+9yuB0wT9SeZZeZ3CQ== + dependencies: + "@chakra-ui/shared-utils" "2.0.5" + +"@chakra-ui/utils@2.0.15": + version "2.0.15" + resolved "https://registry.yarnpkg.com/@chakra-ui/utils/-/utils-2.0.15.tgz#bd800b1cff30eb5a5e8c36fa039f49984b4c5e4a" + integrity sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA== + dependencies: + "@types/lodash.mergewith" "4.6.7" + css-box-model "1.2.1" + framesync "6.1.2" + lodash.mergewith "4.6.2" + +"@chakra-ui/visually-hidden@2.0.15": + version "2.0.15" + resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-2.0.15.tgz#60df64e0ab97d95fee4e6c61ccabd15fd5ace398" + integrity sha512-WWULIiucYRBIewHKFA7BssQ2ABLHLVd9lrUo3N3SZgR0u4ZRDDVEUNOy+r+9ruDze8+36dGbN9wsN1IdELtdOw== + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -1483,6 +2291,23 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== +"@emotion/babel-plugin@^11.10.6": + version "11.10.6" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.6.tgz#a68ee4b019d661d6f37dec4b8903255766925ead" + integrity sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.0" + "@emotion/memoize" "^0.8.0" + "@emotion/serialize" "^1.1.1" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.1.3" + "@emotion/babel-plugin@^11.11.0": version "11.11.0" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" @@ -1500,7 +2325,7 @@ source-map "^0.5.7" stylis "4.2.0" -"@emotion/cache@*": +"@emotion/cache@*", "@emotion/cache@^11.10.5": version "11.10.5" resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.5.tgz#c142da9351f94e47527ed458f7bbbbe40bb13c12" integrity sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA== @@ -1532,6 +2357,20 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== +"@emotion/is-prop-valid@^0.8.2": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== + dependencies: + "@emotion/memoize" "0.7.4" + +"@emotion/is-prop-valid@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" + integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== + dependencies: + "@emotion/memoize" "^0.8.0" + "@emotion/is-prop-valid@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" @@ -1539,6 +2378,11 @@ dependencies: "@emotion/memoize" "^0.8.1" +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + "@emotion/memoize@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" @@ -1549,6 +2393,20 @@ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== +"@emotion/react@^11.10.6": + version "11.10.6" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.6.tgz#dbe5e650ab0f3b1d2e592e6ab1e006e75fd9ac11" + integrity sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.10.6" + "@emotion/cache" "^11.10.5" + "@emotion/serialize" "^1.1.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" + hoist-non-react-statics "^3.3.1" + "@emotion/react@^11.11.1": version "11.11.1" resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.1.tgz#b2c36afac95b184f73b08da8c214fdf861fa4157" @@ -1563,7 +2421,7 @@ "@emotion/weak-memoize" "^0.3.1" hoist-non-react-statics "^3.3.1" -"@emotion/serialize@*": +"@emotion/serialize@*", "@emotion/serialize@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0" integrity sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA== @@ -1605,6 +2463,18 @@ resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== +"@emotion/styled@^11.10.6": + version "11.10.6" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.6.tgz#d886afdc51ef4d66c787ebde848f3cc8b117ebba" + integrity sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.10.6" + "@emotion/is-prop-valid" "^1.2.0" + "@emotion/serialize" "^1.1.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@emotion/utils" "^1.2.0" + "@emotion/styled@^11.11.0": version "11.11.0" resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.11.0.tgz#26b75e1b5a1b7a629d7c0a8b708fbf5a9cdce346" @@ -1627,6 +2497,11 @@ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== +"@emotion/use-insertion-effect-with-fallbacks@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" + integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== + "@emotion/use-insertion-effect-with-fallbacks@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" @@ -2370,6 +3245,11 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== +"@popperjs/core@^2.9.3": + version "2.11.7" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.7.tgz#ccab5c8f7dc557a52ca3288c10075c9ccd37fff7" + integrity sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw== + "@rollup/plugin-commonjs@24.0.0": version "24.0.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.0.tgz#fb7cf4a6029f07ec42b25daa535c75b05a43f75c" @@ -2382,6 +3262,11 @@ is-reference "1.2.1" magic-string "^0.27.0" +"@rollup/plugin-virtual@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-virtual/-/plugin-virtual-3.0.1.tgz#cea7e489481cc0ca91516c047f8c53c1cfb1adf6" + integrity sha512-fK8O0IL5+q+GrsMLuACVNk2x21g3yaw+sG2qn16SnUd3IlBsQyvWxLMGHmCmXRMecPjGRSZ/1LmZB4rjQm68og== + "@rollup/pluginutils@^5.0.1": version "5.0.2" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" @@ -2558,11 +3443,73 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@socialgouv/e2esdk-api@^1.0.0-beta.14": + version "1.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@socialgouv/e2esdk-api/-/e2esdk-api-1.0.0-beta.14.tgz#ea0fc8d70644a62972c09b387f1a20368f9a2ea1" + integrity sha512-nlAGwK+tTlS7Psrd3oITZwq5jqvhdEDfJf9KsHtge/GKfWDw6rumtE5/bPh1oEg6pINeUZ4vBS2Wsa+6TtNhmg== + dependencies: + zod "^3.21.4" + +"@socialgouv/e2esdk-client@1.0.0-beta.28": + version "1.0.0-beta.28" + resolved "https://registry.yarnpkg.com/@socialgouv/e2esdk-client/-/e2esdk-client-1.0.0-beta.28.tgz#281d7ededffdbcfc2edcc07fadcfb616fd51ea6c" + integrity sha512-Rdzo/c5F/kneDijkm0vaK/s5JPp5dYm38Ncf1wBY24iFmZ560PDTdjI9U68U0RbChOnuw1J23ZYw8tDG2N8jBQ== + dependencies: + "@47ng/opaque-client" "^2.1.5" + "@socialgouv/e2esdk-api" "^1.0.0-beta.14" + "@socialgouv/e2esdk-crypto" "^1.0.0-beta.20" + local-state-sync "1.0.0-beta.6" + mitt "^3.0.0" + secure-json-parse "^2.7.0" + zod "^3.21.4" + +"@socialgouv/e2esdk-crypto@1.0.0-beta.20", "@socialgouv/e2esdk-crypto@^1.0.0-beta.20": + version "1.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@socialgouv/e2esdk-crypto/-/e2esdk-crypto-1.0.0-beta.20.tgz#a211e9ee9e1e4d0fb934abc21810a4250a6d7579" + integrity sha512-7GIvHvqZyRHvht2R6wafKDVnH92Cjat3TdfJFibLvPWvbNUFaJ3+uaHJrKrcYP52hLcN1yxzj5XD1Nyt5pBH5A== + dependencies: + "@socialgouv/e2esdk-api" "^1.0.0-beta.14" + "@stablelib/hex" "^1.0.1" + libsodium-wrappers "^0.7.11" + secure-json-parse "^2.7.0" + zod "^3.21.4" + +"@socialgouv/e2esdk-devtools@1.0.0-beta.38": + version "1.0.0-beta.38" + resolved "https://registry.yarnpkg.com/@socialgouv/e2esdk-devtools/-/e2esdk-devtools-1.0.0-beta.38.tgz#da1437ce32a81303d28213b17eef6f2fd6633830" + integrity sha512-zWdVnF8cTKazJxYRW9CaZfWMpQb/Z96zqGBcGmGI7z/INjH6+ABv0NgJftp6zxUdXqiyQ/XoRS1dCu6HvCsEhA== + dependencies: + "@chakra-ui/react" "^2.5.2" + "@emotion/cache" "^11.10.5" + "@emotion/react" "^11.10.6" + "@emotion/styled" "^11.10.6" + "@socialgouv/e2esdk-api" "^1.0.0-beta.14" + "@socialgouv/e2esdk-crypto" "^1.0.0-beta.20" + "@socialgouv/e2esdk-react" "^1.0.0-beta.28" + "@tanstack/react-query" "^4.28.0" + "@tanstack/react-query-devtools" "^4.28.0" + framer-motion "^10.8.4" + react-focus-lock "^2.9.4" + react-hook-form "^7.43.7" + react-icons "^4.8.0" + vite-plugin-top-level-await "^1.3.0" + zod "^3.21.4" + +"@socialgouv/e2esdk-react@1.0.0-beta.28", "@socialgouv/e2esdk-react@^1.0.0-beta.28": + version "1.0.0-beta.28" + resolved "https://registry.yarnpkg.com/@socialgouv/e2esdk-react/-/e2esdk-react-1.0.0-beta.28.tgz#d2ab6690b8b64fec4d9ced54ddb1e695c48c1b9b" + integrity sha512-VErxdP/wPTNBiM85/sL2bMDL10PFWjkI8UKvzJlOq614uEvSZXS0+8rL9y+bqEzyCSqezyBv14owNkxQdU9FIQ== + "@socialgouv/matomo-next@^1.6.1": version "1.6.1" resolved "https://registry.yarnpkg.com/@socialgouv/matomo-next/-/matomo-next-1.6.1.tgz#0080945dc0062fee7fe53e4c058dd40768a3c278" integrity sha512-O2lxMKZHVzvXGZNsKOnsSS+hzqxIX35CPRuVkuU8Z+EFORuO2R/iiBBfyY1d+XvexIsJOA2uHnxhJxsdeFIrRw== +"@stablelib/hex@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hex/-/hex-1.0.1.tgz#564bd46d896941c93131d1e1869eabc17cf9bab5" + integrity sha512-PQOEChVBjhYGgAD+ehO2ow1gSj1slre3jW4oMD4kV8VrhYhzmtsQDWDZej3BQO8qkVezdczDvISxVSF24PuYNA== + "@storybook/addon-actions@6.5.16", "@storybook/addon-actions@^6.4.19": version "6.5.16" resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.5.16.tgz#2d7679f64899bef165a338582cb928102a09e364" @@ -3426,6 +4373,72 @@ regenerator-runtime "^0.13.7" resolve-from "^5.0.0" +"@swc/core-darwin-arm64@1.3.49": + version "1.3.49" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.49.tgz#bc52c5caff6e0ea04f5ed457ccd7904128632524" + integrity sha512-g7aIfXh6uPHmhLXdjXQq5t3HAyS/EdvujasW1DIS5k8UqOBaSoCcSGtLIjzcLv3KujqNfYcm118E+12H0nY6fQ== + +"@swc/core-darwin-x64@1.3.49": + version "1.3.49" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.49.tgz#d1da85440380bdf62b3cf273ad29be5575cd02d6" + integrity sha512-eSIxVX0YDw40Bre5sAx2BV3DzdIGzmQvCf2yiBvLqiiL6GC0mmuDeWbUCAzdUX6fJ6FUVEBMUVqNOc9oJ2/d5w== + +"@swc/core-linux-arm-gnueabihf@1.3.49": + version "1.3.49" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.49.tgz#d193089e02211dc7a11bff0a60ef098f7c487a26" + integrity sha512-8mj3IcRVr/OJY0mVITz6Z5osNAMJK5GiKDaZ+3QejPLbl6aiu4sH4GmTHDRN14RnaVXOpecsGcUoQmNoNa3u3w== + +"@swc/core-linux-arm64-gnu@1.3.49": + version "1.3.49" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.49.tgz#c45102a93b8d7e67617f2d488549ad8d2bb26f73" + integrity sha512-Rmg9xw6tmpOpf6GKKjpHQGmjfHzqSths5ebI2ahrHlhekzZF2HYmPkVw4bHda8Bja6mbaw8FVBgBHjPU8mMeDA== + +"@swc/core-linux-arm64-musl@1.3.49": + version "1.3.49" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.49.tgz#391f20ff83b7195a2a1601e6cdb191e1b4fc112d" + integrity sha512-nlKPYMogAI3Aak6Mlkag8/2AlHAZ/DpH7RjhfMazsaGhD/sQOmYdyY9Al69ejpa419YJuREeeeLoojFlSsd30g== + +"@swc/core-linux-x64-gnu@1.3.49": + version "1.3.49" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.49.tgz#36c7a165a0bbb763eaf7186eebd759731cb058d2" + integrity sha512-QOyeJQ6NVi73SJcizbwvIZTiGA/N+BxX9liRrvibumaQmRh8fWjJiLNsv3ODSHeuonak7E8Bf7a7NnSTyu48Mw== + +"@swc/core-linux-x64-musl@1.3.49": + version "1.3.49" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.49.tgz#6b9f85b45f116aaf909ed9ee8fe2d19e19fca8fb" + integrity sha512-WlDMz+SOpYC9O/ZBUw1oiyWI7HyUCMlf/HS8Fy/kRI3eGoGCUxVTCJ1mP57GdQr4Wg32Y/ZpO2KSNQFWnT8mAw== + +"@swc/core-win32-arm64-msvc@1.3.49": + version "1.3.49" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.49.tgz#f75c69cf5804543b74846b251dec3729466d691a" + integrity sha512-41LZOeI94Za3twib8KOIjnHYAZ+nkBFmboaREsFR1760S7jiMVywqWX8nFZvn/CXj15Fjjgdgyuig+zMREwXwQ== + +"@swc/core-win32-ia32-msvc@1.3.49": + version "1.3.49" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.49.tgz#8fea171ef5fdc6983174560f0f72a30f6da0b6ba" + integrity sha512-IdqLPoMKssyAoOCZdNXmnAd6/uyx+Hb9KSfZUHepZaNfwMy6J5XXrOsbYs3v53FH8MtekUUdV+mMX4me9bcv9w== + +"@swc/core-win32-x64-msvc@1.3.49": + version "1.3.49" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.49.tgz#e5a4a3370bb55aac36e19d61ef43af6dcfe76c09" + integrity sha512-7Fqjo5pS3uIohhSbYSaR0+e/bJdxmQb4oG97FIh5qvlCCGQaQ9UiaEeYy4uK0Ad+Menum1IXCAEiG7RHcl6Eyw== + +"@swc/core@^1.3.10": + version "1.3.49" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.49.tgz#98268739aaa998403669a563062c89fa30e9b39e" + integrity sha512-br44ZHOfE9YyRGcORSLkHFQHTvhwRcaithBJ1Q5y5iMGpLbH0Wai3GN49L60RvmGwxNJfWzT+E7+rNNR7ewKgA== + optionalDependencies: + "@swc/core-darwin-arm64" "1.3.49" + "@swc/core-darwin-x64" "1.3.49" + "@swc/core-linux-arm-gnueabihf" "1.3.49" + "@swc/core-linux-arm64-gnu" "1.3.49" + "@swc/core-linux-arm64-musl" "1.3.49" + "@swc/core-linux-x64-gnu" "1.3.49" + "@swc/core-linux-x64-musl" "1.3.49" + "@swc/core-win32-arm64-msvc" "1.3.49" + "@swc/core-win32-ia32-msvc" "1.3.49" + "@swc/core-win32-x64-msvc" "1.3.49" + "@swc/helpers@0.5.1": version "0.5.1" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.1.tgz#e9031491aa3f26bfcc974a67f48bd456c8a5357a" @@ -3433,6 +4446,35 @@ dependencies: tslib "^2.4.0" +"@tanstack/match-sorter-utils@^8.7.0": + version "8.8.4" + resolved "https://registry.yarnpkg.com/@tanstack/match-sorter-utils/-/match-sorter-utils-8.8.4.tgz#0b2864d8b7bac06a9f84cb903d405852cc40a457" + integrity sha512-rKH8LjZiszWEvmi01NR72QWZ8m4xmXre0OOwlRGnjU01Eqz/QnN+cqpty2PJ0efHblq09+KilvyR7lsbzmXVEw== + dependencies: + remove-accents "0.4.2" + +"@tanstack/query-core@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.29.1.tgz#62a4bc120b85e6bb3c6c0aca96346e643e232248" + integrity sha512-vkPewLEG8ua0efo3SsVT0BcBtkq5RZX8oPhDAyKL+k/rdOYSQTEocfGEXSaBwIwsXeOGBUpfKqI+UmHvNqdWXg== + +"@tanstack/react-query-devtools@^4.28.0": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@tanstack/react-query-devtools/-/react-query-devtools-4.29.1.tgz#4cd09673b56b204fd6f18b8f4d47705ca9d288ca" + integrity sha512-lbtNGArplXLVmY8eEh8LFqZz61PJI38sASEcuKoSnEK8UgWvLCwY5vjlT8fzk10yQ4jhR3+PHKLDMXA5ifCTXw== + dependencies: + "@tanstack/match-sorter-utils" "^8.7.0" + superjson "^1.10.0" + use-sync-external-store "^1.2.0" + +"@tanstack/react-query@^4.28.0": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.29.1.tgz#5f166aca63915c52f6eda930a54d6933bfd11d1b" + integrity sha512-/crv1v+OeuGG6EOvaQmyeo9GCKtH4jbmuhZkvk9ulufRiHcTr/A9+YP9GevEAZzUTdzXMwenpTbyxBGvG2xXvw== + dependencies: + "@tanstack/query-core" "4.29.1" + use-sync-external-store "^1.2.0" + "@testing-library/dom@^8.3.0": version "8.20.0" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.0.tgz#914aa862cef0f5e89b98cc48e3445c4c921010f6" @@ -3566,6 +4608,13 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== +"@types/formidable@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/formidable/-/formidable-2.0.6.tgz#811ed3cd8a8a7675e02420b3f861c317e055376a" + integrity sha512-L4HcrA05IgQyNYJj6kItuIkXrInJvsXTPC5B1i64FggWKKqSL+4hgt7asiSNva75AoLQjq29oPxFfU4GAQ6Z2w== + dependencies: + "@types/node" "*" + "@types/glob@*": version "8.0.1" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.0.1.tgz#6e3041640148b7764adf21ce5c7138ad454725b0" @@ -3643,6 +4692,18 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/lodash.mergewith@4.6.7": + version "4.6.7" + resolved "https://registry.yarnpkg.com/@types/lodash.mergewith/-/lodash.mergewith-4.6.7.tgz#eaa65aa5872abdd282f271eae447b115b2757212" + integrity sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A== + dependencies: + "@types/lodash" "*" + +"@types/lodash@*": + version "4.14.192" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.192.tgz#5790406361a2852d332d41635d927f1600811285" + integrity sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A== + "@types/lodash@^4.14.167": version "4.14.191" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" @@ -3912,23 +4973,23 @@ "@typescript-eslint/types" "5.50.0" "@typescript-eslint/visitor-keys" "5.50.0" -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== +"@typescript-eslint/scope-manager@5.59.8": + version "5.59.8" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.8.tgz#ff4ad4fec6433647b817c4a7d4b4165d18ea2fa8" + integrity sha512-/w08ndCYI8gxGf+9zKf1vtx/16y8MHrZs5/tnjHhMLNSixuNcJavSX4wAiPf4aS5x41Es9YPCn44MIe4cxIlig== dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" + "@typescript-eslint/types" "5.59.8" + "@typescript-eslint/visitor-keys" "5.59.8" "@typescript-eslint/types@5.50.0": version "5.50.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.50.0.tgz#c461d3671a6bec6c2f41f38ed60bd87aa8a30093" integrity sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w== -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== +"@typescript-eslint/types@5.59.8": + version "5.59.8" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.8.tgz#212e54414733618f5d0fd50b2da2717f630aebf8" + integrity sha512-+uWuOhBTj/L6awoWIg0BlWy0u9TyFpCHrAuQ5bNfxDaZ1Ppb3mx6tUigc74LHcbHpOHuOTOJrBoAnhdHdaea1w== "@typescript-eslint/typescript-estree@5.50.0": version "5.50.0" @@ -3943,13 +5004,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== +"@typescript-eslint/typescript-estree@5.59.8": + version "5.59.8" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.8.tgz#801a7b1766481629481b3b0878148bd7a1f345d7" + integrity sha512-Jy/lPSDJGNow14vYu6IrW790p7HIf/SOV1Bb6lZ7NUkLc2iB2Z9elESmsaUtLw8kVqogSbtLH9tut5GCX1RLDg== dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" + "@typescript-eslint/types" "5.59.8" + "@typescript-eslint/visitor-keys" "5.59.8" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -3957,16 +5018,16 @@ tsutils "^3.21.0" "@typescript-eslint/utils@^5.45.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + version "5.59.8" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.8.tgz#34d129f35a2134c67fdaf024941e8f96050dca2b" + integrity sha512-Tr65630KysnNn9f9G7ROF3w1b5/7f6QVCJ+WK9nhIocWmx9F+TmCAcglF26Vm7z8KCTwoKcNEBZrhlklla3CKg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/scope-manager" "5.59.8" + "@typescript-eslint/types" "5.59.8" + "@typescript-eslint/typescript-estree" "5.59.8" eslint-scope "^5.1.1" semver "^7.3.7" @@ -3978,12 +5039,12 @@ "@typescript-eslint/types" "5.50.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== +"@typescript-eslint/visitor-keys@5.59.8": + version "5.59.8" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.8.tgz#aa6a7ef862add919401470c09e1609392ef3cc40" + integrity sha512-pJhi2ms0x0xgloT7xYabil3SGGlojNNKjK/q6dB3Ey0uJLMjK2UDGJvHieiyJVW/7C3KI+Z4Q3pEHkm4ejA+xQ== dependencies: - "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/types" "5.59.8" eslint-visitor-keys "^3.3.0" "@webassemblyjs/ast@1.11.1": @@ -4262,6 +5323,16 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@zag-js/element-size@0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@zag-js/element-size/-/element-size-0.3.2.tgz#ebb76af2a024230482406db41344598d1a9f54f4" + integrity sha512-bVvvigUGvAuj7PCkE5AbzvTJDTw5f3bg9nQdv+ErhVN8SfPPppLJEmmWdxqsRzrHXgx8ypJt/+Ty0kjtISVDsQ== + +"@zag-js/focus-visible@0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@zag-js/focus-visible/-/focus-visible-0.2.2.tgz#56233480ca1275d3218fb2e10696a33d1a6b9e64" + integrity sha512-0j2gZq8HiZ51z4zNnSkF1iSkqlwRDvdH+son3wHdoz+7IUdMN/5Exd4TxMJ+gq2Of1DiXReYLL9qqh2PdQ4wgA== + abab@^2.0.3, abab@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" @@ -4517,6 +5588,13 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +aria-hidden@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954" + integrity sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ== + dependencies: + tslib "^2.0.0" + aria-query@5.1.3, aria-query@^5.0.0, aria-query@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" @@ -4640,6 +5718,11 @@ arrify@^2.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== +asap@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" @@ -4717,6 +5800,11 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +attr-accept@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" + integrity sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg== + autoprefixer@^9.8.6: version "9.8.8" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" @@ -5025,6 +6113,11 @@ boolbase@^1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== +boring-avatars@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/boring-avatars/-/boring-avatars-1.7.0.tgz#70ac7146bbf37d8e69a35544b24f1d75558f868a" + integrity sha512-ZNHd8J7C/V0IjQMGQowLJ5rScEFU23WxePigH6rqKcT2Esf0qhYvYxw8s9i3srmlfCnCV00ddBjaoGey1eNOfA== + boxen@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" @@ -5686,6 +6779,11 @@ color-support@^1.1.2: resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +color2k@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/color2k/-/color2k-2.0.2.tgz#ac2b4aea11c822a6bcb70c768b5a289f4fffcebb" + integrity sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w== + colorette@^2.0.16: version "2.0.19" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" @@ -5768,6 +6866,11 @@ compression@^1.7.4: safe-buffer "5.1.2" vary "~1.1.2" +compute-scroll-into-view@1.0.20: + version "1.0.20" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz#1768b5522d1172754f5d0c9b02de3af6be506a43" + integrity sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -5830,6 +6933,13 @@ cookie@^0.4.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +copy-anything@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-3.0.3.tgz#206767156f08da0e02efd392f71abcdf79643559" + integrity sha512-fpW2W/BqEzqPp29QS+MwwfisHCQZtiduTe/m8idFo0xbti9fIZ2WVhAsCv4ggFVH3AgCkVdpoOCtQC6gBrdhjw== + dependencies: + is-what "^4.1.8" + copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" @@ -5847,6 +6957,13 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== +copy-to-clipboard@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== + dependencies: + toggle-selection "^1.0.6" + core-js-compat@^3.25.1, core-js-compat@^3.8.1: version "3.27.2" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.27.2.tgz#607c50ad6db8fd8326af0b2883ebb987be3786da" @@ -5989,6 +7106,13 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +css-box-model@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1" + integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw== + dependencies: + tiny-invariant "^1.0.6" + css-loader@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" @@ -6051,16 +7175,16 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" +csstype@^3.0.11, csstype@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + csstype@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== -csstype@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -6310,6 +7434,11 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== +detect-node-es@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" + integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== + detect-package-manager@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/detect-package-manager/-/detect-package-manager-2.0.1.tgz#6b182e3ae5e1826752bfef1de9a7b828cffa50d8" @@ -6325,6 +7454,14 @@ detect-port@^1.3.0: address "^1.0.1" debug "4" +dezalgo@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + integrity sha512-K7i4zNfT2kgQz3GylDw40ot9GAE47sFZ9EXHFSPP6zONLgH6kWXE0KWJchkbQJLBkRazq4APwZ4OwiFFlT95OQ== + dependencies: + asap "^2.0.0" + wrappy "1" + diff-sequences@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" @@ -6503,9 +7640,9 @@ electron-to-chromium@^1.4.284: integrity sha512-47o4PPgxfU1KMNejz+Dgaodf7YTcg48uOfV1oM6cs3adrl2+7R+dHkt3Jpxqo0LRCbGJEzTKMUt0RdvByb/leg== electron-to-chromium@^1.4.431: - version "1.4.476" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.476.tgz#693df619ce1785ada6d5aec71fd3ce7ace71adc3" - integrity sha512-gzWl1m8pNy+5Kj17XcziNcbOhripjTqR2wAQmtdlFUngPYuFy7zUpJScVQAvCvQSFHNk3mS5fetNKW6BSpytFg== + version "1.4.477" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.477.tgz#05669aa6f161ee9076a6805457e9bd9fe6d0dfd1" + integrity sha512-shUVy6Eawp33dFBFIoYbIwLHrX0IZ857AlH9ug2o4rvbWmpaCUdBpQ5Zw39HRrfzAFm4APJE9V+E2A/WB0YqJw== elliptic@^6.5.3: version "6.5.4" @@ -7032,7 +8169,12 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.2: +eslint-visitor-keys@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" + integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== + +eslint-visitor-keys@^3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz#8c2095440eca8c933bedcadf16fefa44dbe9ba5f" integrity sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw== @@ -7470,6 +8612,13 @@ file-loader@^6.2.0: loader-utils "^2.0.0" schema-utils "^3.0.0" +file-selector@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-0.6.0.tgz#fa0a8d9007b829504db4d07dd4de0310b65287dc" + integrity sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw== + dependencies: + tslib "^2.4.0" + file-system-cache@^1.0.5: version "1.1.0" resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-1.1.0.tgz#984de17b976b75a77a27e08d6828137c1aa80fa1" @@ -7602,6 +8751,13 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" +focus-lock@^0.11.6: + version "0.11.6" + resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.11.6.tgz#e8821e21d218f03e100f7dc27b733f9c4f61e683" + integrity sha512-KSuV3ur4gf2KqMNoZx3nXNVhqCkn42GuTYCX4tXPEwf0MjpFQmNMiN6m7dXaUXgIoivL6/65agoUMg4RLS0Vbg== + dependencies: + tslib "^2.0.3" + focus-lock@^0.8.0: version "0.8.1" resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.8.1.tgz#bb36968abf77a2063fa173cb6c47b12ac8599d33" @@ -7698,6 +8854,15 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +formidable@3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-3.2.5.tgz#95d6e0b0110c5e6f31ef5be4b0bd2d0791fd9232" + integrity sha512-GRGDJTWAZ3H+umZbF2bKcqjsTov25zgon1St05ziKdiSw3kxvI+meMJrXx3ylRmuSADOpviSakBuS4yvGCGnSg== + dependencies: + dezalgo "1.0.3" + hexoid "1.0.0" + once "1.4.0" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -7710,6 +8875,22 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" +framer-motion@^10.8.4: + version "10.11.5" + resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-10.11.5.tgz#410d40eee41963d4c23108caff29d040466c5a70" + integrity sha512-1JuoJsojdYLVdVldkR7p69G24bNs00p/IuqNcuIT9g2qSNG9Ya4SyK4Jy4Z5grUSi7j1yLI6AdO/0BhY0zo7yw== + dependencies: + tslib "^2.4.0" + optionalDependencies: + "@emotion/is-prop-valid" "^0.8.2" + +framesync@6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/framesync/-/framesync-6.1.2.tgz#755eff2fb5b8f3b4d2b266dd18121b300aefea27" + integrity sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g== + dependencies: + tslib "2.4.0" + fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -7850,6 +9031,11 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: has "^1.0.3" has-symbols "^1.0.3" +get-nonce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" + integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -7893,9 +9079,9 @@ get-tsconfig@^4.2.0: integrity sha512-YCcF28IqSay3fqpIu5y3Krg/utCBHBeoflkZyHj/QcqI2nrLPC3ZegS9CmIo+hJb8K7aiGsuUl7PwWVjNG2HQQ== get-tsconfig@^4.4.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.6.2.tgz#831879a5e6c2aa24fe79b60340e2233a1e0f472e" - integrity sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg== + version "4.6.0" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.6.0.tgz#e977690993a42f3e320e932427502a40f7af6d05" + integrity sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg== dependencies: resolve-pkg-maps "^1.0.0" @@ -8331,6 +9517,11 @@ he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +hexoid@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" + integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== + hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -8623,6 +9814,13 @@ interpret@^2.2.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + ip@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" @@ -9041,6 +10239,11 @@ is-weakset@^2.0.1: call-bind "^1.0.2" get-intrinsic "^1.1.1" +is-what@^4.1.8: + version "4.1.8" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.8.tgz#0e2a8807fda30980ddb2571c79db3d209b14cbe4" + integrity sha512-yq8gMao5upkPoGEU9LsB2P+K3Kt8Q3fQFCGyNCWOAnJAMzEXVV9drYb0TXr42TTliLLhKIBvulgAXgtLLnwzGA== + is-whitespace-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" @@ -9701,11 +10904,23 @@ joi@^17.7.0: "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" -jose@^4.11.4, jose@^4.14.4: +jose@^4.11.4, jose@^4.14.1: version "4.14.4" resolved "https://registry.yarnpkg.com/jose/-/jose-4.14.4.tgz#59e09204e2670c3164ee24cbfe7115c6f8bff9ca" integrity sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g== +jpeg-js@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.4.tgz#a9f1c6f1f9f0fa80cdb3484ed9635054d28936aa" + integrity sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg== + +js-image-generator@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/js-image-generator/-/js-image-generator-1.0.4.tgz#e5a817e927adddf99e530b112c3ed1f738b25001" + integrity sha512-ckb7kyVojGAnArouVR+5lBIuwU1fcrn7E/YYSd0FK7oIngAkMmRvHASLro9Zt5SQdWToaI66NybG+OGxPw/HlQ== + dependencies: + jpeg-js "^0.4.2" + js-string-escape@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" @@ -9953,6 +11168,18 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +libsodium-wrappers@^0.7.11: + version "0.7.11" + resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.11.tgz#53bd20606dffcc54ea2122133c7da38218f575f7" + integrity sha512-SrcLtXj7BM19vUKtQuyQKiQCRJPgbpauzl3s0rSwD+60wtHqSUuqcoawlMDheCJga85nKOQwxNYQxf/CKAvs6Q== + dependencies: + libsodium "^0.7.11" + +libsodium@^0.7.11: + version "0.7.11" + resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.11.tgz#cd10aae7bcc34a300cc6ad0ac88fcca674cfbc2e" + integrity sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A== + lie@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" @@ -10056,6 +11283,11 @@ loader-utils@^2.0.0, loader-utils@^2.0.4: emojis-list "^3.0.0" json5 "^2.1.2" +local-state-sync@1.0.0-beta.6: + version "1.0.0-beta.6" + resolved "https://registry.yarnpkg.com/local-state-sync/-/local-state-sync-1.0.0-beta.6.tgz#5d6ca93ac31e840c8e1fa2426eb9b2d9a637b400" + integrity sha512-RZlgjAph/Ytjl2ldAzC0KHMYeo9sVWzdGuCij3UyW1w6GR9FZpnZ6E9hUDdDjizo6j9mH+aI+Zvavp2vK98xvA== + localforage@^1.8.1: version "1.10.0" resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4" @@ -10095,6 +11327,11 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.mergewith@4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" + integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== + lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" @@ -10128,7 +11365,7 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" -loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -10533,6 +11770,11 @@ mississippi@^3.0.0: stream-each "^1.1.0" through2 "^2.0.0" +mitt@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.0.tgz#69ef9bd5c80ff6f57473e8d89326d01c414be0bd" + integrity sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ== + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -10978,7 +12220,7 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@1.4.0, once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== @@ -11017,11 +12259,11 @@ open@^8.4.0: is-wsl "^2.2.0" openid-client@^5.4.0: - version "5.4.3" - resolved "https://registry.yarnpkg.com/openid-client/-/openid-client-5.4.3.tgz#c75d2f6d07a25d383a72c8ff34605a36b7e2cd73" - integrity sha512-sVQOvjsT/sbSfYsQI/9liWQGVZH/Pp3rrtlGEwgk/bbHfrUDZ24DN57lAagIwFtuEu+FM9Ev7r85s8S/yPjimQ== + version "5.4.2" + resolved "https://registry.yarnpkg.com/openid-client/-/openid-client-5.4.2.tgz#8692bcc2a40ef3426c5ba5c11f7493599e93ccc7" + integrity sha512-lIhsdPvJ2RneBm3nGBBhQchpe3Uka//xf7WPHTIglery8gnckvW7Bd9IaQzekzXJvWthCMyi/xVEyGW0RFPytw== dependencies: - jose "^4.14.4" + jose "^4.14.1" lru-cache "^6.0.0" object-hash "^2.2.0" oidc-token-hash "^5.0.3" @@ -11792,6 +13034,13 @@ ramda@^0.28.0: resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.28.0.tgz#acd785690100337e8b063cab3470019be427cc97" integrity sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA== +random-words@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/random-words/-/random-words-1.3.0.tgz#00715efb8dd787d244f963c994367707c1e95676" + integrity sha512-brwCGe+DN9DqZrAQVNj1Tct1Lody6GrYL/7uei5wfjeQdacFyFd2h/51LNlOoBMzIKMS9xohuL4+wlF/z1g/xg== + dependencies: + seedrandom "^3.0.5" + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -11830,6 +13079,13 @@ raw-loader@^4.0.2: loader-utils "^2.0.0" schema-utils "^3.0.0" +react-clientside-effect@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz#29f9b14e944a376b03fb650eed2a754dd128ea3a" + integrity sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg== + dependencies: + "@babel/runtime" "^7.12.13" + react-docgen-typescript@^2.1.1: version "2.2.2" resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c" @@ -11859,6 +13115,15 @@ react-dom@18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" +react-dropzone@^14.2.3: + version "14.2.3" + resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-14.2.3.tgz#0acab68308fda2d54d1273a1e626264e13d4e84b" + integrity sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug== + dependencies: + attr-accept "^2.2.2" + file-selector "^0.6.0" + prop-types "^15.8.1" + react-element-to-jsx-string@^14.3.4: version "14.3.4" resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.4.tgz#709125bc72f06800b68f9f4db485f2c7d31218a8" @@ -11868,6 +13133,38 @@ react-element-to-jsx-string@^14.3.4: is-plain-object "5.0.0" react-is "17.0.2" +react-fast-compare@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.1.tgz#53933d9e14f364281d6cba24bfed7a4afb808b5f" + integrity sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg== + +react-focus-lock@^2.9.2, react-focus-lock@^2.9.4: + version "2.9.4" + resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.9.4.tgz#4753f6dcd167c39050c9d84f9c63c71b3ff8462e" + integrity sha512-7pEdXyMseqm3kVjhdVH18sovparAzLg5h6WvIx7/Ck3ekjhrrDMEegHSa3swwC8wgfdd7DIdUVRGeiHT9/7Sgg== + dependencies: + "@babel/runtime" "^7.0.0" + focus-lock "^0.11.6" + prop-types "^15.6.2" + react-clientside-effect "^1.2.6" + use-callback-ref "^1.3.0" + use-sidecar "^1.1.2" + +react-hook-form@^7.43.7: + version "7.43.9" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.43.9.tgz#84b56ac2f38f8e946c6032ccb760e13a1037c66d" + integrity sha512-AUDN3Pz2NSeoxQ7Hs6OhQhDr6gtF9YRuutGDwPQqhSUAHJSgGl2VeY3qN19MG0SucpjgDiuMJ4iC5T5uB+eaNQ== + +react-hook-form@^7.44.2: + version "7.44.2" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.44.2.tgz#220186d3e380b3d6b15083b094a6ca77d3797a8b" + integrity sha512-IyihmIbCwzDI/iqlecTRa7+4BCnzNx40upSlGvIU7qwENhTf6APatm4bmL9ANtWKPYlD67SIlxfls7GwCUe+Lg== + +react-icons@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.8.0.tgz#621e900caa23b912f737e41be57f27f6b2bff445" + integrity sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg== + react-inspector@^5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-5.1.1.tgz#58476c78fde05d5055646ed8ec02030af42953c8" @@ -11902,6 +13199,34 @@ react-refresh@^0.11.0: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== +react-remove-scroll-bar@^2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9" + integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A== + dependencies: + react-style-singleton "^2.2.1" + tslib "^2.0.0" + +react-remove-scroll@^2.5.5: + version "2.5.5" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz#1e31a1260df08887a8a0e46d09271b52b3a37e77" + integrity sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw== + dependencies: + react-remove-scroll-bar "^2.3.3" + react-style-singleton "^2.2.1" + tslib "^2.1.0" + use-callback-ref "^1.3.0" + use-sidecar "^1.1.2" + +react-style-singleton@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" + integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== + dependencies: + get-nonce "^1.0.0" + invariant "^2.2.4" + tslib "^2.0.0" + react-transition-group@^4.4.5: version "4.4.5" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" @@ -12157,6 +13482,11 @@ remark-squeeze-paragraphs@4.0.0: dependencies: mdast-squeeze-paragraphs "^4.0.0" +remove-accents@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.4.2.tgz#0a43d3aaae1e80db919e07ae254b285d9e1c7bb5" + integrity sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA== + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -12239,9 +13569,9 @@ requires-port@^1.0.0: integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== reselect@^4.1.6: - version "4.1.7" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.7.tgz#56480d9ff3d3188970ee2b76527bd94a95567a42" - integrity sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A== + version "4.1.8" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" + integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== resolve-cwd@^3.0.0: version "3.0.0" @@ -12477,6 +13807,16 @@ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: ajv "^6.12.5" ajv-keywords "^3.5.2" +secure-json-parse@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" + integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== + +seedrandom@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" + integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== + "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -13186,6 +14526,13 @@ stylis@4.2.0: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== +superjson@^1.10.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/superjson/-/superjson-1.12.2.tgz#072471f1e6add2d95a38b77fef8c7a199d82103a" + integrity sha512-ugvUo9/WmvWOjstornQhsN/sR9mnGtWGYeTxFuqLb4AiT4QdUavjGFRALCPKWWnAiUJ4HTpytj5e0t5HoMRkXg== + dependencies: + copy-anything "^3.0.2" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -13412,6 +14759,11 @@ tiny-glob@^0.2.9: globalyzer "0.1.0" globrex "^0.1.2" +tiny-invariant@^1.0.6: + version "1.3.1" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" + integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== + tmp@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" @@ -13466,6 +14818,11 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" + integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== + toidentifier@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" @@ -13553,6 +14910,11 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" +tslib@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tslib@^1.8.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -13933,6 +15295,26 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" +use-callback-ref@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5" + integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== + dependencies: + tslib "^2.0.0" + +use-sidecar@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" + integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== + dependencies: + detect-node-es "^1.1.0" + tslib "^2.0.0" + +use-sync-external-store@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -13990,6 +15372,11 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + v8-to-istanbul@^8.1.0: version "8.1.1" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" @@ -14053,6 +15440,15 @@ vfile@^4.0.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" +vite-plugin-top-level-await@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.3.0.tgz#83c73b5aed33a3819d85432da27f462218cfb3f5" + integrity sha512-owIfsgWudMlQODWJSwp0sQB3AZZu3qsMygeBjZy8CyjEk6OB9AGd8lHqmgwrcEqgvy9N58lYxSBLVk3/4ejEiA== + dependencies: + "@rollup/plugin-virtual" "^3.0.1" + "@swc/core" "^1.3.10" + uuid "^9.0.0" + vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" @@ -14495,7 +15891,7 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zod@3.21.4: +zod@3.21.4, zod@^3.21.4: version "3.21.4" resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== From bd9e0e6aff2ccb01802dbedeba2bec45a1305e33 Mon Sep 17 00:00:00 2001 From: Julien Bouquillon Date: Sat, 29 Jul 2023 15:21:54 +0200 Subject: [PATCH 2/7] fix: enforce file upload max size --- src/pages/api/upload-answers-files.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/api/upload-answers-files.ts b/src/pages/api/upload-answers-files.ts index 5ef19fa6..02f95870 100644 --- a/src/pages/api/upload-answers-files.ts +++ b/src/pages/api/upload-answers-files.ts @@ -19,7 +19,7 @@ const validFileName = fileMetadataSchema.shape.hash; const form = formidable({ multiples: true, - // maxFileSize: 10 * 1024 * 1024, // 10Mb + maxFileSize: 10 * 1024 * 1024, // 10Mb uploadDir: storageDir, hashAlgorithm: "sha512", filename(name, ext, part, form) { From ee9034097ed2e1060881cb543637048db689cef1 Mon Sep 17 00:00:00 2001 From: Julien Bouquillon Date: Sat, 29 Jul 2023 15:34:00 +0200 Subject: [PATCH 3/7] fix --- .talismanrc | 355 ++++++++++++++++++++++++---------------------- hasura/Dockerfile | 2 +- 2 files changed, 183 insertions(+), 174 deletions(-) diff --git a/.talismanrc b/.talismanrc index d1ea8508..92244944 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,177 +1,186 @@ fileignoreconfig: - - filename: .env.development - checksum: 6b4ffd2159670a9a52374a966de7c1a357838b9246101d974b3dbd6e6e1e834d - - filename: .env.production - checksum: 1f7c9755c1b8a65fb48f6343ea05d6afb9c4d0e085b6b964441f68ae524fda04 - - filename: .env.staging - checksum: 4344984233f1d2f630c6164bf630769851db42b7e143b56e5d0321139b0054fe - - filename: .github/workflows/e2e.yml - checksum: 9a29ecef215d5685eda60acb00c5484ca65137ac98094f5a8f4160264f9c15ab - - filename: .kontinuous/env/dev/templates/app.configmap.yaml - checksum: 2b8e04a067d47b19c9d21d7c46270d5f0a661018b3350179b94068c811e9582e - - filename: .kontinuous/env/dev/templates/app.sealed.secret.yaml - checksum: 6e59395de2ed6aec2913e7b7c8823ec5ffca5cb28304100f78b7db6cb2553005 - - filename: .kontinuous/env/dev/templates/franceconnect.sealed.secret.yaml - checksum: dcad58403a06374fa32467557b985bc0b268d890d432fdc23dcaffca283c1955 - - filename: .kontinuous/env/dev/templates/hasura.sealed.secret.yaml - checksum: 29aa6bf631a495f6bd4ccd3d1df88f48918a8b8e56eb5241169b2849d8929eda - - filename: .kontinuous/env/dev/templates/keycloak.sealed.secret.yaml - checksum: 074d8dab3a9d9890a3b1b4e398e1066848002eb852a49379e6906f400599b1aa - - filename: .kontinuous/env/dev/templates/smtp.sealed.secret.yaml - checksum: 3d07a05a96266af28a79117b6447c9f61f01d3f017a0c3947a66ce8866dbe6d2 - - filename: .kontinuous/env/preprod/templates/app.configmap.yaml - checksum: d388d2ea2935ab0e9a231434f8e8270a2f008479907249160d9327896d1d1b07 - - filename: .kontinuous/env/preprod/templates/app.sealed.secret.yaml - checksum: 6d0bdcef816f00308d8bfdbdb9aeca94dfaee5b54f29f2b868a9085fd6428829 - - filename: .kontinuous/env/preprod/templates/franceconnect.sealed.secret.yaml - checksum: 48b38e6033283722a1c9465ba5eb8c03b06a4eaf9564c59b0284c90c0bf37d5b - - filename: .kontinuous/env/preprod/templates/hasura.sealed.secret.yaml - checksum: 3df5dbc49f3eb0ce29f02ff0bab1861bf30a43d271517d1a2a51cf5d4407909e - - filename: .kontinuous/env/preprod/templates/keycloak.sealed.secret.yaml - checksum: e1eb6dee86f882ca6dce6aeaeca82a0711d1a15b3464fe617702184507e03a7b - - filename: .kontinuous/env/preprod/templates/smtp.sealed.secret.yaml - checksum: 96329d5fa5a5a34d2ceb99fb4cef9c107e2dfdf8b9b392e725a8e89753a26205 - - filename: .kontinuous/env/preprod/values.yaml - checksum: d73837d6c38a5f27b53435a576287d4a069e23736580d6a19c9eb3fc68e792b4 - - filename: .kontinuous/env/prod/templates/app.configmap.yaml - checksum: 0e1d907bb3d3e63bf5fd83c0e3bbd87af4814cffa31f71ff0ecf8e69305ca4a9 - - filename: .kontinuous/env/prod/templates/app.sealed.secret.yaml - checksum: 6869d898af4187aba5744a959b334b16f2ead1c8896f9f1591ecba849ba44a29 - - filename: .kontinuous/env/prod/templates/franceconnect.sealed.secret.yaml - checksum: 57d1f143dcf7878d997062ff08cdbcff21bc81c4cfff0acaa24b5345df9a3c08 - - filename: .kontinuous/env/prod/templates/hasura.sealed.secret.yaml - checksum: f05e1d7a075abecaafec37d390fdd538dbe99eea6e0d1c26a01e29e850c838ff - - filename: .kontinuous/env/prod/templates/keycloak.sealed.secret.yaml - checksum: ccf81976a79ced16448be59c5ec7278e05e1aebd5d9019789f9b6fb260d2f4ec - - filename: .kontinuous/env/prod/templates/smtp.sealed.secret.yaml - checksum: 3145443490e01a8e9f121bc242f7611bf9705d6362f1c8361b77b893cce1ea1f - - filename: .kontinuous/env/prod/values.yaml - checksum: d7e76dd44f7f22ad1ea569369b4159aed0026d0b4c22fe4179835bf46e912284 - - filename: .kontinuous/files/realm-export.json - checksum: e2b00a73de2b1ef4e4601f46e0c783233b06cbefe598f37dff0924e522bebcc9 - - filename: .kontinuous/values.yaml - checksum: e5111b2d119bda782cb25e7bb8f218512c9a8a4d135ff2c2ad50b1ea85660b8b - - filename: Dockerfile - checksum: d44d4622a3b55fe2f61d8fc97a527293a0dc36facb58504fabb543219eba2cb2 - - filename: README.md - checksum: 69f16f81ce480d7e1e0bde5b20acf2ca0eadfa7a7acfaf72c77348a567b087ae - - filename: hasura/migrations/default/1659018828697_init/up.sql - checksum: 35d9f9dd5380b853fe9ead2e36b97158de39be0a1b9aaee0071b1f43fbdfb211 - - filename: hasura/migrations/default/1659130257063_alter_table_public_books_add_column_user_id/down.sql - checksum: f9adad1b9373228c99d82fbf32a9d053540e062e7378e12628674b9dd312caa9 - - filename: hasura/migrations/default/1659130257063_alter_table_public_books_add_column_user_id/up.sql - checksum: 803f634b1833b97fb7a63f28cfd450f28b83dca850c20e5a44df33094e673994 - - filename: hasura/migrations/default/1681303296141_create_table_public_answers/down.sql - checksum: 7db4fecd1b24fdcea10617ceb4842381d10bc6242924b4c2f974c77fb5935e9c - - filename: hasura/migrations/default/1681303296141_create_table_public_answers/up.sql - checksum: 0b43b7f6611dc733f27c1f632ffbaf0a265fec144a344c3a78c1eb912bfbf0cd - - filename: hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/down.sql - checksum: 8477739170155724e1c5629129ec22444dd2af53fe04f26f6028783abb125135 - - filename: hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/up.sql - checksum: 0304fe5ecdc9eb6bde037de85a82c2a70f4bfb6b4566d956ad5eadecf9d8169c - - filename: hasura/migrations/default/1684314835951_create_table_public_files/down.sql - checksum: 6c2703260490eccd10858046af53b33cdbf86ba62ea48cbf7aa7b969c91618a2 - - filename: hasura/migrations/default/1684314835951_create_table_public_files/up.sql - checksum: 71222c539960f1dfc10f01a99ac6520b976ccf9d831e44bca80a1a0633ec6917 - - filename: hasura/migrations/default/1684314945514_create_table_public_answers_files/down.sql - checksum: 9989fc6a804bb48257720db6c3c1f718109402b11c2e064f52bb1e6710433511 - - filename: hasura/migrations/default/1684314945514_create_table_public_answers_files/up.sql - checksum: fec002e5b511be371fad0a8a685c5ba727ddac5915e4ca2ac852c9f45e205928 - - filename: hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/down.sql - checksum: 3f8e8f4bd481eefd99fdea2af388f57a7621d29dd6c17d1d60be74f15a430150 - - filename: hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/up.sql - checksum: a8c8ca41f5fcbf4a23d5fb814484fdce8a04f006bdb3ead80c8aab38f2ee0630 - - filename: hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/down.sql - checksum: 581331332aa2121b4b5160704c09305169e2f0e276515993929e554939b5b560 - - filename: hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/up.sql - checksum: e5d164a31be5cd0238bdacf3c7fede4ba03a42f01dc290680b16df646726d9c6 - - filename: hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/down.sql - checksum: 534b60b957a23effee67d7d08e15e7ff35a987989253ffbc786e306889c38466 - - filename: hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/up.sql - checksum: 1b59ea369b35494d3df85398b59d1266b359f3d0962108b944d8e82cb19ca44f - - filename: hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/down.sql - checksum: 73ef953b790755b5968b2fb2f03a21c7993fa146c05c7f085ec1d7ce35b4d8e2 - - filename: hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/up.sql - checksum: 4dff0097ad4d4fb48da7ed7f32e01787558dd3a710339aa0ceb30cb05a036a96 - - filename: hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/down.sql - checksum: 3cc63739d321146efc7fb954f42222ee0389cdcb28c59a94260d33f26c700f1a - - filename: hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/up.sql - checksum: be2ef7400e22782fb1c6e9df883a3dabcb53fa1e179cfef133ebfa839cb8600e - - filename: hasura/migrations/default/1684315633710_modify_primarykey_public_answers/down.sql - checksum: bc6573c3203727f4f7300a90c90feaa003fc7d567f9717a86b1bd52f4aeac7bc - - filename: hasura/migrations/default/1684315633710_modify_primarykey_public_answers/up.sql - checksum: 0a7d95a2c2a16a805abb82e6c4a1541b0384c5272b671fa19e73ab0f557ecbd0 - - filename: hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/down.sql - checksum: b3c14cd15ef84c004a55dd254b226aa1322f5a1290c7b518e92b6fad2e461140 - - filename: hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/up.sql - checksum: d745547365d22f0fbe15ee770444d40f2715d9c20d023841bd209097f8a75c2d - - filename: hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/down.sql - checksum: 126a3416c110dfb62e57abd30435ecf15f249d9baf6945a3f02a10f75f0cb373 - - filename: hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/up.sql - checksum: 1aa4b7b0858c2976f3a090e87c073ff1a8f2178486547dead4ea19728a5949ad - - filename: hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/down.sql - checksum: b3b74011c27052ae66c511a28d4d6510a122b91175f52d744a9e88c92559bd10 - - filename: hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/up.sql - checksum: 50d7aeeeb9b7a0034a9e5aee03d4b1b7d06bfeec927dff9d68e614626d00144f - - filename: hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/down.sql - checksum: b10dcb13e1ba144c0981a07c5bb2c4ab76af0c202ee864370f7b9e14ad641a60 - - filename: hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/up.sql - checksum: 7ff83a3d01c3913693299ddd79fca77a9cfacad8883201817e4460c0abb11ffe - - filename: hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/down.sql - checksum: 067147e86a6c7434a52d638312ef69581bd4e2498f9be3cf3e60652b9be40b8c - - filename: hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/up.sql - checksum: 875e9efd7e051491b3627bd1cf8cbf852491a777682740f155f104638fc70c20 - - filename: hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/down.sql - checksum: cd90ee4d8342c72a17ea1ab12666629d5fa4c68180cd89503cb53d0c5abe39e2 - - filename: hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/up.sql - checksum: 37a0cc594434c0185ad5c70779d0e913b028c0d2a70465b138959314f1b977cd - - filename: hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/down.sql - checksum: f0b96ad0ab124e3168738a1cecbcd7e2b3118494dbf251db760530b80262099f - - filename: hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/up.sql - checksum: 9db5c78de2300bdc7770b6d1d6b3d6ec346b86f0043067c8f77bea8c3f00f34d - - filename: hasura/migrations/default/1684316904382_run_sql_migration/down.sql - checksum: ee8f124f122f04ff4642efa52493d92f6213cfe62d1e1ac4c7e4ee5fcdf97b56 - - filename: hasura/migrations/default/1684316904382_run_sql_migration/up.sql - checksum: 63577acf368a5adbadb714ebaf7a08cc9c6e07e5f936206ace21748cc445a135 - - filename: hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/down.sql - checksum: c91f7639218ed6829b9874a71b9522cd440c5f1f47ccec384295bae61fac62c3 - - filename: hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/up.sql - checksum: d63aa44d7e252e93b1c25502214fb2e27b5c827e6a0eb94220a38361a1fff495 - - filename: hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/down.sql - checksum: 6f197d3f8c57135029f04b414ab2e9a8d11d7718e2b641495fdfe98ae76cf697 - - filename: hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/up.sql - checksum: 001dd978bf9cc3c63638b10445f72f157ed625ea0625fb3a05636c23bd2dc4a9 - - filename: hasura/seeds/default/books.sql - checksum: 40e5ea9f6cf231cd04fa3c40aa27b4f311f240dac730a26ac55afc3204d1bc14 - - filename: keycloak/config/realm-export-local.json - checksum: 9ebc94d1d4542ee609132f6417a07e14f3668d5caeeaa72ac81829ed6a7ecaa7 - - filename: keycloak/scripts/keycloak.sh - checksum: efed473c9b23bca81ec472c7e227ee6df94e322ca64341fedd15b57124338a01 - - filename: package.json - checksum: a98fc3969b8c79204c0bf9bebef3ba22d5bc120ef71b93402cc85dc7d265402b - - filename: pages/_app.tsx - checksum: 86b00324ee8b65d9c72701f8f7ef07a57fd8e7c775c50fdb6e365f604420a756 - - filename: pages/answers.tsx - checksum: c20e57ac78ddbeb8f8435a7479538107f32582a56b8c490aa9d06006f5d3af77 - - filename: pages/api/auth/[...nextauth].ts - checksum: 5763374ce8f74c303b6d1073462c572ee6df8f8528e3aae8df664bbab77460cc - - filename: pages/books.tsx - checksum: 8e3b60571bf9cfca7740ef1b22661109699ebe88c5bef0b39cde25a08f4aa664 - - filename: pages/form.tsx - checksum: b954b4a530b279d5713477c73e70faba1c579b3972344f6db2d326197367dec8 - - filename: pages/profil.tsx - checksum: 5f85579232df5641aa38d24c486e14216cc9aa0af87c3466184cae126e86980a - - filename: scripts/pg/create-multiple-postgresql-databases.sh - checksum: 2989dcdba68c9586ff81c53ccbddb452225127b9fb8db9bbcea22be26076e922 - - filename: src/components/header/index.tsx - checksum: a271fa91331ce68190cab5ed6c686529cf3bc406d2a2557139c061d5d18baa0d - - filename: src/lib/auth.ts - checksum: ba1373e7718c001b838459240de8f34e886a772f13178804101d4893982de5a3 - - filename: src/lib/e2esdk.ts - checksum: 56afd278d488c820882bd65fe58c333f7df8fa82ced3b42edc8c64095df7b2f6 - - filename: src/pages/api/auth/\[...nextauth\].ts - checksum: 695f5f301551c6d15b51ab60c0a0c70b38d87b36bf1e6bc4145603340b9abdf6 - - filename: src/pages/books.tsx +- filename: .env.development + checksum: 6b4ffd2159670a9a52374a966de7c1a357838b9246101d974b3dbd6e6e1e834d +- filename: .env.production + checksum: 1f7c9755c1b8a65fb48f6343ea05d6afb9c4d0e085b6b964441f68ae524fda04 +- filename: .env.staging + checksum: 4344984233f1d2f630c6164bf630769851db42b7e143b56e5d0321139b0054fe +- filename: .github/workflows/e2e.yml + checksum: 9a29ecef215d5685eda60acb00c5484ca65137ac98094f5a8f4160264f9c15ab +- filename: .kontinuous/env/dev/templates/app.configmap.yaml + checksum: 2b8e04a067d47b19c9d21d7c46270d5f0a661018b3350179b94068c811e9582e +- filename: .kontinuous/env/dev/templates/app.sealed.secret.yaml + checksum: 6e59395de2ed6aec2913e7b7c8823ec5ffca5cb28304100f78b7db6cb2553005 +- filename: .kontinuous/env/dev/templates/franceconnect.sealed.secret.yaml + checksum: dcad58403a06374fa32467557b985bc0b268d890d432fdc23dcaffca283c1955 +- filename: .kontinuous/env/dev/templates/hasura.sealed.secret.yaml + checksum: 29aa6bf631a495f6bd4ccd3d1df88f48918a8b8e56eb5241169b2849d8929eda +- filename: .kontinuous/env/dev/templates/keycloak.sealed.secret.yaml + checksum: 074d8dab3a9d9890a3b1b4e398e1066848002eb852a49379e6906f400599b1aa +- filename: .kontinuous/env/dev/templates/smtp.sealed.secret.yaml + checksum: 3d07a05a96266af28a79117b6447c9f61f01d3f017a0c3947a66ce8866dbe6d2 +- filename: .kontinuous/env/preprod/templates/app.configmap.yaml + checksum: d388d2ea2935ab0e9a231434f8e8270a2f008479907249160d9327896d1d1b07 +- filename: .kontinuous/env/preprod/templates/app.sealed.secret.yaml + checksum: 6d0bdcef816f00308d8bfdbdb9aeca94dfaee5b54f29f2b868a9085fd6428829 +- filename: .kontinuous/env/preprod/templates/franceconnect.sealed.secret.yaml + checksum: 48b38e6033283722a1c9465ba5eb8c03b06a4eaf9564c59b0284c90c0bf37d5b +- filename: .kontinuous/env/preprod/templates/hasura.sealed.secret.yaml + checksum: 3df5dbc49f3eb0ce29f02ff0bab1861bf30a43d271517d1a2a51cf5d4407909e +- filename: .kontinuous/env/preprod/templates/keycloak.sealed.secret.yaml + checksum: e1eb6dee86f882ca6dce6aeaeca82a0711d1a15b3464fe617702184507e03a7b +- filename: .kontinuous/env/preprod/templates/smtp.sealed.secret.yaml + checksum: 96329d5fa5a5a34d2ceb99fb4cef9c107e2dfdf8b9b392e725a8e89753a26205 +- filename: .kontinuous/env/preprod/values.yaml + checksum: d73837d6c38a5f27b53435a576287d4a069e23736580d6a19c9eb3fc68e792b4 +- filename: .kontinuous/env/prod/templates/app.configmap.yaml + checksum: 0e1d907bb3d3e63bf5fd83c0e3bbd87af4814cffa31f71ff0ecf8e69305ca4a9 +- filename: .kontinuous/env/prod/templates/app.sealed.secret.yaml + checksum: 6869d898af4187aba5744a959b334b16f2ead1c8896f9f1591ecba849ba44a29 +- filename: .kontinuous/env/prod/templates/franceconnect.sealed.secret.yaml + checksum: 57d1f143dcf7878d997062ff08cdbcff21bc81c4cfff0acaa24b5345df9a3c08 +- filename: .kontinuous/env/prod/templates/hasura.sealed.secret.yaml + checksum: f05e1d7a075abecaafec37d390fdd538dbe99eea6e0d1c26a01e29e850c838ff +- filename: .kontinuous/env/prod/templates/keycloak.sealed.secret.yaml + checksum: ccf81976a79ced16448be59c5ec7278e05e1aebd5d9019789f9b6fb260d2f4ec +- filename: .kontinuous/env/prod/templates/smtp.sealed.secret.yaml + checksum: 3145443490e01a8e9f121bc242f7611bf9705d6362f1c8361b77b893cce1ea1f +- filename: .kontinuous/env/prod/values.yaml + checksum: d7e76dd44f7f22ad1ea569369b4159aed0026d0b4c22fe4179835bf46e912284 +- filename: .kontinuous/files/realm-export.json + checksum: e2b00a73de2b1ef4e4601f46e0c783233b06cbefe598f37dff0924e522bebcc9 +- filename: .kontinuous/values.yaml + checksum: e5111b2d119bda782cb25e7bb8f218512c9a8a4d135ff2c2ad50b1ea85660b8b +- filename: Dockerfile + checksum: d44d4622a3b55fe2f61d8fc97a527293a0dc36facb58504fabb543219eba2cb2 +- filename: README.md + checksum: 69f16f81ce480d7e1e0bde5b20acf2ca0eadfa7a7acfaf72c77348a567b087ae +- filename: hasura/Dockerfile + checksum: 80f7847463c69c03643e6803575576113aad79ce695856ee7233bf66085e4440 +- filename: hasura/migrations/default/1659018828697_init/up.sql + checksum: 35d9f9dd5380b853fe9ead2e36b97158de39be0a1b9aaee0071b1f43fbdfb211 +- filename: hasura/migrations/default/1659130257063_alter_table_public_books_add_column_user_id/down.sql + checksum: f9adad1b9373228c99d82fbf32a9d053540e062e7378e12628674b9dd312caa9 +- filename: hasura/migrations/default/1659130257063_alter_table_public_books_add_column_user_id/up.sql + checksum: 803f634b1833b97fb7a63f28cfd450f28b83dca850c20e5a44df33094e673994 +- filename: hasura/migrations/default/1681303296141_create_table_public_answers/down.sql + checksum: 7db4fecd1b24fdcea10617ceb4842381d10bc6242924b4c2f974c77fb5935e9c +- filename: hasura/migrations/default/1681303296141_create_table_public_answers/up.sql + checksum: 0b43b7f6611dc733f27c1f632ffbaf0a265fec144a344c3a78c1eb912bfbf0cd +- filename: hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/down.sql + checksum: 8477739170155724e1c5629129ec22444dd2af53fe04f26f6028783abb125135 +- filename: hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/up.sql + checksum: 0304fe5ecdc9eb6bde037de85a82c2a70f4bfb6b4566d956ad5eadecf9d8169c +- filename: hasura/migrations/default/1684314835951_create_table_public_files/down.sql + checksum: 6c2703260490eccd10858046af53b33cdbf86ba62ea48cbf7aa7b969c91618a2 +- filename: hasura/migrations/default/1684314835951_create_table_public_files/up.sql + checksum: 71222c539960f1dfc10f01a99ac6520b976ccf9d831e44bca80a1a0633ec6917 +- filename: hasura/migrations/default/1684314945514_create_table_public_answers_files/down.sql + checksum: 9989fc6a804bb48257720db6c3c1f718109402b11c2e064f52bb1e6710433511 +- filename: hasura/migrations/default/1684314945514_create_table_public_answers_files/up.sql + checksum: fec002e5b511be371fad0a8a685c5ba727ddac5915e4ca2ac852c9f45e205928 +- filename: hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/down.sql + checksum: 3f8e8f4bd481eefd99fdea2af388f57a7621d29dd6c17d1d60be74f15a430150 +- filename: hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/up.sql + checksum: a8c8ca41f5fcbf4a23d5fb814484fdce8a04f006bdb3ead80c8aab38f2ee0630 +- filename: hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/down.sql + checksum: 581331332aa2121b4b5160704c09305169e2f0e276515993929e554939b5b560 +- filename: hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/up.sql + checksum: e5d164a31be5cd0238bdacf3c7fede4ba03a42f01dc290680b16df646726d9c6 +- filename: hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/down.sql + checksum: 534b60b957a23effee67d7d08e15e7ff35a987989253ffbc786e306889c38466 +- filename: hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/up.sql + checksum: 1b59ea369b35494d3df85398b59d1266b359f3d0962108b944d8e82cb19ca44f +- filename: hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/down.sql + checksum: 73ef953b790755b5968b2fb2f03a21c7993fa146c05c7f085ec1d7ce35b4d8e2 +- filename: hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/up.sql + checksum: 4dff0097ad4d4fb48da7ed7f32e01787558dd3a710339aa0ceb30cb05a036a96 +- filename: hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/down.sql + checksum: 3cc63739d321146efc7fb954f42222ee0389cdcb28c59a94260d33f26c700f1a +- filename: hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/up.sql + checksum: be2ef7400e22782fb1c6e9df883a3dabcb53fa1e179cfef133ebfa839cb8600e +- filename: hasura/migrations/default/1684315633710_modify_primarykey_public_answers/down.sql + checksum: bc6573c3203727f4f7300a90c90feaa003fc7d567f9717a86b1bd52f4aeac7bc +- filename: hasura/migrations/default/1684315633710_modify_primarykey_public_answers/up.sql + checksum: 0a7d95a2c2a16a805abb82e6c4a1541b0384c5272b671fa19e73ab0f557ecbd0 +- filename: hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/down.sql + checksum: b3c14cd15ef84c004a55dd254b226aa1322f5a1290c7b518e92b6fad2e461140 +- filename: hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/up.sql + checksum: d745547365d22f0fbe15ee770444d40f2715d9c20d023841bd209097f8a75c2d +- filename: hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/down.sql + checksum: 126a3416c110dfb62e57abd30435ecf15f249d9baf6945a3f02a10f75f0cb373 +- filename: hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/up.sql + checksum: 1aa4b7b0858c2976f3a090e87c073ff1a8f2178486547dead4ea19728a5949ad +- filename: hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/down.sql + checksum: b3b74011c27052ae66c511a28d4d6510a122b91175f52d744a9e88c92559bd10 +- filename: hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/up.sql + checksum: 50d7aeeeb9b7a0034a9e5aee03d4b1b7d06bfeec927dff9d68e614626d00144f +- filename: hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/down.sql + checksum: b10dcb13e1ba144c0981a07c5bb2c4ab76af0c202ee864370f7b9e14ad641a60 +- filename: hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/up.sql + checksum: 7ff83a3d01c3913693299ddd79fca77a9cfacad8883201817e4460c0abb11ffe +- filename: hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/down.sql + checksum: 067147e86a6c7434a52d638312ef69581bd4e2498f9be3cf3e60652b9be40b8c +- filename: hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/up.sql + checksum: 875e9efd7e051491b3627bd1cf8cbf852491a777682740f155f104638fc70c20 +- filename: hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/down.sql + checksum: cd90ee4d8342c72a17ea1ab12666629d5fa4c68180cd89503cb53d0c5abe39e2 +- filename: hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/up.sql + checksum: 37a0cc594434c0185ad5c70779d0e913b028c0d2a70465b138959314f1b977cd +- filename: hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/down.sql + checksum: f0b96ad0ab124e3168738a1cecbcd7e2b3118494dbf251db760530b80262099f +- filename: hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/up.sql + checksum: 9db5c78de2300bdc7770b6d1d6b3d6ec346b86f0043067c8f77bea8c3f00f34d +- filename: hasura/migrations/default/1684316904382_run_sql_migration/down.sql + checksum: ee8f124f122f04ff4642efa52493d92f6213cfe62d1e1ac4c7e4ee5fcdf97b56 +- filename: hasura/migrations/default/1684316904382_run_sql_migration/up.sql + checksum: 63577acf368a5adbadb714ebaf7a08cc9c6e07e5f936206ace21748cc445a135 +- filename: hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/down.sql + checksum: c91f7639218ed6829b9874a71b9522cd440c5f1f47ccec384295bae61fac62c3 +- filename: hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/up.sql + checksum: d63aa44d7e252e93b1c25502214fb2e27b5c827e6a0eb94220a38361a1fff495 +- filename: hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/down.sql + checksum: 6f197d3f8c57135029f04b414ab2e9a8d11d7718e2b641495fdfe98ae76cf697 +- filename: hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/up.sql + checksum: 001dd978bf9cc3c63638b10445f72f157ed625ea0625fb3a05636c23bd2dc4a9 +- filename: hasura/seeds/default/books.sql + checksum: 40e5ea9f6cf231cd04fa3c40aa27b4f311f240dac730a26ac55afc3204d1bc14 +- filename: keycloak/config/realm-export-local.json + checksum: 9ebc94d1d4542ee609132f6417a07e14f3668d5caeeaa72ac81829ed6a7ecaa7 +- filename: keycloak/scripts/keycloak.sh + checksum: efed473c9b23bca81ec472c7e227ee6df94e322ca64341fedd15b57124338a01 +- filename: package.json + checksum: a98fc3969b8c79204c0bf9bebef3ba22d5bc120ef71b93402cc85dc7d265402b +- filename: pages/_app.tsx + checksum: 86b00324ee8b65d9c72701f8f7ef07a57fd8e7c775c50fdb6e365f604420a756 +- filename: pages/answers.tsx + checksum: c20e57ac78ddbeb8f8435a7479538107f32582a56b8c490aa9d06006f5d3af77 +- filename: pages/api/auth/[...nextauth].ts + checksum: 5763374ce8f74c303b6d1073462c572ee6df8f8528e3aae8df664bbab77460cc +- filename: pages/books.tsx + checksum: 8e3b60571bf9cfca7740ef1b22661109699ebe88c5bef0b39cde25a08f4aa664 +- filename: pages/form.tsx + checksum: b954b4a530b279d5713477c73e70faba1c579b3972344f6db2d326197367dec8 +- filename: pages/profil.tsx + checksum: 5f85579232df5641aa38d24c486e14216cc9aa0af87c3466184cae126e86980a +- filename: scripts/pg/create-multiple-postgresql-databases.sh + checksum: 2989dcdba68c9586ff81c53ccbddb452225127b9fb8db9bbcea22be26076e922 +- filename: src/components/header/index.tsx + checksum: a271fa91331ce68190cab5ed6c686529cf3bc406d2a2557139c061d5d18baa0d +- filename: src/lib/auth.ts + checksum: ba1373e7718c001b838459240de8f34e886a772f13178804101d4893982de5a3 +- filename: src/lib/e2esdk.ts + checksum: 56afd278d488c820882bd65fe58c333f7df8fa82ced3b42edc8c64095df7b2f6 +- filename: src/pages/api/auth/\[...nextauth\].ts + checksum: 695f5f301551c6d15b51ab60c0a0c70b38d87b36bf1e6bc4145603340b9abdf6 +- filename: src/pages/books.tsx + checksum: f648286c7ecb383f245f35456ffdaab4086b3b4cababe012dc6435cba57bfbe1 +- filename: src/queries/form.ts + checksum: 416d3702bda5149d13e2e3822956d39a82260f87b35497b1fd652787aa4622f6 +scopeconfig: +- scope: node +version: "1.0" +/books.tsx checksum: f648286c7ecb383f245f35456ffdaab4086b3b4cababe012dc6435cba57bfbe1 - filename: src/queries/form.ts checksum: 416d3702bda5149d13e2e3822956d39a82260f87b35497b1fd652787aa4622f6 diff --git a/hasura/Dockerfile b/hasura/Dockerfile index 9f518b75..2a894519 100644 --- a/hasura/Dockerfile +++ b/hasura/Dockerfile @@ -1,4 +1,4 @@ -FROM hasura/graphql-engine:v2.30.1-ce.cli-migrations-v3:@sha256:bf2b81244da9e8a6812d668cdcfb40f444d514e9a5f2b15d2dafe5c907fab3b6 +FROM hasura/graphql-engine:v2.30.1-ce.cli-migrations-v3@sha256:bf2b81244da9e8a6812d668cdcfb40f444d514e9a5f2b15d2dafe5c907fab3b6 ENV HASURA_GRAPHQL_ENABLE_TELEMETRY=false ENV HASURA_GRAPHQL_MIGRATIONS_SERVER_TIMEOUT=360 From 834402e2c2a289f3664b8171eba85a30a20f3845 Mon Sep 17 00:00:00 2001 From: Julien Bouquillon Date: Sat, 29 Jul 2023 15:44:06 +0200 Subject: [PATCH 4/7] cleanup --- src/pages/_app.tsx | 2 +- src/pages/api/auth/[...nextauth].ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index ab158420..de43106e 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -70,7 +70,7 @@ const { augmentDocumentWithEmotionCache, withAppEmotionCache } = key: "css", }); -export { augmentDocumentWithEmotionCache, dsfrDocumentApi }; +export { dsfrDocumentApi, augmentDocumentWithEmotionCache }; const brandTop = ( <> diff --git a/src/pages/api/auth/[...nextauth].ts b/src/pages/api/auth/[...nextauth].ts index 6c6559ff..dafd55d2 100644 --- a/src/pages/api/auth/[...nextauth].ts +++ b/src/pages/api/auth/[...nextauth].ts @@ -36,7 +36,6 @@ export default NextAuth({ account: Account; }) { // Initial sign in - //console.log("jwt", { token, user, account }); if (account && user) { return { From 5ea269356d3fc54e9fc36dc3d8d1f0c087591f4d Mon Sep 17 00:00:00 2001 From: Julien Bouquillon Date: Tue, 5 Dec 2023 23:35:36 +0100 Subject: [PATCH 5/7] Update .gitignore From 486c18047dc472c490ddc49f3b9754b70e34b603 Mon Sep 17 00:00:00 2001 From: Julien Bouquillon Date: Tue, 5 Dec 2023 23:55:39 +0100 Subject: [PATCH 6/7] fix-rootless --- .kontinuous/values.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.kontinuous/values.yaml b/.kontinuous/values.yaml index 19486dfa..7442970d 100644 --- a/.kontinuous/values.yaml +++ b/.kontinuous/values.yaml @@ -157,6 +157,10 @@ keycloakx: - name: compile-realm image: hairyhenderson/gomplate:v3.10.0-alpine imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + runAsNonRoot: true + runAsUser: 100 volumeMounts: - name: keycloak-realm-tpl mountPath: "/realm-tpl/" @@ -179,6 +183,10 @@ keycloakx: - "cat /realm-tpl/realm.json.envtpl | gomplate > /realm/realm.json" - name: fetch-keycloak-providers image: curlimages/curl + securityContext: + allowPrivilegeEscalation: false + runAsNonRoot: true + runAsUser: 405 imagePullPolicy: IfNotPresent command: - sh From fbb22f46dd11993b4350b022e3f92002ca2dc882 Mon Sep 17 00:00:00 2001 From: Julien Bouquillon Date: Wed, 6 Dec 2023 00:14:04 +0100 Subject: [PATCH 7/7] fix talisman --- .talismanrc | 357 ++++++++++++++++++++++++++-------------------------- 1 file changed, 175 insertions(+), 182 deletions(-) diff --git a/.talismanrc b/.talismanrc index 92244944..b687a591 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,186 +1,179 @@ fileignoreconfig: -- filename: .env.development - checksum: 6b4ffd2159670a9a52374a966de7c1a357838b9246101d974b3dbd6e6e1e834d -- filename: .env.production - checksum: 1f7c9755c1b8a65fb48f6343ea05d6afb9c4d0e085b6b964441f68ae524fda04 -- filename: .env.staging - checksum: 4344984233f1d2f630c6164bf630769851db42b7e143b56e5d0321139b0054fe -- filename: .github/workflows/e2e.yml - checksum: 9a29ecef215d5685eda60acb00c5484ca65137ac98094f5a8f4160264f9c15ab -- filename: .kontinuous/env/dev/templates/app.configmap.yaml - checksum: 2b8e04a067d47b19c9d21d7c46270d5f0a661018b3350179b94068c811e9582e -- filename: .kontinuous/env/dev/templates/app.sealed.secret.yaml - checksum: 6e59395de2ed6aec2913e7b7c8823ec5ffca5cb28304100f78b7db6cb2553005 -- filename: .kontinuous/env/dev/templates/franceconnect.sealed.secret.yaml - checksum: dcad58403a06374fa32467557b985bc0b268d890d432fdc23dcaffca283c1955 -- filename: .kontinuous/env/dev/templates/hasura.sealed.secret.yaml - checksum: 29aa6bf631a495f6bd4ccd3d1df88f48918a8b8e56eb5241169b2849d8929eda -- filename: .kontinuous/env/dev/templates/keycloak.sealed.secret.yaml - checksum: 074d8dab3a9d9890a3b1b4e398e1066848002eb852a49379e6906f400599b1aa -- filename: .kontinuous/env/dev/templates/smtp.sealed.secret.yaml - checksum: 3d07a05a96266af28a79117b6447c9f61f01d3f017a0c3947a66ce8866dbe6d2 -- filename: .kontinuous/env/preprod/templates/app.configmap.yaml - checksum: d388d2ea2935ab0e9a231434f8e8270a2f008479907249160d9327896d1d1b07 -- filename: .kontinuous/env/preprod/templates/app.sealed.secret.yaml - checksum: 6d0bdcef816f00308d8bfdbdb9aeca94dfaee5b54f29f2b868a9085fd6428829 -- filename: .kontinuous/env/preprod/templates/franceconnect.sealed.secret.yaml - checksum: 48b38e6033283722a1c9465ba5eb8c03b06a4eaf9564c59b0284c90c0bf37d5b -- filename: .kontinuous/env/preprod/templates/hasura.sealed.secret.yaml - checksum: 3df5dbc49f3eb0ce29f02ff0bab1861bf30a43d271517d1a2a51cf5d4407909e -- filename: .kontinuous/env/preprod/templates/keycloak.sealed.secret.yaml - checksum: e1eb6dee86f882ca6dce6aeaeca82a0711d1a15b3464fe617702184507e03a7b -- filename: .kontinuous/env/preprod/templates/smtp.sealed.secret.yaml - checksum: 96329d5fa5a5a34d2ceb99fb4cef9c107e2dfdf8b9b392e725a8e89753a26205 -- filename: .kontinuous/env/preprod/values.yaml - checksum: d73837d6c38a5f27b53435a576287d4a069e23736580d6a19c9eb3fc68e792b4 -- filename: .kontinuous/env/prod/templates/app.configmap.yaml - checksum: 0e1d907bb3d3e63bf5fd83c0e3bbd87af4814cffa31f71ff0ecf8e69305ca4a9 -- filename: .kontinuous/env/prod/templates/app.sealed.secret.yaml - checksum: 6869d898af4187aba5744a959b334b16f2ead1c8896f9f1591ecba849ba44a29 -- filename: .kontinuous/env/prod/templates/franceconnect.sealed.secret.yaml - checksum: 57d1f143dcf7878d997062ff08cdbcff21bc81c4cfff0acaa24b5345df9a3c08 -- filename: .kontinuous/env/prod/templates/hasura.sealed.secret.yaml - checksum: f05e1d7a075abecaafec37d390fdd538dbe99eea6e0d1c26a01e29e850c838ff -- filename: .kontinuous/env/prod/templates/keycloak.sealed.secret.yaml - checksum: ccf81976a79ced16448be59c5ec7278e05e1aebd5d9019789f9b6fb260d2f4ec -- filename: .kontinuous/env/prod/templates/smtp.sealed.secret.yaml - checksum: 3145443490e01a8e9f121bc242f7611bf9705d6362f1c8361b77b893cce1ea1f -- filename: .kontinuous/env/prod/values.yaml - checksum: d7e76dd44f7f22ad1ea569369b4159aed0026d0b4c22fe4179835bf46e912284 -- filename: .kontinuous/files/realm-export.json - checksum: e2b00a73de2b1ef4e4601f46e0c783233b06cbefe598f37dff0924e522bebcc9 -- filename: .kontinuous/values.yaml - checksum: e5111b2d119bda782cb25e7bb8f218512c9a8a4d135ff2c2ad50b1ea85660b8b -- filename: Dockerfile - checksum: d44d4622a3b55fe2f61d8fc97a527293a0dc36facb58504fabb543219eba2cb2 -- filename: README.md - checksum: 69f16f81ce480d7e1e0bde5b20acf2ca0eadfa7a7acfaf72c77348a567b087ae -- filename: hasura/Dockerfile - checksum: 80f7847463c69c03643e6803575576113aad79ce695856ee7233bf66085e4440 -- filename: hasura/migrations/default/1659018828697_init/up.sql - checksum: 35d9f9dd5380b853fe9ead2e36b97158de39be0a1b9aaee0071b1f43fbdfb211 -- filename: hasura/migrations/default/1659130257063_alter_table_public_books_add_column_user_id/down.sql - checksum: f9adad1b9373228c99d82fbf32a9d053540e062e7378e12628674b9dd312caa9 -- filename: hasura/migrations/default/1659130257063_alter_table_public_books_add_column_user_id/up.sql - checksum: 803f634b1833b97fb7a63f28cfd450f28b83dca850c20e5a44df33094e673994 -- filename: hasura/migrations/default/1681303296141_create_table_public_answers/down.sql - checksum: 7db4fecd1b24fdcea10617ceb4842381d10bc6242924b4c2f974c77fb5935e9c -- filename: hasura/migrations/default/1681303296141_create_table_public_answers/up.sql - checksum: 0b43b7f6611dc733f27c1f632ffbaf0a265fec144a344c3a78c1eb912bfbf0cd -- filename: hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/down.sql - checksum: 8477739170155724e1c5629129ec22444dd2af53fe04f26f6028783abb125135 -- filename: hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/up.sql - checksum: 0304fe5ecdc9eb6bde037de85a82c2a70f4bfb6b4566d956ad5eadecf9d8169c -- filename: hasura/migrations/default/1684314835951_create_table_public_files/down.sql - checksum: 6c2703260490eccd10858046af53b33cdbf86ba62ea48cbf7aa7b969c91618a2 -- filename: hasura/migrations/default/1684314835951_create_table_public_files/up.sql - checksum: 71222c539960f1dfc10f01a99ac6520b976ccf9d831e44bca80a1a0633ec6917 -- filename: hasura/migrations/default/1684314945514_create_table_public_answers_files/down.sql - checksum: 9989fc6a804bb48257720db6c3c1f718109402b11c2e064f52bb1e6710433511 -- filename: hasura/migrations/default/1684314945514_create_table_public_answers_files/up.sql - checksum: fec002e5b511be371fad0a8a685c5ba727ddac5915e4ca2ac852c9f45e205928 -- filename: hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/down.sql - checksum: 3f8e8f4bd481eefd99fdea2af388f57a7621d29dd6c17d1d60be74f15a430150 -- filename: hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/up.sql - checksum: a8c8ca41f5fcbf4a23d5fb814484fdce8a04f006bdb3ead80c8aab38f2ee0630 -- filename: hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/down.sql - checksum: 581331332aa2121b4b5160704c09305169e2f0e276515993929e554939b5b560 -- filename: hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/up.sql - checksum: e5d164a31be5cd0238bdacf3c7fede4ba03a42f01dc290680b16df646726d9c6 -- filename: hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/down.sql - checksum: 534b60b957a23effee67d7d08e15e7ff35a987989253ffbc786e306889c38466 -- filename: hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/up.sql - checksum: 1b59ea369b35494d3df85398b59d1266b359f3d0962108b944d8e82cb19ca44f -- filename: hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/down.sql - checksum: 73ef953b790755b5968b2fb2f03a21c7993fa146c05c7f085ec1d7ce35b4d8e2 -- filename: hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/up.sql - checksum: 4dff0097ad4d4fb48da7ed7f32e01787558dd3a710339aa0ceb30cb05a036a96 -- filename: hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/down.sql - checksum: 3cc63739d321146efc7fb954f42222ee0389cdcb28c59a94260d33f26c700f1a -- filename: hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/up.sql - checksum: be2ef7400e22782fb1c6e9df883a3dabcb53fa1e179cfef133ebfa839cb8600e -- filename: hasura/migrations/default/1684315633710_modify_primarykey_public_answers/down.sql - checksum: bc6573c3203727f4f7300a90c90feaa003fc7d567f9717a86b1bd52f4aeac7bc -- filename: hasura/migrations/default/1684315633710_modify_primarykey_public_answers/up.sql - checksum: 0a7d95a2c2a16a805abb82e6c4a1541b0384c5272b671fa19e73ab0f557ecbd0 -- filename: hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/down.sql - checksum: b3c14cd15ef84c004a55dd254b226aa1322f5a1290c7b518e92b6fad2e461140 -- filename: hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/up.sql - checksum: d745547365d22f0fbe15ee770444d40f2715d9c20d023841bd209097f8a75c2d -- filename: hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/down.sql - checksum: 126a3416c110dfb62e57abd30435ecf15f249d9baf6945a3f02a10f75f0cb373 -- filename: hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/up.sql - checksum: 1aa4b7b0858c2976f3a090e87c073ff1a8f2178486547dead4ea19728a5949ad -- filename: hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/down.sql - checksum: b3b74011c27052ae66c511a28d4d6510a122b91175f52d744a9e88c92559bd10 -- filename: hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/up.sql - checksum: 50d7aeeeb9b7a0034a9e5aee03d4b1b7d06bfeec927dff9d68e614626d00144f -- filename: hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/down.sql - checksum: b10dcb13e1ba144c0981a07c5bb2c4ab76af0c202ee864370f7b9e14ad641a60 -- filename: hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/up.sql - checksum: 7ff83a3d01c3913693299ddd79fca77a9cfacad8883201817e4460c0abb11ffe -- filename: hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/down.sql - checksum: 067147e86a6c7434a52d638312ef69581bd4e2498f9be3cf3e60652b9be40b8c -- filename: hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/up.sql - checksum: 875e9efd7e051491b3627bd1cf8cbf852491a777682740f155f104638fc70c20 -- filename: hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/down.sql - checksum: cd90ee4d8342c72a17ea1ab12666629d5fa4c68180cd89503cb53d0c5abe39e2 -- filename: hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/up.sql - checksum: 37a0cc594434c0185ad5c70779d0e913b028c0d2a70465b138959314f1b977cd -- filename: hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/down.sql - checksum: f0b96ad0ab124e3168738a1cecbcd7e2b3118494dbf251db760530b80262099f -- filename: hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/up.sql - checksum: 9db5c78de2300bdc7770b6d1d6b3d6ec346b86f0043067c8f77bea8c3f00f34d -- filename: hasura/migrations/default/1684316904382_run_sql_migration/down.sql - checksum: ee8f124f122f04ff4642efa52493d92f6213cfe62d1e1ac4c7e4ee5fcdf97b56 -- filename: hasura/migrations/default/1684316904382_run_sql_migration/up.sql - checksum: 63577acf368a5adbadb714ebaf7a08cc9c6e07e5f936206ace21748cc445a135 -- filename: hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/down.sql - checksum: c91f7639218ed6829b9874a71b9522cd440c5f1f47ccec384295bae61fac62c3 -- filename: hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/up.sql - checksum: d63aa44d7e252e93b1c25502214fb2e27b5c827e6a0eb94220a38361a1fff495 -- filename: hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/down.sql - checksum: 6f197d3f8c57135029f04b414ab2e9a8d11d7718e2b641495fdfe98ae76cf697 -- filename: hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/up.sql - checksum: 001dd978bf9cc3c63638b10445f72f157ed625ea0625fb3a05636c23bd2dc4a9 -- filename: hasura/seeds/default/books.sql - checksum: 40e5ea9f6cf231cd04fa3c40aa27b4f311f240dac730a26ac55afc3204d1bc14 -- filename: keycloak/config/realm-export-local.json - checksum: 9ebc94d1d4542ee609132f6417a07e14f3668d5caeeaa72ac81829ed6a7ecaa7 -- filename: keycloak/scripts/keycloak.sh - checksum: efed473c9b23bca81ec472c7e227ee6df94e322ca64341fedd15b57124338a01 -- filename: package.json - checksum: a98fc3969b8c79204c0bf9bebef3ba22d5bc120ef71b93402cc85dc7d265402b -- filename: pages/_app.tsx - checksum: 86b00324ee8b65d9c72701f8f7ef07a57fd8e7c775c50fdb6e365f604420a756 -- filename: pages/answers.tsx - checksum: c20e57ac78ddbeb8f8435a7479538107f32582a56b8c490aa9d06006f5d3af77 -- filename: pages/api/auth/[...nextauth].ts - checksum: 5763374ce8f74c303b6d1073462c572ee6df8f8528e3aae8df664bbab77460cc -- filename: pages/books.tsx - checksum: 8e3b60571bf9cfca7740ef1b22661109699ebe88c5bef0b39cde25a08f4aa664 -- filename: pages/form.tsx - checksum: b954b4a530b279d5713477c73e70faba1c579b3972344f6db2d326197367dec8 -- filename: pages/profil.tsx - checksum: 5f85579232df5641aa38d24c486e14216cc9aa0af87c3466184cae126e86980a -- filename: scripts/pg/create-multiple-postgresql-databases.sh - checksum: 2989dcdba68c9586ff81c53ccbddb452225127b9fb8db9bbcea22be26076e922 -- filename: src/components/header/index.tsx - checksum: a271fa91331ce68190cab5ed6c686529cf3bc406d2a2557139c061d5d18baa0d -- filename: src/lib/auth.ts - checksum: ba1373e7718c001b838459240de8f34e886a772f13178804101d4893982de5a3 -- filename: src/lib/e2esdk.ts - checksum: 56afd278d488c820882bd65fe58c333f7df8fa82ced3b42edc8c64095df7b2f6 -- filename: src/pages/api/auth/\[...nextauth\].ts - checksum: 695f5f301551c6d15b51ab60c0a0c70b38d87b36bf1e6bc4145603340b9abdf6 -- filename: src/pages/books.tsx - checksum: f648286c7ecb383f245f35456ffdaab4086b3b4cababe012dc6435cba57bfbe1 -- filename: src/queries/form.ts - checksum: 416d3702bda5149d13e2e3822956d39a82260f87b35497b1fd652787aa4622f6 -scopeconfig: -- scope: node -version: "1.0" -/books.tsx + - filename: .env.development + checksum: 6b4ffd2159670a9a52374a966de7c1a357838b9246101d974b3dbd6e6e1e834d + - filename: .env.production + checksum: 1f7c9755c1b8a65fb48f6343ea05d6afb9c4d0e085b6b964441f68ae524fda04 + - filename: .env.staging + checksum: 4344984233f1d2f630c6164bf630769851db42b7e143b56e5d0321139b0054fe + - filename: .github/workflows/e2e.yml + checksum: 9a29ecef215d5685eda60acb00c5484ca65137ac98094f5a8f4160264f9c15ab + - filename: .kontinuous/env/dev/templates/app.configmap.yaml + checksum: 2b8e04a067d47b19c9d21d7c46270d5f0a661018b3350179b94068c811e9582e + - filename: .kontinuous/env/dev/templates/app.sealed.secret.yaml + checksum: 6e59395de2ed6aec2913e7b7c8823ec5ffca5cb28304100f78b7db6cb2553005 + - filename: .kontinuous/env/dev/templates/franceconnect.sealed.secret.yaml + checksum: dcad58403a06374fa32467557b985bc0b268d890d432fdc23dcaffca283c1955 + - filename: .kontinuous/env/dev/templates/hasura.sealed.secret.yaml + checksum: 29aa6bf631a495f6bd4ccd3d1df88f48918a8b8e56eb5241169b2849d8929eda + - filename: .kontinuous/env/dev/templates/keycloak.sealed.secret.yaml + checksum: 074d8dab3a9d9890a3b1b4e398e1066848002eb852a49379e6906f400599b1aa + - filename: .kontinuous/env/dev/templates/smtp.sealed.secret.yaml + checksum: 3d07a05a96266af28a79117b6447c9f61f01d3f017a0c3947a66ce8866dbe6d2 + - filename: .kontinuous/env/preprod/templates/app.configmap.yaml + checksum: d388d2ea2935ab0e9a231434f8e8270a2f008479907249160d9327896d1d1b07 + - filename: .kontinuous/env/preprod/templates/app.sealed.secret.yaml + checksum: 6d0bdcef816f00308d8bfdbdb9aeca94dfaee5b54f29f2b868a9085fd6428829 + - filename: .kontinuous/env/preprod/templates/franceconnect.sealed.secret.yaml + checksum: 48b38e6033283722a1c9465ba5eb8c03b06a4eaf9564c59b0284c90c0bf37d5b + - filename: .kontinuous/env/preprod/templates/hasura.sealed.secret.yaml + checksum: 3df5dbc49f3eb0ce29f02ff0bab1861bf30a43d271517d1a2a51cf5d4407909e + - filename: .kontinuous/env/preprod/templates/keycloak.sealed.secret.yaml + checksum: e1eb6dee86f882ca6dce6aeaeca82a0711d1a15b3464fe617702184507e03a7b + - filename: .kontinuous/env/preprod/templates/smtp.sealed.secret.yaml + checksum: 96329d5fa5a5a34d2ceb99fb4cef9c107e2dfdf8b9b392e725a8e89753a26205 + - filename: .kontinuous/env/preprod/values.yaml + checksum: d73837d6c38a5f27b53435a576287d4a069e23736580d6a19c9eb3fc68e792b4 + - filename: .kontinuous/env/prod/templates/app.configmap.yaml + checksum: 0e1d907bb3d3e63bf5fd83c0e3bbd87af4814cffa31f71ff0ecf8e69305ca4a9 + - filename: .kontinuous/env/prod/templates/app.sealed.secret.yaml + checksum: 6869d898af4187aba5744a959b334b16f2ead1c8896f9f1591ecba849ba44a29 + - filename: .kontinuous/env/prod/templates/franceconnect.sealed.secret.yaml + checksum: 57d1f143dcf7878d997062ff08cdbcff21bc81c4cfff0acaa24b5345df9a3c08 + - filename: .kontinuous/env/prod/templates/hasura.sealed.secret.yaml + checksum: f05e1d7a075abecaafec37d390fdd538dbe99eea6e0d1c26a01e29e850c838ff + - filename: .kontinuous/env/prod/templates/keycloak.sealed.secret.yaml + checksum: ccf81976a79ced16448be59c5ec7278e05e1aebd5d9019789f9b6fb260d2f4ec + - filename: .kontinuous/env/prod/templates/smtp.sealed.secret.yaml + checksum: 3145443490e01a8e9f121bc242f7611bf9705d6362f1c8361b77b893cce1ea1f + - filename: .kontinuous/env/prod/values.yaml + checksum: d7e76dd44f7f22ad1ea569369b4159aed0026d0b4c22fe4179835bf46e912284 + - filename: .kontinuous/files/realm-export.json + checksum: e2b00a73de2b1ef4e4601f46e0c783233b06cbefe598f37dff0924e522bebcc9 + - filename: .kontinuous/values.yaml + checksum: e5111b2d119bda782cb25e7bb8f218512c9a8a4d135ff2c2ad50b1ea85660b8b + - filename: Dockerfile + checksum: d44d4622a3b55fe2f61d8fc97a527293a0dc36facb58504fabb543219eba2cb2 + - filename: README.md + checksum: 69f16f81ce480d7e1e0bde5b20acf2ca0eadfa7a7acfaf72c77348a567b087ae + - filename: hasura/Dockerfile + checksum: 80f7847463c69c03643e6803575576113aad79ce695856ee7233bf66085e4440 + - filename: hasura/migrations/default/1659018828697_init/up.sql + checksum: 35d9f9dd5380b853fe9ead2e36b97158de39be0a1b9aaee0071b1f43fbdfb211 + - filename: hasura/migrations/default/1659130257063_alter_table_public_books_add_column_user_id/down.sql + checksum: f9adad1b9373228c99d82fbf32a9d053540e062e7378e12628674b9dd312caa9 + - filename: hasura/migrations/default/1659130257063_alter_table_public_books_add_column_user_id/up.sql + checksum: 803f634b1833b97fb7a63f28cfd450f28b83dca850c20e5a44df33094e673994 + - filename: hasura/migrations/default/1681303296141_create_table_public_answers/down.sql + checksum: 7db4fecd1b24fdcea10617ceb4842381d10bc6242924b4c2f974c77fb5935e9c + - filename: hasura/migrations/default/1681303296141_create_table_public_answers/up.sql + checksum: 0b43b7f6611dc733f27c1f632ffbaf0a265fec144a344c3a78c1eb912bfbf0cd + - filename: hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/down.sql + checksum: 8477739170155724e1c5629129ec22444dd2af53fe04f26f6028783abb125135 + - filename: hasura/migrations/default/1681305238139_alter_table_public_answers_add_column_signature/up.sql + checksum: 0304fe5ecdc9eb6bde037de85a82c2a70f4bfb6b4566d956ad5eadecf9d8169c + - filename: hasura/migrations/default/1684314835951_create_table_public_files/down.sql + checksum: 6c2703260490eccd10858046af53b33cdbf86ba62ea48cbf7aa7b969c91618a2 + - filename: hasura/migrations/default/1684314835951_create_table_public_files/up.sql + checksum: 71222c539960f1dfc10f01a99ac6520b976ccf9d831e44bca80a1a0633ec6917 + - filename: hasura/migrations/default/1684314945514_create_table_public_answers_files/down.sql + checksum: 9989fc6a804bb48257720db6c3c1f718109402b11c2e064f52bb1e6710433511 + - filename: hasura/migrations/default/1684314945514_create_table_public_answers_files/up.sql + checksum: fec002e5b511be371fad0a8a685c5ba727ddac5915e4ca2ac852c9f45e205928 + - filename: hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/down.sql + checksum: 3f8e8f4bd481eefd99fdea2af388f57a7621d29dd6c17d1d60be74f15a430150 + - filename: hasura/migrations/default/1684314983990_alter_table_public_files_add_unique_hash/up.sql + checksum: a8c8ca41f5fcbf4a23d5fb814484fdce8a04f006bdb3ead80c8aab38f2ee0630 + - filename: hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/down.sql + checksum: 581331332aa2121b4b5160704c09305169e2f0e276515993929e554939b5b560 + - filename: hasura/migrations/default/1684315453170_alter_table_public_answers_add_column_uuid/up.sql + checksum: e5d164a31be5cd0238bdacf3c7fede4ba03a42f01dc290680b16df646726d9c6 + - filename: hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/down.sql + checksum: 534b60b957a23effee67d7d08e15e7ff35a987989253ffbc786e306889c38466 + - filename: hasura/migrations/default/1684315461992_alter_table_public_answers_alter_column_uuid/up.sql + checksum: 1b59ea369b35494d3df85398b59d1266b359f3d0962108b944d8e82cb19ca44f + - filename: hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/down.sql + checksum: 73ef953b790755b5968b2fb2f03a21c7993fa146c05c7f085ec1d7ce35b4d8e2 + - filename: hasura/migrations/default/1684315533357_alter_table_public_answers_files_drop_column_answer_id/up.sql + checksum: 4dff0097ad4d4fb48da7ed7f32e01787558dd3a710339aa0ceb30cb05a036a96 + - filename: hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/down.sql + checksum: 3cc63739d321146efc7fb954f42222ee0389cdcb28c59a94260d33f26c700f1a + - filename: hasura/migrations/default/1684315553901_alter_table_public_answers_files_add_column_answer_uuid/up.sql + checksum: be2ef7400e22782fb1c6e9df883a3dabcb53fa1e179cfef133ebfa839cb8600e + - filename: hasura/migrations/default/1684315633710_modify_primarykey_public_answers/down.sql + checksum: bc6573c3203727f4f7300a90c90feaa003fc7d567f9717a86b1bd52f4aeac7bc + - filename: hasura/migrations/default/1684315633710_modify_primarykey_public_answers/up.sql + checksum: 0a7d95a2c2a16a805abb82e6c4a1541b0384c5272b671fa19e73ab0f557ecbd0 + - filename: hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/down.sql + checksum: b3c14cd15ef84c004a55dd254b226aa1322f5a1290c7b518e92b6fad2e461140 + - filename: hasura/migrations/default/1684315652503_set_fk_public_answers_files_answer_uuid/up.sql + checksum: d745547365d22f0fbe15ee770444d40f2715d9c20d023841bd209097f8a75c2d + - filename: hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/down.sql + checksum: 126a3416c110dfb62e57abd30435ecf15f249d9baf6945a3f02a10f75f0cb373 + - filename: hasura/migrations/default/1684315662174_alter_table_public_answers_files_add_unique_file_hash_answer_uuid/up.sql + checksum: 1aa4b7b0858c2976f3a090e87c073ff1a8f2178486547dead4ea19728a5949ad + - filename: hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/down.sql + checksum: b3b74011c27052ae66c511a28d4d6510a122b91175f52d744a9e88c92559bd10 + - filename: hasura/migrations/default/1684315959954_alter_table_public_files_add_column_answers_files_id/up.sql + checksum: 50d7aeeeb9b7a0034a9e5aee03d4b1b7d06bfeec927dff9d68e614626d00144f + - filename: hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/down.sql + checksum: b10dcb13e1ba144c0981a07c5bb2c4ab76af0c202ee864370f7b9e14ad641a60 + - filename: hasura/migrations/default/1684315970431_set_fk_public_files_answers_files_id/up.sql + checksum: 7ff83a3d01c3913693299ddd79fca77a9cfacad8883201817e4460c0abb11ffe + - filename: hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/down.sql + checksum: 067147e86a6c7434a52d638312ef69581bd4e2498f9be3cf3e60652b9be40b8c + - filename: hasura/migrations/default/1684316715774_alter_table_public_answers_files_add_column_key/up.sql + checksum: 875e9efd7e051491b3627bd1cf8cbf852491a777682740f155f104638fc70c20 + - filename: hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/down.sql + checksum: cd90ee4d8342c72a17ea1ab12666629d5fa4c68180cd89503cb53d0c5abe39e2 + - filename: hasura/migrations/default/1684316822970_delete_fk_public_files_files_answers_files_id_fkey/up.sql + checksum: 37a0cc594434c0185ad5c70779d0e913b028c0d2a70465b138959314f1b977cd + - filename: hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/down.sql + checksum: f0b96ad0ab124e3168738a1cecbcd7e2b3118494dbf251db760530b80262099f + - filename: hasura/migrations/default/1684316834258_alter_table_public_files_drop_constraint_files_hash_key/up.sql + checksum: 9db5c78de2300bdc7770b6d1d6b3d6ec346b86f0043067c8f77bea8c3f00f34d + - filename: hasura/migrations/default/1684316904382_run_sql_migration/down.sql + checksum: ee8f124f122f04ff4642efa52493d92f6213cfe62d1e1ac4c7e4ee5fcdf97b56 + - filename: hasura/migrations/default/1684316904382_run_sql_migration/up.sql + checksum: 63577acf368a5adbadb714ebaf7a08cc9c6e07e5f936206ace21748cc445a135 + - filename: hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/down.sql + checksum: c91f7639218ed6829b9874a71b9522cd440c5f1f47ccec384295bae61fac62c3 + - filename: hasura/migrations/default/1684317239523_alter_table_public_answers_files_alter_column_key/up.sql + checksum: d63aa44d7e252e93b1c25502214fb2e27b5c827e6a0eb94220a38361a1fff495 + - filename: hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/down.sql + checksum: 6f197d3f8c57135029f04b414ab2e9a8d11d7718e2b641495fdfe98ae76cf697 + - filename: hasura/migrations/default/1684329733228_alter_table_public_answers_files_drop_column_file_key/up.sql + checksum: 001dd978bf9cc3c63638b10445f72f157ed625ea0625fb3a05636c23bd2dc4a9 + - filename: hasura/seeds/default/books.sql + checksum: 40e5ea9f6cf231cd04fa3c40aa27b4f311f240dac730a26ac55afc3204d1bc14 + - filename: keycloak/config/realm-export-local.json + checksum: 9ebc94d1d4542ee609132f6417a07e14f3668d5caeeaa72ac81829ed6a7ecaa7 + - filename: keycloak/scripts/keycloak.sh + checksum: efed473c9b23bca81ec472c7e227ee6df94e322ca64341fedd15b57124338a01 + - filename: package.json + checksum: a98fc3969b8c79204c0bf9bebef3ba22d5bc120ef71b93402cc85dc7d265402b + - filename: pages/_app.tsx + checksum: 86b00324ee8b65d9c72701f8f7ef07a57fd8e7c775c50fdb6e365f604420a756 + - filename: pages/answers.tsx + checksum: c20e57ac78ddbeb8f8435a7479538107f32582a56b8c490aa9d06006f5d3af77 + - filename: pages/api/auth/[...nextauth].ts + checksum: 5763374ce8f74c303b6d1073462c572ee6df8f8528e3aae8df664bbab77460cc + - filename: pages/books.tsx + checksum: 8e3b60571bf9cfca7740ef1b22661109699ebe88c5bef0b39cde25a08f4aa664 + - filename: pages/form.tsx + checksum: b954b4a530b279d5713477c73e70faba1c579b3972344f6db2d326197367dec8 + - filename: pages/profil.tsx + checksum: 5f85579232df5641aa38d24c486e14216cc9aa0af87c3466184cae126e86980a + - filename: scripts/pg/create-multiple-postgresql-databases.sh + checksum: 2989dcdba68c9586ff81c53ccbddb452225127b9fb8db9bbcea22be26076e922 + - filename: src/components/header/index.tsx + checksum: a271fa91331ce68190cab5ed6c686529cf3bc406d2a2557139c061d5d18baa0d + - filename: src/lib/auth.ts + checksum: ba1373e7718c001b838459240de8f34e886a772f13178804101d4893982de5a3 + - filename: src/lib/e2esdk.ts + checksum: 56afd278d488c820882bd65fe58c333f7df8fa82ced3b42edc8c64095df7b2f6 + - filename: src/pages/api/auth/\[...nextauth\].ts + checksum: 695f5f301551c6d15b51ab60c0a0c70b38d87b36bf1e6bc4145603340b9abdf6 + - filename: src/pages/books.tsx checksum: f648286c7ecb383f245f35456ffdaab4086b3b4cababe012dc6435cba57bfbe1 - filename: src/queries/form.ts checksum: 416d3702bda5149d13e2e3822956d39a82260f87b35497b1fd652787aa4622f6