From e299038e6688a89be6069c2b4121bd63a4635973 Mon Sep 17 00:00:00 2001 From: steel <mael.acier@ensiie.fr> Date: Tue, 27 Aug 2024 23:32:53 +0200 Subject: [PATCH] use tada.gql --- .gitignore | 3 +- .graphqlrc.yaml | 9 - houdini.config.js | 27 - package.json | 8 +- pnpm-lock.yaml | 1566 +++++---------- src/graphql-env.d.ts | 110 ++ src/lib/data.ts | 46 +- src/lib/graphql/client.ts | 15 +- src/lib/graphql/index.ts | 14 + src/lib/graphql/queries.ts | 32 + src/lib/graphql/queries/promo.gql | 15 - src/lib/graphql/queries/user_details.gql | 10 - src/lib/graphql/query.ts | 41 +- src/lib/graphql/schema.gql | 2236 ++++++++++++---------- src/routes/quiz/+page.server.ts | 22 +- src/routes/quiz/+page.svelte | 4 +- tsconfig.json | 8 +- vite.config.ts | 3 +- 18 files changed, 1947 insertions(+), 2222 deletions(-) delete mode 100644 .graphqlrc.yaml delete mode 100644 houdini.config.js create mode 100644 src/graphql-env.d.ts create mode 100644 src/lib/graphql/index.ts create mode 100644 src/lib/graphql/queries.ts delete mode 100644 src/lib/graphql/queries/promo.gql delete mode 100644 src/lib/graphql/queries/user_details.gql diff --git a/.gitignore b/.gitignore index dee9b57..0ce4a29 100644 --- a/.gitignore +++ b/.gitignore @@ -22,5 +22,6 @@ vite.config.ts.timestamp-* static/*.jpg -$houdini + + .vscode diff --git a/.graphqlrc.yaml b/.graphqlrc.yaml deleted file mode 100644 index 427c16f..0000000 --- a/.graphqlrc.yaml +++ /dev/null @@ -1,9 +0,0 @@ -projects: - default: - schema: - - ./src/lib/graphql/schema.gql - - ./$houdini/graphql/schema.graphql - documents: - - '**/*.gql' - - '**/*.svelte' - - ./$houdini/graphql/documents.gql diff --git a/houdini.config.js b/houdini.config.js deleted file mode 100644 index 29e2b4d..0000000 --- a/houdini.config.js +++ /dev/null @@ -1,27 +0,0 @@ -/** @type {import('houdini').ConfigFile} */ -export default { - plugins: { - 'houdini-svelte': { - client: './src/lib/graphql/client' - } - }, - schemaPath: './src/lib/graphql/schema.gql', - watchSchema: { - url(env) { - return `${env.API_ORIGIN}/graphql/v0`; - }, - headers: { - Authorization(env) { - return `Basic ${env.API_TOKEN}`; - } - } - }, - scalars: { - Url: { - type: 'string' - }, - Base64: { - type: 'string' - } - } -}; diff --git a/package.json b/package.json index e7b6444..c451485 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "lint": "prettier --check . && eslint .", "format": "prettier --write .", - "pull-schema": "houdini pull-schema" + "schema-env": "gql.tada generate-schema $API_ORIGIN/graphql/v0 --header \"Authorization: Basic $API_TOKEN\" -o src/lib/graphql/schema.gql", + "schema": "dotenv -- pnpm run schema-env" }, "devDependencies": { "@sveltejs/adapter-node": "^5.2.2", @@ -25,12 +26,11 @@ "@sveltejs/vite-plugin-svelte": "^3.0.0", "@types/eslint": "^9.6.0", "autoprefixer": "^10.4.20", + "dotenv-cli": "^7.4.2", "eslint": "^9.0.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-svelte": "^2.36.0", "globals": "^15.0.0", - "houdini": "^1.2.56", - "houdini-svelte": "^1.2.56", "prettier": "^3.1.1", "prettier-plugin-svelte": "^3.1.2", "prettier-plugin-tailwindcss": "^0.6.5", @@ -42,7 +42,9 @@ "vite": "^5.0.3" }, "dependencies": { + "@urql/core": "^5.0.6", "formsnap": "^1.0.1", + "gql.tada": "^1.8.6", "msgpackr": "^1.11.0", "sveltekit-superforms": "^2.17.0", "zod": "^3.23.8" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 16714e4..3fd4d27 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,9 +8,15 @@ importers: .: dependencies: + '@urql/core': + specifier: ^5.0.6 + version: 5.0.6(graphql@15.9.0) formsnap: specifier: ^1.0.1 version: 1.0.1(svelte@4.2.18)(sveltekit-superforms@2.17.0(@sveltejs/kit@2.5.24(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.4.2(@types/node@22.5.0)))(svelte@4.2.18)(vite@5.4.2(@types/node@22.5.0)))(svelte@4.2.18)) + gql.tada: + specifier: ^1.8.6 + version: 1.8.6(graphql@15.9.0)(typescript@5.5.4) msgpackr: specifier: ^1.11.0 version: 1.11.0 @@ -36,6 +42,9 @@ importers: autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.41) + dotenv-cli: + specifier: ^7.4.2 + version: 7.4.2 eslint: specifier: ^9.0.0 version: 9.9.0(jiti@1.21.6) @@ -44,16 +53,10 @@ importers: version: 9.1.0(eslint@9.9.0(jiti@1.21.6)) eslint-plugin-svelte: specifier: ^2.36.0 - version: 2.43.0(eslint@9.9.0(jiti@1.21.6))(svelte@4.2.18) + version: 2.43.0(eslint@9.9.0(jiti@1.21.6))(svelte@4.2.18)(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.5.4)) globals: specifier: ^15.0.0 version: 15.9.0 - houdini: - specifier: ^1.2.56 - version: 1.2.56 - houdini-svelte: - specifier: ^1.2.56 - version: 1.2.56(@types/node@22.5.0) prettier: specifier: ^3.1.1 version: 3.3.3 @@ -68,10 +71,10 @@ importers: version: 4.2.18 svelte-check: specifier: ^3.6.0 - version: 3.8.5(postcss-load-config@4.0.2(postcss@8.4.41))(postcss@8.4.41)(svelte@4.2.18) + version: 3.8.5(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.5.4)))(postcss@8.4.41)(svelte@4.2.18) tailwindcss: specifier: ^3.4.9 - version: 3.4.10 + version: 3.4.10(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.5.4)) typescript: specifier: ^5.0.0 version: 5.5.4 @@ -84,6 +87,20 @@ importers: packages: + '@0no-co/graphql.web@1.0.8': + resolution: {integrity: sha512-8BG6woLtDMvXB9Ajb/uE+Zr/U7y4qJ3upXi0JQHZmsKUJa7HjF/gFvmL2f3/mSmfZoQGRr9VoY97LCX2uaFMzA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + graphql: + optional: true + + '@0no-co/graphqlsp@1.12.13': + resolution: {integrity: sha512-/C9yXft+mq+VdoniBgWvA+iK5X6cB50KKThg1je4bFIhhBNccLJlNbWFxOglXseKuisq+h5oIY4ELTVKs6GhRQ==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -98,6 +115,40 @@ packages: '@ark/util@0.1.0': resolution: {integrity: sha512-qCLYICQoCy3kEKDVwirQp8qvxhY7NJd8BhhoHaj1l3wCFAk9NUbcDsxAkPStZEMdPI/d7NcbGJe8SWZuRG2twQ==} + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.25.4': + resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.25.2': + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.5': + resolution: {integrity: sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.2': + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.24.8': resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} @@ -106,6 +157,18 @@ packages: resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.24.8': + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.25.0': + resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.25.4': resolution: {integrity: sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==} engines: {node: '>=6.0.0'} @@ -115,25 +178,21 @@ packages: resolution: {integrity: sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.4': - resolution: {integrity: sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==} + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} - '@clack/core@0.3.4': - resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==} - - '@clack/prompts@0.6.3': - resolution: {integrity: sha512-AM+kFmAHawpUQv2q9+mcB6jLKxXGjgu/r2EQjEwujgpCdzrST6BJqYw00GRn56/L/Izw5U7ImoLmy00X/r80Pw==} - bundledDependencies: - - is-unicode-supported + '@babel/traverse@7.25.4': + resolution: {integrity: sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==} + engines: {node: '>=6.9.0'} - '@envelop/core@4.0.3': - resolution: {integrity: sha512-O0Vz8E0TObT6ijAob8jYFVJavcGywKThM3UAsxUIBBVPYZTMiqI9lo2gmAnbMUnrDcAYkUTZEW9FDYPRdF5l6g==} - engines: {node: '>=16.0.0'} + '@babel/types@7.25.4': + resolution: {integrity: sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==} + engines: {node: '>=6.9.0'} - '@envelop/types@4.0.1': - resolution: {integrity: sha512-ULo27/doEsP7uUhm2iTnElx13qTO6I5FKvmLoX41cpfuw8x6e0NUFknoqhEsLzAbgz8xVS5mjwcxGCXh4lDYzg==} - engines: {node: '>=16.0.0'} + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} @@ -141,264 +200,132 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.18.20': - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.18.20': - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.18.20': - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.18.20': - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.18.20': - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.18.20': - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.18.20': - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.18.20': - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.18.20': - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.18.20': - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.18.20': - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.18.20': - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.18.20': - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.18.20': - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.18.20': - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.18.20': - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.18.20': - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.18.20': - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.18.20': - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.18.20': - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.18.20': - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.18.20': - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} @@ -434,69 +361,29 @@ packages: '@exodus/schemasafe@1.3.0': resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - '@gcornut/valibot-json-schema@0.31.0': resolution: {integrity: sha512-3xGptCurm23e7nuPQkdrE5rEs1FeTPHhAUsBuwwqG4/YeZLwJOoYZv+fmsppUEfo5y9lzUwNQrNqLS/q7HMc7g==} hasBin: true - '@graphql-tools/executor@1.3.1': - resolution: {integrity: sha512-tgJDdGf9SCAm64ofEMZdv925u6/J+eTmv36TGNLxgP2DpCJsZ6gnJ4A+0D28EazDXqJIvMiPd+3d+o3cCRCAnQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-tools/merge@8.4.2': - resolution: {integrity: sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-tools/merge@9.0.6': - resolution: {integrity: sha512-TmkzFTFVieHnqu9mPTF6RxAQltaprpDQnM5HMTPSyMLXnJGMTvdWejV0yORKj7DW1YSi791/sUnKf8HytepBFQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-tools/schema@10.0.6': - resolution: {integrity: sha512-EIJgPRGzpvDFEjVp+RF1zNNYIC36BYuIeZ514jFoJnI6IdxyVyIRDLx/ykgMdaa1pKQerpfdqDnsF4JnZoDHSQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-tools/schema@9.0.19': - resolution: {integrity: sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==} + '@gql.tada/cli-utils@1.6.1': + resolution: {integrity: sha512-ZfYa5+rbK51c6ociTUL66qW1lyB9dXoAKNZMEAp2pWgPp16qZVBwopUaYxSKq4BML9eSiv0ocoJ7H6VW51ud7w==} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-tools/utils@10.5.4': - resolution: {integrity: sha512-XHnyCWSlg1ccsD8s0y6ugo5GZ5TpkTiFVNPSYms5G0s6Z/xTuSmiLBfeqgkfaCwLmLaQnRCmNDL2JRnqc2R5bQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-tools/utils@9.2.1': - resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@0no-co/graphqlsp': ^1.12.13 + '@gql.tada/svelte-support': 1.0.1 + '@gql.tada/vue-support': 1.0.1 + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + peerDependenciesMeta: + '@gql.tada/svelte-support': + optional: true + '@gql.tada/vue-support': + optional: true - '@graphql-typed-document-node/core@3.2.0': - resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + '@gql.tada/internal@1.0.7': + resolution: {integrity: sha512-mI/7l7If7YR4rBlgnkXihh1qxD7eO41o8nf5ZYjwYl4s6FGFQFZY1E1reV3AgRy8tDXbiuMz1bIVLpnxPXxKIQ==} peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-yoga/logger@1.0.0': - resolution: {integrity: sha512-JYoxwnPggH2BfO+dWlWZkDeFhyFZqaTRGLvFhy+Pjp2UxitEW6nDrw+pEDw/K9tJwMjIFMmTT9VfTqrnESmBHg==} - engines: {node: '>=16.0.0'} - - '@graphql-yoga/subscription@4.0.0': - resolution: {integrity: sha512-0qsN/BPPZNMoC2CZ8i+P6PgiJyHh1H35aKDt37qARBDaIOKDQuvEOq7+4txUKElcmXi7DYFo109FkhSQoEajrg==} - engines: {node: '>=16.0.0'} - - '@graphql-yoga/typed-event-target@2.0.0': - resolution: {integrity: sha512-oA/VGxGmaSDym1glOHrltw43qZsFwLLjBwvh57B79UKX/vo3+UQcRgOyE44c5RP7DCYjkrC2tuArZmb6jCzysw==} - engines: {node: '>=16.0.0'} + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -534,12 +421,8 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@kamilkisiela/fast-url-parser@1.1.4': - resolution: {integrity: sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==} - - '@kitql/helpers@0.8.9': - resolution: {integrity: sha512-uDBFBvCYUT4UaZZKv7gJejQvbrOp4YyI1S0Z92DPiMbyLq0DPDXz3Lt2ZqUZKlQrinBX+W1TO6w0RudEX6Q6WA==} - engines: {node: ^16.14 || >=18} + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} @@ -594,9 +477,6 @@ packages: resolution: {integrity: sha512-xhhEcEvhQC8mP5oOr5hbE4CmUgmw/IPV1jhpGg2xSkzoFrt9i8YVqBQt9744EFesi5F7pBheWozg63RUBM/5JA==} engines: {node: '>=18.16.0'} - '@repeaterjs/repeater@3.0.6': - resolution: {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==} - '@rollup/plugin-commonjs@26.0.1': resolution: {integrity: sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==} engines: {node: '>=16.0.0 || 14 >= 14.17'} @@ -733,14 +613,6 @@ packages: peerDependencies: '@sveltejs/kit': ^2.4.0 - '@sveltejs/kit@1.30.4': - resolution: {integrity: sha512-JSQIQT6XvdchCRQEm7BABxPC56WP5RYVONAi+09S8tmzeP43fBsRlr95bFmsTQM2RHBldfgQk+jgdnsKI75daA==} - engines: {node: ^16.14 || >=18} - hasBin: true - peerDependencies: - svelte: ^3.54.0 || ^4.0.0-next.0 || ^5.0.0-next.0 - vite: ^4.0.0 - '@sveltejs/kit@2.5.24': resolution: {integrity: sha512-Nr2oxsCsDfEkdS/zzQQQbsPYTbu692Qs3/iE3L7VHzCVjG2+WujF9oMUozWI7GuX98KxYSoPMlAsfmDLSg44hQ==} engines: {node: '>=18.13'} @@ -750,14 +622,6 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.3 - '@sveltejs/vite-plugin-svelte-inspector@1.0.4': - resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==} - engines: {node: ^14.18.0 || >= 16} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^2.2.0 - svelte: ^3.54.0 || ^4.0.0 - vite: ^4.0.0 - '@sveltejs/vite-plugin-svelte-inspector@2.1.0': resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} engines: {node: ^18.0.0 || >=20} @@ -766,13 +630,6 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 - '@sveltejs/vite-plugin-svelte@2.5.3': - resolution: {integrity: sha512-erhNtXxE5/6xGZz/M9eXsmI7Pxa6MS7jyTy06zN3Ck++ldrppOnOlJwHHTsMC7DHDQdgUp4NAc4cDNQ9eGdB/w==} - engines: {node: ^14.18.0 || >= 16} - peerDependencies: - svelte: ^3.54.0 || ^4.0.0 || ^5.0.0-next.0 - vite: ^4.0.0 - '@sveltejs/vite-plugin-svelte@3.1.1': resolution: {integrity: sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==} engines: {node: ^18.0.0 || >=20} @@ -780,11 +637,17 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 - '@types/braces@3.0.4': - resolution: {integrity: sha512-0WR3b8eaISjEW7RpZnclONaLFDf7buaowRHdqLp4vLj54AsSAYWfh3DRbfiYJY9XDxMgx1B4sE1Afw2PGpuHOA==} + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - '@types/cookie@0.5.4': - resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==} + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} @@ -795,15 +658,9 @@ packages: '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - '@types/fs-extra@9.0.13': - resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/micromatch@4.0.9': - resolution: {integrity: sha512-7V+8ncr22h4UoYRLnLXSpTxjQrNUXtWHGeMPRJt1nULXI57G9bIcpyrHlmrQ7QK24EyyuXvYcSSWAM8GA9nqCg==} - '@types/node@22.5.0': resolution: {integrity: sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==} @@ -873,8 +730,8 @@ packages: resolution: {integrity: sha512-sbgsPMW9yLvS7IhCi8IpuK1oBmtbWUNP+hBdwl/I9nzqVsszGnNGti5r9dUtF5RLivHUFFIdRvLiTsPhzSyJ3Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + '@urql/core@5.0.6': + resolution: {integrity: sha512-38rgSDqVNihFDauw1Pm9V7XLWIKuK8V9CKgrUF7/xEKinze8ENKP1ZeBhkG+dxWzJan7CHK+SLl46kAdvZwIlA==} '@vinejs/compiler@2.5.0': resolution: {integrity: sha512-hg4ekaB5Y2zh+IWzBiC/WCDWrIfpVnKu/ubUvelKlidc/VbulsexoFRw5kJGHZenPVI5YzNnDeTdYSALkTV7jQ==} @@ -884,27 +741,15 @@ packages: resolution: {integrity: sha512-Qq3XxbA26jzqS9ICifkqzT399lMQZ2fWtqeV3luI2as+UIK7qDifJFU2Q4W3q3IB5VXoWxgwAZSZEO0em9I/qQ==} engines: {node: '>=18.16.0'} - '@whatwg-node/events@0.1.2': - resolution: {integrity: sha512-ApcWxkrs1WmEMS2CaLLFUEem/49erT3sxIVjpzU5f6zmVcnijtDSrhoK2zVobOIikZJdH63jdAXOrvjf6eOUNQ==} - engines: {node: '>=18.0.0'} - - '@whatwg-node/fetch@0.9.21': - resolution: {integrity: sha512-Wt0jPb+04JjobK0pAAN7mEHxVHcGA9HoP3OyCsZtyAecNQeADXCZ1MihFwVwjsgaRYuGVmNlsCmLxlG6mor8Gw==} - engines: {node: '>=18.0.0'} - - '@whatwg-node/node-fetch@0.5.25': - resolution: {integrity: sha512-m6TrxcJlS8ptYLTQL+Ex931RFJsoCQtBQWBNHi5b0xHS0C7FJGUJl1asYZ7MdOhZqdiMVcs1lNJeHsfzyUNjOg==} - engines: {node: '>=18.0.0'} - - '@whatwg-node/server@0.9.49': - resolution: {integrity: sha512-3KzLXw80gWnTsQ746G/LFdCThTPfDodjQs4PnmoNuPa6XUOl4HWq8TlJpxtmnEEB+y+UYLal+3VQ68dtYlbUDQ==} - engines: {node: '>=18.0.0'} - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} + engines: {node: '>=0.4.0'} + acorn@8.12.1: resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} @@ -921,6 +766,10 @@ packages: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -936,6 +785,9 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -952,10 +804,6 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - ast-types@0.16.1: - resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} - engines: {node: '>=4'} - autoprefixer@10.4.20: resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} engines: {node: ^10 || ^12 || >=14} @@ -1000,13 +848,6 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - builtins@5.1.0: - resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} - - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -1022,6 +863,10 @@ packages: caniuse-lite@1.0.30001651: resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -1033,10 +878,16 @@ packages: code-red@1.0.4: resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -1044,27 +895,21 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} - cross-inspect@1.0.1: - resolution: {integrity: sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==} - engines: {node: '>=16.0.0'} + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} @@ -1079,10 +924,6 @@ packages: engines: {node: '>=4'} hasBin: true - data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} @@ -1114,15 +955,16 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} - devalue@4.3.3: - resolution: {integrity: sha512-UH8EL6H2ifcY8TbD2QsxwCC/pr5xSwPvv85LrLXVihmHVC3T3YqTCIwnR5ak0yO1KYqlxrPVOA/JVZJYPy2ATg==} - devalue@5.0.0: resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -1130,9 +972,17 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dset@3.1.3: - resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} - engines: {node: '>=4'} + dotenv-cli@7.4.2: + resolution: {integrity: sha512-SbUj8l61zIbzyhIbg0FwPJq6+wjbzdn9oEtozQpZ6kW2ihCcapKVZj49oCT3oPM+mgQm+itgvUQcG5szxVrZTA==} + hasBin: true + + dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -1155,11 +1005,6 @@ packages: peerDependencies: esbuild: '*' - esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} @@ -1169,6 +1014,10 @@ packages: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -1232,11 +1081,6 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} @@ -1259,13 +1103,6 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - execa@6.1.0: - resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - fast-decode-uri-component@1.0.1: - resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1279,16 +1116,9 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-querystring@1.1.2: - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -1312,10 +1142,6 @@ packages: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} - formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - formsnap@1.0.1: resolution: {integrity: sha512-TvU9CoLSiacW1c7wXhLiyVpyy/LBfG0CEFDbs3M3jrsxBSrkTpsuhbQ8JYKY3CNCmIhZlgxCH+Vqr7RBF9G53w==} peerDependencies: @@ -1325,13 +1151,6 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - - fs-monkey@1.0.6: - resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -1343,9 +1162,9 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -1363,10 +1182,9 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} @@ -1386,22 +1204,26 @@ packages: globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + gql.tada@1.8.6: + resolution: {integrity: sha512-XyN/BkZVEJ5kxgK8oDjHluLwXBLdlUO6P4+u/AmYfknFDj5M5AnaZMm3pntMDO9tpaaEczy9pfXDEJ6tYuTlyA==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - graphql-yoga@4.0.5: - resolution: {integrity: sha512-vIbJU9QX5RP4PoxbMCHcfOlt/3EsC/0uLdAOlKaiUvlwJDTFCaIHo2X10vL4i/27Gw8g90ECIwm2YbmeLDwcqg==} - engines: {node: '>=16.0.0'} - peerDependencies: - graphql: ^15.2.0 || ^16.0.0 - graphql@15.9.0: resolution: {integrity: sha512-GCOQdvm7XxV1S4U4CGrsdlEN37245eC8P9zaYCMr6K1BG0IPGy5lUwmJsEOGyl1GD6HXjOtl2keCP9asRBwNvA==} engines: {node: '>= 10.x'} + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -1410,17 +1232,6 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - houdini-svelte@1.2.56: - resolution: {integrity: sha512-t2eDPcMXstdTMv694KukZgmhJHy5WrB2dFZyVFMXaWHNT3ETtMFG99Mg0HXdxzSFzaiWXJnZIHneKdJ/bSZPaA==} - - houdini@1.2.56: - resolution: {integrity: sha512-AqYuXuuCQMrkpePhNjZHnmUeIi8iOPBHOq7WmmNR1fmUhPhSFQAXOzI8EFCwwDB4h8W393pVSzH7bOZsx8h0Iw==} - hasBin: true - - human-signals@3.0.1: - resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} - engines: {node: '>=12.20.0'} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -1484,10 +1295,6 @@ packages: is-reference@3.0.2: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -1501,10 +1308,18 @@ packages: joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -1518,8 +1333,10 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true just-clone@6.2.0: resolution: {integrity: sha512-1IynUYEc/HAwxhi3WDpIpxJbZpMCvvrrmZVqvj9EhpvbH8lls7HhdhiByjL7DkAaWlLIzpC0Xc/VPvy/UxLNjA==} @@ -1562,38 +1379,29 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - memfs@3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} - memoize-weak@1.0.2: resolution: {integrity: sha512-gj39xkrjEw7nCn4nJ1M5ms6+MyMlyiGmttzsqAUsAKn6bYKwuTHh/AO3cKPF8IBrTIYTxb0wWXFs3E//Y8VoWQ==} - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - micromatch@4.0.7: resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -1601,10 +1409,6 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -1624,10 +1428,6 @@ packages: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - mrmime@1.0.1: - resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} - engines: {node: '>=10'} - mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} @@ -1658,14 +1458,6 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - - node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-gyp-build-optional-packages@5.2.2: resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} hasBin: true @@ -1685,13 +1477,6 @@ packages: resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} engines: {node: '>=14.16'} - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - npx-import@1.1.4: - resolution: {integrity: sha512-3ShymTWOgqGyNlh5lMJAejLuIv3W1K3fbI5Ewc6YErZU3Sp0PqsNs8UIU1O8z5+KVl/Du5ag56Gza9vdorGEoA==} - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -1703,10 +1488,6 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -1726,9 +1507,6 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-package-name@1.0.0: - resolution: {integrity: sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -1741,10 +1519,6 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -1926,10 +1700,6 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - recast@0.23.9: - resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} - engines: {node: '>= 4'} - regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -1950,11 +1720,6 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - rollup@4.21.0: resolution: {integrity: sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -1970,6 +1735,10 @@ packages: sander@0.5.1: resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -1986,9 +1755,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -1997,9 +1763,6 @@ packages: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -2019,10 +1782,6 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2039,10 +1798,6 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -2060,6 +1815,10 @@ packages: resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} engines: {node: '>=14.0.0'} + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -2083,12 +1842,6 @@ packages: svelte: optional: true - svelte-hmr@0.15.3: - resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: ^3.19.0 || ^4.0.0 - svelte-hmr@0.16.0: resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} engines: {node: ^12.20 || ^14.13.1 || >= 16} @@ -2132,10 +1885,6 @@ packages: typescript: optional: true - svelte@3.59.2: - resolution: {integrity: sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==} - engines: {node: '>= 8'} - svelte@4.2.18: resolution: {integrity: sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA==} engines: {node: '>=16'} @@ -2167,9 +1916,6 @@ packages: tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -2201,12 +1947,23 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + tslib@2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -2232,14 +1989,6 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici@5.28.4: - resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} - engines: {node: '>=14.0'} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - update-browserslist-db@1.1.0: resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} hasBin: true @@ -2249,62 +1998,22 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - urlpattern-polyfill@10.0.0: - resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + valibot@0.31.1: resolution: {integrity: sha512-2YYIhPrnVSz/gfT2/iXVTrSj92HwchCt9Cga/6hX4B26iCz9zkIsGTS0HjDYTZfTi1Un0X6aRvhBi1cfqs/i0Q==} valibot@0.35.0: resolution: {integrity: sha512-+i2aCRkReTrd5KBN/dW2BrPOvFnU5LXTV2xjZnjnqUIO8YUx6P2+MgRrkwF2FhkexgyKq/NIZdPdknhHf5A/Ww==} - validate-npm-package-name@4.0.0: - resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - validator@13.12.0: resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} engines: {node: '>= 0.10'} - value-or-promise@1.0.12: - resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} - engines: {node: '>=12'} - - vite-plugin-watch-and-run@1.7.0: - resolution: {integrity: sha512-f6TUUxDvOeFPMJ1/NDK8N1y/65w8h4jPZGsuOOYVnaK4lkutN95rTNAunsr0fcgTVo1BRUMxDTY7iFlsGuiCig==} - engines: {node: ^16.14 || >=18} - - vite@4.5.3: - resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - vite@5.4.2: resolution: {integrity: sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -2344,15 +2053,14 @@ packages: vite: optional: true - web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true + wonka@6.3.4: + resolution: {integrity: sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg==} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -2368,6 +2076,9 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} @@ -2377,6 +2088,10 @@ packages: engines: {node: '>= 14'} hasBin: true + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -2394,6 +2109,16 @@ packages: snapshots: + '@0no-co/graphql.web@1.0.8(graphql@15.9.0)': + optionalDependencies: + graphql: 15.9.0 + + '@0no-co/graphqlsp@1.12.13(graphql@15.9.0)(typescript@5.5.4)': + dependencies: + '@gql.tada/internal': 1.0.7(graphql@15.9.0)(typescript@5.5.4) + graphql: 15.9.0 + typescript: 5.5.4 + '@alloc/quick-lru@5.2.0': {} '@ampproject/remapping@2.3.0': @@ -2409,177 +2134,211 @@ snapshots: '@ark/util@0.1.0': optional: true - '@babel/helper-string-parser@7.24.8': {} + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + optional: true - '@babel/helper-validator-identifier@7.24.7': {} + '@babel/compat-data@7.25.4': + optional: true - '@babel/parser@7.25.4': + '@babel/core@7.25.2': dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.5 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.0 + '@babel/parser': 7.25.4 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.4 '@babel/types': 7.25.4 - - '@babel/runtime@7.25.4': - dependencies: - regenerator-runtime: 0.14.1 + convert-source-map: 2.0.0 + debug: 4.3.6 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color optional: true - '@babel/types@7.25.4': + '@babel/generator@7.25.5': dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 + '@babel/types': 7.25.4 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + optional: true - '@clack/core@0.3.4': + '@babel/helper-compilation-targets@7.25.2': dependencies: - picocolors: 1.0.1 - sisteransi: 1.0.5 + '@babel/compat-data': 7.25.4 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 + lru-cache: 5.1.1 + semver: 6.3.1 + optional: true - '@clack/prompts@0.6.3': + '@babel/helper-module-imports@7.24.7': dependencies: - '@clack/core': 0.3.4 - picocolors: 1.0.1 - sisteransi: 1.0.5 + '@babel/traverse': 7.25.4 + '@babel/types': 7.25.4 + transitivePeerDependencies: + - supports-color + optional: true - '@envelop/core@4.0.3': + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: - '@envelop/types': 4.0.1 - tslib: 2.7.0 + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.4 + transitivePeerDependencies: + - supports-color + optional: true - '@envelop/types@4.0.1': + '@babel/helper-simple-access@7.24.7': dependencies: - tslib: 2.7.0 - - '@esbuild/aix-ppc64@0.21.5': + '@babel/traverse': 7.25.4 + '@babel/types': 7.25.4 + transitivePeerDependencies: + - supports-color optional: true - '@esbuild/android-arm64@0.18.20': + '@babel/helper-string-parser@7.24.8': optional: true - '@esbuild/android-arm64@0.21.5': + '@babel/helper-validator-identifier@7.24.7': optional: true - '@esbuild/android-arm@0.18.20': + '@babel/helper-validator-option@7.24.8': optional: true - '@esbuild/android-arm@0.21.5': + '@babel/helpers@7.25.0': + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.4 optional: true - '@esbuild/android-x64@0.18.20': + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 optional: true - '@esbuild/android-x64@0.21.5': + '@babel/parser@7.25.4': + dependencies: + '@babel/types': 7.25.4 optional: true - '@esbuild/darwin-arm64@0.18.20': + '@babel/runtime@7.25.4': + dependencies: + regenerator-runtime: 0.14.1 optional: true - '@esbuild/darwin-arm64@0.21.5': + '@babel/template@7.25.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.4 + '@babel/types': 7.25.4 optional: true - '@esbuild/darwin-x64@0.18.20': + '@babel/traverse@7.25.4': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.5 + '@babel/parser': 7.25.4 + '@babel/template': 7.25.0 + '@babel/types': 7.25.4 + debug: 4.3.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color optional: true - '@esbuild/darwin-x64@0.21.5': + '@babel/types@7.25.4': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 optional: true - '@esbuild/freebsd-arm64@0.18.20': + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 optional: true - '@esbuild/freebsd-arm64@0.21.5': + '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.18.20': + '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.21.5': + '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/linux-arm64@0.18.20': + '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/linux-arm64@0.21.5': + '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/linux-arm@0.18.20': + '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/linux-arm@0.21.5': + '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/linux-ia32@0.18.20': + '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/linux-ia32@0.21.5': + '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-loong64@0.18.20': + '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-loong64@0.21.5': + '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-mips64el@0.18.20': + '@esbuild/linux-loong64@0.21.5': optional: true '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-ppc64@0.18.20': - optional: true - '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.18.20': - optional: true - '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-s390x@0.18.20': - optional: true - '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-x64@0.18.20': - optional: true - '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.18.20': - optional: true - '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.18.20': - optional: true - '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.18.20': - optional: true - '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/win32-arm64@0.18.20': - optional: true - '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-ia32@0.18.20': - optional: true - '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-x64@0.18.20': - optional: true - '@esbuild/win32-x64@0.21.5': optional: true @@ -2614,92 +2373,32 @@ snapshots: '@eslint/js@9.9.0': {} - '@eslint/object-schema@2.1.4': {} - - '@exodus/schemasafe@1.3.0': - optional: true - - '@fastify/busboy@2.1.1': {} - - '@gcornut/valibot-json-schema@0.31.0': - dependencies: - valibot: 0.31.1 - optionalDependencies: - '@types/json-schema': 7.0.15 - esbuild: 0.21.5 - esbuild-runner: 2.2.2(esbuild@0.21.5) - optional: true - - '@graphql-tools/executor@1.3.1(graphql@15.9.0)': - dependencies: - '@graphql-tools/utils': 10.5.4(graphql@15.9.0) - '@graphql-typed-document-node/core': 3.2.0(graphql@15.9.0) - '@repeaterjs/repeater': 3.0.6 - graphql: 15.9.0 - tslib: 2.7.0 - value-or-promise: 1.0.12 - - '@graphql-tools/merge@8.4.2(graphql@15.9.0)': - dependencies: - '@graphql-tools/utils': 9.2.1(graphql@15.9.0) - graphql: 15.9.0 - tslib: 2.4.0 - - '@graphql-tools/merge@9.0.6(graphql@15.9.0)': - dependencies: - '@graphql-tools/utils': 10.5.4(graphql@15.9.0) - graphql: 15.9.0 - tslib: 2.4.0 - - '@graphql-tools/schema@10.0.6(graphql@15.9.0)': - dependencies: - '@graphql-tools/merge': 9.0.6(graphql@15.9.0) - '@graphql-tools/utils': 10.5.4(graphql@15.9.0) - graphql: 15.9.0 - tslib: 2.7.0 - value-or-promise: 1.0.12 - - '@graphql-tools/schema@9.0.19(graphql@15.9.0)': - dependencies: - '@graphql-tools/merge': 8.4.2(graphql@15.9.0) - '@graphql-tools/utils': 9.2.1(graphql@15.9.0) - graphql: 15.9.0 - tslib: 2.4.0 - value-or-promise: 1.0.12 - - '@graphql-tools/utils@10.5.4(graphql@15.9.0)': - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@15.9.0) - cross-inspect: 1.0.1 - dset: 3.1.3 - graphql: 15.9.0 - tslib: 2.4.0 - - '@graphql-tools/utils@9.2.1(graphql@15.9.0)': - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@15.9.0) - graphql: 15.9.0 - tslib: 2.4.0 + '@eslint/object-schema@2.1.4': {} - '@graphql-typed-document-node/core@3.2.0(graphql@15.9.0)': - dependencies: - graphql: 15.9.0 + '@exodus/schemasafe@1.3.0': + optional: true - '@graphql-yoga/logger@1.0.0': + '@gcornut/valibot-json-schema@0.31.0': dependencies: - tslib: 2.7.0 + valibot: 0.31.1 + optionalDependencies: + '@types/json-schema': 7.0.15 + esbuild: 0.21.5 + esbuild-runner: 2.2.2(esbuild@0.21.5) + optional: true - '@graphql-yoga/subscription@4.0.0': + '@gql.tada/cli-utils@1.6.1(@0no-co/graphqlsp@1.12.13(graphql@15.9.0)(typescript@5.5.4))(graphql@15.9.0)(typescript@5.5.4)': dependencies: - '@graphql-yoga/typed-event-target': 2.0.0 - '@repeaterjs/repeater': 3.0.6 - '@whatwg-node/events': 0.1.2 - tslib: 2.7.0 + '@0no-co/graphqlsp': 1.12.13(graphql@15.9.0)(typescript@5.5.4) + '@gql.tada/internal': 1.0.7(graphql@15.9.0)(typescript@5.5.4) + graphql: 15.9.0 + typescript: 5.5.4 - '@graphql-yoga/typed-event-target@2.0.0': + '@gql.tada/internal@1.0.7(graphql@15.9.0)(typescript@5.5.4)': dependencies: - '@repeaterjs/repeater': 3.0.6 - tslib: 2.7.0 + '@0no-co/graphql.web': 1.0.8(graphql@15.9.0) + graphql: 15.9.0 + typescript: 5.5.4 '@hapi/hoek@9.3.0': optional: true @@ -2739,11 +2438,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@kamilkisiela/fast-url-parser@1.1.4': {} - - '@kitql/helpers@0.8.9': + '@jridgewell/trace-mapping@0.3.9': dependencies: - esm-env: 1.0.0 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + optional: true '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': optional: true @@ -2783,8 +2482,6 @@ snapshots: '@poppinss/macroable@1.0.2': optional: true - '@repeaterjs/repeater@3.0.6': {} - '@rollup/plugin-commonjs@26.0.1(rollup@4.21.0)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.21.0) @@ -2894,26 +2591,6 @@ snapshots: '@sveltejs/kit': 2.5.24(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.4.2(@types/node@22.5.0)))(svelte@4.2.18)(vite@5.4.2(@types/node@22.5.0)) rollup: 4.21.0 - '@sveltejs/kit@1.30.4(svelte@3.59.2)(vite@4.5.3(@types/node@22.5.0))': - dependencies: - '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@3.59.2)(vite@4.5.3(@types/node@22.5.0)) - '@types/cookie': 0.5.4 - cookie: 0.5.0 - devalue: 4.3.3 - esm-env: 1.0.0 - kleur: 4.1.5 - magic-string: 0.30.11 - mrmime: 1.0.1 - sade: 1.8.1 - set-cookie-parser: 2.7.0 - sirv: 2.0.4 - svelte: 3.59.2 - tiny-glob: 0.2.9 - undici: 5.28.4 - vite: 4.5.3(@types/node@22.5.0) - transitivePeerDependencies: - - supports-color - '@sveltejs/kit@2.5.24(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.4.2(@types/node@22.5.0)))(svelte@4.2.18)(vite@5.4.2(@types/node@22.5.0))': dependencies: '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.4.2(@types/node@22.5.0)) @@ -2932,15 +2609,6 @@ snapshots: tiny-glob: 0.2.9 vite: 5.4.2(@types/node@22.5.0) - '@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.3(svelte@3.59.2)(vite@4.5.3(@types/node@22.5.0)))(svelte@3.59.2)(vite@4.5.3(@types/node@22.5.0))': - dependencies: - '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@3.59.2)(vite@4.5.3(@types/node@22.5.0)) - debug: 4.3.6 - svelte: 3.59.2 - vite: 4.5.3(@types/node@22.5.0) - transitivePeerDependencies: - - supports-color - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.4.2(@types/node@22.5.0)))(svelte@4.2.18)(vite@5.4.2(@types/node@22.5.0))': dependencies: '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.4.2(@types/node@22.5.0)) @@ -2950,20 +2618,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@2.5.3(svelte@3.59.2)(vite@4.5.3(@types/node@22.5.0))': - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.3(svelte@3.59.2)(vite@4.5.3(@types/node@22.5.0)))(svelte@3.59.2)(vite@4.5.3(@types/node@22.5.0)) - debug: 4.3.6 - deepmerge: 4.3.1 - kleur: 4.1.5 - magic-string: 0.30.11 - svelte: 3.59.2 - svelte-hmr: 0.15.3(svelte@3.59.2) - vite: 4.5.3(@types/node@22.5.0) - vitefu: 0.2.5(vite@4.5.3(@types/node@22.5.0)) - transitivePeerDependencies: - - supports-color - '@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.4.2(@types/node@22.5.0))': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.4.2(@types/node@22.5.0)))(svelte@4.2.18)(vite@5.4.2(@types/node@22.5.0)) @@ -2978,9 +2632,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@types/braces@3.0.4': {} + '@tsconfig/node10@1.0.11': + optional: true + + '@tsconfig/node12@1.0.11': + optional: true + + '@tsconfig/node14@1.0.3': + optional: true - '@types/cookie@0.5.4': {} + '@tsconfig/node16@1.0.4': + optional: true '@types/cookie@0.6.0': {} @@ -2991,19 +2653,12 @@ snapshots: '@types/estree@1.0.5': {} - '@types/fs-extra@9.0.13': - dependencies: - '@types/node': 22.5.0 - '@types/json-schema@7.0.15': {} - '@types/micromatch@4.0.9': - dependencies: - '@types/braces': 3.0.4 - '@types/node@22.5.0': dependencies: undici-types: 6.19.8 + optional: true '@types/pug@2.0.10': {} @@ -3093,7 +2748,12 @@ snapshots: '@typescript-eslint/types': 8.2.0 eslint-visitor-keys: 3.4.3 - '@ungap/structured-clone@1.2.0': {} + '@urql/core@5.0.6(graphql@15.9.0)': + dependencies: + '@0no-co/graphql.web': 1.0.8(graphql@15.9.0) + wonka: 6.3.4 + transitivePeerDependencies: + - graphql '@vinejs/compiler@2.5.0': optional: true @@ -3110,30 +2770,14 @@ snapshots: validator: 13.12.0 optional: true - '@whatwg-node/events@0.1.2': - dependencies: - tslib: 2.7.0 - - '@whatwg-node/fetch@0.9.21': - dependencies: - '@whatwg-node/node-fetch': 0.5.25 - urlpattern-polyfill: 10.0.0 - - '@whatwg-node/node-fetch@0.5.25': - dependencies: - '@kamilkisiela/fast-url-parser': 1.1.4 - busboy: 1.6.0 - fast-querystring: 1.1.2 - tslib: 2.7.0 - - '@whatwg-node/server@0.9.49': + acorn-jsx@5.3.2(acorn@8.12.1): dependencies: - '@whatwg-node/fetch': 0.9.21 - tslib: 2.7.0 + acorn: 8.12.1 - acorn-jsx@5.3.2(acorn@8.12.1): + acorn-walk@8.3.3: dependencies: acorn: 8.12.1 + optional: true acorn@8.12.1: {} @@ -3148,6 +2792,11 @@ snapshots: ansi-regex@6.0.1: {} + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + optional: true + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -3161,6 +2810,9 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 + arg@4.1.3: + optional: true + arg@5.0.2: {} argparse@2.0.1: {} @@ -3177,10 +2829,6 @@ snapshots: array-union@2.1.0: {} - ast-types@0.16.1: - dependencies: - tslib: 2.4.0 - autoprefixer@10.4.20(postcss@8.4.41): dependencies: browserslist: 4.23.3 @@ -3224,14 +2872,6 @@ snapshots: builtin-modules@3.3.0: {} - builtins@5.1.0: - dependencies: - semver: 7.6.3 - - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - callsites@3.1.0: {} camelcase-css@2.0.1: {} @@ -3241,6 +2881,13 @@ snapshots: caniuse-lite@1.0.30001651: {} + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + optional: true + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -3266,27 +2913,33 @@ snapshots: estree-walker: 3.0.3 periscopic: 3.1.0 + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + optional: true + color-convert@2.0.1: dependencies: color-name: 1.1.4 + color-name@1.1.3: + optional: true + color-name@1.1.4: {} commander@4.1.1: {} - commander@9.5.0: {} - commondir@1.0.1: {} concat-map@0.0.1: {} - cookie@0.5.0: {} + convert-source-map@2.0.0: + optional: true cookie@0.6.0: {} - cross-inspect@1.0.1: - dependencies: - tslib: 2.4.0 + create-require@1.1.1: + optional: true cross-spawn@7.0.3: dependencies: @@ -3301,8 +2954,6 @@ snapshots: cssesc@3.0.0: {} - data-uri-to-buffer@4.0.1: {} - dayjs@1.11.13: optional: true @@ -3321,19 +2972,29 @@ snapshots: detect-libc@2.0.3: optional: true - devalue@4.3.3: {} - devalue@5.0.0: {} didyoumean@1.2.2: {} + diff@4.0.2: + optional: true + dir-glob@3.0.1: dependencies: path-type: 4.0.0 dlv@1.1.3: {} - dset@3.1.3: {} + dotenv-cli@7.4.2: + dependencies: + cross-spawn: 7.0.3 + dotenv: 16.4.5 + dotenv-expand: 10.0.0 + minimist: 1.2.8 + + dotenv-expand@10.0.0: {} + + dotenv@16.4.5: {} eastasianwidth@0.2.0: {} @@ -3352,31 +3013,6 @@ snapshots: tslib: 2.4.0 optional: true - esbuild@0.18.20: - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -3405,6 +3041,9 @@ snapshots: escalade@3.1.2: {} + escape-string-regexp@1.0.5: + optional: true + escape-string-regexp@4.0.0: {} eslint-compat-utils@0.5.1(eslint@9.9.0(jiti@1.21.6)): @@ -3416,7 +3055,7 @@ snapshots: dependencies: eslint: 9.9.0(jiti@1.21.6) - eslint-plugin-svelte@2.43.0(eslint@9.9.0(jiti@1.21.6))(svelte@4.2.18): + eslint-plugin-svelte@2.43.0(eslint@9.9.0(jiti@1.21.6))(svelte@4.2.18)(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.5.4)): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) '@jridgewell/sourcemap-codec': 1.5.0 @@ -3425,7 +3064,7 @@ snapshots: esutils: 2.0.3 known-css-properties: 0.34.0 postcss: 8.4.41 - postcss-load-config: 3.1.4(postcss@8.4.41) + postcss-load-config: 3.1.4(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.5.4)) postcss-safe-parser: 6.0.0(postcss@8.4.41) postcss-selector-parser: 6.1.2 semver: 7.6.3 @@ -3504,8 +3143,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 3.4.3 - esprima@4.0.1: {} - esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -3524,20 +3161,6 @@ snapshots: esutils@2.0.3: {} - execa@6.1.0: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 3.0.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - - fast-decode-uri-component@1.0.1: {} - fast-deep-equal@3.1.3: {} fast-glob@3.3.2: @@ -3552,19 +3175,10 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-querystring@1.1.2: - dependencies: - fast-decode-uri-component: 1.0.1 - fastq@1.17.1: dependencies: reusify: 1.0.4 - fetch-blob@3.2.0: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.3 - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -3590,10 +3204,6 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.1.0 - formdata-polyfill@4.0.10: - dependencies: - fetch-blob: 3.2.0 - formsnap@1.0.1(svelte@4.2.18)(sveltekit-superforms@2.17.0(@sveltejs/kit@2.5.24(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.4.2(@types/node@22.5.0)))(svelte@4.2.18)(vite@5.4.2(@types/node@22.5.0)))(svelte@4.2.18)): dependencies: nanoid: 5.0.7 @@ -3602,14 +3212,6 @@ snapshots: fraction.js@4.3.7: {} - fs-extra@10.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-monkey@1.0.6: {} - fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -3617,7 +3219,8 @@ snapshots: function-bind@1.1.2: {} - get-stream@6.0.1: {} + gensync@1.0.0-beta.2: + optional: true glob-parent@5.1.2: dependencies: @@ -3645,13 +3248,8 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 + globals@11.12.0: + optional: true globals@14.0.0: {} @@ -3670,85 +3268,33 @@ snapshots: globrex@0.1.2: {} + gql.tada@1.8.6(graphql@15.9.0)(typescript@5.5.4): + dependencies: + '@0no-co/graphql.web': 1.0.8(graphql@15.9.0) + '@0no-co/graphqlsp': 1.12.13(graphql@15.9.0)(typescript@5.5.4) + '@gql.tada/cli-utils': 1.6.1(@0no-co/graphqlsp@1.12.13(graphql@15.9.0)(typescript@5.5.4))(graphql@15.9.0)(typescript@5.5.4) + '@gql.tada/internal': 1.0.7(graphql@15.9.0)(typescript@5.5.4) + typescript: 5.5.4 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - graphql + graceful-fs@4.2.11: {} graphemer@1.4.0: {} - graphql-yoga@4.0.5(graphql@15.9.0): - dependencies: - '@envelop/core': 4.0.3 - '@graphql-tools/executor': 1.3.1(graphql@15.9.0) - '@graphql-tools/schema': 10.0.6(graphql@15.9.0) - '@graphql-tools/utils': 10.5.4(graphql@15.9.0) - '@graphql-yoga/logger': 1.0.0 - '@graphql-yoga/subscription': 4.0.0 - '@whatwg-node/fetch': 0.9.21 - '@whatwg-node/server': 0.9.49 - dset: 3.1.3 - graphql: 15.9.0 - lru-cache: 10.4.3 - tslib: 2.7.0 - graphql@15.9.0: {} + has-flag@3.0.0: + optional: true + has-flag@4.0.0: {} hasown@2.0.2: dependencies: function-bind: 1.1.2 - houdini-svelte@1.2.56(@types/node@22.5.0): - dependencies: - '@kitql/helpers': 0.8.9 - '@sveltejs/kit': 1.30.4(svelte@3.59.2)(vite@4.5.3(@types/node@22.5.0)) - ast-types: 0.16.1 - estree-walker: 3.0.3 - graphql: 15.9.0 - houdini: 1.2.56 - recast: 0.23.9 - rollup: 3.29.4 - svelte: 3.59.2 - vite: 4.5.3(@types/node@22.5.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - houdini@1.2.56: - dependencies: - '@babel/parser': 7.25.4 - '@clack/prompts': 0.6.3 - '@graphql-tools/merge': 9.0.6(graphql@15.9.0) - '@graphql-tools/schema': 9.0.19(graphql@15.9.0) - '@kitql/helpers': 0.8.9 - '@types/estree': 1.0.5 - '@types/fs-extra': 9.0.13 - '@types/micromatch': 4.0.9 - '@ungap/structured-clone': 1.2.0 - '@whatwg-node/server': 0.9.49 - ast-types: 0.16.1 - commander: 9.5.0 - deepmerge: 4.3.1 - estree-walker: 3.0.3 - fs-extra: 10.1.0 - glob: 8.1.0 - graphql: 15.9.0 - graphql-yoga: 4.0.5(graphql@15.9.0) - memfs: 3.5.3 - micromatch: 4.0.7 - minimatch: 5.1.6 - node-fetch: 3.3.2 - npx-import: 1.1.4 - recast: 0.23.9 - vite-plugin-watch-and-run: 1.7.0 - - human-signals@3.0.1: {} - ignore@5.3.2: {} import-fresh@3.3.0: @@ -3801,8 +3347,6 @@ snapshots: dependencies: '@types/estree': 1.0.5 - is-stream@3.0.0: {} - isexe@2.0.0: {} jackspeak@3.4.3: @@ -3822,10 +3366,16 @@ snapshots: '@sideway/pinpoint': 2.0.0 optional: true + js-tokens@4.0.0: + optional: true + js-yaml@4.1.0: dependencies: argparse: 2.0.1 + jsesc@2.5.2: + optional: true + json-buffer@3.0.1: {} json-schema-to-ts@3.1.0: @@ -3838,11 +3388,8 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 + json5@2.2.3: + optional: true just-clone@6.2.0: {} @@ -3875,44 +3422,35 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + optional: true + magic-string@0.30.11: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - mdn-data@2.0.30: {} + make-error@1.3.6: + optional: true - memfs@3.5.3: - dependencies: - fs-monkey: 1.0.6 + mdn-data@2.0.30: {} memoize-weak@1.0.2: {} - merge-stream@2.0.0: {} - merge2@1.4.1: {} - micromatch@4.0.5: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - micromatch@4.0.7: dependencies: braces: 3.0.3 picomatch: 2.3.1 - mimic-fn@4.0.0: {} - min-indent@1.0.1: {} minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 @@ -3927,8 +3465,6 @@ snapshots: mri@1.2.0: {} - mrmime@1.0.1: {} - mrmime@2.0.0: {} ms@2.1.2: {} @@ -3961,14 +3497,6 @@ snapshots: natural-compare@1.4.0: {} - node-domexception@1.0.0: {} - - node-fetch@3.3.2: - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - node-gyp-build-optional-packages@5.2.2: dependencies: detect-libc: 2.0.3 @@ -3983,17 +3511,6 @@ snapshots: normalize-url@8.0.1: optional: true - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - - npx-import@1.1.4: - dependencies: - execa: 6.1.0 - parse-package-name: 1.0.0 - semver: 7.6.3 - validate-npm-package-name: 4.0.0 - object-assign@4.1.1: {} object-hash@3.0.0: {} @@ -4002,10 +3519,6 @@ snapshots: dependencies: wrappy: 1.0.2 - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -4029,16 +3542,12 @@ snapshots: dependencies: callsites: 3.1.0 - parse-package-name@1.0.0: {} - path-exists@4.0.0: {} path-is-absolute@1.0.1: {} path-key@3.1.1: {} - path-key@4.0.0: {} - path-parse@1.0.7: {} path-scurry@1.11.1: @@ -4074,19 +3583,21 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.41 - postcss-load-config@3.1.4(postcss@8.4.41): + postcss-load-config@3.1.4(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.5.4)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: postcss: 8.4.41 + ts-node: 10.9.2(@types/node@22.5.0)(typescript@5.5.4) - postcss-load-config@4.0.2(postcss@8.4.41): + postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.5.4)): dependencies: lilconfig: 3.1.2 yaml: 2.5.0 optionalDependencies: postcss: 8.4.41 + ts-node: 10.9.2(@types/node@22.5.0)(typescript@5.5.4) postcss-nested@6.2.0(postcss@8.4.41): dependencies: @@ -4144,14 +3655,6 @@ snapshots: dependencies: picomatch: 2.3.1 - recast@0.23.9: - dependencies: - ast-types: 0.16.1 - esprima: 4.0.1 - source-map: 0.6.1 - tiny-invariant: 1.3.3 - tslib: 2.4.0 - regenerator-runtime@0.14.1: optional: true @@ -4169,10 +3672,6 @@ snapshots: dependencies: glob: 7.2.3 - rollup@3.29.4: - optionalDependencies: - fsevents: 2.3.3 - rollup@4.21.0: dependencies: '@types/estree': 1.0.5 @@ -4210,6 +3709,9 @@ snapshots: mkdirp: 0.5.6 rimraf: 2.7.1 + semver@6.3.1: + optional: true + semver@7.6.3: {} set-cookie-parser@2.7.0: {} @@ -4220,8 +3722,6 @@ snapshots: shebang-regex@3.0.0: {} - signal-exit@3.0.7: {} - signal-exit@4.1.0: {} sirv@2.0.4: @@ -4230,8 +3730,6 @@ snapshots: mrmime: 2.0.0 totalist: 3.0.1 - sisteransi@1.0.5: {} - slash@3.0.0: {} sorcery@0.11.1: @@ -4249,9 +3747,8 @@ snapshots: source-map: 0.6.1 optional: true - source-map@0.6.1: {} - - streamsearch@1.1.0: {} + source-map@0.6.1: + optional: true string-width@4.2.3: dependencies: @@ -4273,8 +3770,6 @@ snapshots: dependencies: ansi-regex: 6.0.1 - strip-final-newline@3.0.0: {} - strip-indent@3.0.0: dependencies: min-indent: 1.0.1 @@ -4294,20 +3789,25 @@ snapshots: superstruct@2.0.2: optional: true + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + optional: true + supports-color@7.2.0: dependencies: has-flag: 4.0.0 supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@3.8.5(postcss-load-config@4.0.2(postcss@8.4.41))(postcss@8.4.41)(svelte@4.2.18): + svelte-check@3.8.5(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.5.4)))(postcss@8.4.41)(svelte@4.2.18): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 picocolors: 1.0.1 sade: 1.8.1 svelte: 4.2.18 - svelte-preprocess: 5.1.4(postcss-load-config@4.0.2(postcss@8.4.41))(postcss@8.4.41)(svelte@4.2.18)(typescript@5.5.4) + svelte-preprocess: 5.1.4(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.5.4)))(postcss@8.4.41)(svelte@4.2.18)(typescript@5.5.4) typescript: 5.5.4 transitivePeerDependencies: - '@babel/core' @@ -4330,15 +3830,11 @@ snapshots: optionalDependencies: svelte: 4.2.18 - svelte-hmr@0.15.3(svelte@3.59.2): - dependencies: - svelte: 3.59.2 - svelte-hmr@0.16.0(svelte@4.2.18): dependencies: svelte: 4.2.18 - svelte-preprocess@5.1.4(postcss-load-config@4.0.2(postcss@8.4.41))(postcss@8.4.41)(svelte@4.2.18)(typescript@5.5.4): + svelte-preprocess@5.1.4(@babel/core@7.25.2)(postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.5.4)))(postcss@8.4.41)(svelte@4.2.18)(typescript@5.5.4): dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 @@ -4347,12 +3843,11 @@ snapshots: strip-indent: 3.0.0 svelte: 4.2.18 optionalDependencies: + '@babel/core': 7.25.2 postcss: 8.4.41 - postcss-load-config: 4.0.2(postcss@8.4.41) + postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.5.4)) typescript: 5.5.4 - svelte@3.59.2: {} - svelte@4.2.18: dependencies: '@ampproject/remapping': 2.3.0 @@ -4393,7 +3888,7 @@ snapshots: zod: 3.23.8 zod-to-json-schema: 3.23.2(zod@3.23.8) - tailwindcss@3.4.10: + tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.5.4)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -4412,7 +3907,7 @@ snapshots: postcss: 8.4.41 postcss-import: 15.1.0(postcss@8.4.41) postcss-js: 4.0.1(postcss@8.4.41) - postcss-load-config: 4.0.2(postcss@8.4.41) + postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.5.4)) postcss-nested: 6.2.0(postcss@8.4.41) postcss-selector-parser: 6.1.2 resolve: 1.22.8 @@ -4438,9 +3933,8 @@ snapshots: globalyzer: 0.1.0 globrex: 0.1.2 - tiny-invariant@1.3.3: {} - - to-fast-properties@2.0.0: {} + to-fast-properties@2.0.0: + optional: true to-regex-range@5.0.1: dependencies: @@ -4462,9 +3956,27 @@ snapshots: ts-interface-checker@0.1.13: {} - tslib@2.4.0: {} + ts-node@10.9.2(@types/node@22.5.0)(typescript@5.5.4): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.5.0 + acorn: 8.12.1 + acorn-walk: 8.3.3 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.5.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true - tslib@2.7.0: {} + tslib@2.4.0: + optional: true type-check@0.4.0: dependencies: @@ -4486,13 +3998,8 @@ snapshots: typescript@5.5.4: {} - undici-types@6.19.8: {} - - undici@5.28.4: - dependencies: - '@fastify/busboy': 2.1.1 - - universalify@2.0.1: {} + undici-types@6.19.8: + optional: true update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: @@ -4504,39 +4011,20 @@ snapshots: dependencies: punycode: 2.3.1 - urlpattern-polyfill@10.0.0: {} - util-deprecate@1.0.2: {} + v8-compile-cache-lib@3.0.1: + optional: true + valibot@0.31.1: optional: true valibot@0.35.0: optional: true - validate-npm-package-name@4.0.0: - dependencies: - builtins: 5.1.0 - validator@13.12.0: optional: true - value-or-promise@1.0.12: {} - - vite-plugin-watch-and-run@1.7.0: - dependencies: - '@kitql/helpers': 0.8.9 - micromatch: 4.0.5 - - vite@4.5.3(@types/node@22.5.0): - dependencies: - esbuild: 0.18.20 - postcss: 8.4.41 - rollup: 3.29.4 - optionalDependencies: - '@types/node': 22.5.0 - fsevents: 2.3.3 - vite@5.4.2(@types/node@22.5.0): dependencies: esbuild: 0.21.5 @@ -4546,20 +4034,16 @@ snapshots: '@types/node': 22.5.0 fsevents: 2.3.3 - vitefu@0.2.5(vite@4.5.3(@types/node@22.5.0)): - optionalDependencies: - vite: 4.5.3(@types/node@22.5.0) - vitefu@0.2.5(vite@5.4.2(@types/node@22.5.0)): optionalDependencies: vite: 5.4.2(@types/node@22.5.0) - web-streams-polyfill@3.3.3: {} - which@2.0.2: dependencies: isexe: 2.0.0 + wonka@6.3.4: {} + word-wrap@1.2.5: {} wrap-ansi@7.0.0: @@ -4576,10 +4060,16 @@ snapshots: wrappy@1.0.2: {} + yallist@3.1.1: + optional: true + yaml@1.10.2: {} yaml@2.5.0: {} + yn@3.1.1: + optional: true + yocto-queue@0.1.0: {} yup@1.4.0: diff --git a/src/graphql-env.d.ts b/src/graphql-env.d.ts new file mode 100644 index 0000000..b241f15 --- /dev/null +++ b/src/graphql-env.d.ts @@ -0,0 +1,110 @@ +/* eslint-disable */ +/* prettier-ignore */ + +export type introspection_types = { + 'Account': { kind: 'UNION'; name: 'Account'; fields: {}; possibleTypes: 'Group' | 'User'; }; + 'AccountId': { kind: 'INPUT_OBJECT'; name: 'AccountId'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'SmolStr'; ofType: null; }; defaultValue: null }, { name: 'uuid'; type: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; defaultValue: null }]; }; + 'Address': { kind: 'OBJECT'; name: 'Address'; fields: { 'accountUuid': { name: 'accountUuid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; } }; 'country': { name: 'country'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'formatted': { name: 'formatted'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'locality': { name: 'locality'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'postalCode': { name: 'postalCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'region': { name: 'region'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'streetAddress': { name: 'streetAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'Base64': unknown; + 'Boolean': unknown; + 'BooleanFilter': { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }]; }; + 'BuildInfo': { kind: 'OBJECT'; name: 'BuildInfo'; fields: { 'ref': { name: 'ref'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'sha': { name: 'sha'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; }; + 'ClaimAccess': { name: 'ClaimAccess'; enumValues: 'CREATE' | 'DELETE' | 'NONE' | 'READ' | 'WRITE'; }; + 'CreateGroup': { kind: 'INPUT_OBJECT'; name: 'CreateGroup'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'type'; type: { kind: 'ENUM'; name: 'GroupType'; ofType: null; }; defaultValue: null }]; }; + 'CreateToken': { kind: 'INPUT_OBJECT'; name: 'CreateToken'; isOneOf: false; inputFields: [{ name: 'allowedIps'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'claims'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'NewTokenClaim'; ofType: null; }; }; }; defaultValue: null }, { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'globalAccess'; type: { kind: 'ENUM'; name: 'ClaimAccess'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; }; + 'CreateTraining': { kind: 'INPUT_OBJECT'; name: 'CreateTraining'; isOneOf: false; inputFields: [{ name: 'fullName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; }; + 'CreateUnixAccount': { kind: 'INPUT_OBJECT'; name: 'CreateUnixAccount'; isOneOf: false; inputFields: [{ name: 'vhost'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; + 'CreateUser': { kind: 'INPUT_OBJECT'; name: 'CreateUser'; isOneOf: false; inputFields: [{ name: 'familyName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'givenName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'password'; type: { kind: 'INPUT_OBJECT'; name: 'Password'; ofType: null; }; defaultValue: null }, { name: 'promotion'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'trainingId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; }; defaultValue: null }]; }; + 'CurrentGroupRole': { name: 'CurrentGroupRole'; enumValues: 'ADMIN' | 'BOARD_MEMBER' | 'MEMBER' | 'OWNER'; }; + 'Date': unknown; + 'DateTime': unknown; + 'DateTimeFilter': { kind: 'INPUT_OBJECT'; name: 'DateTimeFilter'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'LocalDateTime'; ofType: null; }; }; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'LocalDateTime'; ofType: null; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'LocalDateTime'; ofType: null; }; defaultValue: null }]; }; + 'Float': unknown; + 'FromNull': { name: 'FromNull'; enumValues: 'BOOLEAN' | 'LIST' | 'NUMBER' | 'OBJECT' | 'STRING'; }; + 'Gender': { name: 'Gender'; enumValues: 'FEMALE' | 'MALE' | 'NON_BINARY' | 'UNKNOWN'; }; + 'GenderFilter': { kind: 'INPUT_OBJECT'; name: 'GenderFilter'; isOneOf: false; inputFields: [{ name: 'isIn'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Gender'; ofType: null; }; }; }; }; defaultValue: null }]; }; + 'GlobalValues': { kind: 'OBJECT'; name: 'GlobalValues'; fields: { 'evenSemester': { name: 'evenSemester'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'integration': { name: 'integration'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'schoolYear': { name: 'schoolYear'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'Group': { kind: 'OBJECT'; name: 'Group'; fields: { 'active': { name: 'active'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'backgroundImage': { name: 'backgroundImage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; } }; 'backgroundImageThumbnailHash': { name: 'backgroundImageThumbnailHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Base64'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'email': { name: 'email'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'hidden': { name: 'hidden'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'picture': { name: 'picture'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; } }; 'pictureThumbnailHash': { name: 'pictureThumbnailHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Base64'; ofType: null; }; } }; 'profile': { name: 'profile'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; } }; 'shortDescription': { name: 'shortDescription'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'GroupType'; ofType: null; }; } }; 'unixAccount': { name: 'unixAccount'; type: { kind: 'OBJECT'; name: 'UnixAccount'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'uuid': { name: 'uuid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; } }; 'website': { name: 'website'; type: { kind: 'SCALAR'; name: 'Url'; ofType: null; } }; }; }; + 'GroupConnection': { kind: 'OBJECT'; name: 'GroupConnection'; fields: { 'edges': { name: 'edges'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'GroupEdge'; ofType: null; }; }; }; } }; 'nodes': { name: 'nodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Group'; ofType: null; }; }; }; } }; 'pageInfo': { name: 'pageInfo'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PageInfo'; ofType: null; }; } }; 'remainingCount': { name: 'remainingCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'GroupEdge': { kind: 'OBJECT'; name: 'GroupEdge'; fields: { 'cursor': { name: 'cursor'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'node': { name: 'node'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Group'; ofType: null; }; } }; 'remainingCount': { name: 'remainingCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'GroupFilter': { kind: 'INPUT_OBJECT'; name: 'GroupFilter'; isOneOf: false; inputFields: [{ name: 'accountUuid'; type: { kind: 'INPUT_OBJECT'; name: 'UuidFilter'; ofType: null; }; defaultValue: null }, { name: 'active'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateTimeFilter'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }, { name: 'email'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'emailVerified'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'hidden'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'GroupFilter'; ofType: null; }; }; }; defaultValue: null }, { name: 'shortDescription'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'INPUT_OBJECT'; name: 'GroupTypeFilter'; ofType: null; }; defaultValue: null }, { name: 'unixAccount'; type: { kind: 'INPUT_OBJECT'; name: 'UnixAccountFilter'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateTimeFilter'; ofType: null; }; defaultValue: null }, { name: 'uuid'; type: { kind: 'INPUT_OBJECT'; name: 'UuidFilter'; ofType: null; }; defaultValue: null }, { name: 'website'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }]; }; + 'GroupId': { kind: 'INPUT_OBJECT'; name: 'GroupId'; isOneOf: false; inputFields: [{ name: 'email'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'SCALAR'; name: 'SmolStr'; ofType: null; }; defaultValue: null }, { name: 'uuid'; type: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; defaultValue: null }]; }; + 'GroupOfMember': { kind: 'OBJECT'; name: 'GroupOfMember'; fields: { 'group': { name: 'group'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Group'; ofType: null; }; } }; 'isAdmin': { name: 'isAdmin'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'isBoardMember': { name: 'isBoardMember'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'isOwner': { name: 'isOwner'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'role': { name: 'role'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrentGroupRole'; ofType: null; }; } }; 'since': { name: 'since'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; } }; }; }; + 'GroupOfMemberFilter': { kind: 'INPUT_OBJECT'; name: 'GroupOfMemberFilter'; isOneOf: false; inputFields: [{ name: 'role'; type: { kind: 'ENUM'; name: 'CurrentGroupRole'; ofType: null; }; defaultValue: null }, { name: 'since'; type: { kind: 'INPUT_OBJECT'; name: 'NeverDateFilter'; ofType: null; }; defaultValue: null }, { name: 'strictRole'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: "false" }]; }; + 'GroupRole': { name: 'GroupRole'; enumValues: 'ADMIN' | 'BOARD_MEMBER' | 'GONE' | 'MEMBER' | 'OWNER'; }; + 'GroupType': { name: 'GroupType'; enumValues: 'ASSOCIATION' | 'CLUB' | 'COMMISSION' | 'HOME' | 'LIST' | 'OTHER' | 'UNKNOWN'; }; + 'GroupTypeFilter': { kind: 'INPUT_OBJECT'; name: 'GroupTypeFilter'; isOneOf: false; inputFields: [{ name: 'isIn'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'GroupType'; ofType: null; }; }; }; }; defaultValue: null }]; }; + 'Health': { kind: 'OBJECT'; name: 'Health'; fields: { 'db': { name: 'db'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'HistoricalGroupOfMember': { kind: 'OBJECT'; name: 'HistoricalGroupOfMember'; fields: { 'group': { name: 'group'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Group'; ofType: null; }; } }; 'role': { name: 'role'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'GroupRole'; ofType: null; }; } }; 'since': { name: 'since'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; } }; }; }; + 'HistoricalGroupOfMemberFilter': { kind: 'INPUT_OBJECT'; name: 'HistoricalGroupOfMemberFilter'; isOneOf: false; inputFields: [{ name: 'role'; type: { kind: 'ENUM'; name: 'GroupRole'; ofType: null; }; defaultValue: null }, { name: 'since'; type: { kind: 'INPUT_OBJECT'; name: 'NeverDateFilter'; ofType: null; }; defaultValue: null }, { name: 'strictRole'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: "false" }]; }; + 'HistoricalMemberOfGroup': { kind: 'OBJECT'; name: 'HistoricalMemberOfGroup'; fields: { 'role': { name: 'role'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'GroupRole'; ofType: null; }; } }; 'since': { name: 'since'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; } }; 'user': { name: 'user'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; } }; }; }; + 'Identifier': unknown; + 'Int': unknown; + 'Int16Filter': { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }]; }; + 'LevenshteinFilter': { kind: 'INPUT_OBJECT'; name: 'LevenshteinFilter'; isOneOf: false; inputFields: [{ name: 'threshold'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; }; + 'LocalDateTime': unknown; + 'Mutation': { kind: 'OBJECT'; name: 'Mutation'; fields: { 'addClaims': { name: 'addClaims'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Token'; ofType: null; }; } }; 'addGroupMemberRole': { name: 'addGroupMemberRole'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'HistoricalMemberOfGroup'; ofType: null; }; } }; 'copyClaims': { name: 'copyClaims'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Token'; ofType: null; }; } }; 'createGroup': { name: 'createGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Group'; ofType: null; }; } }; 'createGroupUnixAccount': { name: 'createGroupUnixAccount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'UnixAccount'; ofType: null; }; } }; 'createToken': { name: 'createToken'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PlainToken'; ofType: null; }; } }; 'createTraining': { name: 'createTraining'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Training'; ofType: null; }; } }; 'createUser': { name: 'createUser'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; } }; 'createUserUnixAccount': { name: 'createUserUnixAccount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'UnixAccount'; ofType: null; }; } }; 'deleteClaims': { name: 'deleteClaims'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Token'; ofType: null; }; } }; 'deleteGroup': { name: 'deleteGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'deleteToken': { name: 'deleteToken'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'deleteTraining': { name: 'deleteTraining'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'deleteUser': { name: 'deleteUser'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'endOfIntegration': { name: 'endOfIntegration'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'evenSemester': { name: 'evenSemester'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'newYear': { name: 'newYear'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'regenerateToken': { name: 'regenerateToken'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PlainToken'; ofType: null; }; } }; 'status': { name: 'status'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'updateGroup': { name: 'updateGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Group'; ofType: null; }; } }; 'updateToken': { name: 'updateToken'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Token'; ofType: null; }; } }; 'updateTraining': { name: 'updateTraining'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Training'; ofType: null; }; } }; 'updateUnixAccount': { name: 'updateUnixAccount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'UnixAccount'; ofType: null; }; } }; 'updateUser': { name: 'updateUser'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; } }; }; }; + 'NeverDateFilter': { kind: 'INPUT_OBJECT'; name: 'NeverDateFilter'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; }; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; defaultValue: null }]; }; + 'NewTokenClaim': { kind: 'INPUT_OBJECT'; name: 'NewTokenClaim'; isOneOf: false; inputFields: [{ name: 'access'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ClaimAccess'; ofType: null; }; }; defaultValue: null }, { name: 'claim'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; }; + 'NullableDateFilter': { kind: 'INPUT_OBJECT'; name: 'NullableDateFilter'; isOneOf: false; inputFields: [{ name: 'day'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'eq'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; }; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; defaultValue: null }, { name: 'month'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'null'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'NullableDateTimeFilter': { kind: 'INPUT_OBJECT'; name: 'NullableDateTimeFilter'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'LocalDateTime'; ofType: null; }; }; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'LocalDateTime'; ofType: null; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'LocalDateTime'; ofType: null; }; defaultValue: null }, { name: 'null'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'NullableFilter': { kind: 'INPUT_OBJECT'; name: 'NullableFilter'; isOneOf: false; inputFields: [{ name: 'null'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'NullableTextFilter': { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; isOneOf: false; inputFields: [{ name: 'levenshtein'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'LevenshteinFilter'; ofType: null; }; }; }; defaultValue: null }, { name: 'like'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'notLike'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'null'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'similar'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SimilarFilter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'OrderByGroup': { name: 'OrderByGroup'; enumValues: 'CREATED_AT' | 'ID' | 'NAME' | 'UPDATED_AT' | 'UUID'; }; + 'OrderByUser': { name: 'OrderByUser'; enumValues: 'BIRTH_DATE' | 'CREATED_AT' | 'FAMILY_NAME' | 'GIVEN_NAME' | 'ID' | 'LAST_USED_AT' | 'NICKNAME' | 'PROMOTION' | 'UPDATED_AT' | 'UUID' | 'YEAR'; }; + 'PageInfo': { kind: 'OBJECT'; name: 'PageInfo'; fields: { 'endCursor': { name: 'endCursor'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'hasNextPage': { name: 'hasNextPage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'hasPreviousPage': { name: 'hasPreviousPage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'startCursor': { name: 'startCursor'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; }; + 'Password': { kind: 'INPUT_OBJECT'; name: 'Password'; isOneOf: false; inputFields: [{ name: 'hash'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'plain'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; + 'PlainToken': { kind: 'OBJECT'; name: 'PlainToken'; fields: { 'base64': { name: 'base64'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'raw': { name: 'raw'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'Query': { kind: 'OBJECT'; name: 'Query'; fields: { 'account': { name: 'account'; type: { kind: 'UNION'; name: 'Account'; ofType: null; } }; 'buildInfo': { name: 'buildInfo'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'BuildInfo'; ofType: null; }; } }; 'currentToken': { name: 'currentToken'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Token'; ofType: null; }; } }; 'globalsValues': { name: 'globalsValues'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'GlobalValues'; ofType: null; }; } }; 'group': { name: 'group'; type: { kind: 'OBJECT'; name: 'Group'; ofType: null; } }; 'groups': { name: 'groups'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'GroupConnection'; ofType: null; }; } }; 'health': { name: 'health'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Health'; ofType: null; }; } }; 'oAuthAppOwner': { name: 'oAuthAppOwner'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'Account'; ofType: null; }; } }; 'token': { name: 'token'; type: { kind: 'OBJECT'; name: 'Token'; ofType: null; } }; 'tokens': { name: 'tokens'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Token'; ofType: null; }; }; }; } }; 'trainings': { name: 'trainings'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Training'; ofType: null; }; }; }; } }; 'user': { name: 'user'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'users': { name: 'users'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'UserConnection'; ofType: null; }; } }; }; }; + 'SimilarFilter': { kind: 'INPUT_OBJECT'; name: 'SimilarFilter'; isOneOf: false; inputFields: [{ name: 'threshold'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; }; + 'SmolStr': unknown; + 'String': unknown; + 'TextFilter': { kind: 'INPUT_OBJECT'; name: 'TextFilter'; isOneOf: false; inputFields: [{ name: 'levenshtein'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'LevenshteinFilter'; ofType: null; }; }; }; defaultValue: null }, { name: 'like'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'notLike'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'similar'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SimilarFilter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'Token': { kind: 'OBJECT'; name: 'Token'; fields: { 'allowedIps': { name: 'allowedIps'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'claims': { name: 'claims'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TokenClaim'; ofType: null; }; }; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'globalAccess': { name: 'globalAccess'; type: { kind: 'ENUM'; name: 'ClaimAccess'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'tokenHash': { name: 'tokenHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'uuid': { name: 'uuid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; } }; }; }; + 'TokenClaim': { kind: 'OBJECT'; name: 'TokenClaim'; fields: { 'access': { name: 'access'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ClaimAccess'; ofType: null; }; } }; 'claim': { name: 'claim'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'TokenId': { kind: 'INPUT_OBJECT'; name: 'TokenId'; isOneOf: false; inputFields: [{ name: 'globalAccess'; type: { kind: 'ENUM'; name: 'ClaimAccess'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'SCALAR'; name: 'SmolStr'; ofType: null; }; defaultValue: null }, { name: 'uuid'; type: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; defaultValue: null }]; }; + 'Training': { kind: 'OBJECT'; name: 'Training'; fields: { 'fullName': { name: 'fullName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'uuid': { name: 'uuid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; } }; }; }; + 'TrainingId': { kind: 'INPUT_OBJECT'; name: 'TrainingId'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'SmolStr'; ofType: null; }; defaultValue: null }, { name: 'uuid'; type: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; defaultValue: null }]; }; + 'UUID': unknown; + 'UnixAccount': { kind: 'OBJECT'; name: 'UnixAccount'; fields: { 'accountUuid': { name: 'accountUuid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; } }; 'uid': { name: 'uid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'vhost': { name: 'vhost'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'website': { name: 'website'; type: { kind: 'SCALAR'; name: 'Url'; ofType: null; } }; }; }; + 'UnixAccountFilter': { kind: 'INPUT_OBJECT'; name: 'UnixAccountFilter'; isOneOf: false; inputFields: [{ name: 'null'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'uid'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'uuid'; type: { kind: 'INPUT_OBJECT'; name: 'UuidFilter'; ofType: null; }; defaultValue: null }, { name: 'vhost'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }]; }; + 'UnixAccountId': { kind: 'INPUT_OBJECT'; name: 'UnixAccountId'; isOneOf: false; inputFields: [{ name: 'uid'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'uuid'; type: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; defaultValue: null }]; }; + 'UpdateGroup': { kind: 'INPUT_OBJECT'; name: 'UpdateGroup'; isOneOf: false; inputFields: [{ name: 'active'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'email'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'emailVerified'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'hidden'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'shortDescription'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'ENUM'; name: 'GroupType'; ofType: null; }; defaultValue: null }, { name: 'website'; type: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; defaultValue: null }]; }; + 'UpdateToken': { kind: 'INPUT_OBJECT'; name: 'UpdateToken'; isOneOf: false; inputFields: [{ name: 'allowedIps'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; + 'UpdateTraining': { kind: 'INPUT_OBJECT'; name: 'UpdateTraining'; isOneOf: false; inputFields: [{ name: 'fullName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; + 'UpdateUnixAccount': { kind: 'INPUT_OBJECT'; name: 'UpdateUnixAccount'; isOneOf: false; inputFields: [{ name: 'uid'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'vhost'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; + 'UpdateUser': { kind: 'INPUT_OBJECT'; name: 'UpdateUser'; isOneOf: false; inputFields: [{ name: 'aeiieMember'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'birthdate'; type: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; defaultValue: null }, { name: 'diplomaYearDuration'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'email'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'emailVerified'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'extendedTrialPeriod'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'familyName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'gapYear'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'gender'; type: { kind: 'ENUM'; name: 'Gender'; ofType: null; }; defaultValue: null }, { name: 'givenNameAtBirth'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'givenNameInUse'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'hidden'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; defaultValue: null }, { name: 'initialPromotion'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'lastUsedAt'; type: { kind: 'SCALAR'; name: 'LocalDateTime'; ofType: null; }; defaultValue: null }, { name: 'locale'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'middleName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'nickname'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'password'; type: { kind: 'INPUT_OBJECT'; name: 'Password'; ofType: null; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'phoneNumberVerified'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'public'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'schoolLogin'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'suspended'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'trainingId'; type: { kind: 'SCALAR'; name: 'SmolStr'; ofType: null; }; defaultValue: null }, { name: 'website'; type: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; defaultValue: null }, { name: 'zoneinfo'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; + 'Url': unknown; + 'Urn': unknown; + 'User': { kind: 'OBJECT'; name: 'User'; fields: { 'address': { name: 'address'; type: { kind: 'OBJECT'; name: 'Address'; ofType: null; } }; 'aeiieMember': { name: 'aeiieMember'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'backgroundImage': { name: 'backgroundImage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; } }; 'backgroundImageThumbnailHash': { name: 'backgroundImageThumbnailHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Base64'; ofType: null; }; } }; 'birthdate': { name: 'birthdate'; type: { kind: 'SCALAR'; name: 'Date'; ofType: null; } }; 'civilName': { name: 'civilName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'diplomaYearDuration': { name: 'diplomaYearDuration'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'email': { name: 'email'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'emailForwardAddress': { name: 'emailForwardAddress'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'emailVerified': { name: 'emailVerified'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'extendedTrialPeriod': { name: 'extendedTrialPeriod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'familyName': { name: 'familyName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'forenames': { name: 'forenames'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'gapYear': { name: 'gapYear'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'gender': { name: 'gender'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Gender'; ofType: null; }; } }; 'givenName': { name: 'givenName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'givenNameAtBirth': { name: 'givenNameAtBirth'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'givenNameInUse': { name: 'givenNameInUse'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'group': { name: 'group'; type: { kind: 'OBJECT'; name: 'GroupOfMember'; ofType: null; } }; 'groupHistory': { name: 'groupHistory'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'HistoricalGroupOfMember'; ofType: null; }; }; }; } }; 'groups': { name: 'groups'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'GroupOfMember'; ofType: null; }; }; }; } }; 'hidden': { name: 'hidden'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; } }; 'initialPromotion': { name: 'initialPromotion'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'lastUsedAt': { name: 'lastUsedAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'locale': { name: 'locale'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'middleName': { name: 'middleName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nickname': { name: 'nickname'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'oAuthGroup': { name: 'oAuthGroup'; type: { kind: 'OBJECT'; name: 'GroupOfMember'; ofType: null; } }; 'passwordHash': { name: 'passwordHash'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'phoneNumber': { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'phoneNumberVerified': { name: 'phoneNumberVerified'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'photo': { name: 'photo'; type: { kind: 'SCALAR'; name: 'Url'; ofType: null; } }; 'photoThumbnailHash': { name: 'photoThumbnailHash'; type: { kind: 'SCALAR'; name: 'Base64'; ofType: null; } }; 'picture': { name: 'picture'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; } }; 'pictureThumbnailHash': { name: 'pictureThumbnailHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Base64'; ofType: null; }; } }; 'preferredNickname': { name: 'preferredNickname'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'preferredUsername': { name: 'preferredUsername'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'profile': { name: 'profile'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; } }; 'promotion': { name: 'promotion'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'restrictedAccess': { name: 'restrictedAccess'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'schoolEmail': { name: 'schoolEmail'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'schoolLogin': { name: 'schoolLogin'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'semester': { name: 'semester'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'suspended': { name: 'suspended'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'training': { name: 'training'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Training'; ofType: null; }; } }; 'trialPeriodDaysLeft': { name: 'trialPeriodDaysLeft'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'unixAccount': { name: 'unixAccount'; type: { kind: 'OBJECT'; name: 'UnixAccount'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'uuid': { name: 'uuid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; } }; 'website': { name: 'website'; type: { kind: 'SCALAR'; name: 'Url'; ofType: null; } }; 'year': { name: 'year'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'zoneinfo': { name: 'zoneinfo'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'UserConnection': { kind: 'OBJECT'; name: 'UserConnection'; fields: { 'edges': { name: 'edges'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'UserEdge'; ofType: null; }; }; }; } }; 'nodes': { name: 'nodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; }; }; } }; 'pageInfo': { name: 'pageInfo'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PageInfo'; ofType: null; }; } }; 'remainingCount': { name: 'remainingCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'UserEdge': { kind: 'OBJECT'; name: 'UserEdge'; fields: { 'cursor': { name: 'cursor'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'node': { name: 'node'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; } }; 'remainingCount': { name: 'remainingCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'UserFilter': { kind: 'INPUT_OBJECT'; name: 'UserFilter'; isOneOf: false; inputFields: [{ name: 'accountUuid'; type: { kind: 'INPUT_OBJECT'; name: 'UuidFilter'; ofType: null; }; defaultValue: null }, { name: 'aeiieMember'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'backgroundThumbnailHash'; type: { kind: 'INPUT_OBJECT'; name: 'NullableFilter'; ofType: null; }; defaultValue: null }, { name: 'birthdate'; type: { kind: 'INPUT_OBJECT'; name: 'NullableDateFilter'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateTimeFilter'; ofType: null; }; defaultValue: null }, { name: 'diplomaYearDuration'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'email'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'emailVerified'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'extendedTrialPeriod'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'familyName'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'gapYear'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'gender'; type: { kind: 'INPUT_OBJECT'; name: 'GenderFilter'; ofType: null; }; defaultValue: null }, { name: 'givenName'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'givenNameAtBirth'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'givenNameInUse'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }, { name: 'groups'; type: { kind: 'INPUT_OBJECT'; name: 'UserGroupsFilter'; ofType: null; }; defaultValue: null }, { name: 'hidden'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'initialPromotion'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'lastUsedAt'; type: { kind: 'INPUT_OBJECT'; name: 'NullableDateTimeFilter'; ofType: null; }; defaultValue: null }, { name: 'locale'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'middleName'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }, { name: 'nickname'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }, { name: 'or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'UserFilter'; ofType: null; }; }; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }, { name: 'phoneNumberVerified'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'photoThumbnailHash'; type: { kind: 'INPUT_OBJECT'; name: 'NullableFilter'; ofType: null; }; defaultValue: null }, { name: 'pictureThumbnailHash'; type: { kind: 'INPUT_OBJECT'; name: 'NullableFilter'; ofType: null; }; defaultValue: null }, { name: 'promotion'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'public'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'restrictedAccess'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'schoolLogin'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'semester'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'suspended'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'training'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'trialPeriodDaysLeft'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'unixAccount'; type: { kind: 'INPUT_OBJECT'; name: 'UnixAccountFilter'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateTimeFilter'; ofType: null; }; defaultValue: null }, { name: 'uuid'; type: { kind: 'INPUT_OBJECT'; name: 'UuidFilter'; ofType: null; }; defaultValue: null }, { name: 'website'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }, { name: 'year'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'zoneinfo'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }]; }; + 'UserGroupsFilter': { kind: 'INPUT_OBJECT'; name: 'UserGroupsFilter'; isOneOf: false; inputFields: [{ name: 'active'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'hidden'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'INPUT_OBJECT'; name: 'GroupTypeFilter'; ofType: null; }; defaultValue: null }, { name: 'uuid'; type: { kind: 'INPUT_OBJECT'; name: 'UuidFilter'; ofType: null; }; defaultValue: null }]; }; + 'UserId': { kind: 'INPUT_OBJECT'; name: 'UserId'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'SmolStr'; ofType: null; }; defaultValue: null }, { name: 'personalEmail'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'urn'; type: { kind: 'SCALAR'; name: 'Urn'; ofType: null; }; defaultValue: null }, { name: 'uuid'; type: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; defaultValue: null }]; }; + 'UuidFilter': { kind: 'INPUT_OBJECT'; name: 'UuidFilter'; isOneOf: false; inputFields: [{ name: 'isIn'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; }; }; }; defaultValue: null }]; }; +}; + +/** An IntrospectionQuery representation of your schema. + * + * @remarks + * This is an introspection of your schema saved as a file by GraphQLSP. + * It will automatically be used by `gql.tada` to infer the types of your GraphQL documents. + * If you need to reuse this data or update your `scalars`, update `tadaOutputLocation` to + * instead save to a .ts instead of a .d.ts file. + */ +export type introspection = { + name: never; + query: 'Query'; + mutation: 'Mutation'; + subscription: never; + types: introspection_types; +}; + +import * as gqlTada from 'gql.tada'; + +declare module 'gql.tada' { + interface setupSchema { + introspection: introspection; + } +} diff --git a/src/lib/data.ts b/src/lib/data.ts index e482317..73d4339 100644 --- a/src/lib/data.ts +++ b/src/lib/data.ts @@ -1,6 +1,6 @@ -import { GetPromotionStore } from '$houdini'; import { pageIterator } from '$lib/graphql/query'; -import type { RequestEvent } from '@sveltejs/kit'; +import { client } from './graphql'; +import { PROMOTION_QUERY, USER_DETAILS_QUERY } from './graphql/queries'; type UserId = string; type PromoCache = { @@ -12,39 +12,53 @@ const cache = new Map<number, PromoCache>(); // 1 hour const CACHE_DURATION_MS = 1000 * 60 * 60; -async function fetchPromotion(promotion: number, event: RequestEvent): Promise<PromoCache> { - const array = await Array.fromAsync(pageIterator(GetPromotionStore, { promotion }, event)); +async function cacheImages(users: UserId[]): Promise<void> { + for (const user of users) { + const response = await client.query(USER_DETAILS_QUERY, { idList: [user] }); + + if (response.error) { + throw response.error; + } + + const url = response.data?.page.nodes[0].photo; + if (!url) continue; + await fetch(url, { method: 'HEAD' }); + } +} + +async function fetchPromotion(promotion: number): Promise<PromoCache> { + const array = await Array.fromAsync(pageIterator(PROMOTION_QUERY, { promotion })); + const users = array.map((node) => node.id); + + // background task + cacheImages(users); + return { lastUpdateMs: new Date().getTime(), - promo: new Set(array.map((node) => node.id)) + promo: new Set(users) }; } -export async function getPromotion(promo: number, event: RequestEvent): Promise<Set<UserId>> { +export async function getPromotion(promo: number): Promise<Set<UserId>> { if (cache.has(promo)) { const data = cache.get(promo)!; if (new Date().getTime() - data.lastUpdateMs < CACHE_DURATION_MS) return data.promo; } - const freshData = await fetchPromotion(promo, event); + const freshData = await fetchPromotion(promo); cache.set(promo, freshData); return freshData.promo; } export async function* promotionIterator( min: number, - max: number, - event: RequestEvent + max: number ): AsyncGenerator<UserId, void, undefined> { for (let i = min; i <= max; i++) { - const promo = await getPromotion(i, event); + const promo = await getPromotion(i); yield* promo; } } -export function getPromotionRange( - min: number, - max: number, - event: RequestEvent -): Promise<Set<UserId>> { - return Array.fromAsync(promotionIterator(min, max, event)).then((array) => new Set(array)); +export function getPromotionRange(min: number, max: number): Promise<Set<UserId>> { + return Array.fromAsync(promotionIterator(min, max)).then((array) => new Set(array)); } diff --git a/src/lib/graphql/client.ts b/src/lib/graphql/client.ts index e422bf9..3de9bd7 100644 --- a/src/lib/graphql/client.ts +++ b/src/lib/graphql/client.ts @@ -1,13 +1,12 @@ import env from '$lib/env'; -import { HoudiniClient } from '$houdini'; +import { Client, cacheExchange, fetchExchange } from '@urql/core'; -export default new HoudiniClient({ +export const client = new Client({ url: `${env.API_ORIGIN}/graphql/v0`, - fetchParams() { - return { - headers: { - Authorization: `Basic ${env.API_TOKEN}` - } - }; + exchanges: [cacheExchange, fetchExchange], + fetchOptions: { + headers: { + Authorization: `Basic ${env.API_TOKEN}` + } } }); diff --git a/src/lib/graphql/index.ts b/src/lib/graphql/index.ts new file mode 100644 index 0000000..0b2e1ba --- /dev/null +++ b/src/lib/graphql/index.ts @@ -0,0 +1,14 @@ +import { initGraphQLTada } from 'gql.tada'; +import type { introspection } from '../../graphql-env.d.ts'; + +export const graphql = initGraphQLTada<{ + introspection: introspection; + scalars: { + Identifier: string; + Base64: string; + Url: string; + }; +}>(); + +export { readFragment } from 'gql.tada'; +export { client } from './client'; diff --git a/src/lib/graphql/queries.ts b/src/lib/graphql/queries.ts new file mode 100644 index 0000000..d568967 --- /dev/null +++ b/src/lib/graphql/queries.ts @@ -0,0 +1,32 @@ +import { graphql } from '.'; + +export const PROMOTION_QUERY = graphql(` + query GetPromotion($first: Int!, $after: String, $promotion: Int!) { + page: users( + first: $first + after: $after + filter: { promotion: { eq: [$promotion] }, nickname: { null: false } } + ) { + pageInfo { + endCursor + hasNextPage + } + nodes { + id + } + } + } +`); + +export const USER_DETAILS_QUERY = graphql(` + query UserDetails($first: Int = 4, $idList: [String!]!) { + page: users(first: $first, filter: { id: { like: $idList } }) { + nodes { + id + nickname + photo + photoThumbnailHash + } + } + } +`); diff --git a/src/lib/graphql/queries/promo.gql b/src/lib/graphql/queries/promo.gql deleted file mode 100644 index a24a18c..0000000 --- a/src/lib/graphql/queries/promo.gql +++ /dev/null @@ -1,15 +0,0 @@ -query GetPromotion($first: Int!, $after: String, $promotion: Int!) { - page: users( - first: $first - after: $after - filter: { promotion: { eq: [$promotion] }, nickname: { null: false } } - ) { - pageInfo { - endCursor - hasNextPage - } - nodes { - id - } - } -} diff --git a/src/lib/graphql/queries/user_details.gql b/src/lib/graphql/queries/user_details.gql deleted file mode 100644 index 78ab2e4..0000000 --- a/src/lib/graphql/queries/user_details.gql +++ /dev/null @@ -1,10 +0,0 @@ -query UserDetails($first: Int = 4, $idList: [String!]!) { - page: users(first: $first, filter: { id: { like: $idList } }) { - nodes { - id - nickname - photo - photoThumbnailHash - } - } -} diff --git a/src/lib/graphql/query.ts b/src/lib/graphql/query.ts index b6dac16..c8d69de 100644 --- a/src/lib/graphql/query.ts +++ b/src/lib/graphql/query.ts @@ -1,5 +1,5 @@ -import type { GraphQLValue, GraphQLVariables, QueryResult, QueryStore } from '$houdini'; -import type { RequestEvent } from '@sveltejs/kit'; +import { client } from '$lib/graphql'; +import type { DocumentInput } from '@urql/core'; type Page<T> = { page: { @@ -11,37 +11,32 @@ type Page<T> = { }; }; -type NodeType<T> = T extends Page<infer U> ? U : never; - interface PageArgs { first: number; - after: string | null | undefined; + after: string | null; } -export async function* pageIterator< - Data extends Page<GraphQLValue>, - Input extends PageArgs | GraphQLVariables ->( - queryStore: new () => QueryStore<Data, Input>, - variables: Omit<Input, 'first' | 'after'>, - event: RequestEvent, +export async function* pageIterator<T, Variables extends PageArgs>( + query: DocumentInput<Page<T>, Variables>, + variables: Omit<Variables, 'first' | 'after'>, pageSize = 100 -): AsyncGenerator<NodeType<Data>, void, undefined> { - const store = new queryStore(); +): AsyncGenerator<T, void, undefined> { let cursor: string | null = null; let hasNextPage = true; while (hasNextPage) { - const result: QueryResult<Data, Input> = await store.fetch({ - event, - variables: { first: pageSize, after: cursor, ...variables } as Input - }); + const result = await client + .query(query, { first: pageSize, after: cursor, ...variables } as Variables) + .toPromise(); - if (result.errors) { - throw result.errors; + if (result.error) { + throw result.error; } - yield* (result.data?.page.nodes as NodeType<Data>[]) ?? []; - cursor = result.data?.page.pageInfo.endCursor ?? null; - hasNextPage = !!result.data?.page.pageInfo.hasNextPage; + const page: Page<T>['page'] | undefined = result.data?.page; + if (!page) return; + + yield* page.nodes ?? []; + cursor = page.pageInfo.endCursor ?? null; + hasNextPage = page.pageInfo.hasNextPage; } } diff --git a/src/lib/graphql/schema.gql b/src/lib/graphql/schema.gql index b601941..e5981e2 100644 --- a/src/lib/graphql/schema.gql +++ b/src/lib/graphql/schema.gql @@ -17,140 +17,170 @@ Indicates that an Input Object is a OneOf Input Object (and thus requires """ directive @oneOf on INPUT_OBJECT -union Account = Group | User +union Account = User | Group input AccountId { - id: SmolStr - uuid: UUID + uuid: UUID + id: SmolStr } type Address { - """ - # **ADMIN ONLY** - ## UUID interne de l'adresse - - Par exemple, `72c612f8-1d07-432e-8f71-60584be51f40` - """ - accountUuid: UUID! - - """## Pays de l'adresse""" - country: String! - - """ - ## Adresse postale complète de l'adresse - Formatée pour être affichée ou utilisée sur une étiquette d'envoi. - Ce champ PEUT contenir plusieurs lignes, séparées par des retours à la ligne. - Les nouvelles lignes peuvent être représentées soit par une paire retour - chariot/saut de ligne ("\r\n"), soit par un seul caractère de saut de ligne ("\n"). - """ - formatted: String! - - """## Ville ou localité de l'adresse""" - locality: String! - - """ - ## Nom de l'adresse - Le nom usuel de l'adresse s'il existe. Limite de **64** caractères. - - Par exemple, `Pyroloc` ou `Résidence "Les Estudines du Parc"`. - """ - name: String - - """## Code postal de l'adresse""" - postalCode: String! - - """ - ## Région de l'adresse - Province, de la préfecture ou région. - """ - region: String - - """ - ## Rue de l'adresse - Composante complète de l'adresse de la rue, qui PEUT inclure le numéro de la maison, - le nom de la rue, la boîte postale et des informations sur plusieurs lignes concernant - l'adresse de la rue. Ce champ PEUT contenir plusieurs lignes, séparées par des retours - à la ligne. Les nouvelles lignes peuvent être représentées soit par une paire retour - chariot/saut de ligne ("\r\n"), soit par un seul caractère de saut de ligne ("\n"). - """ - streetAddress: String! -} - -"""Base64 [RFC4648](https://www.rfc-editor.org/rfc/rfc4648)""" + """ + # **ADMIN ONLY** + ## UUID interne de l'adresse + + Par exemple, `72c612f8-1d07-432e-8f71-60584be51f40` + """ + accountUuid: UUID! + + """ + ## Nom de l'adresse + Le nom usuel de l'adresse s'il existe. Limite de **64** caractères. + + Par exemple, `Pyroloc` ou `Résidence "Les Estudines du Parc"`. + """ + name: String + + """ + ## Adresse postale complète de l'adresse + Formatée pour être affichée ou utilisée sur une étiquette d'envoi. + Ce champ PEUT contenir plusieurs lignes, séparées par des retours à la ligne. + Les nouvelles lignes peuvent être représentées soit par une paire retour + chariot/saut de ligne ("\r\n"), soit par un seul caractère de saut de ligne ("\n"). + """ + formatted: String! + + """ + ## Rue de l'adresse + Composante complète de l'adresse de la rue, qui PEUT inclure le numéro de la maison, + le nom de la rue, la boîte postale et des informations sur plusieurs lignes concernant + l'adresse de la rue. Ce champ PEUT contenir plusieurs lignes, séparées par des retours + à la ligne. Les nouvelles lignes peuvent être représentées soit par une paire retour + chariot/saut de ligne ("\r\n"), soit par un seul caractère de saut de ligne ("\n"). + """ + streetAddress: String! + + """ + ## Ville ou localité de l'adresse + """ + locality: String! + + """ + ## Région de l'adresse + Province, de la préfecture ou région. + """ + region: String + + """ + ## Code postal de l'adresse + """ + postalCode: String! + + """ + ## Pays de l'adresse + """ + country: String! +} + +""" +Base64 [RFC4648](https://www.rfc-editor.org/rfc/rfc4648) +""" scalar Base64 input BooleanFilter { - eq: Boolean! + eq: Boolean! } type BuildInfo { - ref: String - sha: String + ref: String + sha: String } -"""Rôles dans un group""" +""" +Rôles dans un group +""" enum ClaimAccess { - """Création""" - CREATE + """ + Aucun + """ + NONE - """Suppression""" - DELETE + """ + Lecture + """ + READ - """Aucun""" - NONE + """ + Écriture + """ + WRITE - """Lecture""" - READ + """ + Création + """ + CREATE - """Écriture""" - WRITE + """ + Suppression + """ + DELETE } input CreateGroup { - id: Identifier! - name: String! - type: GroupType + id: Identifier! + name: String! + type: GroupType } input CreateToken { - allowedIps: [String!] - claims: [NewTokenClaim!] - description: String! - globalAccess: ClaimAccess - id: String! + id: String! + description: String! + globalAccess: ClaimAccess + allowedIps: [String!] + claims: [NewTokenClaim!] } input CreateTraining { - fullName: String - id: Identifier! - name: String! + id: Identifier! + name: String! + fullName: String } input CreateUnixAccount { - vhost: String + vhost: String } input CreateUser { - familyName: String! - givenName: String! - password: Password - promotion: Int! - trainingId: Identifier! + password: Password + familyName: String! + givenName: String! + promotion: Int! + trainingId: Identifier! } -"""Rôles dans un groupe""" +""" +Rôles dans un groupe +""" enum CurrentGroupRole { - """Administrateur·trice""" - ADMIN + """ + Membre ordinaire + """ + MEMBER - """Membre du bureau""" - BOARD_MEMBER + """ + Administrateur·trice + """ + ADMIN - """Membre ordinaire""" - MEMBER + """ + Membre du bureau + """ + BOARD_MEMBER - """Président·e""" - OWNER + """ + Président·e + """ + OWNER } """ @@ -175,292 +205,332 @@ format, but it is always normalized to the UTC (Z) offset, e.g. scalar DateTime input DateTimeFilter { - eq: [LocalDateTime!] - gt: LocalDateTime - lt: LocalDateTime + gt: LocalDateTime + eq: [LocalDateTime!] + lt: LocalDateTime } enum FromNull { - BOOLEAN - LIST - NUMBER - OBJECT - STRING + NUMBER + STRING + BOOLEAN + LIST + OBJECT } -"""Genre d'une personne""" +""" +Genre d'une personne +""" enum Gender { - """Féminin""" - FEMALE + """ + Masculin + """ + MALE - """Masculin""" - MALE + """ + Féminin + """ + FEMALE - """Non binaire""" - NON_BINARY + """ + Non binaire + """ + NON_BINARY - """Inconnu""" - UNKNOWN + """ + Inconnu + """ + UNKNOWN } input GenderFilter { - isIn: [Gender!]! + isIn: [Gender!]! } type GlobalValues { - evenSemester: Boolean! - integration: Boolean! - schoolYear: Int! + schoolYear: Int! + evenSemester: Boolean! + integration: Boolean! } type Group { - """ - ## Groupe actif - **VRAI** si le group est encore actif. - Se traduit par une déclaration lors d'une réunion publique de l'AEIIE s'il - s'agit d'un group BdE. Les listes candidates à l'élection BdE sont actives le - temps de la campagne. - """ - active: Boolean! - - """ - ## URL de la photo de profil du groupe - Cette URL fait référence à un fichier image (par exemple, un fichier image PNG, - JPEG ou GIF), plutôt qu'à une page Web contenant une image. - - Par exemple, `https://api.iiens.net/picture/acier2020` ou `https://api.iiens.net/picture/dupontj2042` - """ - backgroundImage: Url! - - """Hash de l'image d'arrière plan du groupe""" - backgroundImageThumbnailHash: Base64! - - """ - ## Date de la création du compte du group - Sa valeur est un string JSON [RFC3339] représentant le temps entre 1970-01-01T0:0:0Z, - mesuré en UTC, et la date/heure. - """ - createdAt: DateTime! - - """ - ## Description du group - Une description plus complète que `short_description`, sans limite de caractères. - """ - description: String - - """ - ## Adresse électronique préférée de l'utilisateur. - Sa valeur DOIT être conforme à la syntaxe addr-spec de la RFC 5322 [RFC5322]. - - Par exemple, `arise@iiens.net` ou `bde@iiens.net`. - """ - email: String! - - """ - # **ADMIN ONLY** - ## Compte caché - Le compte du group sera invisible de toutes les requêtes, sauf admin si le filtre - de la requête le demande. - """ - hidden: Boolean! - - """ - ## Identifiant du group - Le nom du group normalisé (sans accents, caractères spéciaux ni espaces). - Ne peut contenir que des caractères ASCII et éventuellement des tirets pour - remplacer les espaces. - - Par exemple, `arise` ou `aeiie`. - """ - id: Identifier! - - """ - ## Nom du group - Le nom usuel du group, présenté sous forme d'acronyme ou sous forme longue. - - Par exemple, `ARISE` ou `BdE`. - """ - name: String! - - """ - ## URL de la photo de profil du groupe - Cette URL fait référence à un fichier image (par exemple, un fichier image PNG, - JPEG ou GIF), plutôt qu'à une page Web contenant une image. - - Par exemple, `https://api.iiens.net/picture/acier2020` ou `https://api.iiens.net/picture/dupontj2042` - """ - picture: Url! - - """Hash de la photo de profil du groupe""" - pictureThumbnailHash: Base64! - - """ - ## URL de la page de profil du group - Page de profil sur [www.iiens.net]. - - Par exemple, `https://www.iiens.net/eleve/acier2020` ou `https://www.iiens.net/eleve/dupontj2042` - """ - profile: Url! - - """ - ## Description courte du group - 64 caractères maximum, de quoi présenter le group succinctement. - """ - shortDescription: String - - """ - ## Type de groupe - Club, Association 1901, etc. - """ - type: GroupType! - unixAccount: UnixAccount - - """ - ## Date de la dernière mise à jour des informations relatives au group - Sa valeur est un string JSON [RFC3339] représentant le temps entre 1970-01-01T0:0:0Z, - mesuré en UTC, et la date/heure. - """ - updatedAt: DateTime! - - """ - # **ADMIN ONLY** - ## UUID interne du group - - Par exemple, `72c612f8-1d07-432e-8f71-60584be51f40` - """ - uuid: UUID! - - """## URL du site perso du groupe""" - website: Url + """ + # **ADMIN ONLY** + ## UUID interne du group + + Par exemple, `72c612f8-1d07-432e-8f71-60584be51f40` + """ + uuid: UUID! + + """ + ## Identifiant du group + Le nom du group normalisé (sans accents, caractères spéciaux ni espaces). + Ne peut contenir que des caractères ASCII et éventuellement des tirets pour + remplacer les espaces. + + Par exemple, `arise` ou `aeiie`. + """ + id: Identifier! + + """ + ## Nom du group + Le nom usuel du group, présenté sous forme d'acronyme ou sous forme longue. + + Par exemple, `ARISE` ou `BdE`. + """ + name: String! + + """ + ## Description courte du group + 64 caractères maximum, de quoi présenter le group succinctement. + """ + shortDescription: String + + """ + ## Description du group + Une description plus complète que `short_description`, sans limite de caractères. + """ + description: String + + """ + ## Adresse électronique préférée de l'utilisateur. + Sa valeur DOIT être conforme à la syntaxe addr-spec de la RFC 5322 [RFC5322]. + + Par exemple, `arise@iiens.net` ou `bde@iiens.net`. + """ + email: String! + + """ + ## URL du site perso du groupe + """ + website: Url + + """ + ## Type de groupe + Club, Association 1901, etc. + """ + type: GroupType! + unixAccount: UnixAccount + + """ + ## Date de la création du compte du group + Sa valeur est un string JSON [RFC3339] représentant le temps entre 1970-01-01T0:0:0Z, + mesuré en UTC, et la date/heure. + """ + createdAt: DateTime! + + """ + ## Date de la dernière mise à jour des informations relatives au group + Sa valeur est un string JSON [RFC3339] représentant le temps entre 1970-01-01T0:0:0Z, + mesuré en UTC, et la date/heure. + """ + updatedAt: DateTime! + + """ + ## URL de la page de profil du group + Page de profil sur [www.iiens.net]. + + Par exemple, `https://www.iiens.net/eleve/acier2020` ou `https://www.iiens.net/eleve/dupontj2042` + """ + profile: Url! + + """ + ## URL de la photo de profil du groupe + Cette URL fait référence à un fichier image (par exemple, un fichier image PNG, + JPEG ou GIF), plutôt qu'à une page Web contenant une image. + + Par exemple, `https://api.iiens.net/picture/acier2020` ou `https://api.iiens.net/picture/dupontj2042` + """ + picture: Url! + + """ + Hash de la photo de profil du groupe + """ + pictureThumbnailHash: Base64! + + """ + ## URL de la photo de profil du groupe + Cette URL fait référence à un fichier image (par exemple, un fichier image PNG, + JPEG ou GIF), plutôt qu'à une page Web contenant une image. + + Par exemple, `https://api.iiens.net/picture/acier2020` ou `https://api.iiens.net/picture/dupontj2042` + """ + backgroundImage: Url! + + """ + Hash de l'image d'arrière plan du groupe + """ + backgroundImageThumbnailHash: Base64! + + """ + ## Groupe actif + **VRAI** si le group est encore actif. + Se traduit par une déclaration lors d'une réunion publique de l'AEIIE s'il + s'agit d'un group BdE. Les listes candidates à l'élection BdE sont actives le + temps de la campagne. + """ + active: Boolean! + + """ + # **ADMIN ONLY** + ## Compte caché + Le compte du group sera invisible de toutes les requêtes, sauf admin si le filtre + de la requête le demande. + """ + hidden: Boolean! } type GroupConnection { - """A list of edges.""" - edges: [GroupEdge!]! + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! - """A list of nodes.""" - nodes: [Group!]! + """ + A list of edges. + """ + edges: [GroupEdge!]! - """Information to aid in pagination.""" - pageInfo: PageInfo! - remainingCount: Int! + """ + A list of nodes. + """ + nodes: [Group!]! + remainingCount: Int! } -"""An edge in a connection.""" +""" +An edge in a connection. +""" type GroupEdge { - """A cursor for use in pagination""" - cursor: String! + """ + The item at the end of the edge + """ + node: Group! + remainingCount: Int! - """The item at the end of the edge""" - node: Group! - remainingCount: Int! + """ + A cursor for use in pagination + """ + cursor: String! } input GroupFilter { - accountUuid: UuidFilter - active: BooleanFilter - createdAt: DateTimeFilter - description: NullableTextFilter - email: TextFilter - emailVerified: BooleanFilter - hidden: BooleanFilter - id: TextFilter - name: TextFilter - or: [GroupFilter!] - shortDescription: NullableTextFilter - type: GroupTypeFilter - unixAccount: UnixAccountFilter - updatedAt: DateTimeFilter - uuid: UuidFilter - website: NullableTextFilter + uuid: UuidFilter + name: TextFilter + type: GroupTypeFilter + shortDescription: NullableTextFilter + description: NullableTextFilter + active: BooleanFilter + accountUuid: UuidFilter + unixAccount: UnixAccountFilter + id: TextFilter + email: TextFilter + emailVerified: BooleanFilter + website: NullableTextFilter + hidden: BooleanFilter + createdAt: DateTimeFilter + updatedAt: DateTimeFilter + or: [GroupFilter!] } input GroupId { - email: String - id: SmolStr - uuid: UUID + id: SmolStr + email: String + uuid: UUID } type GroupOfMember { - group: Group! - isAdmin: Boolean! - isBoardMember: Boolean! - isOwner: Boolean! - role: CurrentGroupRole! - since: Date! + group: Group! + role: CurrentGroupRole! + isOwner: Boolean! + isBoardMember: Boolean! + isAdmin: Boolean! + since: Date! } input GroupOfMemberFilter { - role: CurrentGroupRole - since: NeverDateFilter - strictRole: Boolean! = false + role: CurrentGroupRole + since: NeverDateFilter + strictRole: Boolean! = false } -"""Rôles dans un groupe""" +""" +Rôles dans un groupe +""" enum GroupRole { - """Administrateur·trice""" - ADMIN + """ + A quitté le groupe + """ + GONE - """Membre du bureau""" - BOARD_MEMBER + """ + Membre ordinaire + """ + MEMBER - """A quitté le groupe""" - GONE + """ + Administrateur·trice + """ + ADMIN - """Membre ordinaire""" - MEMBER + """ + Membre du bureau + """ + BOARD_MEMBER - """Président·e""" - OWNER + """ + Président·e + """ + OWNER } enum GroupType { - ASSOCIATION - CLUB - COMMISSION - HOME - LIST - OTHER - UNKNOWN + ASSOCIATION + CLUB + COMMISSION + LIST + HOME + OTHER + UNKNOWN } input GroupTypeFilter { - isIn: [GroupType!]! + isIn: [GroupType!]! } type Health { - db: String! + db: String! } type HistoricalGroupOfMember { - group: Group! - role: GroupRole! - since: Date! + group: Group! + role: GroupRole! + since: Date! } input HistoricalGroupOfMemberFilter { - role: GroupRole - since: NeverDateFilter - strictRole: Boolean! = false + role: GroupRole + since: NeverDateFilter + strictRole: Boolean! = false } type HistoricalMemberOfGroup { - role: GroupRole! - since: Date! - user: User! + user: User! + role: GroupRole! + since: Date! } scalar Identifier input Int16Filter { - eq: [Int!] - gt: Int - lt: Int + gt: Int + eq: [Int!] + lt: Int } input LevenshteinFilter { - threshold: Int - value: String! + value: String! + threshold: Int } """ @@ -472,149 +542,160 @@ subseconds. E.g. "2022-01-12T07:30:19.12345". scalar LocalDateTime type Mutation { - addClaims(claims: [NewTokenClaim!]!, token: TokenId!): Token! - addGroupMemberRole(group: GroupId!, role: GroupRole!, user: UserId!): HistoricalMemberOfGroup! - copyClaims(dstToken: TokenId!, srcToken: TokenId!): Token! - - """Création d'un groupe""" - createGroup(group: CreateGroup!): Group! - createGroupUnixAccount(account: CreateUnixAccount!, group: GroupId!): UnixAccount! - createToken(token: CreateToken!): PlainToken! - createTraining(training: CreateTraining!): Training! - - """ - Création d'un utilisateur - ### Erreurs possibles - - `NOT_FOUND`: La formation n'existe pas. - - `ID_GENERATION_FAILURE`: L'identifiant de l'utilisateur n'a pas pu être généré. - """ - createUser(user: CreateUser!): User! - createUserUnixAccount(account: CreateUnixAccount!, user: UserId!): UnixAccount! - deleteClaims(claims: [String!], token: TokenId!): Token! - - """ - Suppression d'un groupe - ### Erreurs possibles - - `NOT_FOUND`: Le groupe n'existe pas. - """ - deleteGroup(group: GroupId!): Boolean! - deleteToken(token: TokenId!): Int! - deleteTraining(training: TrainingId!): Int! - - """ - Suppression d'un utilisateur - ### Erreurs possibles - - `NOT_FOUND`: L'utilisateur n'existe pas. - """ - deleteUser(user: UserId!): Int! - endOfIntegration: Boolean! - evenSemester: Boolean! - newYear: Int! - regenerateToken(token: TokenId!): PlainToken! - status: Int! - - """ - Mise à jour d'un groupe - ### Erreurs possibles - - `NOT_FOUND`: Le groupe n'existe pas. - """ - updateGroup(group: GroupId!, update: UpdateGroup!): Group! - updateToken(token: TokenId!, update: UpdateToken!): Token! - updateTraining(training: TrainingId!, update: UpdateTraining!): Training! - updateUnixAccount(unixAccount: UnixAccountId!, update: UpdateUnixAccount!): UnixAccount! - - """ - Mise à jour d'un utilisateur - ### Erreurs possibles - - `NOT_FOUND`: L'utilisateur ou la formation n'existe pas. - """ - updateUser(update: UpdateUser!, user: UserId!): User! + """ + Création d'un utilisateur + ### Erreurs possibles + - `NOT_FOUND`: La formation n'existe pas. + - `ID_GENERATION_FAILURE`: L'identifiant de l'utilisateur n'a pas pu être généré. + """ + createUser(user: CreateUser!): User! + + """ + Mise à jour d'un utilisateur + ### Erreurs possibles + - `NOT_FOUND`: L'utilisateur ou la formation n'existe pas. + """ + updateUser(user: UserId!, update: UpdateUser!): User! + + """ + Suppression d'un utilisateur + ### Erreurs possibles + - `NOT_FOUND`: L'utilisateur n'existe pas. + """ + deleteUser(user: UserId!): Int! + + """ + Création d'un groupe + """ + createGroup(group: CreateGroup!): Group! + + """ + Mise à jour d'un groupe + ### Erreurs possibles + - `NOT_FOUND`: Le groupe n'existe pas. + """ + updateGroup(group: GroupId!, update: UpdateGroup!): Group! + + """ + Suppression d'un groupe + ### Erreurs possibles + - `NOT_FOUND`: Le groupe n'existe pas. + """ + deleteGroup(group: GroupId!): Boolean! + addGroupMemberRole(user: UserId!, group: GroupId!, role: GroupRole!): HistoricalMemberOfGroup! + createToken(token: CreateToken!): PlainToken! + updateToken(token: TokenId!, update: UpdateToken!): Token! + regenerateToken(token: TokenId!): PlainToken! + deleteClaims(token: TokenId!, claims: [String!]): Token! + addClaims(token: TokenId!, claims: [NewTokenClaim!]!): Token! + copyClaims(srcToken: TokenId!, dstToken: TokenId!): Token! + deleteToken(token: TokenId!): Int! + createUserUnixAccount(user: UserId!, account: CreateUnixAccount!): UnixAccount! + createGroupUnixAccount(group: GroupId!, account: CreateUnixAccount!): UnixAccount! + updateUnixAccount(unixAccount: UnixAccountId!, update: UpdateUnixAccount!): UnixAccount! + createTraining(training: CreateTraining!): Training! + updateTraining(training: TrainingId!, update: UpdateTraining!): Training! + deleteTraining(training: TrainingId!): Int! + newYear: Int! + evenSemester: Boolean! + endOfIntegration: Boolean! + status: Int! } input NeverDateFilter { - eq: [Date!] - gt: Date - lt: Date + gt: Date + eq: [Date!] + lt: Date } input NewTokenClaim { - access: ClaimAccess! - claim: String! + claim: String! + access: ClaimAccess! } input NullableDateFilter { - day: Int - eq: [Date!] - gt: Date - lt: Date - month: Int - null: Boolean + null: Boolean + day: Int + month: Int + gt: Date + eq: [Date!] + lt: Date } input NullableDateTimeFilter { - eq: [LocalDateTime!] - gt: LocalDateTime - lt: LocalDateTime - null: Boolean + null: Boolean + gt: LocalDateTime + eq: [LocalDateTime!] + lt: LocalDateTime } input NullableFilter { - null: Boolean + null: Boolean } input NullableTextFilter { - levenshtein: [LevenshteinFilter!] - like: [String!] - notLike: [String!] - null: Boolean - similar: [SimilarFilter!] + null: Boolean + like: [String!] + notLike: [String!] + similar: [SimilarFilter!] + levenshtein: [LevenshteinFilter!] } enum OrderByGroup { - CREATED_AT - ID - NAME - UPDATED_AT - UUID + UUID + ID + NAME + CREATED_AT + UPDATED_AT } enum OrderByUser { - BIRTH_DATE - CREATED_AT - FAMILY_NAME - GIVEN_NAME - ID - LAST_USED_AT - NICKNAME - PROMOTION - UPDATED_AT - UUID - YEAR -} - -"""Information about pagination in a connection""" + UUID + ID + GIVEN_NAME + FAMILY_NAME + NICKNAME + BIRTH_DATE + PROMOTION + YEAR + CREATED_AT + UPDATED_AT + LAST_USED_AT +} + +""" +Information about pagination in a connection +""" type PageInfo { - """When paginating forwards, the cursor to continue.""" - endCursor: String + """ + When paginating backwards, are there more items? + """ + hasPreviousPage: Boolean! - """When paginating forwards, are there more items?""" - hasNextPage: Boolean! + """ + When paginating forwards, are there more items? + """ + hasNextPage: Boolean! - """When paginating backwards, are there more items?""" - hasPreviousPage: Boolean! + """ + When paginating backwards, the cursor to continue. + """ + startCursor: String - """When paginating backwards, the cursor to continue.""" - startCursor: String + """ + When paginating forwards, the cursor to continue. + """ + endCursor: String } input Password { - hash: String - plain: String + hash: String + plain: String } type PlainToken { - base64: String! - raw: String! + raw: String! + base64: String! } """ @@ -622,91 +703,104 @@ Ensemble des requêtes possibles pour l'API Arise. Certaines peuvent être cachées, en fonction des permissions courantes. """ type Query { - account(account: AccountId!): Account - buildInfo: BuildInfo! - currentToken: Token! - globalsValues: GlobalValues! - group(group: GroupId!): Group - groups(after: String, before: String, filter: GroupFilter, first: Int, last: Int, orderBy: [OrderByGroup!]! = []): GroupConnection! - health: Health! - oAuthAppOwner: Account! - token(token: TokenId!): Token - tokens: [Token!]! - trainings: [Training!]! - user(user: UserId!): User - users(after: String, before: String, filter: UserFilter, first: Int, last: Int, orderBy: [OrderByUser!]! = []): UserConnection! + user(user: UserId!): User + users( + after: String + before: String + first: Int + last: Int + filter: UserFilter + orderBy: [OrderByUser!]! = [] + ): UserConnection! + group(group: GroupId!): Group + groups( + after: String + before: String + first: Int + last: Int + filter: GroupFilter + orderBy: [OrderByGroup!]! = [] + ): GroupConnection! + account(account: AccountId!): Account + oAuthAppOwner: Account! + currentToken: Token! + token(token: TokenId!): Token + tokens: [Token!]! + trainings: [Training!]! + buildInfo: BuildInfo! + health: Health! + globalsValues: GlobalValues! } input SimilarFilter { - threshold: Float - value: String! + value: String! + threshold: Float } scalar SmolStr input TextFilter { - levenshtein: [LevenshteinFilter!] - like: [String!] - notLike: [String!] - similar: [SimilarFilter!] + like: [String!] + notLike: [String!] + similar: [SimilarFilter!] + levenshtein: [LevenshteinFilter!] } type Token { - allowedIps: [String!]! - claims: [TokenClaim!]! - - """ - # **ADMIN ONLY** - ## Description du jeton - """ - description: String! - globalAccess: ClaimAccess - - """ - # **ADMIN ONLY** - ## Identifiant du jeton - """ - id: String! - - """ - # **ADMIN ONLY** - ## Hash du jeton - Standard actuel : BLAKE3 - - Par exemple, `$blake3$1ChQCR0BrfBO42AkRogZaw$+COVVpcK/ptUTSckqIdI/rFF1JdIkvk9V++z56kLNf4'` - """ - tokenHash: String! - - """ - # **ADMIN ONLY** - ## UUID interne du jeton - - Par exemple, `72c612f8-1d07-432e-8f71-60584be51f40` - """ - uuid: UUID! + """ + # **ADMIN ONLY** + ## UUID interne du jeton + + Par exemple, `72c612f8-1d07-432e-8f71-60584be51f40` + """ + uuid: UUID! + + """ + # **ADMIN ONLY** + ## Identifiant du jeton + """ + id: String! + + """ + # **ADMIN ONLY** + ## Description du jeton + """ + description: String! + + """ + # **ADMIN ONLY** + ## Hash du jeton + Standard actuel : BLAKE3 + + Par exemple, `$blake3$1ChQCR0BrfBO42AkRogZaw$+COVVpcK/ptUTSckqIdI/rFF1JdIkvk9V++z56kLNf4'` + """ + tokenHash: String! + globalAccess: ClaimAccess + allowedIps: [String!]! + claims: [TokenClaim!]! } type TokenClaim { - access: ClaimAccess! - claim: String! + claim: String! + access: ClaimAccess! } input TokenId { - globalAccess: ClaimAccess - id: SmolStr - uuid: UUID + id: SmolStr + uuid: UUID + globalAccess: ClaimAccess } type Training { - fullName: String - id: Identifier! - name: String! - uuid: UUID! + uuid: UUID! + id: Identifier! + name: String! + fullName: String } input TrainingId { - id: SmolStr - uuid: UUID + id: SmolStr + uuid: UUID } """ @@ -722,89 +816,89 @@ entities without requiring a central allocating authority. scalar UUID type UnixAccount { - accountUuid: UUID! - uid: Int! - vhost: String + accountUuid: UUID! + uid: Int! + vhost: String + + """ + URL du site personnel de l'utilisateur + + Page "perso" de l'utilisateur hébergée sur les serveurs d'ARISE. - """ - URL du site personnel de l'utilisateur - - Page "perso" de l'utilisateur hébergée sur les serveurs d'ARISE. - - Par exemple, `https://acier.perso.iiens.net` - """ - website: Url + Par exemple, `https://acier.perso.iiens.net` + """ + website: Url } input UnixAccountFilter { - null: Boolean - uid: Int16Filter - uuid: UuidFilter - vhost: TextFilter + null: Boolean + uuid: UuidFilter + uid: Int16Filter + vhost: TextFilter } input UnixAccountId { - uid: Int - uuid: UUID + uid: Int + uuid: UUID } input UpdateGroup { - active: Boolean - description: String - email: String - emailVerified: Boolean - hidden: Boolean - id: Identifier - name: String - shortDescription: String - type: GroupType - website: Url + name: String + type: GroupType + shortDescription: String + description: String + active: Boolean + id: Identifier + email: String + emailVerified: Boolean + website: Url + hidden: Boolean } input UpdateToken { - allowedIps: [String!] - description: String - id: String + id: String + description: String + allowedIps: [String!] } input UpdateTraining { - fullName: String - name: String + name: String + fullName: String } input UpdateUnixAccount { - uid: Int - vhost: String + uid: Int + vhost: String } input UpdateUser { - aeiieMember: Boolean - birthdate: Date - diplomaYearDuration: Int - email: String - emailVerified: Boolean - extendedTrialPeriod: Boolean - familyName: String - gapYear: Int - gender: Gender - givenNameAtBirth: String - givenNameInUse: String - hidden: Boolean - id: Identifier - initialPromotion: Int - lastUsedAt: LocalDateTime - locale: String - middleName: String - nickname: String - password: Password - phoneNumber: String - phoneNumberVerified: Boolean - public: Boolean - schoolLogin: String - suspended: Boolean - trainingId: SmolStr - website: Url - zoneinfo: String + password: Password + givenNameAtBirth: String + givenNameInUse: String + middleName: String + familyName: String + nickname: String + gender: Gender + birthdate: Date + zoneinfo: String + locale: String + schoolLogin: String + phoneNumber: String + phoneNumberVerified: Boolean + initialPromotion: Int + gapYear: Int + diplomaYearDuration: Int + trainingId: SmolStr + extendedTrialPeriod: Boolean + aeiieMember: Boolean + suspended: Boolean + public: Boolean + lastUsedAt: LocalDateTime + id: Identifier + email: String + emailVerified: Boolean + website: Url + hidden: Boolean } """ @@ -815,541 +909,569 @@ scalar Url scalar Urn type User { - """Adresse de l'utilisateur""" - address: Address - - """ - Adhérent de l'AEIIE - - **VRAI** si l'utilisateur est membre de l'AEIIE. **FAUX** à la création du compte. - """ - aeiieMember: Boolean! - - """ - URL de l'image d'arrière plan de l'utilisateur - - Cette URL fait référence à un fichier image (par exemple, un fichier image PNG, - JPEG ou GIF), plutôt qu'à une page Web contenant une image. - - Par exemple, `https://api.iiens.net/picture/acier2020` - """ - backgroundImage: Url! - - """Hash de l'image d'arrière plan de l'utilisateur""" - backgroundImageThumbnailHash: Base64! - - """Date de naissance de l'utilisateur""" - birthdate: Date - - """ - Nom complet administratif de l'utilisateur - - Présenté sous une forme affichable, avec toutes les parties du nom, **SAUF** le surnom. - - Par exemple, `Jean Dupont` - """ - civilName: String! - - """ - Date de la création du compte de l'utilisateur - - Sa valeur est un string JSON [RFC3339] représentant le temps entre 1970-01-01T0:0:0Z, - mesuré en UTC, et la date/heure. - """ - createdAt: DateTime! - - """ - Années d'études requises jusqu'au diplôme - - Par défaut cette valeur est de 03. - """ - diplomaYearDuration: Int! - - """ - Adresse électronique de l'utilisateur - - Un alias de l'adresse électronique véritable de l'utilisateur. - À utiliser en priorité pour la création de comptes. - - Par exemple, `acier2020.e2e01581919c@alias.iiens.net`. - """ - email: String! - - """ - Adresse électronique réelle de l'utilisateur - - Sa valeur DOIT être conforme à la syntaxe addr-spec de la RFC 5322 [RFC5322]. - - Par exemple, `foo.bar@ensiie.fr` ou `dupont.jean@gmail.com`. - """ - emailForwardAddress: String - - """ - Adresse électronique de l'utilisateur vérifiée - - Vrai si l'adresse électronique préférée de l'utilisateur a été vérifiée, sinon faux. - Lorsque cette valeur d'allégation est vraie, cela signifie qu'ARISE a pris des mesures - positives pour s'assurer que l'adresse électronique était contrôlée par l'utilisateur - au moment où la vérification a été effectuée. - """ - emailVerified: Boolean! - - """ - Période d'essai étendue de l'utilisateur - - **FAUX** lors de la création du compte. - - Cette variable permet d'outrepasser le champ `restricted_access`. - """ - extendedTrialPeriod: Boolean! - - """ - Nom(s) de famille de l'utilisateur - - Notez que dans certaines cultures, les personnes peuvent avoir plusieurs noms de famille ou - aucun nom de famille ; tous peuvent être présents, les noms étant séparés par des caractères d'espacement. - - Par exemple, `Leroy` - """ - familyName: String! - - """ - Prénoms de l'utilisateur - - Tous les prénoms de l'utilisateur concaténés ensembles. - - Par exemple, `Jean Pierre-Jacques` ou `Robert` - """ - forenames: String! - - """ - Années d'étude d'écart de l'utilisateur - - Désigne des périodes de temps où un utilisateur prend une pause ou un écart par - rapport à la norme. Cela peut être causé par une année sabbatique, une année de - redoublement ou pour d'autres raisons. - - Par défaut cette valeur est de 0. - """ - gapYear: Int! - - """ - Genre de l'utilisateur - - Par défaut à `UNKNOWN`. - """ - gender: Gender! - - """ - Prénom(s) de l'utilisateur - - Notez que dans certaines cultures, les personnes peuvent avoir plusieurs prénoms ; - tous peuvent être présents, les noms étant séparés par des caractères d'espacement. - - Par exemple, `Jean` ou `Pierre Jacques` - """ - givenName: String! - - """ - Prénom(s) de naissance de l'utilisateur - - Notez que dans certaines cultures, les personnes peuvent avoir plusieurs prénoms ; - tous peuvent être présents, les noms étant séparés par des caractères d'espacement. - - Par exemple, `Jean` ou `Pierre Jacques` - """ - givenNameAtBirth: String! - - """ - Prénom(s) d'usage de l'utilisateur - - Notez que dans certaines cultures, les personnes peuvent avoir plusieurs prénoms ; - tous peuvent être présents, les noms étant séparés par des caractères d'espacement. - - Par exemple, `Jeanne` ou `Pierre Jacques` - """ - givenNameInUse: String - - """Groupe de l'utilisateur""" - group(id: GroupId!): GroupOfMember - - """ - Historique des groupes de l'utilisateur - - Cet historique retrace tous les rôles que l'utilisateur à pu prendre au - sein des groups de l'école. - """ - groupHistory(filter: HistoricalGroupOfMemberFilter): [HistoricalGroupOfMember!]! - - """ - Groupes de l'utilisateur - - Les rôles passés ne seront pas renvoyés dans cette requête. - Pour cela, se référer à `group_history.` - """ - groups(filter: GroupOfMemberFilter): [GroupOfMember!]! - - """ - Compte caché - - Le compte utilisateur sera invisible de toutes les requêtes, sauf admin si le filtre - de la requête le demande. - """ - hidden: Boolean! - - """ - Identifiant de l'utilisateur - - Plus communément appelé AriseID, il est composé de 8 caractères maximum formés du nom - et du prénom, et de 4 chiffre représentant l'année d'arrivée pour arriver à un identifiant unique. - - Par exemple, `acier2020` ou `dupontj2042`. - """ - id: Identifier! - - """ - Promotion d'origine de l'utilisateur - - La promotion présupposée de l'utilisateur au moment où il rentre à l'école. - - Habituellement `année d'entrée + 3` - """ - initialPromotion: Int! - - """ - Date de la dernière activité via l'API de l'utilisateur - - Sa valeur est un string JSON [RFC3339] représentant le temps entre 1970-01-01T0:0:0Z, - mesuré en UTC, et la date/heure. - """ - lastUsedAt: DateTime - - """ - Langue - - Les paramètres régionaux de l'utilisateur, représentés par une balise de - langue BCP47 [RFC5646]. Il s'agit généralement d'un code de langue ISO 639-1 - Alpha-2 [ISO639-1] en minuscules et d'un code de pays ISO 3166-1 Alpha-2 - [ISO3166-1] en majuscules, séparés par un tiret. - - Par exemple, `en-US` ou `fr-CA`. - """ - locale: String! - - """ - Deuxième(s) prénom(s) de l'utilisateur - - Notez que dans certaines cultures, les personnes peuvent avoir plusieurs seconds prénoms ; - tous peuvent être présents, les noms étant séparés par des caractères d'espacement. - Notez également que dans certaines cultures, les seconds prénoms ne sont pas utilisés. - - Par exemple, `Robert` - """ - middleName: String - - """ - Nom complet de l'utilisateur - - Présenté sous une forme affichable, avec toutes les parties du nom, **Y COMPRIS** le surnom. - - Par exemple, `Jean "Foobar" Dupont` ou `Jean Dupont` - """ - name: String! - - """ - Surnom de l'utilisateur - - Le surnom qu'a choisi l'utilisateur. - - Par exemple, `Foobar` ou `Jean` - """ - nickname: String - - """ - Groupe courant de l'utilisateur - - Retourne le propriétaire de l'application si ce dernier est un groupe. - - Les rôles passés ne seront pas renvoyés dans cette requête. - Pour cela, se référer à `current_group_history.` - """ - oAuthGroup: GroupOfMember - - """ - Hash du mot de passe de l'utilisateur - - Standard actuel : Argon2id - - Par exemple, `$argon2id$v=19$m=19456,t=2,p=1$XMBjfqZtpEyVxZbGNjKPCg$krFvSFSL3XUr6736galD8YVmGgXpqNSc02VyLqFesPY'` - """ - passwordHash: String - - """ - Numéro de téléphone de l'utilisateur - - E.164 [E.164] est le format adopté pour ce champ. - - Par exemple, `+14255551212` ou `+5626872400`. - """ - phoneNumber: String - - """ - Numéro de téléphone de l'utilisateur vérifié - - Vrai si le numéro de téléphone de l'utilisateur a été vérifié, sinon faux. - Lorsque cette valeur d'allégation est vraie, cela signifie qu'ARISE a pris - des mesures positives pour s'assurer que ce numéro de téléphone était contrôlé - par l'utilisateur final au moment où la vérification a été effectuée. Les moyens - par lesquels un numéro de téléphone est vérifié sont spécifiques au contexte - et dépendent du cadre de confiance ou des accords contractuels dans lesquels - les parties opèrent. - """ - phoneNumberVerified: Boolean! - - """ - URL de la photo de trombinoscope de l'utilisateur - - Cette URL fait référence à un fichier image (par exemple, un fichier image PNG, - JPEG ou GIF), plutôt qu'à une page Web contenant une image. - - Par exemple, `https://api.iiens.net/rest/v0/photo/acier2020` - """ - photo: Url - - """Hash de la photo de trombinoscope de l'utilisateur""" - photoThumbnailHash: Base64 - - """ - URL de l'image de profil de l'utilisateur - - Cette URL fait référence à un fichier image (par exemple, un fichier image PNG, - JPEG ou GIF), plutôt qu'à une page Web contenant une image. - - Par exemple, `https://api.iiens.net/picture/acier2020` - """ - picture: Url! - - """Hash de la photo de profil de l'utilisateur""" - pictureThumbnailHash: Base64! - - """ - Pseudo préféré - - Pseudo abrégé non unique par lequel l'utilisateur souhaite être désigné. - - Surnom si renseigné par l'utilisateur, sinon nom civil par défaut. - - Par exemple, `Foobar` ou `dupontj2042` - """ - preferredNickname: String! - - """ - Nom d'utilisateur préféré - - Nom abrégé non unique par lequel l'utilisateur souhaite être désigné. - - Surnom si renseigné par l'utilisateur, sinon identifiant ARISE par défaut. - - Par exemple, `Foobar` ou `dupontj2042` - """ - preferredUsername: String! - - """ - URL de la page de profil de l'utilisateur - - Page de profil sur [www.iiens.net](https://www.iiens.net). - - Par exemple, `https://www.iiens.net/eleve/acier2020` - """ - profile: Url! - - """ - Promotion effective de l'utilisateur - - Promotion de l'utilisateur en tenant compte des redoublements et autres facteurs. - """ - promotion: Int! - - """ - Accès restreint aux services d'ARISE - - **VRAI** si la période d'essai est arrivée à terme (42 jours) et que l'utilisateur n'est pas - membre d'ARISE **ET** de l'AEIIE. - """ - restrictedAccess: Boolean! - - """ - Adresse électronique scolaire de l'utilisateur - - Sa valeur DOIT être conforme à la syntaxe addr-spec de la RFC 5322 [RFC5322]. - - Par exemple, `mael.acier@ensiie.eu` ou `dupont.jean@ensiie.eu`. - """ - schoolEmail: String! - - """ - Identifiant de connexion scolaire de l'utilisateur - - Habituellement sous la forme `prenom.nom` - """ - schoolLogin: String! - - """ - Semestre actuel de l'utilisateur - - Compteur de semestres en fonction de l'année de promotion effective. - Les redoublements sont pris en compte dans l'évaluation de cette valeur. - - Par exemple, `S1`, `S2`, `S3` *(Le `S` n'est pas ajouté automatiquement)* - """ - semester: Int! - - """ - Compte suspendu - - Le compte utilisateur ne sera plus utilisable pour se connecter aux services d'ARISE. - """ - suspended: Boolean! - - """ - ## Parcours - - Par exemple, "FISE", "FISA" - """ - training: Training! - - """ - Nombre de jours restants sur la période d'essai de l'utilisateur - - **42** lors de la création du compte. - """ - trialPeriodDaysLeft: Int! - - """Compte UNIX""" - unixAccount: UnixAccount - - """ - Date de la dernière mise à jour des informations relatives à l'utilisateur - - Sa valeur est un string JSON [RFC3339] représentant le temps entre 1970-01-01T0:0:0Z, - mesuré en UTC, et la date/heure. - """ - updatedAt: DateTime! - - """UUID du compte de l'utilisateur""" - uuid: UUID! - - """ - URL du site Web ou du blog de l'utilisateur - - Par exemple, `https://foo.com` - """ - website: Url - - """ - Année en cours de l'utilisateur - - Compteur d'années en fonction de l'année de promotion effective. - Les redoublements sont pris en compte dans l'évaluation de cette valeur. - - Par exemple, `1A`, `2A`, `3A` *(Le `A` n'est pas ajouté automatiquement)* - """ - year: Int! - - """ - Fuseau horaire - - Chaîne de caractères provenant de la base de données des fuseaux horaires zoneinfo - [zoneinfo] représentant le fuseau horaire de l'utilisateur. - - Par exemple, `Europe/Paris` ou `Amérique/Los_Angeles`. - """ - zoneinfo: String! + """ + UUID du compte de l'utilisateur + """ + uuid: UUID! + + """ + Identifiant de l'utilisateur + + Plus communément appelé AriseID, il est composé de 8 caractères maximum formés du nom + et du prénom, et de 4 chiffre représentant l'année d'arrivée pour arriver à un identifiant unique. + + Par exemple, `acier2020` ou `dupontj2042`. + """ + id: Identifier! + + """ + Hash du mot de passe de l'utilisateur + + Standard actuel : Argon2id + + Par exemple, `$argon2id$v=19$m=19456,t=2,p=1$XMBjfqZtpEyVxZbGNjKPCg$krFvSFSL3XUr6736galD8YVmGgXpqNSc02VyLqFesPY'` + """ + passwordHash: String + + """ + Nom complet de l'utilisateur + + Présenté sous une forme affichable, avec toutes les parties du nom, **Y COMPRIS** le surnom. + + Par exemple, `Jean "Foobar" Dupont` ou `Jean Dupont` + """ + name: String! + + """ + Nom complet administratif de l'utilisateur + + Présenté sous une forme affichable, avec toutes les parties du nom, **SAUF** le surnom. + + Par exemple, `Jean Dupont` + """ + civilName: String! + + """ + Prénom(s) de l'utilisateur + + Notez que dans certaines cultures, les personnes peuvent avoir plusieurs prénoms ; + tous peuvent être présents, les noms étant séparés par des caractères d'espacement. + + Par exemple, `Jean` ou `Pierre Jacques` + """ + givenName: String! + + """ + Prénom(s) de naissance de l'utilisateur + + Notez que dans certaines cultures, les personnes peuvent avoir plusieurs prénoms ; + tous peuvent être présents, les noms étant séparés par des caractères d'espacement. + + Par exemple, `Jean` ou `Pierre Jacques` + """ + givenNameAtBirth: String! + + """ + Prénom(s) d'usage de l'utilisateur + + Notez que dans certaines cultures, les personnes peuvent avoir plusieurs prénoms ; + tous peuvent être présents, les noms étant séparés par des caractères d'espacement. + + Par exemple, `Jeanne` ou `Pierre Jacques` + """ + givenNameInUse: String + + """ + Deuxième(s) prénom(s) de l'utilisateur + + Notez que dans certaines cultures, les personnes peuvent avoir plusieurs seconds prénoms ; + tous peuvent être présents, les noms étant séparés par des caractères d'espacement. + Notez également que dans certaines cultures, les seconds prénoms ne sont pas utilisés. + + Par exemple, `Robert` + """ + middleName: String + + """ + Prénoms de l'utilisateur + + Tous les prénoms de l'utilisateur concaténés ensembles. + + Par exemple, `Jean Pierre-Jacques` ou `Robert` + """ + forenames: String! + + """ + Nom(s) de famille de l'utilisateur + + Notez que dans certaines cultures, les personnes peuvent avoir plusieurs noms de famille ou + aucun nom de famille ; tous peuvent être présents, les noms étant séparés par des caractères d'espacement. + + Par exemple, `Leroy` + """ + familyName: String! + + """ + Surnom de l'utilisateur + + Le surnom qu'a choisi l'utilisateur. + + Par exemple, `Foobar` ou `Jean` + """ + nickname: String + + """ + Pseudo préféré + + Pseudo abrégé non unique par lequel l'utilisateur souhaite être désigné. + + Surnom si renseigné par l'utilisateur, sinon nom civil par défaut. + + Par exemple, `Foobar` ou `dupontj2042` + """ + preferredNickname: String! + + """ + Nom d'utilisateur préféré + + Nom abrégé non unique par lequel l'utilisateur souhaite être désigné. + + Surnom si renseigné par l'utilisateur, sinon identifiant ARISE par défaut. + + Par exemple, `Foobar` ou `dupontj2042` + """ + preferredUsername: String! + + """ + Genre de l'utilisateur + + Par défaut à `UNKNOWN`. + """ + gender: Gender! + + """ + Date de naissance de l'utilisateur + """ + birthdate: Date + + """ + URL de la page de profil de l'utilisateur + + Page de profil sur [www.iiens.net](https://www.iiens.net). + + Par exemple, `https://www.iiens.net/eleve/acier2020` + """ + profile: Url! + + """ + URL de l'image de profil de l'utilisateur + + Cette URL fait référence à un fichier image (par exemple, un fichier image PNG, + JPEG ou GIF), plutôt qu'à une page Web contenant une image. + + Par exemple, `https://api.iiens.net/picture/acier2020` + """ + picture: Url! + + """ + Hash de la photo de profil de l'utilisateur + """ + pictureThumbnailHash: Base64! + + """ + URL de l'image d'arrière plan de l'utilisateur + + Cette URL fait référence à un fichier image (par exemple, un fichier image PNG, + JPEG ou GIF), plutôt qu'à une page Web contenant une image. + + Par exemple, `https://api.iiens.net/picture/acier2020` + """ + backgroundImage: Url! + + """ + Hash de l'image d'arrière plan de l'utilisateur + """ + backgroundImageThumbnailHash: Base64! + + """ + URL de la photo de trombinoscope de l'utilisateur + + Cette URL fait référence à un fichier image (par exemple, un fichier image PNG, + JPEG ou GIF), plutôt qu'à une page Web contenant une image. + + Par exemple, `https://api.iiens.net/rest/v0/photo/acier2020` + """ + photo: Url + + """ + Hash de la photo de trombinoscope de l'utilisateur + """ + photoThumbnailHash: Base64 + + """ + URL du site Web ou du blog de l'utilisateur + + Par exemple, `https://foo.com` + """ + website: Url + + """ + Fuseau horaire + + Chaîne de caractères provenant de la base de données des fuseaux horaires zoneinfo + [zoneinfo] représentant le fuseau horaire de l'utilisateur. + + Par exemple, `Europe/Paris` ou `Amérique/Los_Angeles`. + """ + zoneinfo: String! + + """ + Langue + + Les paramètres régionaux de l'utilisateur, représentés par une balise de + langue BCP47 [RFC5646]. Il s'agit généralement d'un code de langue ISO 639-1 + Alpha-2 [ISO639-1] en minuscules et d'un code de pays ISO 3166-1 Alpha-2 + [ISO3166-1] en majuscules, séparés par un tiret. + + Par exemple, `en-US` ou `fr-CA`. + """ + locale: String! + + """ + Adresse électronique de l'utilisateur + + Un alias de l'adresse électronique véritable de l'utilisateur. + À utiliser en priorité pour la création de comptes. + + Par exemple, `acier2020.e2e01581919c@alias.iiens.net`. + """ + email: String! + + """ + Adresse électronique réelle de l'utilisateur + + Sa valeur DOIT être conforme à la syntaxe addr-spec de la RFC 5322 [RFC5322]. + + Par exemple, `foo.bar@ensiie.fr` ou `dupont.jean@gmail.com`. + """ + emailForwardAddress: String + + """ + Adresse électronique de l'utilisateur vérifiée + + Vrai si l'adresse électronique préférée de l'utilisateur a été vérifiée, sinon faux. + Lorsque cette valeur d'allégation est vraie, cela signifie qu'ARISE a pris des mesures + positives pour s'assurer que l'adresse électronique était contrôlée par l'utilisateur + au moment où la vérification a été effectuée. + """ + emailVerified: Boolean! + + """ + Identifiant de connexion scolaire de l'utilisateur + + Habituellement sous la forme `prenom.nom` + """ + schoolLogin: String! + + """ + Adresse électronique scolaire de l'utilisateur + + Sa valeur DOIT être conforme à la syntaxe addr-spec de la RFC 5322 [RFC5322]. + + Par exemple, `mael.acier@ensiie.eu` ou `dupont.jean@ensiie.eu`. + """ + schoolEmail: String! + + """ + Numéro de téléphone de l'utilisateur + + E.164 [E.164] est le format adopté pour ce champ. + + Par exemple, `+14255551212` ou `+5626872400`. + """ + phoneNumber: String + + """ + Numéro de téléphone de l'utilisateur vérifié + + Vrai si le numéro de téléphone de l'utilisateur a été vérifié, sinon faux. + Lorsque cette valeur d'allégation est vraie, cela signifie qu'ARISE a pris + des mesures positives pour s'assurer que ce numéro de téléphone était contrôlé + par l'utilisateur final au moment où la vérification a été effectuée. Les moyens + par lesquels un numéro de téléphone est vérifié sont spécifiques au contexte + et dépendent du cadre de confiance ou des accords contractuels dans lesquels + les parties opèrent. + """ + phoneNumberVerified: Boolean! + + """ + Adresse de l'utilisateur + """ + address: Address + + """ + Promotion d'origine de l'utilisateur + + La promotion présupposée de l'utilisateur au moment où il rentre à l'école. + + Habituellement `année d'entrée + 3` + """ + initialPromotion: Int! + + """ + Promotion effective de l'utilisateur + + Promotion de l'utilisateur en tenant compte des redoublements et autres facteurs. + """ + promotion: Int! + + """ + Années d'étude d'écart de l'utilisateur + + Désigne des périodes de temps où un utilisateur prend une pause ou un écart par + rapport à la norme. Cela peut être causé par une année sabbatique, une année de + redoublement ou pour d'autres raisons. + + Par défaut cette valeur est de 0. + """ + gapYear: Int! + + """ + Années d'études requises jusqu'au diplôme + + Par défaut cette valeur est de 03. + """ + diplomaYearDuration: Int! + + """ + Année en cours de l'utilisateur + + Compteur d'années en fonction de l'année de promotion effective. + Les redoublements sont pris en compte dans l'évaluation de cette valeur. + + Par exemple, `1A`, `2A`, `3A` *(Le `A` n'est pas ajouté automatiquement)* + """ + year: Int! + + """ + Semestre actuel de l'utilisateur + + Compteur de semestres en fonction de l'année de promotion effective. + Les redoublements sont pris en compte dans l'évaluation de cette valeur. + + Par exemple, `S1`, `S2`, `S3` *(Le `S` n'est pas ajouté automatiquement)* + """ + semester: Int! + + """ + ## Parcours + + Par exemple, "FISE", "FISA" + """ + training: Training! + + """ + Groupe de l'utilisateur + """ + group(id: GroupId!): GroupOfMember + + """ + Groupes de l'utilisateur + + Les rôles passés ne seront pas renvoyés dans cette requête. + Pour cela, se référer à `group_history.` + """ + groups(filter: GroupOfMemberFilter): [GroupOfMember!]! + + """ + Historique des groupes de l'utilisateur + + Cet historique retrace tous les rôles que l'utilisateur à pu prendre au + sein des groups de l'école. + """ + groupHistory(filter: HistoricalGroupOfMemberFilter): [HistoricalGroupOfMember!]! + + """ + Groupe courant de l'utilisateur + + Retourne le propriétaire de l'application si ce dernier est un groupe. + + Les rôles passés ne seront pas renvoyés dans cette requête. + Pour cela, se référer à `current_group_history.` + """ + oAuthGroup: GroupOfMember + + """ + Adhérent de l'AEIIE + + **VRAI** si l'utilisateur est membre de l'AEIIE. **FAUX** à la création du compte. + """ + aeiieMember: Boolean! + + """ + Nombre de jours restants sur la période d'essai de l'utilisateur + + **42** lors de la création du compte. + """ + trialPeriodDaysLeft: Int! + + """ + Période d'essai étendue de l'utilisateur + + **FAUX** lors de la création du compte. + + Cette variable permet d'outrepasser le champ `restricted_access`. + """ + extendedTrialPeriod: Boolean! + + """ + Accès restreint aux services d'ARISE + + **VRAI** si la période d'essai est arrivée à terme (42 jours) et que l'utilisateur n'est pas + membre d'ARISE **ET** de l'AEIIE. + """ + restrictedAccess: Boolean! + + """ + Compte caché + + Le compte utilisateur sera invisible de toutes les requêtes, sauf admin si le filtre + de la requête le demande. + """ + hidden: Boolean! + + """ + Compte suspendu + + Le compte utilisateur ne sera plus utilisable pour se connecter aux services d'ARISE. + """ + suspended: Boolean! + + """ + Compte UNIX + """ + unixAccount: UnixAccount + + """ + Date de la création du compte de l'utilisateur + + Sa valeur est un string JSON [RFC3339] représentant le temps entre 1970-01-01T0:0:0Z, + mesuré en UTC, et la date/heure. + """ + createdAt: DateTime! + + """ + Date de la dernière mise à jour des informations relatives à l'utilisateur + + Sa valeur est un string JSON [RFC3339] représentant le temps entre 1970-01-01T0:0:0Z, + mesuré en UTC, et la date/heure. + """ + updatedAt: DateTime! + + """ + Date de la dernière activité via l'API de l'utilisateur + + Sa valeur est un string JSON [RFC3339] représentant le temps entre 1970-01-01T0:0:0Z, + mesuré en UTC, et la date/heure. + """ + lastUsedAt: DateTime } type UserConnection { - """A list of edges.""" - edges: [UserEdge!]! + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! - """A list of nodes.""" - nodes: [User!]! + """ + A list of edges. + """ + edges: [UserEdge!]! - """Information to aid in pagination.""" - pageInfo: PageInfo! - remainingCount: Int! + """ + A list of nodes. + """ + nodes: [User!]! + remainingCount: Int! } -"""An edge in a connection.""" +""" +An edge in a connection. +""" type UserEdge { - """A cursor for use in pagination""" - cursor: String! + """ + The item at the end of the edge + """ + node: User! + remainingCount: Int! - """The item at the end of the edge""" - node: User! - remainingCount: Int! + """ + A cursor for use in pagination + """ + cursor: String! } input UserFilter { - accountUuid: UuidFilter - aeiieMember: BooleanFilter - backgroundThumbnailHash: NullableFilter - birthdate: NullableDateFilter - createdAt: DateTimeFilter - diplomaYearDuration: Int16Filter - email: TextFilter - emailVerified: BooleanFilter - extendedTrialPeriod: BooleanFilter - familyName: TextFilter - gapYear: Int16Filter - gender: GenderFilter - givenName: TextFilter - givenNameAtBirth: TextFilter - givenNameInUse: NullableTextFilter - groups: UserGroupsFilter - hidden: BooleanFilter - id: TextFilter - initialPromotion: Int16Filter - lastUsedAt: NullableDateTimeFilter - locale: TextFilter - middleName: NullableTextFilter - nickname: NullableTextFilter - or: [UserFilter!] - phoneNumber: NullableTextFilter - phoneNumberVerified: BooleanFilter - photoThumbnailHash: NullableFilter - pictureThumbnailHash: NullableFilter - promotion: Int16Filter - public: BooleanFilter - restrictedAccess: BooleanFilter - schoolLogin: TextFilter - semester: Int16Filter - suspended: BooleanFilter - training: TextFilter - trialPeriodDaysLeft: Int16Filter - unixAccount: UnixAccountFilter - updatedAt: DateTimeFilter - uuid: UuidFilter - website: NullableTextFilter - year: Int16Filter - zoneinfo: TextFilter + uuid: UuidFilter + givenName: TextFilter + givenNameInUse: NullableTextFilter + givenNameAtBirth: TextFilter + middleName: NullableTextFilter + familyName: TextFilter + nickname: NullableTextFilter + gender: GenderFilter + birthdate: NullableDateFilter + zoneinfo: TextFilter + locale: TextFilter + pictureThumbnailHash: NullableFilter + backgroundThumbnailHash: NullableFilter + photoThumbnailHash: NullableFilter + phoneNumber: NullableTextFilter + phoneNumberVerified: BooleanFilter + schoolLogin: TextFilter + promotion: Int16Filter + initialPromotion: Int16Filter + gapYear: Int16Filter + year: Int16Filter + diplomaYearDuration: Int16Filter + semester: Int16Filter + training: TextFilter + aeiieMember: BooleanFilter + trialPeriodDaysLeft: Int16Filter + extendedTrialPeriod: BooleanFilter + restrictedAccess: BooleanFilter + suspended: BooleanFilter + public: BooleanFilter + lastUsedAt: NullableDateTimeFilter + groups: UserGroupsFilter + accountUuid: UuidFilter + unixAccount: UnixAccountFilter + id: TextFilter + email: TextFilter + emailVerified: BooleanFilter + website: NullableTextFilter + hidden: BooleanFilter + createdAt: DateTimeFilter + updatedAt: DateTimeFilter + or: [UserFilter!] } input UserGroupsFilter { - active: BooleanFilter - hidden: BooleanFilter - id: TextFilter - name: TextFilter - type: GroupTypeFilter - uuid: UuidFilter + uuid: UuidFilter + id: TextFilter + name: TextFilter + type: GroupTypeFilter + active: BooleanFilter + hidden: BooleanFilter } input UserId { - id: SmolStr - personalEmail: String - urn: Urn - uuid: UUID + uuid: UUID + id: SmolStr + personalEmail: String + urn: Urn } input UuidFilter { - isIn: [UUID!]! + isIn: [UUID!]! } diff --git a/src/routes/quiz/+page.server.ts b/src/routes/quiz/+page.server.ts index d7c9432..1c69064 100644 --- a/src/routes/quiz/+page.server.ts +++ b/src/routes/quiz/+page.server.ts @@ -2,10 +2,11 @@ import { superValidate } from 'sveltekit-superforms'; import { zod } from 'sveltekit-superforms/adapters'; import { schema } from './schema'; import { fail, redirect } from '@sveltejs/kit'; -import { UserDetailsStore } from '$houdini'; import { getRandomItems } from '$lib/utils'; import { GameStage, Game } from '$lib/game'; import { getPromotion } from '$lib/data'; +import { client } from '$lib/graphql'; +import { USER_DETAILS_QUERY } from '$lib/graphql/queries'; type Option = { value: string; @@ -18,7 +19,9 @@ export async function load(event) { if (game.state.stage === GameStage.GAME_OVER) redirect(303, '/quiz/game-over'); if (game.state.stage === GameStage.NEXT) { - const all = await getPromotion(2023, event); + console.time('getPromotion'); + const all = await getPromotion(2023); + console.timeEnd('getPromotion'); const previous = new Set(game.state.history); const available = all.difference(previous); @@ -29,13 +32,14 @@ export async function load(event) { game.state.step++; } - const details = await new UserDetailsStore().fetch({ - event, - variables: { idList: game.state.options } - }); + console.time('userDetailsQuery'); + const details = await client + .query(USER_DETAILS_QUERY, { idList: game.state.options }) + .toPromise(); + console.timeEnd('userDetailsQuery'); - if (details.errors) { - throw details.errors; + if (details.error) { + throw details.error; } const users = details.data!.page.nodes ?? []; @@ -44,7 +48,7 @@ export async function load(event) { game.save(); - const photo = users.find((node) => node.id === game.state.solution)?.photo!; + const photo = users.find((node) => node.id === game.state.solution)?.photo; const form = await superValidate(zod(schema)); return { form, options, score: game.state.score, step: game.state.step, photo }; diff --git a/src/routes/quiz/+page.svelte b/src/routes/quiz/+page.svelte index 9a3d34b..17d47ae 100644 --- a/src/routes/quiz/+page.svelte +++ b/src/routes/quiz/+page.svelte @@ -1,6 +1,6 @@ <script lang="ts"> import { Fieldset, Control, Label } from 'formsnap'; - import SuperDebug, { superForm } from 'sveltekit-superforms'; + import { superForm } from 'sveltekit-superforms'; export let data; export let form; @@ -88,8 +88,6 @@ </div> </form> -<!-- <SuperDebug data={formData} /> --> - <style> :global(body) { background-color: #f65a52; diff --git a/tsconfig.json b/tsconfig.json index bba4bd6..431cb8b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,6 +10,12 @@ "sourceMap": true, "strict": true, "moduleResolution": "bundler", - "rootDirs": [".", "./.svelte-kit/types", "./$houdini/types"] + "plugins": [ + { + "name": "gql.tada/ts-plugin", + "schema": "./src/lib/graphql/schema.gql", + "tadaOutputLocation": "./src/graphql-env.d.ts" + } + ] } } diff --git a/vite.config.ts b/vite.config.ts index 521b240..bbf8c7d 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,6 @@ import { sveltekit } from '@sveltejs/kit/vite'; -import houdini from 'houdini/vite'; import { defineConfig } from 'vite'; export default defineConfig({ - plugins: [houdini(), sveltekit()] + plugins: [sveltekit()] }); -- GitLab