From 22116930401c4649d6f72e3356a696ff5e31c20c Mon Sep 17 00:00:00 2001
From: arjunyel
Date: Fri, 6 Oct 2023 20:47:48 -0500
Subject: [PATCH] feat(adapters): add Hasura adapter (#5707)
* feat(adapters): add Hasura adapter
* chore: formatting
* chore: formatting
* chore: formatting
* chore: formatting
* Merge branch 'main' into hasura-adapter
* feat(adapter): add Hasura adapter
* chore: update Hasura adapter readme
* chore(docs): add Hasura
* feat(adapter): move Hasura codegen to script
* feat(adapter): remove docker from Hasura build
* chore: resolve conflict
* fix test
* fix test
---------
Co-authored-by: Thang Vu
---
.github/ISSUE_TEMPLATE/3_bug_adapter.yml | 1 +
.github/pr-labeler.yml | 1 +
.github/workflows/release.yml | 2 +
docs/docs/reference/adapters/index.md | 4 +
docs/docusaurus.config.js | 1 +
docs/sidebars.js | 1 +
docs/static/img/adapters/hasura.svg | 1 +
packages/adapter-hasura/README.md | 32 +
packages/adapter-hasura/codegen.ts | 28 +
packages/adapter-hasura/docker-compose.yml | 38 +
packages/adapter-hasura/hasura.svg | 17 +
packages/adapter-hasura/hasura/config.yaml | 6 +
.../hasura/metadata/actions.graphql | 0
.../hasura/metadata/actions.yaml | 6 +
.../hasura/metadata/allow_list.yaml | 1 +
.../hasura/metadata/api_limits.yaml | 1 +
.../hasura/metadata/cron_triggers.yaml | 1 +
.../hasura/metadata/databases/databases.yaml | 11 +
.../default/tables/public_accounts.yaml | 7 +
.../default/tables/public_provider_type.yaml | 4 +
.../default/tables/public_sessions.yaml | 7 +
.../default/tables/public_users.yaml | 18 +
.../tables/public_verification_tokens.yaml | 3 +
.../databases/default/tables/tables.yaml | 5 +
.../graphql_schema_introspection.yaml | 1 +
.../hasura/metadata/inherited_roles.yaml | 1 +
.../hasura/metadata/network.yaml | 1 +
.../hasura/metadata/query_collections.yaml | 1 +
.../hasura/metadata/remote_schemas.yaml | 1 +
.../hasura/metadata/rest_endpoints.yaml | 1 +
.../hasura/metadata/version.yaml | 1 +
.../1666885939998_init_nextauth_models/up.sql | 68 +
packages/adapter-hasura/package.json | 68 +
packages/adapter-hasura/schema.graphql | 2291 ++++++++++++++++
packages/adapter-hasura/src/index.ts | 493 ++++
packages/adapter-hasura/src/lib/.gitignore | 2 +
.../src/queries/account.graphql | 29 +
.../adapter-hasura/src/queries/delete.graphql | 14 +
.../src/queries/fragments.graphql | 35 +
.../src/queries/session.graphql | 39 +
.../adapter-hasura/src/queries/user.graphql | 29 +
.../src/queries/verification-token.graphql | 23 +
packages/adapter-hasura/src/utils.ts | 47 +
packages/adapter-hasura/tests/index.test.ts | 110 +
packages/adapter-hasura/tests/test.sh | 14 +
packages/adapter-hasura/tsconfig.json | 21 +
pnpm-lock.yaml | 2318 ++++++++++++++++-
turbo.json | 2 +
48 files changed, 5789 insertions(+), 17 deletions(-)
create mode 100644 docs/static/img/adapters/hasura.svg
create mode 100644 packages/adapter-hasura/README.md
create mode 100644 packages/adapter-hasura/codegen.ts
create mode 100644 packages/adapter-hasura/docker-compose.yml
create mode 100644 packages/adapter-hasura/hasura.svg
create mode 100644 packages/adapter-hasura/hasura/config.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/actions.graphql
create mode 100644 packages/adapter-hasura/hasura/metadata/actions.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/allow_list.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/api_limits.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/cron_triggers.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/databases/databases.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/databases/default/tables/public_accounts.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/databases/default/tables/public_provider_type.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/databases/default/tables/public_sessions.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/databases/default/tables/public_users.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/databases/default/tables/public_verification_tokens.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/databases/default/tables/tables.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/graphql_schema_introspection.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/inherited_roles.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/network.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/query_collections.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/remote_schemas.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/rest_endpoints.yaml
create mode 100644 packages/adapter-hasura/hasura/metadata/version.yaml
create mode 100644 packages/adapter-hasura/hasura/migrations/default/1666885939998_init_nextauth_models/up.sql
create mode 100644 packages/adapter-hasura/package.json
create mode 100644 packages/adapter-hasura/schema.graphql
create mode 100644 packages/adapter-hasura/src/index.ts
create mode 100644 packages/adapter-hasura/src/lib/.gitignore
create mode 100644 packages/adapter-hasura/src/queries/account.graphql
create mode 100644 packages/adapter-hasura/src/queries/delete.graphql
create mode 100644 packages/adapter-hasura/src/queries/fragments.graphql
create mode 100644 packages/adapter-hasura/src/queries/session.graphql
create mode 100644 packages/adapter-hasura/src/queries/user.graphql
create mode 100644 packages/adapter-hasura/src/queries/verification-token.graphql
create mode 100644 packages/adapter-hasura/src/utils.ts
create mode 100644 packages/adapter-hasura/tests/index.test.ts
create mode 100755 packages/adapter-hasura/tests/test.sh
create mode 100644 packages/adapter-hasura/tsconfig.json
diff --git a/.github/ISSUE_TEMPLATE/3_bug_adapter.yml b/.github/ISSUE_TEMPLATE/3_bug_adapter.yml
index 5d4d9f3e..9d9bdb79 100644
--- a/.github/ISSUE_TEMPLATE/3_bug_adapter.yml
+++ b/.github/ISSUE_TEMPLATE/3_bug_adapter.yml
@@ -29,6 +29,7 @@ body:
- "@auth/dynamodb-adapter"
- "@auth/fauna-adapter"
- "@auth/firebase-adapter"
+ - "@auth/hasura-adapter"
- "@auth/kysely-adapter"
- "@auth/mikro-orm-adapter"
- "@auth/mongodb-adapter"
diff --git a/.github/pr-labeler.yml b/.github/pr-labeler.yml
index b10ed118..a25f7b87 100644
--- a/.github/pr-labeler.yml
+++ b/.github/pr-labeler.yml
@@ -11,6 +11,7 @@ dynamodb: ["packages/adapter-dynamodb/**/*"]
examples: ["apps/examples/**/*"]
fauna: ["packages/adapter-fauna/**/*"]
firebase: ["packages/adapter-firebase/**/*"]
+hasura: ["packages/adapter-hasura/**/*"]
frameworks: ["packages/frameworks-*/**/*"]
legacy: ["packages/next-auth/**/*"]
mikro-orm: ["packages/adapter-mikro-orm/**/*"]
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index e0e09f70..901209d1 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -21,6 +21,7 @@ on:
- "@auth/dynamodb-adapter"
- "@auth/fauna-adapter"
- "@auth/firebase-adapter"
+ - "@auth/hasura-adapter"
- "@auth/mikro-orm-adapter"
- "@auth/mongodb-adapter"
- "@auth/neo4j-adapter"
@@ -45,6 +46,7 @@ on:
- "adapter-dynamodb"
- "adapter-fauna"
- "adapter-firebase"
+ - "adapter-hasura"
- "adapter-mikro-orm"
- "adapter-mongodb"
- "adapter-neo4j"
diff --git a/docs/docs/reference/adapters/index.md b/docs/docs/reference/adapters/index.md
index bf21dee9..f7d1a1eb 100644
--- a/docs/docs/reference/adapters/index.md
+++ b/docs/docs/reference/adapters/index.md
@@ -37,6 +37,10 @@ Using an Auth.js / NextAuth.js adapter you can connect to any database service o
Firebase Adapter
+
+
+ Hasura Adapter
+
Kysely Adapter
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index ca09d8ea..82b30121 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -284,6 +284,7 @@ const docusaurusConfig = {
typedocAdapter("DynamoDB"),
typedocAdapter("Fauna"),
typedocAdapter("Firebase"),
+ typedocAdapter("Hasura"),
typedocAdapter("Kysely"),
typedocAdapter("Mikro ORM"),
typedocAdapter("MongoDB"),
diff --git a/docs/sidebars.js b/docs/sidebars.js
index c486a3d6..65d6daf0 100644
--- a/docs/sidebars.js
+++ b/docs/sidebars.js
@@ -55,6 +55,7 @@ module.exports = {
{ type: "doc", id: "reference/adapter/dynamodb/index" },
{ type: "doc", id: "reference/adapter/fauna/index" },
{ type: "doc", id: "reference/adapter/firebase/index" },
+ { type: "doc", id: "reference/adapter/hasura/index" },
{ type: "doc", id: "reference/adapter/kysely/index" },
{ type: "doc", id: "reference/adapter/mikro-orm/index" },
{ type: "doc", id: "reference/adapter/mongodb/index" },
diff --git a/docs/static/img/adapters/hasura.svg b/docs/static/img/adapters/hasura.svg
new file mode 100644
index 00000000..feb480c0
--- /dev/null
+++ b/docs/static/img/adapters/hasura.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/adapter-hasura/README.md b/packages/adapter-hasura/README.md
new file mode 100644
index 00000000..7dd93dae
--- /dev/null
+++ b/packages/adapter-hasura/README.md
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
Hasura Adapter - NextAuth.js / Auth.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+---
+
+Check out the documentation at [authjs.dev](https://authjs.dev/reference/adapter/hasura).
+
+## Credit
+
+Based on code from [Amruth Pillai](https://github.com/AmruthPillai)
diff --git a/packages/adapter-hasura/codegen.ts b/packages/adapter-hasura/codegen.ts
new file mode 100644
index 00000000..8423a39b
--- /dev/null
+++ b/packages/adapter-hasura/codegen.ts
@@ -0,0 +1,28 @@
+import type { CodegenConfig } from "@graphql-codegen/cli"
+
+const config: CodegenConfig = {
+ overwrite: true,
+ schema: "schema.graphql",
+ emitLegacyCommonJSImports: false,
+ documents: "src/**/*.graphql",
+ generates: {
+ "src/lib/": {
+ preset: "client",
+ config: {
+ documentMode: "string",
+ skipTypename: true,
+ enumsAsTypes: true,
+ strictScalars: true,
+ useTypeImports: true,
+ scalars: {
+ timestamptz: "string",
+ uuid: "string",
+ },
+ },
+ plugins: [],
+ },
+ },
+ hooks: { afterAllFileWrite: ["prettier --write"] },
+}
+
+export default config
diff --git a/packages/adapter-hasura/docker-compose.yml b/packages/adapter-hasura/docker-compose.yml
new file mode 100644
index 00000000..b8c585a8
--- /dev/null
+++ b/packages/adapter-hasura/docker-compose.yml
@@ -0,0 +1,38 @@
+services:
+ postgres:
+ image: postgres:16
+ volumes:
+ - db_data:/var/lib/postgresql/data
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U postgres"]
+ interval: 5s
+ timeout: 5s
+ retries: 5
+ environment:
+ POSTGRES_PASSWORD: postgrespassword
+ graphql-engine:
+ image: hasura/graphql-engine:v2.33.4.cli-migrations-v3
+ ports:
+ - "8080:8080"
+ depends_on:
+ postgres:
+ condition: service_healthy
+ environment:
+ ## postgres database to store Hasura metadata
+ HASURA_GRAPHQL_METADATA_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
+ ## this env var can be used to add the above postgres database to Hasura as a data source. this can be removed/updated based on your needs
+ PG_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
+ ## enable the console served by server
+ HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
+ ## enable debugging mode. It is recommended to disable this in production
+ HASURA_GRAPHQL_DEV_MODE: "true"
+ HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
+ ## uncomment next line to run console offline (i.e load console assets from server instead of CDN)
+ # HASURA_GRAPHQL_CONSOLE_ASSETS_DIR: /srv/console-assets
+ ## uncomment next line to set an admin secret
+ HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey
+ volumes:
+ - ./hasura/migrations:/hasura-migrations
+ - ./hasura/metadata:/hasura-metadata
+volumes:
+ db_data:
diff --git a/packages/adapter-hasura/hasura.svg b/packages/adapter-hasura/hasura.svg
new file mode 100644
index 00000000..f466ca98
--- /dev/null
+++ b/packages/adapter-hasura/hasura.svg
@@ -0,0 +1,17 @@
+
diff --git a/packages/adapter-hasura/hasura/config.yaml b/packages/adapter-hasura/hasura/config.yaml
new file mode 100644
index 00000000..725c8005
--- /dev/null
+++ b/packages/adapter-hasura/hasura/config.yaml
@@ -0,0 +1,6 @@
+version: 3
+endpoint: http://localhost:8080
+metadata_directory: metadata
+actions:
+ kind: synchronous
+ handler_webhook_baseurl: http://localhost:3000
diff --git a/packages/adapter-hasura/hasura/metadata/actions.graphql b/packages/adapter-hasura/hasura/metadata/actions.graphql
new file mode 100644
index 00000000..e69de29b
diff --git a/packages/adapter-hasura/hasura/metadata/actions.yaml b/packages/adapter-hasura/hasura/metadata/actions.yaml
new file mode 100644
index 00000000..1edb4c2f
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/actions.yaml
@@ -0,0 +1,6 @@
+actions: []
+custom_types:
+ enums: []
+ input_objects: []
+ objects: []
+ scalars: []
diff --git a/packages/adapter-hasura/hasura/metadata/allow_list.yaml b/packages/adapter-hasura/hasura/metadata/allow_list.yaml
new file mode 100644
index 00000000..fe51488c
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/allow_list.yaml
@@ -0,0 +1 @@
+[]
diff --git a/packages/adapter-hasura/hasura/metadata/api_limits.yaml b/packages/adapter-hasura/hasura/metadata/api_limits.yaml
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/api_limits.yaml
@@ -0,0 +1 @@
+{}
diff --git a/packages/adapter-hasura/hasura/metadata/cron_triggers.yaml b/packages/adapter-hasura/hasura/metadata/cron_triggers.yaml
new file mode 100644
index 00000000..fe51488c
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/cron_triggers.yaml
@@ -0,0 +1 @@
+[]
diff --git a/packages/adapter-hasura/hasura/metadata/databases/databases.yaml b/packages/adapter-hasura/hasura/metadata/databases/databases.yaml
new file mode 100644
index 00000000..c24cbbf0
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/databases/databases.yaml
@@ -0,0 +1,11 @@
+- name: default
+ kind: postgres
+ configuration:
+ connection_info:
+ database_url:
+ from_env: PG_DATABASE_URL
+ isolation_level: read-committed
+ use_prepared_statements: false
+ customization:
+ naming_convention: hasura-default
+ tables: "!include default/tables/tables.yaml"
diff --git a/packages/adapter-hasura/hasura/metadata/databases/default/tables/public_accounts.yaml b/packages/adapter-hasura/hasura/metadata/databases/default/tables/public_accounts.yaml
new file mode 100644
index 00000000..fb3261e7
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/databases/default/tables/public_accounts.yaml
@@ -0,0 +1,7 @@
+table:
+ name: accounts
+ schema: public
+object_relationships:
+ - name: user
+ using:
+ foreign_key_constraint_on: userId
diff --git a/packages/adapter-hasura/hasura/metadata/databases/default/tables/public_provider_type.yaml b/packages/adapter-hasura/hasura/metadata/databases/default/tables/public_provider_type.yaml
new file mode 100644
index 00000000..f2175b41
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/databases/default/tables/public_provider_type.yaml
@@ -0,0 +1,4 @@
+table:
+ name: provider_type
+ schema: public
+is_enum: true
diff --git a/packages/adapter-hasura/hasura/metadata/databases/default/tables/public_sessions.yaml b/packages/adapter-hasura/hasura/metadata/databases/default/tables/public_sessions.yaml
new file mode 100644
index 00000000..4b46fe35
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/databases/default/tables/public_sessions.yaml
@@ -0,0 +1,7 @@
+table:
+ name: sessions
+ schema: public
+object_relationships:
+ - name: user
+ using:
+ foreign_key_constraint_on: userId
diff --git a/packages/adapter-hasura/hasura/metadata/databases/default/tables/public_users.yaml b/packages/adapter-hasura/hasura/metadata/databases/default/tables/public_users.yaml
new file mode 100644
index 00000000..8a1cbeee
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/databases/default/tables/public_users.yaml
@@ -0,0 +1,18 @@
+table:
+ name: users
+ schema: public
+array_relationships:
+ - name: accounts
+ using:
+ foreign_key_constraint_on:
+ column: userId
+ table:
+ name: accounts
+ schema: public
+ - name: sessions
+ using:
+ foreign_key_constraint_on:
+ column: userId
+ table:
+ name: sessions
+ schema: public
diff --git a/packages/adapter-hasura/hasura/metadata/databases/default/tables/public_verification_tokens.yaml b/packages/adapter-hasura/hasura/metadata/databases/default/tables/public_verification_tokens.yaml
new file mode 100644
index 00000000..68c18ed6
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/databases/default/tables/public_verification_tokens.yaml
@@ -0,0 +1,3 @@
+table:
+ name: verification_tokens
+ schema: public
diff --git a/packages/adapter-hasura/hasura/metadata/databases/default/tables/tables.yaml b/packages/adapter-hasura/hasura/metadata/databases/default/tables/tables.yaml
new file mode 100644
index 00000000..c9c239fe
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/databases/default/tables/tables.yaml
@@ -0,0 +1,5 @@
+- "!include public_accounts.yaml"
+- "!include public_provider_type.yaml"
+- "!include public_sessions.yaml"
+- "!include public_users.yaml"
+- "!include public_verification_tokens.yaml"
diff --git a/packages/adapter-hasura/hasura/metadata/graphql_schema_introspection.yaml b/packages/adapter-hasura/hasura/metadata/graphql_schema_introspection.yaml
new file mode 100644
index 00000000..61a4dcac
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/graphql_schema_introspection.yaml
@@ -0,0 +1 @@
+disabled_for_roles: []
diff --git a/packages/adapter-hasura/hasura/metadata/inherited_roles.yaml b/packages/adapter-hasura/hasura/metadata/inherited_roles.yaml
new file mode 100644
index 00000000..fe51488c
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/inherited_roles.yaml
@@ -0,0 +1 @@
+[]
diff --git a/packages/adapter-hasura/hasura/metadata/network.yaml b/packages/adapter-hasura/hasura/metadata/network.yaml
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/network.yaml
@@ -0,0 +1 @@
+{}
diff --git a/packages/adapter-hasura/hasura/metadata/query_collections.yaml b/packages/adapter-hasura/hasura/metadata/query_collections.yaml
new file mode 100644
index 00000000..fe51488c
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/query_collections.yaml
@@ -0,0 +1 @@
+[]
diff --git a/packages/adapter-hasura/hasura/metadata/remote_schemas.yaml b/packages/adapter-hasura/hasura/metadata/remote_schemas.yaml
new file mode 100644
index 00000000..fe51488c
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/remote_schemas.yaml
@@ -0,0 +1 @@
+[]
diff --git a/packages/adapter-hasura/hasura/metadata/rest_endpoints.yaml b/packages/adapter-hasura/hasura/metadata/rest_endpoints.yaml
new file mode 100644
index 00000000..fe51488c
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/rest_endpoints.yaml
@@ -0,0 +1 @@
+[]
diff --git a/packages/adapter-hasura/hasura/metadata/version.yaml b/packages/adapter-hasura/hasura/metadata/version.yaml
new file mode 100644
index 00000000..0a70affa
--- /dev/null
+++ b/packages/adapter-hasura/hasura/metadata/version.yaml
@@ -0,0 +1 @@
+version: 3
diff --git a/packages/adapter-hasura/hasura/migrations/default/1666885939998_init_nextauth_models/up.sql b/packages/adapter-hasura/hasura/migrations/default/1666885939998_init_nextauth_models/up.sql
new file mode 100644
index 00000000..c8a3c482
--- /dev/null
+++ b/packages/adapter-hasura/hasura/migrations/default/1666885939998_init_nextauth_models/up.sql
@@ -0,0 +1,68 @@
+CREATE TABLE accounts (
+ id uuid DEFAULT gen_random_uuid() NOT NULL,
+ type text NOT NULL,
+ provider text NOT NULL,
+ "providerAccountId" text NOT NULL,
+ refresh_token text,
+ access_token text,
+ expires_at integer,
+ token_type text,
+ scope text,
+ id_token text,
+ session_state text,
+ "userId" uuid NOT NULL
+);
+
+CREATE TABLE sessions (
+ id uuid DEFAULT gen_random_uuid() NOT NULL,
+ "sessionToken" text NOT NULL,
+ "userId" uuid NOT NULL,
+ expires timestamptz NOT NULL
+);
+
+CREATE TABLE users (
+ id uuid DEFAULT gen_random_uuid() NOT NULL,
+ name text,
+ email text NOT NULL,
+ "emailVerified" timestamptz,
+ image text
+);
+
+CREATE TABLE verification_tokens (
+ token text NOT NULL,
+ identifier text NOT NULL,
+ expires timestamptz NOT NULL
+);
+
+CREATE TABLE provider_type (
+ value text NOT NULL
+);
+
+ALTER TABLE ONLY accounts
+ ADD CONSTRAINT accounts_pkey PRIMARY KEY (id);
+
+ALTER TABLE ONLY sessions
+ ADD CONSTRAINT sessions_pkey PRIMARY KEY ("sessionToken");
+
+ALTER TABLE ONLY users
+ ADD CONSTRAINT users_email_key UNIQUE (email);
+
+ALTER TABLE ONLY users
+ ADD CONSTRAINT users_pkey PRIMARY KEY (id);
+
+ALTER TABLE ONLY verification_tokens
+ ADD CONSTRAINT verification_tokens_pkey PRIMARY KEY (token);
+
+ALTER TABLE ONLY provider_type
+ ADD CONSTRAINT provider_type_pkey PRIMARY KEY (value);
+
+ALTER TABLE ONLY accounts
+ ADD CONSTRAINT "accounts_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE RESTRICT ON DELETE CASCADE;
+
+ALTER TABLE ONLY sessions
+ ADD CONSTRAINT "sessions_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE RESTRICT ON DELETE CASCADE;
+
+INSERT INTO provider_type (value) VALUES ('credentials'), ('email'), ('oauth'), ('oidc');
+
+ALTER TABLE ONLY accounts
+ ADD CONSTRAINT "accounts_type_fkey" FOREIGN KEY ("type") REFERENCES public.provider_type(value) ON UPDATE RESTRICT ON DELETE RESTRICT;
diff --git a/packages/adapter-hasura/package.json b/packages/adapter-hasura/package.json
new file mode 100644
index 00000000..a5a750ae
--- /dev/null
+++ b/packages/adapter-hasura/package.json
@@ -0,0 +1,68 @@
+{
+ "name": "@auth/hasura-adapter",
+ "version": "0.1.0",
+ "description": "Hasura adapter for Auth.js.",
+ "homepage": "https://authjs.dev",
+ "repository": "https://github.com/nextauthjs/next-auth",
+ "bugs": {
+ "url": "https://github.com/nextauthjs/next-auth/issues"
+ },
+ "contributors": [
+ "Hasura Team",
+ "Amruth Pillai ",
+ "Arjun Yelamanchili"
+ ],
+ "license": "ISC",
+ "keywords": [
+ "@auth",
+ "authjs",
+ "Auth.js",
+ "next-auth",
+ "next.js",
+ "oauth",
+ "hasura"
+ ],
+ "type": "module",
+ "types": "./index.d.ts",
+ "files": [
+ "*.js",
+ "*.d.ts*",
+ "lib",
+ "src"
+ ],
+ "exports": {
+ ".": {
+ "types": "./index.d.ts",
+ "import": "./index.js"
+ }
+ },
+ "private": false,
+ "publishConfig": {
+ "access": "public"
+ },
+ "scripts": {
+ "test": "./tests/test.sh",
+ "build": "graphql-codegen-esm --config codegen.ts && tsc"
+ },
+ "peerDependencies": {
+ "graphql": "^16",
+ "graphql-request": "^6"
+ },
+ "dependencies": {
+ "@auth/core": "workspace:*"
+ },
+ "devDependencies": {
+ "@auth/adapter-test": "workspace:*",
+ "@auth/tsconfig": "workspace:*",
+ "@graphql-codegen/cli": "^5.0.0",
+ "@graphql-codegen/client-preset": "^4.1.0",
+ "@graphql-typed-document-node/core": "^3.2.0",
+ "graphql": "^16.8.1",
+ "graphql-request": "^6.1.0",
+ "jest": "^29.7.0",
+ "typescript": "^5.2.2"
+ },
+ "jest": {
+ "preset": "@auth/adapter-test/jest"
+ }
+}
diff --git a/packages/adapter-hasura/schema.graphql b/packages/adapter-hasura/schema.graphql
new file mode 100644
index 00000000..849974b7
--- /dev/null
+++ b/packages/adapter-hasura/schema.graphql
@@ -0,0 +1,2291 @@
+schema {
+ query: query_root
+ mutation: mutation_root
+ subscription: subscription_root
+}
+
+"""whether this query should be cached (Hasura Cloud only)"""
+directive @cached(
+ """measured in seconds"""
+ ttl: Int! = 60
+
+ """refresh the cache entry"""
+ refresh: Boolean! = false
+) on QUERY
+
+"""
+Boolean expression to compare columns of type "Int". All fields are combined with logical 'AND'.
+"""
+input Int_comparison_exp {
+ _eq: Int
+ _gt: Int
+ _gte: Int
+ _in: [Int!]
+ _is_null: Boolean
+ _lt: Int
+ _lte: Int
+ _neq: Int
+ _nin: [Int!]
+}
+
+"""
+Boolean expression to compare columns of type "String". All fields are combined with logical 'AND'.
+"""
+input String_comparison_exp {
+ _eq: String
+ _gt: String
+ _gte: String
+
+ """does the column match the given case-insensitive pattern"""
+ _ilike: String
+ _in: [String!]
+
+ """
+ does the column match the given POSIX regular expression, case insensitive
+ """
+ _iregex: String
+ _is_null: Boolean
+
+ """does the column match the given pattern"""
+ _like: String
+ _lt: String
+ _lte: String
+ _neq: String
+
+ """does the column NOT match the given case-insensitive pattern"""
+ _nilike: String
+ _nin: [String!]
+
+ """
+ does the column NOT match the given POSIX regular expression, case insensitive
+ """
+ _niregex: String
+
+ """does the column NOT match the given pattern"""
+ _nlike: String
+
+ """
+ does the column NOT match the given POSIX regular expression, case sensitive
+ """
+ _nregex: String
+
+ """does the column NOT match the given SQL regular expression"""
+ _nsimilar: String
+
+ """
+ does the column match the given POSIX regular expression, case sensitive
+ """
+ _regex: String
+
+ """does the column match the given SQL regular expression"""
+ _similar: String
+}
+
+"""
+columns and relationships of "accounts"
+"""
+type accounts {
+ access_token: String
+ expires_at: Int
+ id: uuid!
+ id_token: String
+ provider: String!
+ providerAccountId: String!
+ refresh_token: String
+ scope: String
+ session_state: String
+ token_type: String
+ type: provider_type_enum!
+
+ """An object relationship"""
+ user: users!
+ userId: uuid!
+}
+
+"""
+aggregated selection of "accounts"
+"""
+type accounts_aggregate {
+ aggregate: accounts_aggregate_fields
+ nodes: [accounts!]!
+}
+
+input accounts_aggregate_bool_exp {
+ count: accounts_aggregate_bool_exp_count
+}
+
+input accounts_aggregate_bool_exp_count {
+ arguments: [accounts_select_column!]
+ distinct: Boolean
+ filter: accounts_bool_exp
+ predicate: Int_comparison_exp!
+}
+
+"""
+aggregate fields of "accounts"
+"""
+type accounts_aggregate_fields {
+ avg: accounts_avg_fields
+ count(columns: [accounts_select_column!], distinct: Boolean): Int!
+ max: accounts_max_fields
+ min: accounts_min_fields
+ stddev: accounts_stddev_fields
+ stddev_pop: accounts_stddev_pop_fields
+ stddev_samp: accounts_stddev_samp_fields
+ sum: accounts_sum_fields
+ var_pop: accounts_var_pop_fields
+ var_samp: accounts_var_samp_fields
+ variance: accounts_variance_fields
+}
+
+"""
+order by aggregate values of table "accounts"
+"""
+input accounts_aggregate_order_by {
+ avg: accounts_avg_order_by
+ count: order_by
+ max: accounts_max_order_by
+ min: accounts_min_order_by
+ stddev: accounts_stddev_order_by
+ stddev_pop: accounts_stddev_pop_order_by
+ stddev_samp: accounts_stddev_samp_order_by
+ sum: accounts_sum_order_by
+ var_pop: accounts_var_pop_order_by
+ var_samp: accounts_var_samp_order_by
+ variance: accounts_variance_order_by
+}
+
+"""
+input type for inserting array relation for remote table "accounts"
+"""
+input accounts_arr_rel_insert_input {
+ data: [accounts_insert_input!]!
+
+ """upsert condition"""
+ on_conflict: accounts_on_conflict
+}
+
+"""aggregate avg on columns"""
+type accounts_avg_fields {
+ expires_at: Float
+}
+
+"""
+order by avg() on columns of table "accounts"
+"""
+input accounts_avg_order_by {
+ expires_at: order_by
+}
+
+"""
+Boolean expression to filter rows from the table "accounts". All fields are combined with a logical 'AND'.
+"""
+input accounts_bool_exp {
+ _and: [accounts_bool_exp!]
+ _not: accounts_bool_exp
+ _or: [accounts_bool_exp!]
+ access_token: String_comparison_exp
+ expires_at: Int_comparison_exp
+ id: uuid_comparison_exp
+ id_token: String_comparison_exp
+ provider: String_comparison_exp
+ providerAccountId: String_comparison_exp
+ refresh_token: String_comparison_exp
+ scope: String_comparison_exp
+ session_state: String_comparison_exp
+ token_type: String_comparison_exp
+ type: provider_type_enum_comparison_exp
+ user: users_bool_exp
+ userId: uuid_comparison_exp
+}
+
+"""
+unique or primary key constraints on table "accounts"
+"""
+enum accounts_constraint {
+ """
+ unique or primary key constraint on columns "id"
+ """
+ accounts_pkey
+}
+
+"""
+input type for incrementing numeric columns in table "accounts"
+"""
+input accounts_inc_input {
+ expires_at: Int
+}
+
+"""
+input type for inserting data into table "accounts"
+"""
+input accounts_insert_input {
+ access_token: String
+ expires_at: Int
+ id: uuid
+ id_token: String
+ provider: String
+ providerAccountId: String
+ refresh_token: String
+ scope: String
+ session_state: String
+ token_type: String
+ type: provider_type_enum
+ user: users_obj_rel_insert_input
+ userId: uuid
+}
+
+"""aggregate max on columns"""
+type accounts_max_fields {
+ access_token: String
+ expires_at: Int
+ id: uuid
+ id_token: String
+ provider: String
+ providerAccountId: String
+ refresh_token: String
+ scope: String
+ session_state: String
+ token_type: String
+ userId: uuid
+}
+
+"""
+order by max() on columns of table "accounts"
+"""
+input accounts_max_order_by {
+ access_token: order_by
+ expires_at: order_by
+ id: order_by
+ id_token: order_by
+ provider: order_by
+ providerAccountId: order_by
+ refresh_token: order_by
+ scope: order_by
+ session_state: order_by
+ token_type: order_by
+ userId: order_by
+}
+
+"""aggregate min on columns"""
+type accounts_min_fields {
+ access_token: String
+ expires_at: Int
+ id: uuid
+ id_token: String
+ provider: String
+ providerAccountId: String
+ refresh_token: String
+ scope: String
+ session_state: String
+ token_type: String
+ userId: uuid
+}
+
+"""
+order by min() on columns of table "accounts"
+"""
+input accounts_min_order_by {
+ access_token: order_by
+ expires_at: order_by
+ id: order_by
+ id_token: order_by
+ provider: order_by
+ providerAccountId: order_by
+ refresh_token: order_by
+ scope: order_by
+ session_state: order_by
+ token_type: order_by
+ userId: order_by
+}
+
+"""
+response of any mutation on the table "accounts"
+"""
+type accounts_mutation_response {
+ """number of rows affected by the mutation"""
+ affected_rows: Int!
+
+ """data from the rows affected by the mutation"""
+ returning: [accounts!]!
+}
+
+"""
+on_conflict condition type for table "accounts"
+"""
+input accounts_on_conflict {
+ constraint: accounts_constraint!
+ update_columns: [accounts_update_column!]! = []
+ where: accounts_bool_exp
+}
+
+"""Ordering options when selecting data from "accounts"."""
+input accounts_order_by {
+ access_token: order_by
+ expires_at: order_by
+ id: order_by
+ id_token: order_by
+ provider: order_by
+ providerAccountId: order_by
+ refresh_token: order_by
+ scope: order_by
+ session_state: order_by
+ token_type: order_by
+ type: order_by
+ user: users_order_by
+ userId: order_by
+}
+
+"""primary key columns input for table: accounts"""
+input accounts_pk_columns_input {
+ id: uuid!
+}
+
+"""
+select columns of table "accounts"
+"""
+enum accounts_select_column {
+ """column name"""
+ access_token
+
+ """column name"""
+ expires_at
+
+ """column name"""
+ id
+
+ """column name"""
+ id_token
+
+ """column name"""
+ provider
+
+ """column name"""
+ providerAccountId
+
+ """column name"""
+ refresh_token
+
+ """column name"""
+ scope
+
+ """column name"""
+ session_state
+
+ """column name"""
+ token_type
+
+ """column name"""
+ type
+
+ """column name"""
+ userId
+}
+
+"""
+input type for updating data in table "accounts"
+"""
+input accounts_set_input {
+ access_token: String
+ expires_at: Int
+ id: uuid
+ id_token: String
+ provider: String
+ providerAccountId: String
+ refresh_token: String
+ scope: String
+ session_state: String
+ token_type: String
+ type: provider_type_enum
+ userId: uuid
+}
+
+"""aggregate stddev on columns"""
+type accounts_stddev_fields {
+ expires_at: Float
+}
+
+"""
+order by stddev() on columns of table "accounts"
+"""
+input accounts_stddev_order_by {
+ expires_at: order_by
+}
+
+"""aggregate stddev_pop on columns"""
+type accounts_stddev_pop_fields {
+ expires_at: Float
+}
+
+"""
+order by stddev_pop() on columns of table "accounts"
+"""
+input accounts_stddev_pop_order_by {
+ expires_at: order_by
+}
+
+"""aggregate stddev_samp on columns"""
+type accounts_stddev_samp_fields {
+ expires_at: Float
+}
+
+"""
+order by stddev_samp() on columns of table "accounts"
+"""
+input accounts_stddev_samp_order_by {
+ expires_at: order_by
+}
+
+"""
+Streaming cursor of the table "accounts"
+"""
+input accounts_stream_cursor_input {
+ """Stream column input with initial value"""
+ initial_value: accounts_stream_cursor_value_input!
+
+ """cursor ordering"""
+ ordering: cursor_ordering
+}
+
+"""Initial value of the column from where the streaming should start"""
+input accounts_stream_cursor_value_input {
+ access_token: String
+ expires_at: Int
+ id: uuid
+ id_token: String
+ provider: String
+ providerAccountId: String
+ refresh_token: String
+ scope: String
+ session_state: String
+ token_type: String
+ type: provider_type_enum
+ userId: uuid
+}
+
+"""aggregate sum on columns"""
+type accounts_sum_fields {
+ expires_at: Int
+}
+
+"""
+order by sum() on columns of table "accounts"
+"""
+input accounts_sum_order_by {
+ expires_at: order_by
+}
+
+"""
+update columns of table "accounts"
+"""
+enum accounts_update_column {
+ """column name"""
+ access_token
+
+ """column name"""
+ expires_at
+
+ """column name"""
+ id
+
+ """column name"""
+ id_token
+
+ """column name"""
+ provider
+
+ """column name"""
+ providerAccountId
+
+ """column name"""
+ refresh_token
+
+ """column name"""
+ scope
+
+ """column name"""
+ session_state
+
+ """column name"""
+ token_type
+
+ """column name"""
+ type
+
+ """column name"""
+ userId
+}
+
+input accounts_updates {
+ """increments the numeric columns with given value of the filtered values"""
+ _inc: accounts_inc_input
+
+ """sets the columns of the filtered rows to the given values"""
+ _set: accounts_set_input
+
+ """filter the rows which have to be updated"""
+ where: accounts_bool_exp!
+}
+
+"""aggregate var_pop on columns"""
+type accounts_var_pop_fields {
+ expires_at: Float
+}
+
+"""
+order by var_pop() on columns of table "accounts"
+"""
+input accounts_var_pop_order_by {
+ expires_at: order_by
+}
+
+"""aggregate var_samp on columns"""
+type accounts_var_samp_fields {
+ expires_at: Float
+}
+
+"""
+order by var_samp() on columns of table "accounts"
+"""
+input accounts_var_samp_order_by {
+ expires_at: order_by
+}
+
+"""aggregate variance on columns"""
+type accounts_variance_fields {
+ expires_at: Float
+}
+
+"""
+order by variance() on columns of table "accounts"
+"""
+input accounts_variance_order_by {
+ expires_at: order_by
+}
+
+"""ordering argument of a cursor"""
+enum cursor_ordering {
+ """ascending ordering of the cursor"""
+ ASC
+
+ """descending ordering of the cursor"""
+ DESC
+}
+
+"""mutation root"""
+type mutation_root {
+ """
+ delete data from the table: "accounts"
+ """
+ delete_accounts(
+ """filter the rows which have to be deleted"""
+ where: accounts_bool_exp!
+ ): accounts_mutation_response
+
+ """
+ delete single row from the table: "accounts"
+ """
+ delete_accounts_by_pk(id: uuid!): accounts
+
+ """
+ delete data from the table: "provider_type"
+ """
+ delete_provider_type(
+ """filter the rows which have to be deleted"""
+ where: provider_type_bool_exp!
+ ): provider_type_mutation_response
+
+ """
+ delete single row from the table: "provider_type"
+ """
+ delete_provider_type_by_pk(value: String!): provider_type
+
+ """
+ delete data from the table: "sessions"
+ """
+ delete_sessions(
+ """filter the rows which have to be deleted"""
+ where: sessions_bool_exp!
+ ): sessions_mutation_response
+
+ """
+ delete single row from the table: "sessions"
+ """
+ delete_sessions_by_pk(sessionToken: String!): sessions
+
+ """
+ delete data from the table: "users"
+ """
+ delete_users(
+ """filter the rows which have to be deleted"""
+ where: users_bool_exp!
+ ): users_mutation_response
+
+ """
+ delete single row from the table: "users"
+ """
+ delete_users_by_pk(id: uuid!): users
+
+ """
+ delete data from the table: "verification_tokens"
+ """
+ delete_verification_tokens(
+ """filter the rows which have to be deleted"""
+ where: verification_tokens_bool_exp!
+ ): verification_tokens_mutation_response
+
+ """
+ delete single row from the table: "verification_tokens"
+ """
+ delete_verification_tokens_by_pk(token: String!): verification_tokens
+
+ """
+ insert data into the table: "accounts"
+ """
+ insert_accounts(
+ """the rows to be inserted"""
+ objects: [accounts_insert_input!]!
+
+ """upsert condition"""
+ on_conflict: accounts_on_conflict
+ ): accounts_mutation_response
+
+ """
+ insert a single row into the table: "accounts"
+ """
+ insert_accounts_one(
+ """the row to be inserted"""
+ object: accounts_insert_input!
+
+ """upsert condition"""
+ on_conflict: accounts_on_conflict
+ ): accounts
+
+ """
+ insert data into the table: "provider_type"
+ """
+ insert_provider_type(
+ """the rows to be inserted"""
+ objects: [provider_type_insert_input!]!
+
+ """upsert condition"""
+ on_conflict: provider_type_on_conflict
+ ): provider_type_mutation_response
+
+ """
+ insert a single row into the table: "provider_type"
+ """
+ insert_provider_type_one(
+ """the row to be inserted"""
+ object: provider_type_insert_input!
+
+ """upsert condition"""
+ on_conflict: provider_type_on_conflict
+ ): provider_type
+
+ """
+ insert data into the table: "sessions"
+ """
+ insert_sessions(
+ """the rows to be inserted"""
+ objects: [sessions_insert_input!]!
+
+ """upsert condition"""
+ on_conflict: sessions_on_conflict
+ ): sessions_mutation_response
+
+ """
+ insert a single row into the table: "sessions"
+ """
+ insert_sessions_one(
+ """the row to be inserted"""
+ object: sessions_insert_input!
+
+ """upsert condition"""
+ on_conflict: sessions_on_conflict
+ ): sessions
+
+ """
+ insert data into the table: "users"
+ """
+ insert_users(
+ """the rows to be inserted"""
+ objects: [users_insert_input!]!
+
+ """upsert condition"""
+ on_conflict: users_on_conflict
+ ): users_mutation_response
+
+ """
+ insert a single row into the table: "users"
+ """
+ insert_users_one(
+ """the row to be inserted"""
+ object: users_insert_input!
+
+ """upsert condition"""
+ on_conflict: users_on_conflict
+ ): users
+
+ """
+ insert data into the table: "verification_tokens"
+ """
+ insert_verification_tokens(
+ """the rows to be inserted"""
+ objects: [verification_tokens_insert_input!]!
+
+ """upsert condition"""
+ on_conflict: verification_tokens_on_conflict
+ ): verification_tokens_mutation_response
+
+ """
+ insert a single row into the table: "verification_tokens"
+ """
+ insert_verification_tokens_one(
+ """the row to be inserted"""
+ object: verification_tokens_insert_input!
+
+ """upsert condition"""
+ on_conflict: verification_tokens_on_conflict
+ ): verification_tokens
+
+ """
+ update data of the table: "accounts"
+ """
+ update_accounts(
+ """increments the numeric columns with given value of the filtered values"""
+ _inc: accounts_inc_input
+
+ """sets the columns of the filtered rows to the given values"""
+ _set: accounts_set_input
+
+ """filter the rows which have to be updated"""
+ where: accounts_bool_exp!
+ ): accounts_mutation_response
+
+ """
+ update single row of the table: "accounts"
+ """
+ update_accounts_by_pk(
+ """increments the numeric columns with given value of the filtered values"""
+ _inc: accounts_inc_input
+
+ """sets the columns of the filtered rows to the given values"""
+ _set: accounts_set_input
+ pk_columns: accounts_pk_columns_input!
+ ): accounts
+
+ """
+ update multiples rows of table: "accounts"
+ """
+ update_accounts_many(
+ """updates to execute, in order"""
+ updates: [accounts_updates!]!
+ ): [accounts_mutation_response]
+
+ """
+ update data of the table: "provider_type"
+ """
+ update_provider_type(
+ """sets the columns of the filtered rows to the given values"""
+ _set: provider_type_set_input
+
+ """filter the rows which have to be updated"""
+ where: provider_type_bool_exp!
+ ): provider_type_mutation_response
+
+ """
+ update single row of the table: "provider_type"
+ """
+ update_provider_type_by_pk(
+ """sets the columns of the filtered rows to the given values"""
+ _set: provider_type_set_input
+ pk_columns: provider_type_pk_columns_input!
+ ): provider_type
+
+ """
+ update multiples rows of table: "provider_type"
+ """
+ update_provider_type_many(
+ """updates to execute, in order"""
+ updates: [provider_type_updates!]!
+ ): [provider_type_mutation_response]
+
+ """
+ update data of the table: "sessions"
+ """
+ update_sessions(
+ """sets the columns of the filtered rows to the given values"""
+ _set: sessions_set_input
+
+ """filter the rows which have to be updated"""
+ where: sessions_bool_exp!
+ ): sessions_mutation_response
+
+ """
+ update single row of the table: "sessions"
+ """
+ update_sessions_by_pk(
+ """sets the columns of the filtered rows to the given values"""
+ _set: sessions_set_input
+ pk_columns: sessions_pk_columns_input!
+ ): sessions
+
+ """
+ update multiples rows of table: "sessions"
+ """
+ update_sessions_many(
+ """updates to execute, in order"""
+ updates: [sessions_updates!]!
+ ): [sessions_mutation_response]
+
+ """
+ update data of the table: "users"
+ """
+ update_users(
+ """sets the columns of the filtered rows to the given values"""
+ _set: users_set_input
+
+ """filter the rows which have to be updated"""
+ where: users_bool_exp!
+ ): users_mutation_response
+
+ """
+ update single row of the table: "users"
+ """
+ update_users_by_pk(
+ """sets the columns of the filtered rows to the given values"""
+ _set: users_set_input
+ pk_columns: users_pk_columns_input!
+ ): users
+
+ """
+ update multiples rows of table: "users"
+ """
+ update_users_many(
+ """updates to execute, in order"""
+ updates: [users_updates!]!
+ ): [users_mutation_response]
+
+ """
+ update data of the table: "verification_tokens"
+ """
+ update_verification_tokens(
+ """sets the columns of the filtered rows to the given values"""
+ _set: verification_tokens_set_input
+
+ """filter the rows which have to be updated"""
+ where: verification_tokens_bool_exp!
+ ): verification_tokens_mutation_response
+
+ """
+ update single row of the table: "verification_tokens"
+ """
+ update_verification_tokens_by_pk(
+ """sets the columns of the filtered rows to the given values"""
+ _set: verification_tokens_set_input
+ pk_columns: verification_tokens_pk_columns_input!
+ ): verification_tokens
+
+ """
+ update multiples rows of table: "verification_tokens"
+ """
+ update_verification_tokens_many(
+ """updates to execute, in order"""
+ updates: [verification_tokens_updates!]!
+ ): [verification_tokens_mutation_response]
+}
+
+"""column ordering options"""
+enum order_by {
+ """in ascending order, nulls last"""
+ asc
+
+ """in ascending order, nulls first"""
+ asc_nulls_first
+
+ """in ascending order, nulls last"""
+ asc_nulls_last
+
+ """in descending order, nulls first"""
+ desc
+
+ """in descending order, nulls first"""
+ desc_nulls_first
+
+ """in descending order, nulls last"""
+ desc_nulls_last
+}
+
+"""
+columns and relationships of "provider_type"
+"""
+type provider_type {
+ value: String!
+}
+
+"""
+aggregated selection of "provider_type"
+"""
+type provider_type_aggregate {
+ aggregate: provider_type_aggregate_fields
+ nodes: [provider_type!]!
+}
+
+"""
+aggregate fields of "provider_type"
+"""
+type provider_type_aggregate_fields {
+ count(columns: [provider_type_select_column!], distinct: Boolean): Int!
+ max: provider_type_max_fields
+ min: provider_type_min_fields
+}
+
+"""
+Boolean expression to filter rows from the table "provider_type". All fields are combined with a logical 'AND'.
+"""
+input provider_type_bool_exp {
+ _and: [provider_type_bool_exp!]
+ _not: provider_type_bool_exp
+ _or: [provider_type_bool_exp!]
+ value: String_comparison_exp
+}
+
+"""
+unique or primary key constraints on table "provider_type"
+"""
+enum provider_type_constraint {
+ """
+ unique or primary key constraint on columns "value"
+ """
+ provider_type_pkey
+}
+
+enum provider_type_enum {
+ credentials
+ email
+ oauth
+ oidc
+}
+
+"""
+Boolean expression to compare columns of type "provider_type_enum". All fields are combined with logical 'AND'.
+"""
+input provider_type_enum_comparison_exp {
+ _eq: provider_type_enum
+ _in: [provider_type_enum!]
+ _is_null: Boolean
+ _neq: provider_type_enum
+ _nin: [provider_type_enum!]
+}
+
+"""
+input type for inserting data into table "provider_type"
+"""
+input provider_type_insert_input {
+ value: String
+}
+
+"""aggregate max on columns"""
+type provider_type_max_fields {
+ value: String
+}
+
+"""aggregate min on columns"""
+type provider_type_min_fields {
+ value: String
+}
+
+"""
+response of any mutation on the table "provider_type"
+"""
+type provider_type_mutation_response {
+ """number of rows affected by the mutation"""
+ affected_rows: Int!
+
+ """data from the rows affected by the mutation"""
+ returning: [provider_type!]!
+}
+
+"""
+on_conflict condition type for table "provider_type"
+"""
+input provider_type_on_conflict {
+ constraint: provider_type_constraint!
+ update_columns: [provider_type_update_column!]! = []
+ where: provider_type_bool_exp
+}
+
+"""Ordering options when selecting data from "provider_type"."""
+input provider_type_order_by {
+ value: order_by
+}
+
+"""primary key columns input for table: provider_type"""
+input provider_type_pk_columns_input {
+ value: String!
+}
+
+"""
+select columns of table "provider_type"
+"""
+enum provider_type_select_column {
+ """column name"""
+ value
+}
+
+"""
+input type for updating data in table "provider_type"
+"""
+input provider_type_set_input {
+ value: String
+}
+
+"""
+Streaming cursor of the table "provider_type"
+"""
+input provider_type_stream_cursor_input {
+ """Stream column input with initial value"""
+ initial_value: provider_type_stream_cursor_value_input!
+
+ """cursor ordering"""
+ ordering: cursor_ordering
+}
+
+"""Initial value of the column from where the streaming should start"""
+input provider_type_stream_cursor_value_input {
+ value: String
+}
+
+"""
+update columns of table "provider_type"
+"""
+enum provider_type_update_column {
+ """column name"""
+ value
+}
+
+input provider_type_updates {
+ """sets the columns of the filtered rows to the given values"""
+ _set: provider_type_set_input
+
+ """filter the rows which have to be updated"""
+ where: provider_type_bool_exp!
+}
+
+type query_root {
+ """An array relationship"""
+ accounts(
+ """distinct select on columns"""
+ distinct_on: [accounts_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [accounts_order_by!]
+
+ """filter the rows returned"""
+ where: accounts_bool_exp
+ ): [accounts!]!
+
+ """An aggregate relationship"""
+ accounts_aggregate(
+ """distinct select on columns"""
+ distinct_on: [accounts_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [accounts_order_by!]
+
+ """filter the rows returned"""
+ where: accounts_bool_exp
+ ): accounts_aggregate!
+
+ """fetch data from the table: "accounts" using primary key columns"""
+ accounts_by_pk(id: uuid!): accounts
+
+ """
+ fetch data from the table: "provider_type"
+ """
+ provider_type(
+ """distinct select on columns"""
+ distinct_on: [provider_type_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [provider_type_order_by!]
+
+ """filter the rows returned"""
+ where: provider_type_bool_exp
+ ): [provider_type!]!
+
+ """
+ fetch aggregated fields from the table: "provider_type"
+ """
+ provider_type_aggregate(
+ """distinct select on columns"""
+ distinct_on: [provider_type_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [provider_type_order_by!]
+
+ """filter the rows returned"""
+ where: provider_type_bool_exp
+ ): provider_type_aggregate!
+
+ """fetch data from the table: "provider_type" using primary key columns"""
+ provider_type_by_pk(value: String!): provider_type
+
+ """An array relationship"""
+ sessions(
+ """distinct select on columns"""
+ distinct_on: [sessions_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [sessions_order_by!]
+
+ """filter the rows returned"""
+ where: sessions_bool_exp
+ ): [sessions!]!
+
+ """An aggregate relationship"""
+ sessions_aggregate(
+ """distinct select on columns"""
+ distinct_on: [sessions_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [sessions_order_by!]
+
+ """filter the rows returned"""
+ where: sessions_bool_exp
+ ): sessions_aggregate!
+
+ """fetch data from the table: "sessions" using primary key columns"""
+ sessions_by_pk(sessionToken: String!): sessions
+
+ """
+ fetch data from the table: "users"
+ """
+ users(
+ """distinct select on columns"""
+ distinct_on: [users_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [users_order_by!]
+
+ """filter the rows returned"""
+ where: users_bool_exp
+ ): [users!]!
+
+ """
+ fetch aggregated fields from the table: "users"
+ """
+ users_aggregate(
+ """distinct select on columns"""
+ distinct_on: [users_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [users_order_by!]
+
+ """filter the rows returned"""
+ where: users_bool_exp
+ ): users_aggregate!
+
+ """fetch data from the table: "users" using primary key columns"""
+ users_by_pk(id: uuid!): users
+
+ """
+ fetch data from the table: "verification_tokens"
+ """
+ verification_tokens(
+ """distinct select on columns"""
+ distinct_on: [verification_tokens_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [verification_tokens_order_by!]
+
+ """filter the rows returned"""
+ where: verification_tokens_bool_exp
+ ): [verification_tokens!]!
+
+ """
+ fetch aggregated fields from the table: "verification_tokens"
+ """
+ verification_tokens_aggregate(
+ """distinct select on columns"""
+ distinct_on: [verification_tokens_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [verification_tokens_order_by!]
+
+ """filter the rows returned"""
+ where: verification_tokens_bool_exp
+ ): verification_tokens_aggregate!
+
+ """
+ fetch data from the table: "verification_tokens" using primary key columns
+ """
+ verification_tokens_by_pk(token: String!): verification_tokens
+}
+
+"""
+columns and relationships of "sessions"
+"""
+type sessions {
+ expires: timestamptz!
+ id: uuid!
+ sessionToken: String!
+
+ """An object relationship"""
+ user: users!
+ userId: uuid!
+}
+
+"""
+aggregated selection of "sessions"
+"""
+type sessions_aggregate {
+ aggregate: sessions_aggregate_fields
+ nodes: [sessions!]!
+}
+
+input sessions_aggregate_bool_exp {
+ count: sessions_aggregate_bool_exp_count
+}
+
+input sessions_aggregate_bool_exp_count {
+ arguments: [sessions_select_column!]
+ distinct: Boolean
+ filter: sessions_bool_exp
+ predicate: Int_comparison_exp!
+}
+
+"""
+aggregate fields of "sessions"
+"""
+type sessions_aggregate_fields {
+ count(columns: [sessions_select_column!], distinct: Boolean): Int!
+ max: sessions_max_fields
+ min: sessions_min_fields
+}
+
+"""
+order by aggregate values of table "sessions"
+"""
+input sessions_aggregate_order_by {
+ count: order_by
+ max: sessions_max_order_by
+ min: sessions_min_order_by
+}
+
+"""
+input type for inserting array relation for remote table "sessions"
+"""
+input sessions_arr_rel_insert_input {
+ data: [sessions_insert_input!]!
+
+ """upsert condition"""
+ on_conflict: sessions_on_conflict
+}
+
+"""
+Boolean expression to filter rows from the table "sessions". All fields are combined with a logical 'AND'.
+"""
+input sessions_bool_exp {
+ _and: [sessions_bool_exp!]
+ _not: sessions_bool_exp
+ _or: [sessions_bool_exp!]
+ expires: timestamptz_comparison_exp
+ id: uuid_comparison_exp
+ sessionToken: String_comparison_exp
+ user: users_bool_exp
+ userId: uuid_comparison_exp
+}
+
+"""
+unique or primary key constraints on table "sessions"
+"""
+enum sessions_constraint {
+ """
+ unique or primary key constraint on columns "sessionToken"
+ """
+ sessions_pkey
+}
+
+"""
+input type for inserting data into table "sessions"
+"""
+input sessions_insert_input {
+ expires: timestamptz
+ id: uuid
+ sessionToken: String
+ user: users_obj_rel_insert_input
+ userId: uuid
+}
+
+"""aggregate max on columns"""
+type sessions_max_fields {
+ expires: timestamptz
+ id: uuid
+ sessionToken: String
+ userId: uuid
+}
+
+"""
+order by max() on columns of table "sessions"
+"""
+input sessions_max_order_by {
+ expires: order_by
+ id: order_by
+ sessionToken: order_by
+ userId: order_by
+}
+
+"""aggregate min on columns"""
+type sessions_min_fields {
+ expires: timestamptz
+ id: uuid
+ sessionToken: String
+ userId: uuid
+}
+
+"""
+order by min() on columns of table "sessions"
+"""
+input sessions_min_order_by {
+ expires: order_by
+ id: order_by
+ sessionToken: order_by
+ userId: order_by
+}
+
+"""
+response of any mutation on the table "sessions"
+"""
+type sessions_mutation_response {
+ """number of rows affected by the mutation"""
+ affected_rows: Int!
+
+ """data from the rows affected by the mutation"""
+ returning: [sessions!]!
+}
+
+"""
+on_conflict condition type for table "sessions"
+"""
+input sessions_on_conflict {
+ constraint: sessions_constraint!
+ update_columns: [sessions_update_column!]! = []
+ where: sessions_bool_exp
+}
+
+"""Ordering options when selecting data from "sessions"."""
+input sessions_order_by {
+ expires: order_by
+ id: order_by
+ sessionToken: order_by
+ user: users_order_by
+ userId: order_by
+}
+
+"""primary key columns input for table: sessions"""
+input sessions_pk_columns_input {
+ sessionToken: String!
+}
+
+"""
+select columns of table "sessions"
+"""
+enum sessions_select_column {
+ """column name"""
+ expires
+
+ """column name"""
+ id
+
+ """column name"""
+ sessionToken
+
+ """column name"""
+ userId
+}
+
+"""
+input type for updating data in table "sessions"
+"""
+input sessions_set_input {
+ expires: timestamptz
+ id: uuid
+ sessionToken: String
+ userId: uuid
+}
+
+"""
+Streaming cursor of the table "sessions"
+"""
+input sessions_stream_cursor_input {
+ """Stream column input with initial value"""
+ initial_value: sessions_stream_cursor_value_input!
+
+ """cursor ordering"""
+ ordering: cursor_ordering
+}
+
+"""Initial value of the column from where the streaming should start"""
+input sessions_stream_cursor_value_input {
+ expires: timestamptz
+ id: uuid
+ sessionToken: String
+ userId: uuid
+}
+
+"""
+update columns of table "sessions"
+"""
+enum sessions_update_column {
+ """column name"""
+ expires
+
+ """column name"""
+ id
+
+ """column name"""
+ sessionToken
+
+ """column name"""
+ userId
+}
+
+input sessions_updates {
+ """sets the columns of the filtered rows to the given values"""
+ _set: sessions_set_input
+
+ """filter the rows which have to be updated"""
+ where: sessions_bool_exp!
+}
+
+type subscription_root {
+ """An array relationship"""
+ accounts(
+ """distinct select on columns"""
+ distinct_on: [accounts_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [accounts_order_by!]
+
+ """filter the rows returned"""
+ where: accounts_bool_exp
+ ): [accounts!]!
+
+ """An aggregate relationship"""
+ accounts_aggregate(
+ """distinct select on columns"""
+ distinct_on: [accounts_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [accounts_order_by!]
+
+ """filter the rows returned"""
+ where: accounts_bool_exp
+ ): accounts_aggregate!
+
+ """fetch data from the table: "accounts" using primary key columns"""
+ accounts_by_pk(id: uuid!): accounts
+
+ """
+ fetch data from the table in a streaming manner: "accounts"
+ """
+ accounts_stream(
+ """maximum number of rows returned in a single batch"""
+ batch_size: Int!
+
+ """cursor to stream the results returned by the query"""
+ cursor: [accounts_stream_cursor_input]!
+
+ """filter the rows returned"""
+ where: accounts_bool_exp
+ ): [accounts!]!
+
+ """
+ fetch data from the table: "provider_type"
+ """
+ provider_type(
+ """distinct select on columns"""
+ distinct_on: [provider_type_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [provider_type_order_by!]
+
+ """filter the rows returned"""
+ where: provider_type_bool_exp
+ ): [provider_type!]!
+
+ """
+ fetch aggregated fields from the table: "provider_type"
+ """
+ provider_type_aggregate(
+ """distinct select on columns"""
+ distinct_on: [provider_type_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [provider_type_order_by!]
+
+ """filter the rows returned"""
+ where: provider_type_bool_exp
+ ): provider_type_aggregate!
+
+ """fetch data from the table: "provider_type" using primary key columns"""
+ provider_type_by_pk(value: String!): provider_type
+
+ """
+ fetch data from the table in a streaming manner: "provider_type"
+ """
+ provider_type_stream(
+ """maximum number of rows returned in a single batch"""
+ batch_size: Int!
+
+ """cursor to stream the results returned by the query"""
+ cursor: [provider_type_stream_cursor_input]!
+
+ """filter the rows returned"""
+ where: provider_type_bool_exp
+ ): [provider_type!]!
+
+ """An array relationship"""
+ sessions(
+ """distinct select on columns"""
+ distinct_on: [sessions_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [sessions_order_by!]
+
+ """filter the rows returned"""
+ where: sessions_bool_exp
+ ): [sessions!]!
+
+ """An aggregate relationship"""
+ sessions_aggregate(
+ """distinct select on columns"""
+ distinct_on: [sessions_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [sessions_order_by!]
+
+ """filter the rows returned"""
+ where: sessions_bool_exp
+ ): sessions_aggregate!
+
+ """fetch data from the table: "sessions" using primary key columns"""
+ sessions_by_pk(sessionToken: String!): sessions
+
+ """
+ fetch data from the table in a streaming manner: "sessions"
+ """
+ sessions_stream(
+ """maximum number of rows returned in a single batch"""
+ batch_size: Int!
+
+ """cursor to stream the results returned by the query"""
+ cursor: [sessions_stream_cursor_input]!
+
+ """filter the rows returned"""
+ where: sessions_bool_exp
+ ): [sessions!]!
+
+ """
+ fetch data from the table: "users"
+ """
+ users(
+ """distinct select on columns"""
+ distinct_on: [users_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [users_order_by!]
+
+ """filter the rows returned"""
+ where: users_bool_exp
+ ): [users!]!
+
+ """
+ fetch aggregated fields from the table: "users"
+ """
+ users_aggregate(
+ """distinct select on columns"""
+ distinct_on: [users_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [users_order_by!]
+
+ """filter the rows returned"""
+ where: users_bool_exp
+ ): users_aggregate!
+
+ """fetch data from the table: "users" using primary key columns"""
+ users_by_pk(id: uuid!): users
+
+ """
+ fetch data from the table in a streaming manner: "users"
+ """
+ users_stream(
+ """maximum number of rows returned in a single batch"""
+ batch_size: Int!
+
+ """cursor to stream the results returned by the query"""
+ cursor: [users_stream_cursor_input]!
+
+ """filter the rows returned"""
+ where: users_bool_exp
+ ): [users!]!
+
+ """
+ fetch data from the table: "verification_tokens"
+ """
+ verification_tokens(
+ """distinct select on columns"""
+ distinct_on: [verification_tokens_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [verification_tokens_order_by!]
+
+ """filter the rows returned"""
+ where: verification_tokens_bool_exp
+ ): [verification_tokens!]!
+
+ """
+ fetch aggregated fields from the table: "verification_tokens"
+ """
+ verification_tokens_aggregate(
+ """distinct select on columns"""
+ distinct_on: [verification_tokens_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [verification_tokens_order_by!]
+
+ """filter the rows returned"""
+ where: verification_tokens_bool_exp
+ ): verification_tokens_aggregate!
+
+ """
+ fetch data from the table: "verification_tokens" using primary key columns
+ """
+ verification_tokens_by_pk(token: String!): verification_tokens
+
+ """
+ fetch data from the table in a streaming manner: "verification_tokens"
+ """
+ verification_tokens_stream(
+ """maximum number of rows returned in a single batch"""
+ batch_size: Int!
+
+ """cursor to stream the results returned by the query"""
+ cursor: [verification_tokens_stream_cursor_input]!
+
+ """filter the rows returned"""
+ where: verification_tokens_bool_exp
+ ): [verification_tokens!]!
+}
+
+scalar timestamptz
+
+"""
+Boolean expression to compare columns of type "timestamptz". All fields are combined with logical 'AND'.
+"""
+input timestamptz_comparison_exp {
+ _eq: timestamptz
+ _gt: timestamptz
+ _gte: timestamptz
+ _in: [timestamptz!]
+ _is_null: Boolean
+ _lt: timestamptz
+ _lte: timestamptz
+ _neq: timestamptz
+ _nin: [timestamptz!]
+}
+
+"""
+columns and relationships of "users"
+"""
+type users {
+ """An array relationship"""
+ accounts(
+ """distinct select on columns"""
+ distinct_on: [accounts_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [accounts_order_by!]
+
+ """filter the rows returned"""
+ where: accounts_bool_exp
+ ): [accounts!]!
+
+ """An aggregate relationship"""
+ accounts_aggregate(
+ """distinct select on columns"""
+ distinct_on: [accounts_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [accounts_order_by!]
+
+ """filter the rows returned"""
+ where: accounts_bool_exp
+ ): accounts_aggregate!
+ email: String!
+ emailVerified: timestamptz
+ id: uuid!
+ image: String
+ name: String
+
+ """An array relationship"""
+ sessions(
+ """distinct select on columns"""
+ distinct_on: [sessions_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [sessions_order_by!]
+
+ """filter the rows returned"""
+ where: sessions_bool_exp
+ ): [sessions!]!
+
+ """An aggregate relationship"""
+ sessions_aggregate(
+ """distinct select on columns"""
+ distinct_on: [sessions_select_column!]
+
+ """limit the number of rows returned"""
+ limit: Int
+
+ """skip the first n rows. Use only with order_by"""
+ offset: Int
+
+ """sort the rows by one or more columns"""
+ order_by: [sessions_order_by!]
+
+ """filter the rows returned"""
+ where: sessions_bool_exp
+ ): sessions_aggregate!
+}
+
+"""
+aggregated selection of "users"
+"""
+type users_aggregate {
+ aggregate: users_aggregate_fields
+ nodes: [users!]!
+}
+
+"""
+aggregate fields of "users"
+"""
+type users_aggregate_fields {
+ count(columns: [users_select_column!], distinct: Boolean): Int!
+ max: users_max_fields
+ min: users_min_fields
+}
+
+"""
+Boolean expression to filter rows from the table "users". All fields are combined with a logical 'AND'.
+"""
+input users_bool_exp {
+ _and: [users_bool_exp!]
+ _not: users_bool_exp
+ _or: [users_bool_exp!]
+ accounts: accounts_bool_exp
+ accounts_aggregate: accounts_aggregate_bool_exp
+ email: String_comparison_exp
+ emailVerified: timestamptz_comparison_exp
+ id: uuid_comparison_exp
+ image: String_comparison_exp
+ name: String_comparison_exp
+ sessions: sessions_bool_exp
+ sessions_aggregate: sessions_aggregate_bool_exp
+}
+
+"""
+unique or primary key constraints on table "users"
+"""
+enum users_constraint {
+ """
+ unique or primary key constraint on columns "email"
+ """
+ users_email_key
+
+ """
+ unique or primary key constraint on columns "id"
+ """
+ users_pkey
+}
+
+"""
+input type for inserting data into table "users"
+"""
+input users_insert_input {
+ accounts: accounts_arr_rel_insert_input
+ email: String
+ emailVerified: timestamptz
+ id: uuid
+ image: String
+ name: String
+ sessions: sessions_arr_rel_insert_input
+}
+
+"""aggregate max on columns"""
+type users_max_fields {
+ email: String
+ emailVerified: timestamptz
+ id: uuid
+ image: String
+ name: String
+}
+
+"""aggregate min on columns"""
+type users_min_fields {
+ email: String
+ emailVerified: timestamptz
+ id: uuid
+ image: String
+ name: String
+}
+
+"""
+response of any mutation on the table "users"
+"""
+type users_mutation_response {
+ """number of rows affected by the mutation"""
+ affected_rows: Int!
+
+ """data from the rows affected by the mutation"""
+ returning: [users!]!
+}
+
+"""
+input type for inserting object relation for remote table "users"
+"""
+input users_obj_rel_insert_input {
+ data: users_insert_input!
+
+ """upsert condition"""
+ on_conflict: users_on_conflict
+}
+
+"""
+on_conflict condition type for table "users"
+"""
+input users_on_conflict {
+ constraint: users_constraint!
+ update_columns: [users_update_column!]! = []
+ where: users_bool_exp
+}
+
+"""Ordering options when selecting data from "users"."""
+input users_order_by {
+ accounts_aggregate: accounts_aggregate_order_by
+ email: order_by
+ emailVerified: order_by
+ id: order_by
+ image: order_by
+ name: order_by
+ sessions_aggregate: sessions_aggregate_order_by
+}
+
+"""primary key columns input for table: users"""
+input users_pk_columns_input {
+ id: uuid!
+}
+
+"""
+select columns of table "users"
+"""
+enum users_select_column {
+ """column name"""
+ email
+
+ """column name"""
+ emailVerified
+
+ """column name"""
+ id
+
+ """column name"""
+ image
+
+ """column name"""
+ name
+}
+
+"""
+input type for updating data in table "users"
+"""
+input users_set_input {
+ email: String
+ emailVerified: timestamptz
+ id: uuid
+ image: String
+ name: String
+}
+
+"""
+Streaming cursor of the table "users"
+"""
+input users_stream_cursor_input {
+ """Stream column input with initial value"""
+ initial_value: users_stream_cursor_value_input!
+
+ """cursor ordering"""
+ ordering: cursor_ordering
+}
+
+"""Initial value of the column from where the streaming should start"""
+input users_stream_cursor_value_input {
+ email: String
+ emailVerified: timestamptz
+ id: uuid
+ image: String
+ name: String
+}
+
+"""
+update columns of table "users"
+"""
+enum users_update_column {
+ """column name"""
+ email
+
+ """column name"""
+ emailVerified
+
+ """column name"""
+ id
+
+ """column name"""
+ image
+
+ """column name"""
+ name
+}
+
+input users_updates {
+ """sets the columns of the filtered rows to the given values"""
+ _set: users_set_input
+
+ """filter the rows which have to be updated"""
+ where: users_bool_exp!
+}
+
+scalar uuid
+
+"""
+Boolean expression to compare columns of type "uuid". All fields are combined with logical 'AND'.
+"""
+input uuid_comparison_exp {
+ _eq: uuid
+ _gt: uuid
+ _gte: uuid
+ _in: [uuid!]
+ _is_null: Boolean
+ _lt: uuid
+ _lte: uuid
+ _neq: uuid
+ _nin: [uuid!]
+}
+
+"""
+columns and relationships of "verification_tokens"
+"""
+type verification_tokens {
+ expires: timestamptz!
+ identifier: String!
+ token: String!
+}
+
+"""
+aggregated selection of "verification_tokens"
+"""
+type verification_tokens_aggregate {
+ aggregate: verification_tokens_aggregate_fields
+ nodes: [verification_tokens!]!
+}
+
+"""
+aggregate fields of "verification_tokens"
+"""
+type verification_tokens_aggregate_fields {
+ count(columns: [verification_tokens_select_column!], distinct: Boolean): Int!
+ max: verification_tokens_max_fields
+ min: verification_tokens_min_fields
+}
+
+"""
+Boolean expression to filter rows from the table "verification_tokens". All fields are combined with a logical 'AND'.
+"""
+input verification_tokens_bool_exp {
+ _and: [verification_tokens_bool_exp!]
+ _not: verification_tokens_bool_exp
+ _or: [verification_tokens_bool_exp!]
+ expires: timestamptz_comparison_exp
+ identifier: String_comparison_exp
+ token: String_comparison_exp
+}
+
+"""
+unique or primary key constraints on table "verification_tokens"
+"""
+enum verification_tokens_constraint {
+ """
+ unique or primary key constraint on columns "token"
+ """
+ verification_tokens_pkey
+}
+
+"""
+input type for inserting data into table "verification_tokens"
+"""
+input verification_tokens_insert_input {
+ expires: timestamptz
+ identifier: String
+ token: String
+}
+
+"""aggregate max on columns"""
+type verification_tokens_max_fields {
+ expires: timestamptz
+ identifier: String
+ token: String
+}
+
+"""aggregate min on columns"""
+type verification_tokens_min_fields {
+ expires: timestamptz
+ identifier: String
+ token: String
+}
+
+"""
+response of any mutation on the table "verification_tokens"
+"""
+type verification_tokens_mutation_response {
+ """number of rows affected by the mutation"""
+ affected_rows: Int!
+
+ """data from the rows affected by the mutation"""
+ returning: [verification_tokens!]!
+}
+
+"""
+on_conflict condition type for table "verification_tokens"
+"""
+input verification_tokens_on_conflict {
+ constraint: verification_tokens_constraint!
+ update_columns: [verification_tokens_update_column!]! = []
+ where: verification_tokens_bool_exp
+}
+
+"""Ordering options when selecting data from "verification_tokens"."""
+input verification_tokens_order_by {
+ expires: order_by
+ identifier: order_by
+ token: order_by
+}
+
+"""primary key columns input for table: verification_tokens"""
+input verification_tokens_pk_columns_input {
+ token: String!
+}
+
+"""
+select columns of table "verification_tokens"
+"""
+enum verification_tokens_select_column {
+ """column name"""
+ expires
+
+ """column name"""
+ identifier
+
+ """column name"""
+ token
+}
+
+"""
+input type for updating data in table "verification_tokens"
+"""
+input verification_tokens_set_input {
+ expires: timestamptz
+ identifier: String
+ token: String
+}
+
+"""
+Streaming cursor of the table "verification_tokens"
+"""
+input verification_tokens_stream_cursor_input {
+ """Stream column input with initial value"""
+ initial_value: verification_tokens_stream_cursor_value_input!
+
+ """cursor ordering"""
+ ordering: cursor_ordering
+}
+
+"""Initial value of the column from where the streaming should start"""
+input verification_tokens_stream_cursor_value_input {
+ expires: timestamptz
+ identifier: String
+ token: String
+}
+
+"""
+update columns of table "verification_tokens"
+"""
+enum verification_tokens_update_column {
+ """column name"""
+ expires
+
+ """column name"""
+ identifier
+
+ """column name"""
+ token
+}
+
+input verification_tokens_updates {
+ """sets the columns of the filtered rows to the given values"""
+ _set: verification_tokens_set_input
+
+ """filter the rows which have to be updated"""
+ where: verification_tokens_bool_exp!
+}
+
diff --git a/packages/adapter-hasura/src/index.ts b/packages/adapter-hasura/src/index.ts
new file mode 100644
index 00000000..c7c1c399
--- /dev/null
+++ b/packages/adapter-hasura/src/index.ts
@@ -0,0 +1,493 @@
+/**
+ *
+ *
Official Hasura adapter for Auth.js / NextAuth.js.
+ *
+ *
+ *
+ *
+ *
+ * ## Installation
+ *
+ * ```bash npm2yarn2pnpm
+ * npm install next-auth @auth/hasura-adapter graphql graphql-request
+ * ```
+ *
+ * @module @auth/hasura-adapter
+ */
+
+import { GraphQLClient } from "graphql-request"
+import type { Adapter, AdapterAccount } from "@auth/core/adapters"
+import { useFragment } from "./lib"
+import {
+ AccountFragmentDoc,
+ CreateAccountDocument,
+ CreateSessionDocument,
+ CreateUserDocument,
+ CreateVerificationTokenDocument,
+ DeleteAccountDocument,
+ DeleteSessionDocument,
+ DeleteUserDocument,
+ DeleteVerificationTokenDocument,
+ GetSessionAndUserDocument,
+ GetUserDocument,
+ GetUsersDocument,
+ SessionFragmentDoc,
+ UpdateSessionDocument,
+ UpdateUserDocument,
+ UserFragmentDoc,
+ VerificationTokenFragmentDoc,
+} from "./lib/graphql"
+import type {
+ AccountFragment,
+ CreateAccountMutation,
+ CreateAccountMutationVariables,
+ CreateSessionMutation,
+ CreateSessionMutationVariables,
+ CreateUserMutation,
+ CreateUserMutationVariables,
+ CreateVerificationTokenMutation,
+ CreateVerificationTokenMutationVariables,
+ DeleteAccountMutation,
+ DeleteAccountMutationVariables,
+ DeleteSessionMutation,
+ DeleteSessionMutationVariables,
+ DeleteUserMutation,
+ DeleteUserMutationVariables,
+ DeleteVerificationTokenMutation,
+ DeleteVerificationTokenMutationVariables,
+ GetSessionAndUserQuery,
+ GetSessionAndUserQueryVariables,
+ GetUserQuery,
+ GetUserQueryVariables,
+ GetUsersQuery,
+ GetUsersQueryVariables,
+ UpdateSessionMutation,
+ UpdateSessionMutationVariables,
+ UpdateUserMutation,
+ UpdateUserMutationVariables,
+} from "./lib/graphql"
+import { formatDateConversion } from "./utils"
+import type { NonNullify } from "./utils"
+
+interface HasuraAdapterArgs {
+ endpoint: string
+ adminSecret: string
+ graphqlRequestOptions?: any
+}
+
+/**
+ *
+ * ## Setup
+ *
+ * 1. Create the next-auth schema in your database using SQL.
+ *
+ * ```sql
+ * CREATE TABLE accounts (
+ * id uuid DEFAULT gen_random_uuid() NOT NULL,
+ * type text NOT NULL,
+ * provider text NOT NULL,
+ * "providerAccountId" text NOT NULL,
+ * refresh_token text,
+ * access_token text,
+ * expires_at integer,
+ * token_type text,
+ * scope text,
+ * id_token text,
+ * session_state text,
+ * "userId" uuid NOT NULL,
+ * );
+ *
+ * CREATE TABLE sessions (
+ * id uuid DEFAULT gen_random_uuid() NOT NULL,
+ * "sessionToken" text NOT NULL,
+ * "userId" uuid NOT NULL,
+ * expires timestamptz NOT NULL
+ * );
+ *
+ * CREATE TABLE users (
+ * id uuid DEFAULT gen_random_uuid() NOT NULL,
+ * name text,
+ * email text NOT NULL,
+ * "emailVerified" timestamptz,
+ * image text
+ * );
+ *
+ * CREATE TABLE verification_tokens (
+ * token text NOT NULL,
+ * identifier text NOT NULL,
+ * expires timestamptz NOT NULL
+ * );
+ *
+ * CREATE TABLE provider_type (
+ * value text NOT NULL
+ * );
+ *
+ * ALTER TABLE ONLY accounts
+ * ADD CONSTRAINT accounts_pkey PRIMARY KEY (id);
+ *
+ * ALTER TABLE ONLY sessions
+ * ADD CONSTRAINT sessions_pkey PRIMARY KEY ("sessionToken");
+ *
+ * ALTER TABLE ONLY users
+ * ADD CONSTRAINT users_email_key UNIQUE (email);
+ *
+ * ALTER TABLE ONLY users
+ * ADD CONSTRAINT users_pkey PRIMARY KEY (id);
+ *
+ * ALTER TABLE ONLY verification_tokens
+ * ADD CONSTRAINT verification_tokens_pkey PRIMARY KEY (token);
+ *
+ * ALTER TABLE ONLY provider_type
+ * ADD CONSTRAINT provider_type_pkey PRIMARY KEY (value);
+ *
+ * ALTER TABLE ONLY accounts
+ * ADD CONSTRAINT "accounts_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE RESTRICT ON DELETE CASCADE;
+ *
+ * ALTER TABLE ONLY sessions
+ * ADD CONSTRAINT "sessions_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE RESTRICT ON DELETE CASCADE;
+ *
+ * INSERT INTO provider_type (value) VALUES ('credentials'), ('email'), ('oauth'), ('oidc');
+ *
+ * ALTER TABLE ONLY accounts
+ * ADD CONSTRAINT "accounts_type_fkey" FOREIGN KEY ("type") REFERENCES public.provider_type(value) ON UPDATE RESTRICT ON DELETE RESTRICT;
+ * ```
+ *
+ * :::info
+ * Tips: [Track all the tables and relationships in Hasura](https://hasura.io/docs/latest/schema/postgres/using-existing-database/#step-1-track-tablesviews)
+ * :::
+ *
+ *1. Configure your NextAuth.js to use the Hasura Adapter:
+ *
+ * ```javascript title="pages/api/auth/[...nextauth].js"
+ * import NextAuth from "next-auth"
+ * import { HasuraAdapter } from "@next-auth/hasura-adapter"
+ *
+ * // For more information on each option (and a full list of options) go to
+ * // https://next-auth.js.org/configuration/options
+ * export default nextAuth({
+ * adapter: HasuraAdapter({
+ * endpoint: "",
+ * adminSecret: "",
+ * graphqlRequestOptions: {
+ * // Optional graphql-request options
+ * },
+ * }),
+ * ...
+ * })
+ * ```
+ *
+ *## Passing dynamic headers
+ *
+ *If you use [graphql-request's dynamic headers feature](https://github.com/prisma-labs/graphql-request#passing-dynamic-headers-to-the-client), you are responsible for passing the 'X-Hasura-Admin-Secret' header
+ *
+ *```js
+ *export default nextAuth({
+ * adapter: HasuraAdapter({
+ * endpoint: "",
+ * adminSecret: "",
+ * graphqlRequestOptions: {
+ * headers: () => ({
+ * "X-Hasura-Admin-Secret": "",
+ * // your headers here
+ * }),
+ * },
+ * }),
+ * ...
+ *})
+ *```
+
+ */
+export const HasuraAdapter = ({
+ endpoint,
+ adminSecret,
+ graphqlRequestOptions,
+}: HasuraAdapterArgs): Adapter => {
+ const client = new GraphQLClient(endpoint, {
+ fetch: fetch ?? undefined,
+ ...graphqlRequestOptions,
+ headers:
+ graphqlRequestOptions?.headers instanceof Function
+ ? graphqlRequestOptions?.headers
+ : {
+ ...graphqlRequestOptions?.headers,
+ "x-hasura-admin-secret": adminSecret,
+ },
+ })
+
+ return {
+ // User
+ createUser: async (newUser) => {
+ const variables: CreateUserMutationVariables = {
+ data: formatDateConversion(newUser, "emailVerified", "toDatabase"),
+ }
+ const { insert_users_one } = await client.request(
+ CreateUserDocument.toString(),
+ variables
+ )
+ const user = useFragment(UserFragmentDoc, insert_users_one)
+
+ if (!user) {
+ throw new Error("Error creating user")
+ }
+ return formatDateConversion(user, "emailVerified", "toJS")
+ },
+ getUser: async (id) => {
+ const variables: GetUserQueryVariables = { id }
+ const { users_by_pk } = await client.request(
+ GetUserDocument.toString(),
+ variables
+ )
+ const user = useFragment(UserFragmentDoc, users_by_pk)
+
+ return user ? formatDateConversion(user, "emailVerified", "toJS") : null
+ },
+ getUserByEmail: async (email) => {
+ const variables: GetUsersQueryVariables = {
+ where: { email: { _eq: email } },
+ }
+ const { users } = await client.request(
+ GetUsersDocument.toString(),
+ variables
+ )
+
+ const user = useFragment(UserFragmentDoc, users?.[0])
+
+ if (!user) return null
+
+ return user ? formatDateConversion(user, "emailVerified", "toJS") : null
+ },
+ getUserByAccount: async ({ providerAccountId, provider }) => {
+ const variables: GetUsersQueryVariables = {
+ where: {
+ accounts: {
+ provider: { _eq: provider },
+ providerAccountId: { _eq: providerAccountId },
+ },
+ },
+ }
+ const { users } = await client.request(
+ GetUsersDocument.toString(),
+ variables
+ )
+ const user = useFragment(UserFragmentDoc, users?.[0])
+
+ if (!user) return null
+
+ return user ? formatDateConversion(user, "emailVerified", "toJS") : null
+ },
+ updateUser: async ({ id, ...data }) => {
+ const variables: UpdateUserMutationVariables = {
+ id,
+ data: formatDateConversion(data, "emailVerified", "toDatabase"),
+ }
+ const { update_users_by_pk } = await client.request(
+ UpdateUserDocument.toString(),
+ variables
+ )
+ const user = useFragment(UserFragmentDoc, update_users_by_pk)
+
+ if (!user) {
+ throw new Error("Error updating user")
+ }
+
+ return formatDateConversion(user, "emailVerified", "toJS")
+ },
+ deleteUser: async (id) => {
+ const variables: DeleteUserMutationVariables = {
+ id,
+ }
+ const { delete_users_by_pk } = await client.request(
+ DeleteUserDocument.toString(),
+ variables
+ )
+ const user = useFragment(UserFragmentDoc, delete_users_by_pk)
+
+ if (!user) {
+ throw new Error("Error deleting user")
+ }
+ return formatDateConversion(user, "emailVerified", "toJS")
+ },
+ // Session
+ createSession: async (data) => {
+ const variables: CreateSessionMutationVariables = {
+ data: formatDateConversion(data, "expires", "toDatabase"),
+ }
+ const { insert_sessions_one } =
+ await client.request(
+ CreateSessionDocument.toString(),
+ variables
+ )
+ const session = useFragment(SessionFragmentDoc, insert_sessions_one)
+
+ if (!session) {
+ throw new Error("Error creating session")
+ }
+ session.expires
+ return formatDateConversion(session, "expires", "toJS")
+ },
+ getSessionAndUser: async (sessionToken) => {
+ const variables: GetSessionAndUserQueryVariables = {
+ sessionToken,
+ }
+ const { sessions } = await client.request(
+ GetSessionAndUserDocument.toString(),
+ variables
+ )
+ const session = sessions?.[0]
+
+ if (!session) {
+ return null
+ }
+
+ const { user, ...sessionData } = session
+
+ return {
+ session: formatDateConversion(
+ useFragment(SessionFragmentDoc, sessionData),
+ "expires",
+ "toJS"
+ ),
+ user: formatDateConversion(
+ useFragment(UserFragmentDoc, user),
+ "emailVerified",
+ "toJS"
+ ),
+ }
+ },
+ updateSession: async ({ sessionToken, ...data }) => {
+ const variables: UpdateSessionMutationVariables = {
+ sessionToken,
+ data: formatDateConversion(data, "expires", "toDatabase"),
+ }
+ const { update_sessions } = await client.request(
+ UpdateSessionDocument.toString(),
+ variables
+ )
+ const session = update_sessions?.returning?.[0]
+
+ if (!session) {
+ return null
+ }
+
+ return formatDateConversion(
+ useFragment(SessionFragmentDoc, session),
+ "expires",
+ "toJS"
+ )
+ },
+ deleteSession: async (sessionToken) => {
+ const variables: DeleteSessionMutationVariables = {
+ sessionToken,
+ }
+ const { delete_sessions } = await client.request(
+ DeleteSessionDocument.toString(),
+ variables
+ )
+ const session = delete_sessions?.returning?.[0]
+
+ if (!session) {
+ return null
+ }
+
+ return formatDateConversion(
+ useFragment(SessionFragmentDoc, session),
+ "expires",
+ "toJS"
+ )
+ },
+ // Account
+ linkAccount: async (data) => {
+ const variables: CreateAccountMutationVariables = { data }
+ const { insert_accounts_one } =
+ await client.request(
+ CreateAccountDocument.toString(),
+ variables
+ )
+
+ if (!insert_accounts_one) {
+ return
+ }
+
+ const account = useFragment(
+ AccountFragmentDoc,
+ insert_accounts_one
+ ) as NonNullify<
+ Omit & { type: "email" | "oauth" | "oidc" }
+ >
+ if (account) {
+ return account as AdapterAccount
+ }
+ },
+ unlinkAccount: async ({ providerAccountId, provider }) => {
+ const variables: DeleteAccountMutationVariables = {
+ provider,
+ providerAccountId,
+ }
+ const { delete_accounts } = await client.request(
+ DeleteAccountDocument.toString(),
+ variables
+ )
+ const account = delete_accounts?.returning[0]
+
+ if (!account) {
+ return undefined
+ }
+
+ const accountFragment = useFragment(
+ AccountFragmentDoc,
+ account
+ ) as NonNullify<
+ Omit & { type: "email" | "oauth" | "oidc" }
+ >
+ if (accountFragment) {
+ return accountFragment as AdapterAccount
+ }
+ },
+ // Verification Token
+ createVerificationToken: async (data) => {
+ const variables: CreateVerificationTokenMutationVariables = {
+ data: formatDateConversion(data, "expires", "toDatabase"),
+ }
+ const { insert_verification_tokens_one } =
+ await client.request(
+ CreateVerificationTokenDocument.toString(),
+ variables
+ )
+
+ if (!insert_verification_tokens_one) {
+ return null
+ }
+
+ return formatDateConversion(
+ useFragment(
+ VerificationTokenFragmentDoc,
+ insert_verification_tokens_one
+ ),
+ "expires",
+ "toJS"
+ )
+ },
+ useVerificationToken: async ({ identifier, token }) => {
+ const variables: DeleteVerificationTokenMutationVariables = {
+ identifier,
+ token,
+ }
+ const { delete_verification_tokens } =
+ await client.request(
+ DeleteVerificationTokenDocument.toString(),
+ variables
+ )
+ const verificationToken = delete_verification_tokens?.returning?.[0]
+
+ if (!verificationToken) {
+ return null
+ }
+
+ return formatDateConversion(
+ useFragment(VerificationTokenFragmentDoc, verificationToken),
+ "expires",
+ "toJS"
+ )
+ },
+ }
+}
diff --git a/packages/adapter-hasura/src/lib/.gitignore b/packages/adapter-hasura/src/lib/.gitignore
new file mode 100644
index 00000000..d6b7ef32
--- /dev/null
+++ b/packages/adapter-hasura/src/lib/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/packages/adapter-hasura/src/queries/account.graphql b/packages/adapter-hasura/src/queries/account.graphql
new file mode 100644
index 00000000..907ac6dd
--- /dev/null
+++ b/packages/adapter-hasura/src/queries/account.graphql
@@ -0,0 +1,29 @@
+mutation CreateAccount($data: accounts_insert_input!) {
+ insert_accounts_one(object: $data) {
+ ...Account
+ }
+}
+
+mutation DeleteAccount($provider: String!, $providerAccountId: String!) {
+ delete_accounts(
+ where: {
+ provider: { _eq: $provider }
+ providerAccountId: { _eq: $providerAccountId }
+ }
+ ) {
+ returning {
+ ...Account
+ }
+ }
+}
+
+query GetAccount($provider: String!, $providerAccountId: String!) {
+ accounts(
+ where: {
+ provider: { _eq: $provider }
+ providerAccountId: { _eq: $providerAccountId }
+ }
+ ) {
+ ...Account
+ }
+}
diff --git a/packages/adapter-hasura/src/queries/delete.graphql b/packages/adapter-hasura/src/queries/delete.graphql
new file mode 100644
index 00000000..f10f7bf9
--- /dev/null
+++ b/packages/adapter-hasura/src/queries/delete.graphql
@@ -0,0 +1,14 @@
+mutation DeleteAll {
+ delete_accounts(where: {}) {
+ affected_rows
+ }
+ delete_sessions(where: {}) {
+ affected_rows
+ }
+ delete_users(where: {}) {
+ affected_rows
+ }
+ delete_verification_tokens(where: {}) {
+ affected_rows
+ }
+}
diff --git a/packages/adapter-hasura/src/queries/fragments.graphql b/packages/adapter-hasura/src/queries/fragments.graphql
new file mode 100644
index 00000000..4dcfcc85
--- /dev/null
+++ b/packages/adapter-hasura/src/queries/fragments.graphql
@@ -0,0 +1,35 @@
+fragment User on users {
+ id
+ name
+ email
+ image
+ emailVerified
+}
+
+fragment Session on sessions {
+ id
+ userId
+ expires
+ sessionToken
+}
+
+fragment Account on accounts {
+ id
+ type
+ scope
+ userId
+ id_token
+ provider
+ expires_at
+ token_type
+ access_token
+ refresh_token
+ session_state
+ providerAccountId
+}
+
+fragment VerificationToken on verification_tokens {
+ token
+ expires
+ identifier
+}
diff --git a/packages/adapter-hasura/src/queries/session.graphql b/packages/adapter-hasura/src/queries/session.graphql
new file mode 100644
index 00000000..46cc3962
--- /dev/null
+++ b/packages/adapter-hasura/src/queries/session.graphql
@@ -0,0 +1,39 @@
+query GetSessionAndUser($sessionToken: String!) {
+ sessions(where: { sessionToken: { _eq: $sessionToken } }) {
+ ...Session
+ user {
+ ...User
+ }
+ }
+}
+
+query GetSession($sessionToken: String!) {
+ sessions_by_pk(sessionToken: $sessionToken) {
+ ...Session
+ }
+}
+
+mutation CreateSession($data: sessions_insert_input!) {
+ insert_sessions_one(object: $data) {
+ ...Session
+ }
+}
+
+mutation UpdateSession($sessionToken: String, $data: sessions_set_input!) {
+ update_sessions(
+ where: { sessionToken: { _eq: $sessionToken } }
+ _set: $data
+ ) {
+ returning {
+ ...Session
+ }
+ }
+}
+
+mutation DeleteSession($sessionToken: String!) {
+ delete_sessions(where: { sessionToken: { _eq: $sessionToken } }) {
+ returning {
+ ...Session
+ }
+ }
+}
diff --git a/packages/adapter-hasura/src/queries/user.graphql b/packages/adapter-hasura/src/queries/user.graphql
new file mode 100644
index 00000000..e82a55a4
--- /dev/null
+++ b/packages/adapter-hasura/src/queries/user.graphql
@@ -0,0 +1,29 @@
+query GetUser($id: uuid!) {
+ users_by_pk(id: $id) {
+ ...User
+ }
+}
+
+query GetUsers($where: users_bool_exp!) {
+ users(where: $where) {
+ ...User
+ }
+}
+
+mutation CreateUser($data: users_insert_input!) {
+ insert_users_one(object: $data) {
+ ...User
+ }
+}
+
+mutation UpdateUser($id: uuid!, $data: users_set_input!) {
+ update_users_by_pk(pk_columns: { id: $id }, _set: $data) {
+ ...User
+ }
+}
+
+mutation DeleteUser($id: uuid!) {
+ delete_users_by_pk(id: $id) {
+ ...User
+ }
+}
diff --git a/packages/adapter-hasura/src/queries/verification-token.graphql b/packages/adapter-hasura/src/queries/verification-token.graphql
new file mode 100644
index 00000000..2ae5b4f3
--- /dev/null
+++ b/packages/adapter-hasura/src/queries/verification-token.graphql
@@ -0,0 +1,23 @@
+mutation CreateVerificationToken($data: verification_tokens_insert_input!) {
+ insert_verification_tokens_one(object: $data) {
+ ...VerificationToken
+ }
+}
+
+mutation DeleteVerificationToken($identifier: String!, $token: String!) {
+ delete_verification_tokens(
+ where: { token: { _eq: $token }, identifier: { _eq: $identifier } }
+ ) {
+ returning {
+ ...VerificationToken
+ }
+ }
+}
+
+query GetVerificationToken($identifier: String!, $token: String!) {
+ verification_tokens(
+ where: { token: { _eq: $token }, identifier: { _eq: $identifier } }
+ ) {
+ ...VerificationToken
+ }
+}
diff --git a/packages/adapter-hasura/src/utils.ts b/packages/adapter-hasura/src/utils.ts
new file mode 100644
index 00000000..dd9582ab
--- /dev/null
+++ b/packages/adapter-hasura/src/utils.ts
@@ -0,0 +1,47 @@
+export type NonNullify = {
+ [K in keyof T]: T[K] extends null | infer U ? U : T[K]
+}
+
+type FormatToJS = T[K] extends string
+ ? Omit & Record
+ : Omit & Record
+
+type FormatToDatabase = T[K] extends Date
+ ? Omit & Record
+ : Omit & Record
+
+export function formatDateConversion(
+ object: T,
+ key: K,
+ direction: "toJS"
+): FormatToJS
+
+export function formatDateConversion(
+ object: T,
+ key: K,
+ direction: "toDatabase"
+): FormatToDatabase
+
+export function formatDateConversion(
+ object: T,
+ key: K,
+ direction: "toJS" | "toDatabase"
+) {
+ if (!object) return object
+
+ const value = object[key]
+
+ if (value === undefined) return object
+
+ if (direction === "toJS") {
+ return {
+ ...object,
+ [key]: value ? new Date(value as string) : null,
+ } as FormatToJS
+ } else {
+ return {
+ ...object,
+ [key]: value ? (value as unknown as Date).toISOString() : null,
+ } as FormatToDatabase
+ }
+}
diff --git a/packages/adapter-hasura/tests/index.test.ts b/packages/adapter-hasura/tests/index.test.ts
new file mode 100644
index 00000000..c87c883d
--- /dev/null
+++ b/packages/adapter-hasura/tests/index.test.ts
@@ -0,0 +1,110 @@
+import { runBasicTests } from "@auth/adapter-test"
+import { GraphQLClient } from "graphql-request"
+import { HasuraAdapter } from "../src"
+import { useFragment } from "../src/lib"
+import {
+ AccountFragmentDoc,
+ DeleteAllDocument,
+ GetAccountDocument,
+ GetSessionDocument,
+ GetUserDocument,
+ GetVerificationTokenDocument,
+ SessionFragmentDoc,
+ UserFragmentDoc,
+ VerificationTokenFragmentDoc,
+} from "../src/lib/graphql"
+import type {
+ GetAccountQuery,
+ GetAccountQueryVariables,
+ GetSessionQuery,
+ GetSessionQueryVariables,
+ GetUserQuery,
+ GetUserQueryVariables,
+ GetVerificationTokenQuery,
+ GetVerificationTokenQueryVariables,
+} from "../src/lib/graphql"
+import { formatDateConversion } from "../src/utils"
+
+const client = new GraphQLClient("http://localhost:8080/v1/graphql", {
+ headers: {
+ "x-hasura-admin-secret": "myadminsecretkey",
+ },
+})
+
+runBasicTests({
+ adapter: HasuraAdapter({
+ adminSecret: "myadminsecretkey",
+ endpoint: "http://localhost:8080/v1/graphql",
+ }),
+ db: {
+ connect: async () => {
+ await client.request(DeleteAllDocument.toString())
+ },
+ disconnect: async () => {
+ await client.request(DeleteAllDocument.toString())
+ },
+ user: async (id) => {
+ const variables: GetUserQueryVariables = { id }
+ const { users_by_pk } = await client.request(
+ GetUserDocument.toString(),
+ variables
+ )
+ const user = useFragment(UserFragmentDoc, users_by_pk)
+
+ return user ? formatDateConversion(user, "emailVerified", "toJS") : null
+ },
+ account: async ({ providerAccountId, provider }) => {
+ const variables: GetAccountQueryVariables = {
+ provider,
+ providerAccountId,
+ }
+ const { accounts } = await client.request(
+ GetAccountDocument.toString(),
+ variables
+ )
+
+ const account = useFragment(AccountFragmentDoc, accounts?.[0])
+ return account ?? null
+ },
+ session: async (sessionToken) => {
+ const variables: GetSessionQueryVariables = {
+ sessionToken,
+ }
+ const { sessions_by_pk } = await client.request(
+ GetSessionDocument.toString(),
+ variables
+ )
+ if (!sessions_by_pk) {
+ return null
+ }
+
+ return formatDateConversion(
+ useFragment(SessionFragmentDoc, sessions_by_pk),
+ "expires",
+ "toJS"
+ )
+ },
+ verificationToken: async ({ identifier, token }) => {
+ const variables: GetVerificationTokenQueryVariables = {
+ identifier,
+ token,
+ }
+ const { verification_tokens } =
+ await client.request(
+ GetVerificationTokenDocument.toString(),
+ variables
+ )
+ const verificationToken = verification_tokens?.[0]
+
+ if (!verificationToken) {
+ return null
+ }
+
+ return formatDateConversion(
+ useFragment(VerificationTokenFragmentDoc, verificationToken),
+ "expires",
+ "toJS"
+ )
+ },
+ },
+})
diff --git a/packages/adapter-hasura/tests/test.sh b/packages/adapter-hasura/tests/test.sh
new file mode 100755
index 00000000..048cc8af
--- /dev/null
+++ b/packages/adapter-hasura/tests/test.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+
+# Start Hasura
+docker-compose up -d
+
+echo "Waiting 5 sec for Hasura to start..."
+sleep 5
+
+# Always stop container, but exit with 1 when tests are failing
+if npx jest;then
+ docker compose down -v
+else
+ docker compose down -v && exit 1
+fi
diff --git a/packages/adapter-hasura/tsconfig.json b/packages/adapter-hasura/tsconfig.json
new file mode 100644
index 00000000..a24e2d98
--- /dev/null
+++ b/packages/adapter-hasura/tsconfig.json
@@ -0,0 +1,21 @@
+{
+ "extends": "@auth/tsconfig/tsconfig.base.json",
+ "compilerOptions": {
+ "allowJs": true,
+ "baseUrl": ".",
+ "isolatedModules": true,
+ "target": "ES2020",
+ "module": "ESNext",
+ "moduleResolution": "node",
+ "outDir": ".",
+ "rootDir": "src",
+ "skipDefaultLibCheck": true,
+ "strictNullChecks": true,
+ "stripInternal": true,
+ "declarationMap": true,
+ "declaration": true,
+ "verbatimModuleSyntax": true
+ },
+ "include": ["src/**/*"],
+ "exclude": ["*.js", "*.d.ts"]
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6c97d7e3..c17a88ff 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -466,6 +466,40 @@ importers:
specifier: ^29.3.1
version: 29.3.1(@types/node@18.16.3)
+ packages/adapter-hasura:
+ dependencies:
+ '@auth/core':
+ specifier: workspace:*
+ version: link:../core
+ devDependencies:
+ '@auth/adapter-test':
+ specifier: workspace:*
+ version: link:../adapter-test
+ '@auth/tsconfig':
+ specifier: workspace:*
+ version: link:../tsconfig
+ '@graphql-codegen/cli':
+ specifier: ^5.0.0
+ version: 5.0.0(@types/node@18.16.3)(graphql@16.8.1)(typescript@5.2.2)
+ '@graphql-codegen/client-preset':
+ specifier: ^4.1.0
+ version: 4.1.0(graphql@16.8.1)
+ '@graphql-typed-document-node/core':
+ specifier: ^3.2.0
+ version: 3.2.0(graphql@16.8.1)
+ graphql:
+ specifier: ^16.8.1
+ version: 16.8.1
+ graphql-request:
+ specifier: ^6.1.0
+ version: 6.1.0(graphql@16.8.1)
+ jest:
+ specifier: ^29.7.0
+ version: 29.7.0(@types/node@18.16.3)
+ typescript:
+ specifier: ^5.2.2
+ version: 5.2.2
+
packages/adapter-kysely:
dependencies:
'@auth/core':
@@ -1227,6 +1261,44 @@ packages:
js-yaml: 4.1.0
dev: true
+ /@ardatan/relay-compiler@12.0.0(graphql@16.8.1):
+ resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==}
+ hasBin: true
+ peerDependencies:
+ graphql: '*'
+ dependencies:
+ '@babel/core': 7.22.1
+ '@babel/generator': 7.22.3
+ '@babel/parser': 7.22.4
+ '@babel/runtime': 7.20.13
+ '@babel/traverse': 7.22.4
+ '@babel/types': 7.22.4
+ babel-preset-fbjs: 3.4.0(@babel/core@7.22.1)
+ chalk: 4.1.2
+ fb-watchman: 2.0.1
+ fbjs: 3.0.4
+ glob: 7.2.3
+ graphql: 16.8.1
+ immutable: 3.7.6
+ invariant: 2.2.4
+ nullthrows: 1.1.1
+ relay-runtime: 12.0.0
+ signedsource: 1.0.0
+ yargs: 15.4.1
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ dev: true
+
+ /@ardatan/sync-fetch@0.0.1:
+ resolution: {integrity: sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==}
+ engines: {node: '>=14'}
+ dependencies:
+ node-fetch: 2.6.9
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
/@aws-crypto/crc32@3.0.0:
resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==}
requiresBuild: true
@@ -2683,6 +2755,14 @@ packages:
dependencies:
'@babel/highlight': 7.18.6
+ /@babel/code-frame@7.22.13:
+ resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/highlight': 7.22.20
+ chalk: 2.4.2
+ dev: true
+
/@babel/compat-data@7.18.5:
resolution: {integrity: sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==}
engines: {node: '>=6.9.0'}
@@ -2692,6 +2772,11 @@ packages:
resolution: {integrity: sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==}
engines: {node: '>=6.9.0'}
+ /@babel/compat-data@7.22.20:
+ resolution: {integrity: sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
/@babel/compat-data@7.22.3:
resolution: {integrity: sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==}
engines: {node: '>=6.9.0'}
@@ -2787,6 +2872,29 @@ packages:
transitivePeerDependencies:
- supports-color
+ /@babel/core@7.23.0:
+ resolution: {integrity: sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@ampproject/remapping': 2.2.0
+ '@babel/code-frame': 7.22.13
+ '@babel/generator': 7.23.0
+ '@babel/helper-compilation-targets': 7.22.15
+ '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0)
+ '@babel/helpers': 7.23.1
+ '@babel/parser': 7.23.0
+ '@babel/template': 7.22.15
+ '@babel/traverse': 7.23.0
+ '@babel/types': 7.23.0
+ convert-source-map: 2.0.0
+ debug: 4.3.4(supports-color@7.2.0)
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@babel/generator@7.18.2:
resolution: {integrity: sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==}
engines: {node: '>=6.9.0'}
@@ -2812,6 +2920,16 @@ packages:
'@jridgewell/trace-mapping': 0.3.17
jsesc: 2.5.2
+ /@babel/generator@7.23.0:
+ resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.23.0
+ '@jridgewell/gen-mapping': 0.3.2
+ '@jridgewell/trace-mapping': 0.3.17
+ jsesc: 2.5.2
+ dev: true
+
/@babel/helper-annotate-as-pure@7.18.6:
resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==}
engines: {node: '>=6.9.0'}
@@ -2920,6 +3038,17 @@ packages:
lru-cache: 5.1.1
semver: 6.3.0
+ /@babel/helper-compilation-targets@7.22.15:
+ resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/compat-data': 7.22.20
+ '@babel/helper-validator-option': 7.22.15
+ browserslist: 4.22.1
+ lru-cache: 5.1.1
+ semver: 6.3.1
+ dev: true
+
/@babel/helper-create-class-features-plugin@7.20.2(@babel/core@7.18.5):
resolution: {integrity: sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==}
engines: {node: '>=6.9.0'}
@@ -3063,6 +3192,11 @@ packages:
resolution: {integrity: sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==}
engines: {node: '>=6.9.0'}
+ /@babel/helper-environment-visitor@7.22.20:
+ resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
/@babel/helper-explode-assignable-expression@7.18.6:
resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==}
engines: {node: '>=6.9.0'}
@@ -3084,12 +3218,27 @@ packages:
'@babel/template': 7.21.9
'@babel/types': 7.22.4
+ /@babel/helper-function-name@7.23.0:
+ resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.22.15
+ '@babel/types': 7.23.0
+ dev: true
+
/@babel/helper-hoist-variables@7.18.6:
resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.22.4
+ /@babel/helper-hoist-variables@7.22.5:
+ resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.23.0
+ dev: true
+
/@babel/helper-member-expression-to-functions@7.20.7:
resolution: {integrity: sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==}
engines: {node: '>=6.9.0'}
@@ -3123,6 +3272,13 @@ packages:
dependencies:
'@babel/types': 7.22.4
+ /@babel/helper-module-imports@7.22.15:
+ resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.23.0
+ dev: true
+
/@babel/helper-module-transforms@7.18.0:
resolution: {integrity: sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==}
engines: {node: '>=6.9.0'}
@@ -3169,6 +3325,20 @@ packages:
transitivePeerDependencies:
- supports-color
+ /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.0):
+ resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.23.0
+ '@babel/helper-environment-visitor': 7.22.20
+ '@babel/helper-module-imports': 7.22.15
+ '@babel/helper-simple-access': 7.22.5
+ '@babel/helper-split-export-declaration': 7.22.6
+ '@babel/helper-validator-identifier': 7.22.20
+ dev: true
+
/@babel/helper-optimise-call-expression@7.18.6:
resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==}
engines: {node: '>=6.9.0'}
@@ -3193,6 +3363,11 @@ packages:
resolution: {integrity: sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==}
engines: {node: '>=6.9.0'}
+ /@babel/helper-plugin-utils@7.22.5:
+ resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
/@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.18.5):
resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==}
engines: {node: '>=6.9.0'}
@@ -3264,6 +3439,13 @@ packages:
dependencies:
'@babel/types': 7.22.4
+ /@babel/helper-simple-access@7.22.5:
+ resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.23.0
+ dev: true
+
/@babel/helper-skip-transparent-expression-wrappers@7.20.0:
resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==}
engines: {node: '>=6.9.0'}
@@ -3277,14 +3459,31 @@ packages:
dependencies:
'@babel/types': 7.22.4
+ /@babel/helper-split-export-declaration@7.22.6:
+ resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.23.0
+ dev: true
+
/@babel/helper-string-parser@7.21.5:
resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==}
engines: {node: '>=6.9.0'}
+ /@babel/helper-string-parser@7.22.5:
+ resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
/@babel/helper-validator-identifier@7.19.1:
resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
engines: {node: '>=6.9.0'}
+ /@babel/helper-validator-identifier@7.22.20:
+ resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
/@babel/helper-validator-option@7.16.7:
resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==}
engines: {node: '>=6.9.0'}
@@ -3298,6 +3497,11 @@ packages:
resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==}
engines: {node: '>=6.9.0'}
+ /@babel/helper-validator-option@7.22.15:
+ resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
/@babel/helper-wrap-function@7.19.0:
resolution: {integrity: sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==}
engines: {node: '>=6.9.0'}
@@ -3330,6 +3534,17 @@ packages:
transitivePeerDependencies:
- supports-color
+ /@babel/helpers@7.23.1:
+ resolution: {integrity: sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.22.15
+ '@babel/traverse': 7.23.0
+ '@babel/types': 7.23.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@babel/highlight@7.18.6:
resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==}
engines: {node: '>=6.9.0'}
@@ -3338,6 +3553,15 @@ packages:
chalk: 2.4.2
js-tokens: 4.0.0
+ /@babel/highlight@7.22.20:
+ resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.22.20
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ dev: true
+
/@babel/parser@7.18.5:
resolution: {integrity: sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==}
engines: {node: '>=6.0.0'}
@@ -3359,6 +3583,14 @@ packages:
dependencies:
'@babel/types': 7.22.4
+ /@babel/parser@7.23.0:
+ resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ '@babel/types': 7.23.0
+ dev: true
+
/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.17.12(@babel/core@7.18.5):
resolution: {integrity: sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==}
engines: {node: '>=6.9.0'}
@@ -4359,6 +4591,16 @@ packages:
'@babel/helper-plugin-utils': 7.20.2
dev: true
+ /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.1):
+ resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.22.1
+ '@babel/helper-plugin-utils': 7.22.5
+ dev: true
+
/@babel/plugin-syntax-import-assertions@7.17.12(@babel/core@7.18.5):
resolution: {integrity: sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==}
engines: {node: '>=6.9.0'}
@@ -4399,6 +4641,16 @@ packages:
'@babel/helper-plugin-utils': 7.21.5
dev: true
+ /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.23.0):
+ resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.23.0
+ '@babel/helper-plugin-utils': 7.21.5
+ dev: true
+
/@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.1):
resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
peerDependencies:
@@ -5199,6 +5451,17 @@ packages:
'@babel/helper-plugin-utils': 7.21.5
dev: true
+ /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.1):
+ resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.22.1
+ '@babel/helper-plugin-utils': 7.22.5
+ '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.1)
+ dev: true
+
/@babel/plugin-transform-for-of@7.18.1(@babel/core@7.18.5):
resolution: {integrity: sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==}
engines: {node: '>=6.9.0'}
@@ -6901,6 +7164,15 @@ packages:
'@babel/parser': 7.22.4
'@babel/types': 7.22.4
+ /@babel/template@7.22.15:
+ resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.22.13
+ '@babel/parser': 7.23.0
+ '@babel/types': 7.23.0
+ dev: true
+
/@babel/traverse@7.18.5:
resolution: {integrity: sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==}
engines: {node: '>=6.9.0'}
@@ -6970,6 +7242,24 @@ packages:
transitivePeerDependencies:
- supports-color
+ /@babel/traverse@7.23.0:
+ resolution: {integrity: sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.22.13
+ '@babel/generator': 7.23.0
+ '@babel/helper-environment-visitor': 7.22.20
+ '@babel/helper-function-name': 7.23.0
+ '@babel/helper-hoist-variables': 7.22.5
+ '@babel/helper-split-export-declaration': 7.22.6
+ '@babel/parser': 7.23.0
+ '@babel/types': 7.23.0
+ debug: 4.3.4(supports-color@7.2.0)
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@babel/types@7.18.4:
resolution: {integrity: sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==}
engines: {node: '>=6.9.0'}
@@ -6993,6 +7283,15 @@ packages:
'@babel/helper-validator-identifier': 7.19.1
to-fast-properties: 2.0.0
+ /@babel/types@7.23.0:
+ resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-string-parser': 7.22.5
+ '@babel/helper-validator-identifier': 7.22.20
+ to-fast-properties: 2.0.0
+ dev: true
+
/@balazsorban/monorepo-release@0.3.1(patch_hash=lwil2v6lrmyuiogkuptpgelrem):
resolution: {integrity: sha512-ZMd6WVcUkGFYTkqPMTxAeNGrIfMZneKiIDOo1gC/NqWjGSC69zVCFQDASKPwWitJoYj3qWIlL9PXFiQ0J0ikGQ==}
engines: {node: '>=18.18.0'}
@@ -8869,6 +9168,605 @@ packages:
dev: true
optional: true
+ /@graphql-codegen/add@5.0.0(graphql@16.8.1):
+ resolution: {integrity: sha512-ynWDOsK2yxtFHwcJTB9shoSkUd7YXd6ZE57f0nk7W5cu/nAgxZZpEsnTPEpZB/Mjf14YRGe2uJHQ7AfElHjqUQ==}
+ 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
+ dependencies:
+ '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1)
+ graphql: 16.8.1
+ tslib: 2.5.2
+ dev: true
+
+ /@graphql-codegen/cli@5.0.0(@types/node@18.16.3)(graphql@16.8.1)(typescript@5.2.2):
+ resolution: {integrity: sha512-A7J7+be/a6e+/ul2KI5sfJlpoqeqwX8EzktaKCeduyVKgOLA6W5t+NUGf6QumBDXU8PEOqXk3o3F+RAwCWOiqA==}
+ hasBin: true
+ peerDependencies:
+ '@parcel/watcher': ^2.1.0
+ 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
+ peerDependenciesMeta:
+ '@parcel/watcher':
+ optional: true
+ dependencies:
+ '@babel/generator': 7.22.3
+ '@babel/template': 7.21.9
+ '@babel/types': 7.22.4
+ '@graphql-codegen/core': 4.0.0(graphql@16.8.1)
+ '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1)
+ '@graphql-tools/apollo-engine-loader': 8.0.0(graphql@16.8.1)
+ '@graphql-tools/code-file-loader': 8.0.2(graphql@16.8.1)
+ '@graphql-tools/git-loader': 8.0.2(graphql@16.8.1)
+ '@graphql-tools/github-loader': 8.0.0(@types/node@18.16.3)(graphql@16.8.1)
+ '@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.8.1)
+ '@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1)
+ '@graphql-tools/load': 8.0.0(graphql@16.8.1)
+ '@graphql-tools/prisma-loader': 8.0.1(@types/node@18.16.3)(graphql@16.8.1)
+ '@graphql-tools/url-loader': 8.0.0(@types/node@18.16.3)(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ '@whatwg-node/fetch': 0.8.8
+ chalk: 4.1.2
+ cosmiconfig: 8.3.6(typescript@5.2.2)
+ debounce: 1.2.1
+ detect-indent: 6.1.0
+ graphql: 16.8.1
+ graphql-config: 5.0.2(@types/node@18.16.3)(graphql@16.8.1)(typescript@5.2.2)
+ inquirer: 8.2.4
+ is-glob: 4.0.3
+ jiti: 1.20.0
+ json-to-pretty-yaml: 1.2.2
+ listr2: 4.0.5
+ log-symbols: 4.1.0
+ micromatch: 4.0.5
+ shell-quote: 1.7.3
+ string-env-interpolation: 1.0.1
+ ts-log: 2.2.5
+ tslib: 2.5.2
+ yaml: 2.3.2
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - bufferutil
+ - cosmiconfig-toml-loader
+ - encoding
+ - enquirer
+ - supports-color
+ - typescript
+ - utf-8-validate
+ dev: true
+
+ /@graphql-codegen/client-preset@4.1.0(graphql@16.8.1):
+ resolution: {integrity: sha512-/3Ymb/fjxIF1+HGmaI1YwSZbWsrZAWMSQjh3dU425eBjctjsVQ6gzGRr+l/gE5F1mtmCf+vlbTAT03heAc/QIw==}
+ 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
+ dependencies:
+ '@babel/helper-plugin-utils': 7.21.5
+ '@babel/template': 7.21.9
+ '@graphql-codegen/add': 5.0.0(graphql@16.8.1)
+ '@graphql-codegen/gql-tag-operations': 4.0.1(graphql@16.8.1)
+ '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1)
+ '@graphql-codegen/typed-document-node': 5.0.1(graphql@16.8.1)
+ '@graphql-codegen/typescript': 4.0.1(graphql@16.8.1)
+ '@graphql-codegen/typescript-operations': 4.0.1(graphql@16.8.1)
+ '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1)
+ '@graphql-tools/documents': 1.0.0(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1)
+ graphql: 16.8.1
+ tslib: 2.5.2
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ dev: true
+
+ /@graphql-codegen/core@4.0.0(graphql@16.8.1):
+ resolution: {integrity: sha512-JAGRn49lEtSsZVxeIlFVIRxts2lWObR+OQo7V2LHDJ7ohYYw3ilv7nJ8pf8P4GTg/w6ptcYdSdVVdkI8kUHB/Q==}
+ 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
+ dependencies:
+ '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1)
+ '@graphql-tools/schema': 10.0.0(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ graphql: 16.8.1
+ tslib: 2.5.2
+ dev: true
+
+ /@graphql-codegen/gql-tag-operations@4.0.1(graphql@16.8.1):
+ resolution: {integrity: sha512-qF6wIbBzW8BNT+wiVsBxrYOs2oYcsxQ7mRvCpfEI3HnNZMAST/uX76W8MqFEJvj4mw7NIDv7xYJAcAZIWM5LWw==}
+ 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
+ dependencies:
+ '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1)
+ '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ auto-bind: 4.0.0
+ graphql: 16.8.1
+ tslib: 2.5.2
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ dev: true
+
+ /@graphql-codegen/plugin-helpers@5.0.1(graphql@16.8.1):
+ resolution: {integrity: sha512-6L5sb9D8wptZhnhLLBcheSPU7Tg//DGWgc5tQBWX46KYTOTQHGqDpv50FxAJJOyFVJrveN9otWk9UT9/yfY4ww==}
+ 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
+ dependencies:
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ change-case-all: 1.0.15
+ common-tags: 1.8.2
+ graphql: 16.8.1
+ import-from: 4.0.0
+ lodash: 4.17.21
+ tslib: 2.5.2
+ dev: true
+
+ /@graphql-codegen/schema-ast@4.0.0(graphql@16.8.1):
+ resolution: {integrity: sha512-WIzkJFa9Gz28FITAPILbt+7A8+yzOyd1NxgwFh7ie+EmO9a5zQK6UQ3U/BviirguXCYnn+AR4dXsoDrSrtRA1g==}
+ 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
+ dependencies:
+ '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ graphql: 16.8.1
+ tslib: 2.5.2
+ dev: true
+
+ /@graphql-codegen/typed-document-node@5.0.1(graphql@16.8.1):
+ resolution: {integrity: sha512-VFkhCuJnkgtbbgzoCAwTdJe2G1H6sd3LfCrDqWUrQe53y2ukfSb5Ov1PhAIkCBStKCMQBUY9YgGz9GKR40qQ8g==}
+ 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
+ dependencies:
+ '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1)
+ '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1)
+ auto-bind: 4.0.0
+ change-case-all: 1.0.15
+ graphql: 16.8.1
+ tslib: 2.5.2
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ dev: true
+
+ /@graphql-codegen/typescript-operations@4.0.1(graphql@16.8.1):
+ resolution: {integrity: sha512-GpUWWdBVUec/Zqo23aFLBMrXYxN2irypHqDcKjN78JclDPdreasAEPcIpMfqf4MClvpmvDLy4ql+djVAwmkjbw==}
+ 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
+ dependencies:
+ '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1)
+ '@graphql-codegen/typescript': 4.0.1(graphql@16.8.1)
+ '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1)
+ auto-bind: 4.0.0
+ graphql: 16.8.1
+ tslib: 2.5.2
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ dev: true
+
+ /@graphql-codegen/typescript@4.0.1(graphql@16.8.1):
+ resolution: {integrity: sha512-3YziQ21dCVdnHb+Us1uDb3pA6eG5Chjv0uTK+bt9dXeMlwYBU8MbtzvQTo4qvzWVC1AxSOKj0rgfNu1xCXqJyA==}
+ peerDependencies:
+ graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0
+ dependencies:
+ '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1)
+ '@graphql-codegen/schema-ast': 4.0.0(graphql@16.8.1)
+ '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1)
+ auto-bind: 4.0.0
+ graphql: 16.8.1
+ tslib: 2.5.2
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ dev: true
+
+ /@graphql-codegen/visitor-plugin-common@4.0.1(graphql@16.8.1):
+ resolution: {integrity: sha512-Bi/1z0nHg4QMsAqAJhds+ForyLtk7A3HQOlkrZNm3xEkY7lcBzPtiOTLBtvziwopBsXUxqeSwVjOOFPLS5Yw1Q==}
+ 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
+ dependencies:
+ '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1)
+ '@graphql-tools/optimize': 2.0.0(graphql@16.8.1)
+ '@graphql-tools/relay-operation-optimizer': 7.0.0(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ auto-bind: 4.0.0
+ change-case-all: 1.0.15
+ dependency-graph: 0.11.0
+ graphql: 16.8.1
+ graphql-tag: 2.12.6(graphql@16.8.1)
+ parse-filepath: 1.0.2
+ tslib: 2.5.2
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ dev: true
+
+ /@graphql-tools/apollo-engine-loader@8.0.0(graphql@16.8.1):
+ resolution: {integrity: sha512-axQTbN5+Yxs1rJ6cWQBOfw3AEeC+fvIuZSfJLPLLvFJLj4pUm9fhxey/g6oQZAAQJqKPfw+tLDUQvnfvRK8Kmg==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@ardatan/sync-fetch': 0.0.1
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ '@whatwg-node/fetch': 0.9.13
+ graphql: 16.8.1
+ tslib: 2.5.2
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
+ /@graphql-tools/batch-execute@9.0.2(graphql@16.8.1):
+ resolution: {integrity: sha512-Y2uwdZI6ZnatopD/SYfZ1eGuQFI7OU2KGZ2/B/7G9ISmgMl5K+ZZWz/PfIEXeiHirIDhyk54s4uka5rj2xwKqQ==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ dataloader: 2.2.2
+ graphql: 16.8.1
+ tslib: 2.5.2
+ value-or-promise: 1.0.12
+ dev: true
+
+ /@graphql-tools/code-file-loader@8.0.2(graphql@16.8.1):
+ resolution: {integrity: sha512-AKNpkElUL2cWocYpC4DzNEpo6qJw8Lp+L3bKQ/mIfmbsQxgLz5uve6zHBMhDaFPdlwfIox41N3iUSvi77t9e8A==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/graphql-tag-pluck': 8.0.2(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ globby: 11.1.0
+ graphql: 16.8.1
+ tslib: 2.5.2
+ unixify: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@graphql-tools/delegate@10.0.3(graphql@16.8.1):
+ resolution: {integrity: sha512-Jor9oazZ07zuWkykD3OOhT/2XD74Zm6Ar0ENZMk75MDD51wB2UWUIMljtHxbJhV5A6UBC2v8x6iY0xdCGiIlyw==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/batch-execute': 9.0.2(graphql@16.8.1)
+ '@graphql-tools/executor': 1.2.0(graphql@16.8.1)
+ '@graphql-tools/schema': 10.0.0(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ dataloader: 2.2.2
+ graphql: 16.8.1
+ tslib: 2.5.2
+ dev: true
+
+ /@graphql-tools/documents@1.0.0(graphql@16.8.1):
+ resolution: {integrity: sha512-rHGjX1vg/nZ2DKqRGfDPNC55CWZBMldEVcH+91BThRa6JeT80NqXknffLLEZLRUxyikCfkwMsk6xR3UNMqG0Rg==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ graphql: 16.8.1
+ lodash.sortby: 4.7.0
+ tslib: 2.5.2
+ dev: true
+
+ /@graphql-tools/executor-graphql-ws@1.1.0(graphql@16.8.1):
+ resolution: {integrity: sha512-yM67SzwE8rYRpm4z4AuGtABlOp9mXXVy6sxXnTJRoYIdZrmDbKVfIY+CpZUJCqS0FX3xf2+GoHlsj7Qswaxgcg==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ '@types/ws': 8.5.3
+ graphql: 16.8.1
+ graphql-ws: 5.14.1(graphql@16.8.1)
+ isomorphic-ws: 5.0.0(ws@8.14.1)
+ tslib: 2.5.2
+ ws: 8.14.1
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ dev: true
+
+ /@graphql-tools/executor-http@1.0.2(@types/node@18.16.3)(graphql@16.8.1):
+ resolution: {integrity: sha512-JKTB4E3kdQM2/1NEcyrVPyQ8057ZVthCV5dFJiKktqY9IdmF00M8gupFcW3jlbM/Udn78ickeUBsUzA3EouqpA==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ '@repeaterjs/repeater': 3.0.4
+ '@whatwg-node/fetch': 0.9.13
+ extract-files: 11.0.0
+ graphql: 16.8.1
+ meros: 1.3.0(@types/node@18.16.3)
+ tslib: 2.5.2
+ value-or-promise: 1.0.12
+ transitivePeerDependencies:
+ - '@types/node'
+ dev: true
+
+ /@graphql-tools/executor-legacy-ws@1.0.3(graphql@16.8.1):
+ resolution: {integrity: sha512-rr3IDeO9Dh+8u8KIro++5kzJJYPHkcrIAWzqXtN663nhInC85iW7Ko91yOYwf7ovBci/7s+4Rqe4ZRyca1LGjQ==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ '@types/ws': 8.5.3
+ graphql: 16.8.1
+ isomorphic-ws: 5.0.0(ws@8.14.1)
+ tslib: 2.5.2
+ ws: 8.14.1
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ dev: true
+
+ /@graphql-tools/executor@1.2.0(graphql@16.8.1):
+ resolution: {integrity: sha512-SKlIcMA71Dha5JnEWlw4XxcaJ+YupuXg0QCZgl2TOLFz4SkGCwU/geAsJvUJFwK2RbVLpQv/UMq67lOaBuwDtg==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1)
+ '@repeaterjs/repeater': 3.0.4
+ graphql: 16.8.1
+ tslib: 2.5.2
+ value-or-promise: 1.0.12
+ dev: true
+
+ /@graphql-tools/git-loader@8.0.2(graphql@16.8.1):
+ resolution: {integrity: sha512-AuCB0nlPvsHh8u42zRZdlD/ZMaWP9A44yAkQUVCZir1E/LG63fsZ9svTWJ+CbusW3Hd0ZP9qpxEhlHxnd4Tlsg==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/graphql-tag-pluck': 8.0.2(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ graphql: 16.8.1
+ is-glob: 4.0.3
+ micromatch: 4.0.5
+ tslib: 2.5.2
+ unixify: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@graphql-tools/github-loader@8.0.0(@types/node@18.16.3)(graphql@16.8.1):
+ resolution: {integrity: sha512-VuroArWKcG4yaOWzV0r19ElVIV6iH6UKDQn1MXemND0xu5TzrFme0kf3U9o0YwNo0kUYEk9CyFM0BYg4he17FA==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@ardatan/sync-fetch': 0.0.1
+ '@graphql-tools/executor-http': 1.0.2(@types/node@18.16.3)(graphql@16.8.1)
+ '@graphql-tools/graphql-tag-pluck': 8.0.2(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ '@whatwg-node/fetch': 0.9.13
+ graphql: 16.8.1
+ tslib: 2.5.2
+ value-or-promise: 1.0.12
+ transitivePeerDependencies:
+ - '@types/node'
+ - encoding
+ - supports-color
+ dev: true
+
+ /@graphql-tools/graphql-file-loader@8.0.0(graphql@16.8.1):
+ resolution: {integrity: sha512-wRXj9Z1IFL3+zJG1HWEY0S4TXal7+s1vVhbZva96MSp0kbb/3JBF7j0cnJ44Eq0ClccMgGCDFqPFXty4JlpaPg==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/import': 7.0.0(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ globby: 11.1.0
+ graphql: 16.8.1
+ tslib: 2.5.2
+ unixify: 1.0.0
+ dev: true
+
+ /@graphql-tools/graphql-tag-pluck@8.0.2(graphql@16.8.1):
+ resolution: {integrity: sha512-U6fE4yEHxuk/nqmPixHpw1WhqdS6aYuaV60m1bEmUmGJNbpAhaMBy01JncpvpF15yZR5LZ0UjkHg+A3Lhoc8YQ==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@babel/core': 7.23.0
+ '@babel/parser': 7.22.4
+ '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.23.0)
+ '@babel/traverse': 7.22.4
+ '@babel/types': 7.22.4
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ graphql: 16.8.1
+ tslib: 2.5.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@graphql-tools/import@7.0.0(graphql@16.8.1):
+ resolution: {integrity: sha512-NVZiTO8o1GZs6OXzNfjB+5CtQtqsZZpQOq+Uu0w57kdUkT4RlQKlwhT8T81arEsbV55KpzkpFsOZP7J1wdmhBw==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ graphql: 16.8.1
+ resolve-from: 5.0.0
+ tslib: 2.5.2
+ dev: true
+
+ /@graphql-tools/json-file-loader@8.0.0(graphql@16.8.1):
+ resolution: {integrity: sha512-ki6EF/mobBWJjAAC84xNrFMhNfnUFD6Y0rQMGXekrUgY0NdeYXHU0ZUgHzC9O5+55FslqUmAUHABePDHTyZsLg==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ globby: 11.1.0
+ graphql: 16.8.1
+ tslib: 2.5.2
+ unixify: 1.0.0
+ dev: true
+
+ /@graphql-tools/load@8.0.0(graphql@16.8.1):
+ resolution: {integrity: sha512-Cy874bQJH0FP2Az7ELPM49iDzOljQmK1PPH6IuxsWzLSTxwTqd8dXA09dcVZrI7/LsN26heTY2R8q2aiiv0GxQ==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/schema': 10.0.0(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ graphql: 16.8.1
+ p-limit: 3.1.0
+ tslib: 2.5.2
+ dev: true
+
+ /@graphql-tools/merge@9.0.0(graphql@16.8.1):
+ resolution: {integrity: sha512-J7/xqjkGTTwOJmaJQJ2C+VDBDOWJL3lKrHJN4yMaRLAJH3PosB7GiPRaSDZdErs0+F77sH2MKs2haMMkywzx7Q==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ graphql: 16.8.1
+ tslib: 2.5.2
+ dev: true
+
+ /@graphql-tools/optimize@2.0.0(graphql@16.8.1):
+ resolution: {integrity: sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ graphql: 16.8.1
+ tslib: 2.5.2
+ dev: true
+
+ /@graphql-tools/prisma-loader@8.0.1(@types/node@18.16.3)(graphql@16.8.1):
+ resolution: {integrity: sha512-bl6e5sAYe35Z6fEbgKXNrqRhXlCJYeWKBkarohgYA338/SD9eEhXtg3Cedj7fut3WyRLoQFpHzfiwxKs7XrgXg==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/url-loader': 8.0.0(@types/node@18.16.3)(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ '@types/js-yaml': 4.0.6
+ '@types/json-stable-stringify': 1.0.34
+ '@whatwg-node/fetch': 0.9.13
+ chalk: 4.1.2
+ debug: 4.3.4(supports-color@7.2.0)
+ dotenv: 16.0.3
+ graphql: 16.8.1
+ graphql-request: 6.1.0(graphql@16.8.1)
+ http-proxy-agent: 7.0.0
+ https-proxy-agent: 7.0.2
+ jose: 4.14.0
+ js-yaml: 4.1.0
+ json-stable-stringify: 1.0.2
+ lodash: 4.17.21
+ scuid: 1.1.0
+ tslib: 2.5.2
+ yaml-ast-parser: 0.0.43
+ transitivePeerDependencies:
+ - '@types/node'
+ - bufferutil
+ - encoding
+ - supports-color
+ - utf-8-validate
+ dev: true
+
+ /@graphql-tools/relay-operation-optimizer@7.0.0(graphql@16.8.1):
+ resolution: {integrity: sha512-UNlJi5y3JylhVWU4MBpL0Hun4Q7IoJwv9xYtmAz+CgRa066szzY7dcuPfxrA7cIGgG/Q6TVsKsYaiF4OHPs1Fw==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@ardatan/relay-compiler': 12.0.0(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ graphql: 16.8.1
+ tslib: 2.5.2
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ dev: true
+
+ /@graphql-tools/schema@10.0.0(graphql@16.8.1):
+ resolution: {integrity: sha512-kf3qOXMFcMs2f/S8Y3A8fm/2w+GaHAkfr3Gnhh2LOug/JgpY/ywgFVxO3jOeSpSEdoYcDKLcXVjMigNbY4AdQg==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/merge': 9.0.0(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ graphql: 16.8.1
+ tslib: 2.5.2
+ value-or-promise: 1.0.12
+ dev: true
+
+ /@graphql-tools/url-loader@8.0.0(@types/node@18.16.3)(graphql@16.8.1):
+ resolution: {integrity: sha512-rPc9oDzMnycvz+X+wrN3PLrhMBQkG4+sd8EzaFN6dypcssiefgWKToXtRKI8HHK68n2xEq1PyrOpkjHFJB+GwA==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@ardatan/sync-fetch': 0.0.1
+ '@graphql-tools/delegate': 10.0.3(graphql@16.8.1)
+ '@graphql-tools/executor-graphql-ws': 1.1.0(graphql@16.8.1)
+ '@graphql-tools/executor-http': 1.0.2(@types/node@18.16.3)(graphql@16.8.1)
+ '@graphql-tools/executor-legacy-ws': 1.0.3(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ '@graphql-tools/wrap': 10.0.1(graphql@16.8.1)
+ '@types/ws': 8.5.3
+ '@whatwg-node/fetch': 0.9.13
+ graphql: 16.8.1
+ isomorphic-ws: 5.0.0(ws@8.14.1)
+ tslib: 2.5.2
+ value-or-promise: 1.0.12
+ ws: 8.14.1
+ transitivePeerDependencies:
+ - '@types/node'
+ - bufferutil
+ - encoding
+ - utf-8-validate
+ dev: true
+
+ /@graphql-tools/utils@10.0.6(graphql@16.8.1):
+ resolution: {integrity: sha512-hZMjl/BbX10iagovakgf3IiqArx8TPsotq5pwBld37uIX1JiZoSbgbCIFol7u55bh32o6cfDEiiJgfAD5fbeyQ==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1)
+ dset: 3.1.2
+ graphql: 16.8.1
+ tslib: 2.5.2
+ dev: true
+
+ /@graphql-tools/wrap@10.0.1(graphql@16.8.1):
+ resolution: {integrity: sha512-Cw6hVrKGM2OKBXeuAGltgy4tzuqQE0Nt7t/uAqnuokSXZhMHXJUb124Bnvxc2gPZn5chfJSDafDe4Cp8ZAVJgg==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@graphql-tools/delegate': 10.0.3(graphql@16.8.1)
+ '@graphql-tools/schema': 10.0.0(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ graphql: 16.8.1
+ tslib: 2.5.2
+ value-or-promise: 1.0.12
+ dev: true
+
+ /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1):
+ resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==}
+ 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
+ dependencies:
+ graphql: 16.8.1
+ dev: true
+
/@grpc/grpc-js@1.7.3:
resolution: {integrity: sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog==}
engines: {node: ^8.13.0 || >=10.10.0}
@@ -8987,6 +9885,18 @@ packages:
slash: 3.0.0
dev: true
+ /@jest/console@29.7.0:
+ resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 18.16.3
+ chalk: 4.1.2
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+ dev: true
+
/@jest/core@26.6.3:
resolution: {integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==}
engines: {node: '>= 10.14.2'}
@@ -9241,6 +10151,49 @@ packages:
- ts-node
dev: true
+ /@jest/core@29.7.0:
+ resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/reporters': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 18.16.3
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ ci-info: 3.8.0
+ exit: 0.1.2
+ graceful-fs: 4.2.10
+ jest-changed-files: 29.7.0
+ jest-config: 29.7.0(@types/node@18.16.3)
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-resolve-dependencies: 29.7.0
+ jest-runner: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ jest-watcher: 29.7.0
+ micromatch: 4.0.5
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-ansi: 6.0.1
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+ dev: true
+
/@jest/create-cache-key-function@27.5.1:
resolution: {integrity: sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -9298,6 +10251,16 @@ packages:
jest-mock: 29.5.0
dev: true
+ /@jest/environment@29.7.0:
+ resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 18.16.3
+ jest-mock: 29.7.0
+ dev: true
+
/@jest/expect-utils@28.1.1:
resolution: {integrity: sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw==}
engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
@@ -9319,6 +10282,13 @@ packages:
jest-get-type: 29.4.3
dev: true
+ /@jest/expect-utils@29.7.0:
+ resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ jest-get-type: 29.6.3
+ dev: true
+
/@jest/expect@28.1.1:
resolution: {integrity: sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg==}
engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
@@ -9339,6 +10309,16 @@ packages:
- supports-color
dev: true
+ /@jest/expect@29.7.0:
+ resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ expect: 29.7.0
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@jest/fake-timers@26.6.2:
resolution: {integrity: sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==}
engines: {node: '>= 10.14.2'}
@@ -9399,6 +10379,18 @@ packages:
jest-util: 29.5.0
dev: true
+ /@jest/fake-timers@29.7.0:
+ resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@sinonjs/fake-timers': 10.3.0
+ '@types/node': 18.16.3
+ jest-message-util: 29.7.0
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+ dev: true
+
/@jest/globals@26.6.2:
resolution: {integrity: sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==}
engines: {node: '>= 10.14.2'}
@@ -9440,6 +10432,18 @@ packages:
- supports-color
dev: true
+ /@jest/globals@29.7.0:
+ resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/types': 29.6.3
+ jest-mock: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@jest/reporters@26.6.2:
resolution: {integrity: sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==}
engines: {node: '>= 10.14.2'}
@@ -9587,6 +10591,43 @@ packages:
- supports-color
dev: true
+ /@jest/reporters@29.7.0:
+ resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@bcoe/v8-coverage': 0.2.3
+ '@jest/console': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@jridgewell/trace-mapping': 0.3.19
+ '@types/node': 18.16.3
+ chalk: 4.1.2
+ collect-v8-coverage: 1.0.1
+ exit: 0.1.2
+ glob: 7.2.3
+ graceful-fs: 4.2.10
+ istanbul-lib-coverage: 3.2.0
+ istanbul-lib-instrument: 6.0.1
+ istanbul-lib-report: 3.0.0
+ istanbul-lib-source-maps: 4.0.1
+ istanbul-reports: 3.1.4
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
+ slash: 3.0.0
+ string-length: 4.0.2
+ strip-ansi: 6.0.1
+ v8-to-istanbul: 9.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@jest/schemas@28.1.3:
resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==}
engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
@@ -9601,6 +10642,13 @@ packages:
'@sinclair/typebox': 0.25.24
dev: true
+ /@jest/schemas@29.6.3:
+ resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@sinclair/typebox': 0.27.8
+ dev: true
+
/@jest/source-map@26.6.2:
resolution: {integrity: sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==}
engines: {node: '>= 10.14.2'}
@@ -9637,6 +10685,15 @@ packages:
graceful-fs: 4.2.10
dev: true
+ /@jest/source-map@29.6.3:
+ resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.19
+ callsites: 3.1.0
+ graceful-fs: 4.2.10
+ dev: true
+
/@jest/test-result@26.6.2:
resolution: {integrity: sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==}
engines: {node: '>= 10.14.2'}
@@ -9677,6 +10734,16 @@ packages:
collect-v8-coverage: 1.0.1
dev: true
+ /@jest/test-result@29.7.0:
+ resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.4
+ collect-v8-coverage: 1.0.1
+ dev: true
+
/@jest/test-sequencer@26.6.3:
resolution: {integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==}
engines: {node: '>= 10.14.2'}
@@ -9726,6 +10793,16 @@ packages:
slash: 3.0.0
dev: true
+ /@jest/test-sequencer@29.7.0:
+ resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/test-result': 29.7.0
+ graceful-fs: 4.2.10
+ jest-haste-map: 29.7.0
+ slash: 3.0.0
+ dev: true
+
/@jest/transform@26.6.2:
resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==}
engines: {node: '>= 10.14.2'}
@@ -9818,6 +10895,29 @@ packages:
- supports-color
dev: true
+ /@jest/transform@29.7.0:
+ resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/core': 7.22.1
+ '@jest/types': 29.6.3
+ '@jridgewell/trace-mapping': 0.3.19
+ babel-plugin-istanbul: 6.1.1
+ chalk: 4.1.2
+ convert-source-map: 2.0.0
+ fast-json-stable-stringify: 2.1.0
+ graceful-fs: 4.2.10
+ jest-haste-map: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-util: 29.7.0
+ micromatch: 4.0.5
+ pirates: 4.0.5
+ slash: 3.0.0
+ write-file-atomic: 4.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@jest/types@26.6.2:
resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==}
engines: {node: '>= 10.14.2'}
@@ -9899,6 +10999,18 @@ packages:
chalk: 4.1.2
dev: true
+ /@jest/types@29.6.3:
+ resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/schemas': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.4
+ '@types/istanbul-reports': 3.0.1
+ '@types/node': 18.16.3
+ '@types/yargs': 17.0.10
+ chalk: 4.1.2
+ dev: true
+
/@jridgewell/gen-mapping@0.1.1:
resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==}
engines: {node: '>=6.0.0'}
@@ -9945,6 +11057,13 @@ packages:
'@jridgewell/resolve-uri': 3.1.0
'@jridgewell/sourcemap-codec': 1.4.14
+ /@jridgewell/trace-mapping@0.3.19:
+ resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.0
+ '@jridgewell/sourcemap-codec': 1.4.14
+ dev: true
+
/@js-joda/core@3.2.0:
resolution: {integrity: sha512-PMqgJ0sw5B7FKb2d5bWYIoxjri+QlW/Pys7+Rw82jSH0QN3rB05jZ/VrrsUdh1w4+i2kw9JOejXGq/KhDOX7Kg==}
dev: true
@@ -10512,6 +11631,32 @@ packages:
resolution: {integrity: sha512-003xWiCuvePbLaPHT+CRuaV4GlyCAVm6XYSbBZDHoWZGn1mNkVKFaDbGJjjxmEFvizUwlCoM6O18FCBMMky2zQ==}
dev: false
+ /@peculiar/asn1-schema@2.3.6:
+ resolution: {integrity: sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA==}
+ dependencies:
+ asn1js: 3.0.5
+ pvtsutils: 1.3.5
+ tslib: 2.5.2
+ dev: true
+
+ /@peculiar/json-schema@1.1.12:
+ resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ tslib: 2.5.2
+ dev: true
+
+ /@peculiar/webcrypto@1.4.3:
+ resolution: {integrity: sha512-VtaY4spKTdN5LjJ04im/d/joXuvLbQdgy5Z4DXF4MFZhQ+MTrejbNMkfZBp1Bs3O5+bFqnJgyGdPuZQflvIa5A==}
+ engines: {node: '>=10.12.0'}
+ dependencies:
+ '@peculiar/asn1-schema': 2.3.6
+ '@peculiar/json-schema': 1.1.12
+ pvtsutils: 1.3.5
+ tslib: 2.5.2
+ webcrypto-core: 1.7.7
+ dev: true
+
/@playwright/test@1.29.2:
resolution: {integrity: sha512-+3/GPwOgcoF0xLz/opTnahel1/y42PdcgZ4hs+BZGIUjtmEFSXGg+nFoaH3NSmuc7a6GSFwXDJ5L7VXpqzigNg==}
engines: {node: '>=14'}
@@ -10623,6 +11768,10 @@ packages:
requiresBuild: true
dev: true
+ /@repeaterjs/repeater@3.0.4:
+ resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==}
+ dev: true
+
/@rollup/pluginutils@5.0.2(rollup@3.15.0):
resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==}
engines: {node: '>=14.0.0'}
@@ -10703,6 +11852,10 @@ packages:
resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==}
dev: true
+ /@sinclair/typebox@0.27.8:
+ resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
+ dev: true
+
/@sindresorhus/is@0.14.0:
resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==}
engines: {node: '>=6'}
@@ -11984,6 +13137,10 @@ packages:
resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==}
dev: true
+ /@types/js-yaml@4.0.6:
+ resolution: {integrity: sha512-ACTuifTSIIbyksx2HTon3aFtCKWcID7/h3XEmRpDYdMCXxPbl+m9GteOJeaAkiAta/NJaSFuA7ahZ0NkwajDSw==}
+ dev: true
+
/@types/jsdom@16.2.14:
resolution: {integrity: sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w==}
dependencies:
@@ -11996,6 +13153,10 @@ packages:
resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
dev: true
+ /@types/json-stable-stringify@1.0.34:
+ resolution: {integrity: sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw==}
+ dev: true
+
/@types/json5@0.0.29:
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
dev: true
@@ -12884,6 +14045,54 @@ packages:
'@xtuc/long': 4.2.2
dev: true
+ /@whatwg-node/events@0.0.3:
+ resolution: {integrity: sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA==}
+ dev: true
+
+ /@whatwg-node/events@0.1.1:
+ resolution: {integrity: sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==}
+ engines: {node: '>=16.0.0'}
+ dev: true
+
+ /@whatwg-node/fetch@0.8.8:
+ resolution: {integrity: sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg==}
+ dependencies:
+ '@peculiar/webcrypto': 1.4.3
+ '@whatwg-node/node-fetch': 0.3.6
+ busboy: 1.6.0
+ urlpattern-polyfill: 8.0.2
+ web-streams-polyfill: 3.2.1
+ dev: true
+
+ /@whatwg-node/fetch@0.9.13:
+ resolution: {integrity: sha512-PPtMwhjtS96XROnSpowCQM85gCUG2m7AXZFw0PZlGbhzx2GK7f2iOXilfgIJ0uSlCuuGbOIzfouISkA7C4FJOw==}
+ engines: {node: '>=16.0.0'}
+ dependencies:
+ '@whatwg-node/node-fetch': 0.4.19
+ urlpattern-polyfill: 9.0.0
+ dev: true
+
+ /@whatwg-node/node-fetch@0.3.6:
+ resolution: {integrity: sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA==}
+ dependencies:
+ '@whatwg-node/events': 0.0.3
+ busboy: 1.6.0
+ fast-querystring: 1.1.2
+ fast-url-parser: 1.1.3
+ tslib: 2.5.2
+ dev: true
+
+ /@whatwg-node/node-fetch@0.4.19:
+ resolution: {integrity: sha512-AW7/m2AuweAoSXmESrYQr/KBafueScNbn2iNO0u6xFr2JZdPmYsSm5yvAXYk6yDLv+eDmSSKrf7JnFZ0CsJIdA==}
+ engines: {node: '>=16.0.0'}
+ dependencies:
+ '@whatwg-node/events': 0.1.1
+ busboy: 1.6.0
+ fast-querystring: 1.1.2
+ fast-url-parser: 1.1.3
+ tslib: 2.5.2
+ dev: true
+
/@xata.io/client@0.13.4(typescript@5.2.2):
resolution: {integrity: sha512-eODWMjW185bPR3YcBSWOHeH5FlxsVSq8lbCoHxrjt8TZAthXb9MHwEUhgh39GrkwcQ181XRz2XwKDJAipIRg6A==}
peerDependencies:
@@ -13039,6 +14248,15 @@ packages:
transitivePeerDependencies:
- supports-color
+ /agent-base@7.1.0:
+ resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==}
+ engines: {node: '>= 14'}
+ dependencies:
+ debug: 4.3.4(supports-color@7.2.0)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/agentkeepalive@4.2.1:
resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==}
engines: {node: '>= 8.0.0'}
@@ -13453,6 +14671,15 @@ packages:
dependencies:
safer-buffer: 2.1.2
+ /asn1js@3.0.5:
+ resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ pvtsutils: 1.3.5
+ pvutils: 1.1.3
+ tslib: 2.5.2
+ dev: true
+
/assert-plus@1.0.0:
resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==}
engines: {node: '>=0.8'}
@@ -13473,6 +14700,11 @@ packages:
tslib: 2.5.2
dev: true
+ /astral-regex@2.0.0:
+ resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
+ engines: {node: '>=8'}
+ dev: true
+
/async-lock@1.3.2:
resolution: {integrity: sha512-phnXdS3RP7PPcmP6NWWzWMU0sLTeyvtZCxBPpZdkYE3seGLKSQZs9FrmVO/qwypq98FUtWWUEYxziLkdGk5nnA==}
dev: true
@@ -13507,6 +14739,11 @@ packages:
engines: {node: '>= 4.5.0'}
hasBin: true
+ /auto-bind@4.0.0:
+ resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==}
+ engines: {node: '>=8'}
+ dev: true
+
/autoprefixer@10.4.13(postcss@8.4.19):
resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==}
engines: {node: ^10 || ^12 || >=14}
@@ -13655,6 +14892,24 @@ packages:
- supports-color
dev: true
+ /babel-jest@29.7.0(@babel/core@7.22.1):
+ resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@babel/core': ^7.8.0
+ dependencies:
+ '@babel/core': 7.22.1
+ '@jest/transform': 29.7.0
+ '@types/babel__core': 7.1.19
+ babel-plugin-istanbul: 6.1.1
+ babel-preset-jest: 29.6.3(@babel/core@7.22.1)
+ chalk: 4.1.2
+ graceful-fs: 4.2.10
+ slash: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/babel-loader@8.3.0(@babel/core@7.22.1)(webpack@5.75.0):
resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==}
engines: {node: '>= 8.9'}
@@ -13744,6 +14999,16 @@ packages:
'@types/babel__traverse': 7.17.1
dev: true
+ /babel-plugin-jest-hoist@29.6.3:
+ resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/template': 7.21.9
+ '@babel/types': 7.22.4
+ '@types/babel__core': 7.1.19
+ '@types/babel__traverse': 7.17.1
+ dev: true
+
/babel-plugin-jsx-dom-expressions@0.35.8(@babel/core@7.22.1):
resolution: {integrity: sha512-IzObXlDFA80wyEW/IUtCxaUAoJnq4CTpvcvC1xBZBlMpJDwmK6mIYnTZ9xgFyGCrAjC0LxVcqeDQx31gJJ4UJQ==}
peerDependencies:
@@ -13922,6 +15187,10 @@ packages:
/babel-plugin-syntax-jsx@6.18.0:
resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==}
+ /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0:
+ resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==}
+ dev: true
+
/babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.1):
resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
peerDependencies:
@@ -13941,6 +15210,43 @@ packages:
'@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.1)
'@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.1)
+ /babel-preset-fbjs@3.4.0(@babel/core@7.22.1):
+ resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.22.1
+ '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.1)
+ '@babel/plugin-proposal-object-rest-spread': 7.20.2(@babel/core@7.22.1)
+ '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.1)
+ '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.1)
+ '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.22.1)
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.1)
+ '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.22.1)
+ '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.22.1)
+ '@babel/plugin-transform-block-scoping': 7.20.2(@babel/core@7.22.1)
+ '@babel/plugin-transform-classes': 7.20.7(@babel/core@7.22.1)
+ '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.22.1)
+ '@babel/plugin-transform-destructuring': 7.20.2(@babel/core@7.22.1)
+ '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.1)
+ '@babel/plugin-transform-for-of': 7.18.8(@babel/core@7.22.1)
+ '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.22.1)
+ '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.22.1)
+ '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.22.1)
+ '@babel/plugin-transform-modules-commonjs': 7.19.6(@babel/core@7.22.1)
+ '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.22.1)
+ '@babel/plugin-transform-parameters': 7.20.3(@babel/core@7.22.1)
+ '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.22.1)
+ '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.1)
+ '@babel/plugin-transform-react-jsx': 7.19.0(@babel/core@7.22.1)
+ '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.22.1)
+ '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.22.1)
+ '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.22.1)
+ babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/babel-preset-jest@26.6.2(@babel/core@7.22.1):
resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==}
engines: {node: '>= 10.14.2'}
@@ -13985,6 +15291,17 @@ packages:
babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.1)
dev: true
+ /babel-preset-jest@29.6.3(@babel/core@7.22.1):
+ resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.22.1
+ babel-plugin-jest-hoist: 29.6.3
+ babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.1)
+ dev: true
+
/babel-preset-preact@2.0.0(@babel/core@7.18.5):
resolution: {integrity: sha512-gqJCALE4XXEienLkzgAQ351XyoVHTIiZRAKjEJupK7cTVhFyovEuSrVoNrTNrUu3R78vAarjxkrR6j0vr+Rg8Q==}
dependencies:
@@ -14545,6 +15862,14 @@ packages:
/caniuse-lite@1.0.30001541:
resolution: {integrity: sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw==}
+ /capital-case@1.0.4:
+ resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==}
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.5.2
+ upper-case-first: 2.0.2
+ dev: true
+
/capture-exit@2.0.0:
resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==}
engines: {node: 6.* || 8.* || >= 10.*}
@@ -14640,6 +15965,38 @@ packages:
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
dev: true
+ /change-case-all@1.0.15:
+ resolution: {integrity: sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==}
+ dependencies:
+ change-case: 4.1.2
+ is-lower-case: 2.0.2
+ is-upper-case: 2.0.2
+ lower-case: 2.0.2
+ lower-case-first: 2.0.2
+ sponge-case: 1.0.1
+ swap-case: 2.0.2
+ title-case: 3.0.3
+ upper-case: 2.0.2
+ upper-case-first: 2.0.2
+ dev: true
+
+ /change-case@4.1.2:
+ resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==}
+ dependencies:
+ camel-case: 4.1.2
+ capital-case: 1.0.4
+ constant-case: 3.0.4
+ dot-case: 3.0.4
+ header-case: 2.0.4
+ no-case: 3.0.4
+ param-case: 3.0.4
+ pascal-case: 3.1.2
+ path-case: 3.0.4
+ sentence-case: 3.0.4
+ snake-case: 3.0.4
+ tslib: 2.5.2
+ dev: true
+
/char-regex@1.0.2:
resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
engines: {node: '>=10'}
@@ -14874,6 +16231,14 @@ packages:
string-width: 1.0.2
dev: false
+ /cli-truncate@2.1.0:
+ resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==}
+ engines: {node: '>=8'}
+ dependencies:
+ slice-ansi: 3.0.0
+ string-width: 4.2.3
+ dev: true
+
/cli-width@3.0.0:
resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==}
engines: {node: '>= 10'}
@@ -14896,7 +16261,6 @@ packages:
string-width: 4.2.3
strip-ansi: 6.0.1
wrap-ansi: 6.2.0
- dev: false
/cliui@7.0.4:
resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
@@ -15086,7 +16450,6 @@ packages:
/common-tags@1.8.2:
resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==}
engines: {node: '>=4.0.0'}
- dev: false
/commondir@1.0.1:
resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
@@ -15214,6 +16577,14 @@ packages:
resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
dev: true
+ /constant-case@3.0.4:
+ resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==}
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.5.2
+ upper-case: 2.0.2
+ dev: true
+
/content-disposition@0.5.2:
resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==}
engines: {node: '>= 0.6'}
@@ -15367,6 +16738,22 @@ packages:
yaml: 1.10.2
dev: true
+ /cosmiconfig@8.3.6(typescript@5.2.2):
+ resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ typescript: '>=4.9.5'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ import-fresh: 3.3.0
+ js-yaml: 4.1.0
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ typescript: 5.2.2
+ dev: true
+
/crc-32@1.2.2:
resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==}
engines: {node: '>=0.8'}
@@ -15381,6 +16768,25 @@ packages:
readable-stream: 3.6.0
dev: true
+ /create-jest@29.7.0(@types/node@18.16.3):
+ resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ exit: 0.1.2
+ graceful-fs: 4.2.10
+ jest-config: 29.7.0(@types/node@18.16.3)
+ jest-util: 29.7.0
+ prompts: 2.4.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+ dev: true
+
/cross-env@5.2.1:
resolution: {integrity: sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==}
engines: {node: '>=4.0'}
@@ -16337,6 +17743,10 @@ packages:
whatwg-url: 11.0.0
dev: true
+ /dataloader@2.2.2:
+ resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==}
+ dev: true
+
/date-fns@1.30.1:
resolution: {integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==}
dev: false
@@ -16360,6 +17770,10 @@ packages:
resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==}
dev: true
+ /debounce@1.2.1:
+ resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==}
+ dev: true
+
/debug@2.6.9(supports-color@7.2.0):
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
peerDependencies:
@@ -16484,6 +17898,15 @@ packages:
resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==}
dev: true
+ /dedent@1.5.1:
+ resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==}
+ peerDependencies:
+ babel-plugin-macros: ^3.1.0
+ peerDependenciesMeta:
+ babel-plugin-macros:
+ optional: true
+ dev: true
+
/deep-eql@4.1.3:
resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==}
engines: {node: '>=6'}
@@ -16731,6 +18154,11 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dev: true
+ /diff-sequences@29.6.3:
+ resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dev: true
+
/difflib@0.2.4:
resolution: {integrity: sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==}
dependencies:
@@ -17023,6 +18451,11 @@ packages:
postgres: 3.3.5
dev: true
+ /dset@3.1.2:
+ resolution: {integrity: sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==}
+ engines: {node: '>=4'}
+ dev: true
+
/duplexer2@0.1.4:
resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==}
dependencies:
@@ -18561,6 +19994,17 @@ packages:
jest-util: 29.5.0
dev: true
+ /expect@29.7.0:
+ resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/expect-utils': 29.7.0
+ jest-get-type: 29.6.3
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ dev: true
+
/express-basic-auth@1.2.1:
resolution: {integrity: sha512-L6YQ1wQ/mNjVLAmK3AG1RK6VkokA1BIY6wmiH304Xtt/cLTps40EusZsU1Uop+v9lTDPxdtzbFmdXfFO3KEnwA==}
dependencies:
@@ -18692,6 +20136,11 @@ packages:
- supports-color
dev: false
+ /extract-files@11.0.0:
+ resolution: {integrity: sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==}
+ engines: {node: ^12.20 || >= 14.13}
+ dev: true
+
/extract-zip@1.7.0(supports-color@7.2.0):
resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==}
hasBin: true
@@ -18724,6 +20173,10 @@ packages:
- supports-color
dev: true
+ /fast-decode-uri-component@1.0.1:
+ resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==}
+ dev: true
+
/fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true
@@ -18755,6 +20208,12 @@ packages:
/fast-levenshtein@2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+ /fast-querystring@1.1.2:
+ resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==}
+ dependencies:
+ fast-decode-uri-component: 1.0.1
+ dev: true
+
/fast-text-encoding@1.0.4:
resolution: {integrity: sha512-x6lDDm/tBAzX9kmsPcZsNbvDs3Zey3+scsxaZElS8xWLgUMAg/oFLeewfUz0mu1CblHhhsu15jGkraldkFh8KQ==}
dev: true
@@ -19904,8 +21363,69 @@ packages:
lodash: 4.17.21
dev: false
- /graphql@16.5.0:
- resolution: {integrity: sha512-qbHgh8Ix+j/qY+a/ZcJnFQ+j8ezakqPiHwPiZhV/3PgGlgf96QMBB5/f2rkiC9sgLoy/xvT6TSiaf2nTHJh5iA==}
+ /graphql-config@5.0.2(@types/node@18.16.3)(graphql@16.8.1)(typescript@5.2.2):
+ resolution: {integrity: sha512-7TPxOrlbiG0JplSZYCyxn2XQtqVhXomEjXUmWJVSS5ET1nPhOJSsIb/WTwqWhcYX6G0RlHXSj9PLtGTKmxLNGg==}
+ engines: {node: '>= 16.0.0'}
+ peerDependencies:
+ cosmiconfig-toml-loader: ^1.0.0
+ graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0
+ peerDependenciesMeta:
+ cosmiconfig-toml-loader:
+ optional: true
+ dependencies:
+ '@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.8.1)
+ '@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1)
+ '@graphql-tools/load': 8.0.0(graphql@16.8.1)
+ '@graphql-tools/merge': 9.0.0(graphql@16.8.1)
+ '@graphql-tools/url-loader': 8.0.0(@types/node@18.16.3)(graphql@16.8.1)
+ '@graphql-tools/utils': 10.0.6(graphql@16.8.1)
+ cosmiconfig: 8.3.6(typescript@5.2.2)
+ graphql: 16.8.1
+ jiti: 1.20.0
+ minimatch: 4.2.3
+ string-env-interpolation: 1.0.1
+ tslib: 2.5.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+ dev: true
+
+ /graphql-request@6.1.0(graphql@16.8.1):
+ resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==}
+ peerDependencies:
+ graphql: 14 - 16
+ dependencies:
+ '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1)
+ cross-fetch: 3.1.5
+ graphql: 16.8.1
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
+ /graphql-tag@2.12.6(graphql@16.8.1):
+ resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0
+ dependencies:
+ graphql: 16.8.1
+ tslib: 2.5.2
+ dev: true
+
+ /graphql-ws@5.14.1(graphql@16.8.1):
+ resolution: {integrity: sha512-aqkls1espsygP1PfkAuuLIV96IbztQ6EaADse97pw8wRIMT3+AL/OYfS8V2iCRkc0gzckitoDRGCQEdnySggiA==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ graphql: '>=0.11 <=16'
+ dependencies:
+ graphql: 16.8.1
+ dev: true
+
+ /graphql@16.8.1:
+ resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==}
engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
dev: true
@@ -20135,6 +21655,13 @@ packages:
hasBin: true
dev: true
+ /header-case@2.0.4:
+ resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==}
+ dependencies:
+ capital-case: 1.0.4
+ tslib: 2.5.2
+ dev: true
+
/headers-polyfill@3.0.7:
resolution: {integrity: sha512-JoLCAdCEab58+2/yEmSnOlficyHFpIl0XJqwu3l+Unkm1gXpFUYsThz6Yha3D6tNhocWkCPfyW0YVIGWFqTi7w==}
dev: true
@@ -20349,6 +21876,16 @@ packages:
- supports-color
dev: true
+ /http-proxy-agent@7.0.0:
+ resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==}
+ engines: {node: '>= 14'}
+ dependencies:
+ agent-base: 7.1.0
+ debug: 4.3.4(supports-color@7.2.0)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/http-proxy-middleware@2.0.6(@types/express@4.17.15):
resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==}
engines: {node: '>=12.0.0'}
@@ -20406,6 +21943,16 @@ packages:
transitivePeerDependencies:
- supports-color
+ /https-proxy-agent@7.0.2:
+ resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==}
+ engines: {node: '>= 14'}
+ dependencies:
+ agent-base: 7.1.0
+ debug: 4.3.4(supports-color@7.2.0)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/human-signals@1.1.1:
resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==}
engines: {node: '>=8.12.0'}
@@ -20494,6 +22041,11 @@ packages:
resolution: {integrity: sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==}
dev: true
+ /immutable@3.7.6:
+ resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==}
+ engines: {node: '>=0.8.0'}
+ dev: true
+
/import-fresh@3.3.0:
resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
engines: {node: '>=6'}
@@ -20502,6 +22054,11 @@ packages:
resolve-from: 4.0.0
dev: true
+ /import-from@4.0.0:
+ resolution: {integrity: sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==}
+ engines: {node: '>=12.2'}
+ dev: true
+
/import-lazy@2.1.0:
resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==}
engines: {node: '>=4'}
@@ -20667,6 +22224,14 @@ packages:
resolution: {integrity: sha512-Bm6H79i01DjgGTCWjUuCjJ6QDo1HB96PT/xCYuyJUP9WFbVDrLSbG4EZCvOCun2rNswZb0c3e4Jt/ws795esHA==}
dev: true
+ /is-absolute@1.0.0:
+ resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-relative: 1.0.0
+ is-windows: 1.0.2
+ dev: true
+
/is-accessor-descriptor@0.1.6:
resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==}
engines: {node: '>=0.10.0'}
@@ -20883,6 +22448,12 @@ packages:
dev: true
optional: true
+ /is-lower-case@2.0.2:
+ resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==}
+ dependencies:
+ tslib: 2.5.2
+ dev: true
+
/is-map@2.0.2:
resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==}
dev: true
@@ -20994,6 +22565,13 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /is-relative@1.0.0:
+ resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-unc-path: 1.0.0
+ dev: true
+
/is-root@2.1.0:
resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==}
engines: {node: '>=6'}
@@ -21062,11 +22640,24 @@ packages:
/is-typedarray@1.0.0:
resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
+ /is-unc-path@1.0.0:
+ resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ unc-path-regex: 0.1.2
+ dev: true
+
/is-unicode-supported@0.1.0:
resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
engines: {node: '>=10'}
dev: true
+ /is-upper-case@2.0.2:
+ resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==}
+ dependencies:
+ tslib: 2.5.2
+ dev: true
+
/is-url@1.2.4:
resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==}
dev: true
@@ -21105,7 +22696,6 @@ packages:
/is-windows@1.0.2:
resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
engines: {node: '>=0.10.0'}
- dev: false
/is-word-character@1.0.4:
resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==}
@@ -21169,6 +22759,14 @@ packages:
- encoding
dev: true
+ /isomorphic-ws@5.0.0(ws@8.14.1):
+ resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==}
+ peerDependencies:
+ ws: '*'
+ dependencies:
+ ws: 8.14.1
+ dev: true
+
/isstream@0.1.2:
resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==}
@@ -21200,6 +22798,19 @@ packages:
transitivePeerDependencies:
- supports-color
+ /istanbul-lib-instrument@6.0.1:
+ resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@babel/core': 7.22.1
+ '@babel/parser': 7.22.4
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-coverage: 3.2.0
+ semver: 7.5.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/istanbul-lib-report@3.0.0:
resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==}
engines: {node: '>=8'}
@@ -21267,6 +22878,15 @@ packages:
p-limit: 3.1.0
dev: true
+ /jest-changed-files@29.7.0:
+ resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ execa: 5.1.1
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+ dev: true
+
/jest-circus@27.5.1:
resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -21349,6 +22969,35 @@ packages:
- supports-color
dev: true
+ /jest-circus@29.7.0:
+ resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 18.16.3
+ chalk: 4.1.2
+ co: 4.6.0
+ dedent: 1.5.1
+ is-generator-fn: 2.1.0
+ jest-each: 29.7.0
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+ pretty-format: 29.7.0
+ pure-rand: 6.0.2
+ slash: 3.0.0
+ stack-utils: 2.0.5
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+ dev: true
+
/jest-cli@26.6.3:
resolution: {integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==}
engines: {node: '>= 10.14.2'}
@@ -21517,6 +23166,34 @@ packages:
- ts-node
dev: true
+ /jest-cli@29.7.0(@types/node@18.16.3):
+ resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/core': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ create-jest: 29.7.0(@types/node@18.16.3)
+ exit: 0.1.2
+ import-local: 3.1.0
+ jest-config: 29.7.0(@types/node@18.16.3)
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+ dev: true
+
/jest-config@26.6.3:
resolution: {integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==}
engines: {node: '>= 10.14.2'}
@@ -21708,6 +23385,46 @@ packages:
- supports-color
dev: true
+ /jest-config@29.7.0(@types/node@18.16.3):
+ resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@types/node': '*'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ ts-node:
+ optional: true
+ dependencies:
+ '@babel/core': 7.22.1
+ '@jest/test-sequencer': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 18.16.3
+ babel-jest: 29.7.0(@babel/core@7.22.1)
+ chalk: 4.1.2
+ ci-info: 3.8.0
+ deepmerge: 4.3.0
+ glob: 7.2.3
+ graceful-fs: 4.2.10
+ jest-circus: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-get-type: 29.6.3
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-runner: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ micromatch: 4.0.5
+ parse-json: 5.2.0
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+ dev: true
+
/jest-diff@26.6.2:
resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==}
engines: {node: '>= 10.14.2'}
@@ -21747,6 +23464,16 @@ packages:
pretty-format: 29.5.0
dev: true
+ /jest-diff@29.7.0:
+ resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ diff-sequences: 29.6.3
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+ dev: true
+
/jest-docblock@26.0.0:
resolution: {integrity: sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==}
engines: {node: '>= 10.14.2'}
@@ -21775,6 +23502,13 @@ packages:
detect-newline: 3.1.0
dev: true
+ /jest-docblock@29.7.0:
+ resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ detect-newline: 3.1.0
+ dev: true
+
/jest-each@26.6.2:
resolution: {integrity: sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==}
engines: {node: '>= 10.14.2'}
@@ -21819,6 +23553,17 @@ packages:
pretty-format: 29.5.0
dev: true
+ /jest-each@29.7.0:
+ resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ jest-util: 29.7.0
+ pretty-format: 29.7.0
+ dev: true
+
/jest-environment-jsdom@26.6.2:
resolution: {integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==}
engines: {node: '>= 10.14.2'}
@@ -21922,6 +23667,18 @@ packages:
jest-util: 29.5.0
dev: true
+ /jest-environment-node@29.7.0:
+ resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 18.16.3
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+ dev: true
+
/jest-get-type@26.3.0:
resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==}
engines: {node: '>= 10.14.2'}
@@ -21946,6 +23703,11 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dev: true
+ /jest-get-type@29.6.3:
+ resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dev: true
+
/jest-haste-map@26.6.2:
resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==}
engines: {node: '>= 10.14.2'}
@@ -22027,6 +23789,25 @@ packages:
fsevents: 2.3.2
dev: true
+ /jest-haste-map@29.7.0:
+ resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/graceful-fs': 4.1.5
+ '@types/node': 18.16.3
+ anymatch: 3.1.3
+ fb-watchman: 2.0.1
+ graceful-fs: 4.2.10
+ jest-regex-util: 29.6.3
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
+ micromatch: 4.0.5
+ walker: 1.0.8
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
/jest-image-snapshot@4.2.0(jest@26.6.3):
resolution: {integrity: sha512-6aAqv2wtfOgxiJeBayBCqHo1zX+A12SUNNzo7rIxiXh6W6xYVu8QyHWkada8HeRi+QUTHddp0O0Xa6kmQr+xbQ==}
engines: {node: '>= 10.14.2'}
@@ -22132,6 +23913,14 @@ packages:
pretty-format: 29.5.0
dev: true
+ /jest-leak-detector@29.7.0:
+ resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+ dev: true
+
/jest-matcher-utils@26.6.2:
resolution: {integrity: sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==}
engines: {node: '>= 10.14.2'}
@@ -22182,6 +23971,16 @@ packages:
pretty-format: 29.5.0
dev: true
+ /jest-matcher-utils@29.7.0:
+ resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ jest-diff: 29.7.0
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+ dev: true
+
/jest-message-util@26.6.2:
resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==}
engines: {node: '>= 10.14.2'}
@@ -22242,6 +24041,21 @@ packages:
stack-utils: 2.0.5
dev: true
+ /jest-message-util@29.7.0:
+ resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/code-frame': 7.21.4
+ '@jest/types': 29.6.3
+ '@types/stack-utils': 2.0.1
+ chalk: 4.1.2
+ graceful-fs: 4.2.10
+ micromatch: 4.0.5
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ stack-utils: 2.0.5
+ dev: true
+
/jest-mock@26.6.2:
resolution: {integrity: sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==}
engines: {node: '>= 10.14.2'}
@@ -22283,6 +24097,15 @@ packages:
jest-util: 29.5.0
dev: true
+ /jest-mock@29.7.0:
+ resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 18.16.3
+ jest-util: 29.7.0
+ dev: true
+
/jest-pnp-resolver@1.2.2(jest-resolve@26.6.2):
resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==}
engines: {node: '>=6'}
@@ -22331,6 +24154,18 @@ packages:
jest-resolve: 29.5.0
dev: true
+ /jest-pnp-resolver@1.2.2(jest-resolve@29.7.0):
+ resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ jest-resolve: '*'
+ peerDependenciesMeta:
+ jest-resolve:
+ optional: true
+ dependencies:
+ jest-resolve: 29.7.0
+ dev: true
+
/jest-regex-util@26.0.0:
resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==}
engines: {node: '>= 10.14.2'}
@@ -22351,6 +24186,11 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dev: true
+ /jest-regex-util@29.6.3:
+ resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dev: true
+
/jest-resolve-dependencies@26.6.3:
resolution: {integrity: sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==}
engines: {node: '>= 10.14.2'}
@@ -22393,6 +24233,16 @@ packages:
- supports-color
dev: true
+ /jest-resolve-dependencies@29.7.0:
+ resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ jest-regex-util: 29.6.3
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/jest-resolve@26.6.2:
resolution: {integrity: sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==}
engines: {node: '>= 10.14.2'}
@@ -22453,6 +24303,21 @@ packages:
slash: 3.0.0
dev: true
+ /jest-resolve@29.7.0:
+ resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ graceful-fs: 4.2.10
+ jest-haste-map: 29.7.0
+ jest-pnp-resolver: 1.2.2(jest-resolve@29.7.0)
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ resolve: 1.22.6
+ resolve.exports: 2.0.2
+ slash: 3.0.0
+ dev: true
+
/jest-runner@26.6.3:
resolution: {integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==}
engines: {node: '>= 10.14.2'}
@@ -22575,6 +24440,35 @@ packages:
- supports-color
dev: true
+ /jest-runner@29.7.0:
+ resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/environment': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 18.16.3
+ chalk: 4.1.2
+ emittery: 0.13.1
+ graceful-fs: 4.2.10
+ jest-docblock: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-haste-map: 29.7.0
+ jest-leak-detector: 29.7.0
+ jest-message-util: 29.7.0
+ jest-resolve: 29.7.0
+ jest-runtime: 29.7.0
+ jest-util: 29.7.0
+ jest-watcher: 29.7.0
+ jest-worker: 29.7.0
+ p-limit: 3.1.0
+ source-map-support: 0.5.13
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/jest-runtime@26.6.3:
resolution: {integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==}
engines: {node: '>= 10.14.2'}
@@ -22705,6 +24599,36 @@ packages:
- supports-color
dev: true
+ /jest-runtime@29.7.0:
+ resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/globals': 29.7.0
+ '@jest/source-map': 29.6.3
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 18.16.3
+ chalk: 4.1.2
+ cjs-module-lexer: 1.2.2
+ collect-v8-coverage: 1.0.1
+ glob: 7.2.3
+ graceful-fs: 4.2.10
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-mock: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+ strip-bom: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/jest-serializer@26.6.2:
resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==}
engines: {node: '>= 10.14.2'}
@@ -22837,6 +24761,34 @@ packages:
- supports-color
dev: true
+ /jest-snapshot@29.7.0:
+ resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/core': 7.22.1
+ '@babel/generator': 7.22.3
+ '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.22.1)
+ '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.1)
+ '@babel/types': 7.22.4
+ '@jest/expect-utils': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.1)
+ chalk: 4.1.2
+ expect: 29.7.0
+ graceful-fs: 4.2.10
+ jest-diff: 29.7.0
+ jest-get-type: 29.6.3
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ natural-compare: 1.4.0
+ pretty-format: 29.7.0
+ semver: 7.5.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/jest-util@26.6.2:
resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==}
engines: {node: '>= 10.14.2'}
@@ -22897,6 +24849,18 @@ packages:
picomatch: 2.3.1
dev: true
+ /jest-util@29.7.0:
+ resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 18.16.3
+ chalk: 4.1.2
+ ci-info: 3.8.0
+ graceful-fs: 4.2.10
+ picomatch: 2.3.1
+ dev: true
+
/jest-validate@26.6.2:
resolution: {integrity: sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==}
engines: {node: '>= 10.14.2'}
@@ -22945,6 +24909,18 @@ packages:
pretty-format: 29.5.0
dev: true
+ /jest-validate@29.7.0:
+ resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ camelcase: 6.3.0
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ leven: 3.1.0
+ pretty-format: 29.7.0
+ dev: true
+
/jest-watch-typeahead@1.1.0(jest@28.1.1):
resolution: {integrity: sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -23029,6 +25005,20 @@ packages:
string-length: 4.0.2
dev: true
+ /jest-watcher@29.7.0:
+ resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 18.16.3
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ emittery: 0.13.1
+ jest-util: 29.7.0
+ string-length: 4.0.2
+ dev: true
+
/jest-worker@26.6.2:
resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==}
engines: {node: '>= 10.13.0'}
@@ -23066,6 +25056,16 @@ packages:
supports-color: 8.1.1
dev: true
+ /jest-worker@29.7.0:
+ resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@types/node': 18.16.3
+ jest-util: 29.7.0
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+ dev: true
+
/jest@26.6.3:
resolution: {integrity: sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==}
engines: {node: '>= 10.14.2'}
@@ -23183,10 +25183,30 @@ packages:
- ts-node
dev: true
+ /jest@29.7.0(@types/node@18.16.3):
+ resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/core': 29.7.0
+ '@jest/types': 29.6.3
+ import-local: 3.1.0
+ jest-cli: 29.7.0(@types/node@18.16.3)
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+ dev: true
+
/jiti@1.20.0:
resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==}
hasBin: true
- dev: false
/jju@1.4.0:
resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
@@ -23223,7 +25243,6 @@ packages:
/jose@4.14.0:
resolution: {integrity: sha512-LSA/XenLPwqk6e2L+PSUNuuY9G4NGsvjRWz6sJcUBmzTLEPJqQh46FHSUxnAQ64AWOkRO6bSXpy3yXuEKZkbIA==}
- dev: false
/joycon@3.1.1:
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
@@ -23449,9 +25468,23 @@ packages:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
dev: true
+ /json-stable-stringify@1.0.2:
+ resolution: {integrity: sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==}
+ dependencies:
+ jsonify: 0.0.1
+ dev: true
+
/json-stringify-safe@5.0.1:
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
+ /json-to-pretty-yaml@1.2.2:
+ resolution: {integrity: sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==}
+ engines: {node: '>= 0.2.0'}
+ dependencies:
+ remedial: 1.0.8
+ remove-trailing-spaces: 1.0.8
+ dev: true
+
/json5@1.0.1:
resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==}
hasBin: true
@@ -23486,6 +25519,10 @@ packages:
graceful-fs: 4.2.10
dev: true
+ /jsonify@0.0.1:
+ resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==}
+ dev: true
+
/jsonparse@1.3.1:
resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
engines: {'0': node >= 0.2.0}
@@ -23953,6 +25990,25 @@ packages:
figures: 2.0.0
dev: false
+ /listr2@4.0.5:
+ resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ enquirer: '>= 2.3.0 < 3'
+ peerDependenciesMeta:
+ enquirer:
+ optional: true
+ dependencies:
+ cli-truncate: 2.1.0
+ colorette: 2.0.19
+ log-update: 4.0.0
+ p-map: 4.0.0
+ rfdc: 1.3.0
+ rxjs: 7.8.1
+ through: 2.3.8
+ wrap-ansi: 7.0.0
+ dev: true
+
/listr@0.14.3:
resolution: {integrity: sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==}
engines: {node: '>=6'}
@@ -24150,6 +26206,16 @@ packages:
wrap-ansi: 3.0.1
dev: false
+ /log-update@4.0.0:
+ resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ cli-cursor: 3.1.0
+ slice-ansi: 4.0.0
+ wrap-ansi: 6.2.0
+ dev: true
+
/logform@2.4.1:
resolution: {integrity: sha512-7XB/tqc3VRbri9pRjU6E97mQ8vC27ivJ3lct4jhyT+n0JNDd4YKldFl0D75NqDp46hk8RC7Ma1Vjv/UPf67S+A==}
dependencies:
@@ -24181,6 +26247,12 @@ packages:
get-func-name: 2.0.0
dev: true
+ /lower-case-first@2.0.2:
+ resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==}
+ dependencies:
+ tslib: 2.5.2
+ dev: true
+
/lower-case@2.0.2:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
dependencies:
@@ -24373,7 +26445,6 @@ packages:
/map-cache@0.2.2:
resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==}
engines: {node: '>=0.10.0'}
- dev: false
/map-obj@1.0.1:
resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
@@ -24610,6 +26681,18 @@ packages:
web-worker: 1.2.0
dev: true
+ /meros@1.3.0(@types/node@18.16.3):
+ resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==}
+ engines: {node: '>=13'}
+ peerDependencies:
+ '@types/node': '>=13'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ dependencies:
+ '@types/node': 18.16.3
+ dev: true
+
/methods@1.1.2:
resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
engines: {node: '>= 0.6'}
@@ -24757,6 +26840,13 @@ packages:
dependencies:
brace-expansion: 1.1.11
+ /minimatch@4.2.3:
+ resolution: {integrity: sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng==}
+ engines: {node: '>=10'}
+ dependencies:
+ brace-expansion: 1.1.11
+ dev: true
+
/minimatch@5.1.6:
resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
engines: {node: '>=10'}
@@ -25067,7 +27157,7 @@ packages:
chalk: 4.1.1
chokidar: 3.5.3
cookie: 0.4.2
- graphql: 16.5.0
+ graphql: 16.8.1
headers-polyfill: 3.0.7
inquirer: 8.2.4
is-node-process: 1.0.1
@@ -25505,7 +27595,6 @@ packages:
engines: {node: '>=0.10.0'}
dependencies:
remove-trailing-separator: 1.1.0
- dev: false
/normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
@@ -25585,6 +27674,10 @@ packages:
boolbase: 1.0.0
dev: true
+ /nullthrows@1.1.1:
+ resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==}
+ dev: true
+
/number-is-nan@1.0.1:
resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==}
engines: {node: '>=0.10.0'}
@@ -26011,6 +28104,15 @@ packages:
is-hexadecimal: 1.0.4
dev: true
+ /parse-filepath@1.0.2:
+ resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==}
+ engines: {node: '>=0.8'}
+ dependencies:
+ is-absolute: 1.0.0
+ map-cache: 0.2.2
+ path-root: 0.1.1
+ dev: true
+
/parse-json@5.2.0:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
@@ -26080,6 +28182,13 @@ packages:
engines: {node: '>=0.10.0'}
dev: false
+ /path-case@3.0.4:
+ resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==}
+ dependencies:
+ dot-case: 3.0.4
+ tslib: 2.5.2
+ dev: true
+
/path-exists@3.0.0:
resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
engines: {node: '>=4'}
@@ -26112,6 +28221,18 @@ packages:
/path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ /path-root-regex@0.1.2:
+ resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /path-root@0.1.1:
+ resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ path-root-regex: 0.1.2
+ dev: true
+
/path-to-regexp@0.1.7:
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
dev: true
@@ -27584,6 +29705,15 @@ packages:
react-is: 18.2.0
dev: true
+ /pretty-format@29.7.0:
+ resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/schemas': 29.6.3
+ ansi-styles: 5.2.0
+ react-is: 18.2.0
+ dev: true
+
/pretty-format@3.8.0:
resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==}
dev: false
@@ -27811,6 +29941,17 @@ packages:
resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==}
dev: true
+ /pvtsutils@1.3.5:
+ resolution: {integrity: sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==}
+ dependencies:
+ tslib: 2.6.2
+ dev: true
+
+ /pvutils@1.1.3:
+ resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
/q@1.4.1:
resolution: {integrity: sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==}
engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
@@ -28314,6 +30455,16 @@ packages:
engines: {node: '>= 0.10'}
dev: true
+ /relay-runtime@12.0.0:
+ resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==}
+ dependencies:
+ '@babel/runtime': 7.20.13
+ fbjs: 3.0.4
+ invariant: 2.2.4
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
/remark-emoji@2.2.0:
resolution: {integrity: sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==}
dependencies:
@@ -28368,9 +30519,16 @@ packages:
mdast-squeeze-paragraphs: 4.0.0
dev: true
+ /remedial@1.0.8:
+ resolution: {integrity: sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==}
+ dev: true
+
/remove-trailing-separator@1.1.0:
resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==}
- dev: false
+
+ /remove-trailing-spaces@1.0.8:
+ resolution: {integrity: sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==}
+ dev: true
/renderkid@3.0.0:
resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==}
@@ -28439,7 +30597,6 @@ packages:
/require-main-filename@2.0.0:
resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
- dev: false
/requires-port@1.0.0:
resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
@@ -28844,6 +31001,10 @@ packages:
ajv-keywords: 5.1.0(ajv@8.11.0)
dev: true
+ /scuid@1.1.0:
+ resolution: {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==}
+ dev: true
+
/section-matter@1.0.0:
resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
engines: {node: '>=4'}
@@ -28878,6 +31039,11 @@ packages:
resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
hasBin: true
+ /semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+ dev: true
+
/semver@7.0.0:
resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==}
hasBin: true
@@ -28935,6 +31101,14 @@ packages:
- supports-color
dev: true
+ /sentence-case@3.0.4:
+ resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==}
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.5.2
+ upper-case-first: 2.0.2
+ dev: true
+
/seq-queue@0.0.5:
resolution: {integrity: sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==}
dev: true
@@ -29150,6 +31324,10 @@ packages:
/signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+ /signedsource@1.0.0:
+ resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==}
+ dev: true
+
/simple-concat@1.0.1:
resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
requiresBuild: true
@@ -29222,6 +31400,24 @@ packages:
engines: {node: '>=0.10.0'}
dev: false
+ /slice-ansi@3.0.0:
+ resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+ dev: true
+
+ /slice-ansi@4.0.0:
+ resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+ dev: true
+
/smart-buffer@4.2.0:
resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
@@ -29236,6 +31432,13 @@ packages:
nodemailer: 6.7.3
dev: true
+ /snake-case@3.0.4:
+ resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==}
+ dependencies:
+ dot-case: 3.0.4
+ tslib: 2.5.2
+ dev: true
+
/snapdragon-node@2.1.1:
resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
engines: {node: '>=0.10.0'}
@@ -29582,6 +31785,12 @@ packages:
engines: {node: '>= 10.x'}
dev: true
+ /sponge-case@1.0.1:
+ resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==}
+ dependencies:
+ tslib: 2.5.2
+ dev: true
+
/sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
@@ -29751,6 +31960,10 @@ packages:
events: 3.3.0
dev: true
+ /string-env-interpolation@1.0.1:
+ resolution: {integrity: sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==}
+ dev: true
+
/string-length@1.0.1:
resolution: {integrity: sha512-MNCACnufWUf3pQ57O5WTBMkKhzYIaKEcUioO0XHrTMafrbBaNk4IyDOLHBv5xbXO0jLLdsYWeFjpjG2hVHRDtw==}
engines: {node: '>=0.10.0'}
@@ -30349,6 +32562,12 @@ packages:
stable: 0.1.8
dev: true
+ /swap-case@2.0.2:
+ resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==}
+ dependencies:
+ tslib: 2.5.2
+ dev: true
+
/symbol-observable@1.2.0:
resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==}
engines: {node: '>=0.10.0'}
@@ -30684,6 +32903,12 @@ packages:
engines: {node: '>=14.0.0'}
dev: true
+ /title-case@3.0.3:
+ resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==}
+ dependencies:
+ tslib: 2.5.2
+ dev: true
+
/tlds@1.208.0:
resolution: {integrity: sha512-6kbY7GJpRQXwBddSOAbVUZXjObbCGFXliWWN+kOSEoRWIOyRWLB6zdeKC/Tguwwenl/KsUx016XR50EdHYsxZw==}
hasBin: true
@@ -30947,6 +33172,10 @@ packages:
yargs-parser: 20.2.9
dev: true
+ /ts-log@2.2.5:
+ resolution: {integrity: sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==}
+ dev: true
+
/tsconfig-paths@3.14.1:
resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==}
dependencies:
@@ -30966,6 +33195,10 @@ packages:
/tslib@2.5.2:
resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==}
+ /tslib@2.6.2:
+ resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
+ dev: true
+
/tsup@6.5.0(typescript@5.2.2):
resolution: {integrity: sha512-36u82r7rYqRHFkD15R20Cd4ercPkbYmuvRkz3Q1LCm5BsiFNUgpo36zbjVhCOgvjyxNBWNKHsaD5Rl8SykfzNA==}
engines: {node: '>=14'}
@@ -31325,6 +33558,11 @@ packages:
which-boxed-primitive: 1.0.2
dev: true
+ /unc-path-regex@0.1.2:
+ resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/underscore@1.13.4:
resolution: {integrity: sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ==}
dev: true
@@ -31506,6 +33744,13 @@ packages:
engines: {node: '>= 10.0.0'}
dev: true
+ /unixify@1.0.0:
+ resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ normalize-path: 2.1.1
+ dev: true
+
/unpipe@1.0.0:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
@@ -31607,6 +33852,18 @@ packages:
xdg-basedir: 4.0.0
dev: true
+ /upper-case-first@2.0.2:
+ resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==}
+ dependencies:
+ tslib: 2.5.2
+ dev: true
+
+ /upper-case@2.0.2:
+ resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==}
+ dependencies:
+ tslib: 2.5.2
+ dev: true
+
/uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
@@ -31663,6 +33920,14 @@ packages:
resolution: {integrity: sha512-DOE84vZT2fEcl9gqCUTcnAw5ZY5Id55ikUcziSUntuEFL3pRvavg5kwDmTEUJkeCHInTlV/HexFomgYnzO5kdQ==}
dev: true
+ /urlpattern-polyfill@8.0.2:
+ resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==}
+ dev: true
+
+ /urlpattern-polyfill@9.0.0:
+ resolution: {integrity: sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==}
+ dev: true
+
/use-composed-ref@1.3.0(react@18.2.0):
resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==}
peerDependencies:
@@ -31801,6 +34066,11 @@ packages:
resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==}
dev: true
+ /value-or-promise@1.0.12:
+ resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==}
+ engines: {node: '>=12'}
+ dev: true
+
/vary@1.1.2:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
@@ -32089,10 +34359,25 @@ packages:
resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==}
dev: true
+ /web-streams-polyfill@3.2.1:
+ resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==}
+ engines: {node: '>= 8'}
+ dev: true
+
/web-worker@1.2.0:
resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==}
dev: true
+ /webcrypto-core@1.7.7:
+ resolution: {integrity: sha512-7FjigXNsBfopEj+5DV2nhNpfic2vumtjjgPmeDKk45z+MJwXKKfhPB7118Pfzrmh4jqOMST6Ch37iPAHoImg5g==}
+ dependencies:
+ '@peculiar/asn1-schema': 2.3.6
+ '@peculiar/json-schema': 1.1.12
+ asn1js: 3.0.5
+ pvtsutils: 1.3.5
+ tslib: 2.5.2
+ dev: true
+
/webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
@@ -32370,7 +34655,6 @@ packages:
/which-module@2.0.1:
resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
- dev: false
/which-typed-array@1.1.8:
resolution: {integrity: sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==}
@@ -32474,7 +34758,6 @@ packages:
ansi-styles: 4.3.0
string-width: 4.2.3
strip-ansi: 6.0.1
- dev: false
/wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
@@ -32604,7 +34887,6 @@ packages:
/y18n@4.0.3:
resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
- dev: false
/y18n@5.0.8:
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
@@ -32625,6 +34907,10 @@ packages:
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ /yaml-ast-parser@0.0.43:
+ resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==}
+ dev: true
+
/yaml@1.10.2:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'}
@@ -32640,7 +34926,6 @@ packages:
dependencies:
camelcase: 5.3.1
decamelize: 1.2.0
- dev: false
/yargs-parser@20.2.9:
resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
@@ -32667,7 +34952,6 @@ packages:
which-module: 2.0.1
y18n: 4.0.3
yargs-parser: 18.1.3
- dev: false
/yargs@16.2.0:
resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
diff --git a/turbo.json b/turbo.json
index 87c84838..1e49b419 100644
--- a/turbo.json
+++ b/turbo.json
@@ -91,6 +91,7 @@
"@auth/dynamodb-adapter#build",
"@auth/fauna-adapter#build",
"@auth/firebase-adapter#build",
+ "@auth/hasura-adapter#build",
"@auth/kysely-adapter#build",
"@auth/mikro-orm-adapter#build",
"@auth/mongodb-adapter#build",
@@ -121,6 +122,7 @@
"@auth/dynamodb-adapter#build",
"@auth/fauna-adapter#build",
"@auth/firebase-adapter#build",
+ "@auth/hasura-adapter#build",
"@auth/kysely-adapter#build",
"@auth/mikro-orm-adapter#build",
"@auth/mongodb-adapter#build",