diff --git a/.changeset/spicy-hounds-double.md b/.changeset/spicy-hounds-double.md new file mode 100644 index 00000000..194301f6 --- /dev/null +++ b/.changeset/spicy-hounds-double.md @@ -0,0 +1,6 @@ +--- +"@paybox/mail-zeus": patch +"@paybox/mail": patch +--- + +feat: init a new module for smtp server for paybox diff --git a/backend/hasura-mail/docker-compose.yml b/backend/hasura-mail/docker-compose.yml new file mode 100644 index 00000000..a3485a1b --- /dev/null +++ b/backend/hasura-mail/docker-compose.yml @@ -0,0 +1,44 @@ +version: "3.8" + +services: + + postgres: + image: postgres:15.0-alpine + ports: + - 4446:5432 + volumes: + - mail_data:/var/lib/postgresql1/data + restart: always + environment: + POSTGRES_DB: reef_dev + POSTGRES_PASSWORD: pass + POSTGRES_USER: user + healthcheck: + test: pg_isready --username=user --dbname=reef_dev --quiet + interval: 15s + timeout: 5s + + hasura: + image: hasura/graphql-engine:v2.38.0 + ports: + - 8114:8080 + depends_on: + - postgres + volumes: + - "./hasura/metadata:/hasura-metadata" + - "./hasura/migrations:/hasura-migrations" + restart: unless-stopped + healthcheck: + test: curl -f http://localhost:8080/healthz || exit 1 + interval: 10s + timeout: 10s + retries: 15 + environment: + HASURA_GRAPHQL_DATABASE_URL: postgres://user:pass@postgres/reef_dev + PG_DATABASE_URL: postgres://user:pass@postgres/reef_dev + HASURA_GRAPHQL_DEV_MODE: "true" + HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey + HASURA_GRAPHQL_ENABLE_CONSOLE: "true" + +volumes: + mail_data: \ No newline at end of file diff --git a/backend/hasura-mail/hasura/config.yaml b/backend/hasura-mail/hasura/config.yaml new file mode 100644 index 00000000..a71d6a2c --- /dev/null +++ b/backend/hasura-mail/hasura/config.yaml @@ -0,0 +1,4 @@ +version: 3 +endpoint: http://localhost:8114 +metadata_directory: metadata +admin_secret: myadminsecretkey \ No newline at end of file diff --git a/backend/hasura-mail/hasura/metadata/actions.graphql b/backend/hasura-mail/hasura/metadata/actions.graphql new file mode 100644 index 00000000..e69de29b diff --git a/backend/hasura-mail/hasura/metadata/actions.yaml b/backend/hasura-mail/hasura/metadata/actions.yaml new file mode 100644 index 00000000..1edb4c2f --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/actions.yaml @@ -0,0 +1,6 @@ +actions: [] +custom_types: + enums: [] + input_objects: [] + objects: [] + scalars: [] diff --git a/backend/hasura-mail/hasura/metadata/allow_list.yaml b/backend/hasura-mail/hasura/metadata/allow_list.yaml new file mode 100644 index 00000000..fe51488c --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/allow_list.yaml @@ -0,0 +1 @@ +[] diff --git a/backend/hasura-mail/hasura/metadata/api_limits.yaml b/backend/hasura-mail/hasura/metadata/api_limits.yaml new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/api_limits.yaml @@ -0,0 +1 @@ +{} diff --git a/backend/hasura-mail/hasura/metadata/backend_configs.yaml b/backend/hasura-mail/hasura/metadata/backend_configs.yaml new file mode 100644 index 00000000..3a181b59 --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/backend_configs.yaml @@ -0,0 +1,13 @@ +dataconnector: + athena: + uri: http://localhost:8081/api/v1/athena + mariadb: + uri: http://localhost:8081/api/v1/mariadb + mongodb: + uri: http://localhost:8082 + mysql8: + uri: http://localhost:8081/api/v1/mysql + oracle: + uri: http://localhost:8081/api/v1/oracle + snowflake: + uri: http://localhost:8081/api/v1/snowflake diff --git a/backend/hasura-mail/hasura/metadata/cron_triggers.yaml b/backend/hasura-mail/hasura/metadata/cron_triggers.yaml new file mode 100644 index 00000000..fe51488c --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/cron_triggers.yaml @@ -0,0 +1 @@ +[] diff --git a/backend/hasura-mail/hasura/metadata/databases/databases.yaml b/backend/hasura-mail/hasura/metadata/databases/databases.yaml new file mode 100644 index 00000000..b25fa9ec --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/databases/databases.yaml @@ -0,0 +1,9 @@ +- name: default + kind: postgres + configuration: + connection_info: + database_url: + from_env: PG_DATABASE_URL + isolation_level: read-committed + use_prepared_statements: false + tables: "!include default/tables/tables.yaml" diff --git a/backend/hasura-mail/hasura/metadata/databases/default/tables/public_custom_address.yaml b/backend/hasura-mail/hasura/metadata/databases/default/tables/public_custom_address.yaml new file mode 100644 index 00000000..0e0e4a02 --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/databases/default/tables/public_custom_address.yaml @@ -0,0 +1,13 @@ +table: + name: custom_address + schema: public +configuration: + column_config: + created_at: + custom_name: createdAt + updated_at: + custom_name: updatedAt + custom_column_names: + created_at: createdAt + updated_at: updatedAt + custom_root_fields: {} diff --git a/backend/hasura-mail/hasura/metadata/databases/default/tables/public_mails.yaml b/backend/hasura-mail/hasura/metadata/databases/default/tables/public_mails.yaml new file mode 100644 index 00000000..41483838 --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/databases/default/tables/public_mails.yaml @@ -0,0 +1,25 @@ +table: + name: mails + schema: public +configuration: + column_config: + created_at: + custom_name: createdAt + from_address: + custom_name: fromAddress + html_content: + custom_name: htmlContent + text_content: + custom_name: textContent + to_address: + custom_name: toAddress + updated_at: + custom_name: updatedAt + custom_column_names: + created_at: createdAt + from_address: fromAddress + html_content: htmlContent + text_content: textContent + to_address: toAddress + updated_at: updatedAt + custom_root_fields: {} diff --git a/backend/hasura-mail/hasura/metadata/databases/default/tables/tables.yaml b/backend/hasura-mail/hasura/metadata/databases/default/tables/tables.yaml new file mode 100644 index 00000000..b5b67cc5 --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/databases/default/tables/tables.yaml @@ -0,0 +1,2 @@ +- "!include public_custom_address.yaml" +- "!include public_mails.yaml" diff --git a/backend/hasura-mail/hasura/metadata/graphql_schema_introspection.yaml b/backend/hasura-mail/hasura/metadata/graphql_schema_introspection.yaml new file mode 100644 index 00000000..61a4dcac --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/graphql_schema_introspection.yaml @@ -0,0 +1 @@ +disabled_for_roles: [] diff --git a/backend/hasura-mail/hasura/metadata/inherited_roles.yaml b/backend/hasura-mail/hasura/metadata/inherited_roles.yaml new file mode 100644 index 00000000..fe51488c --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/inherited_roles.yaml @@ -0,0 +1 @@ +[] diff --git a/backend/hasura-mail/hasura/metadata/metrics_config.yaml b/backend/hasura-mail/hasura/metadata/metrics_config.yaml new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/metrics_config.yaml @@ -0,0 +1 @@ +{} diff --git a/backend/hasura-mail/hasura/metadata/network.yaml b/backend/hasura-mail/hasura/metadata/network.yaml new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/network.yaml @@ -0,0 +1 @@ +{} diff --git a/backend/hasura-mail/hasura/metadata/opentelemetry.yaml b/backend/hasura-mail/hasura/metadata/opentelemetry.yaml new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/opentelemetry.yaml @@ -0,0 +1 @@ +{} diff --git a/backend/hasura-mail/hasura/metadata/query_collections.yaml b/backend/hasura-mail/hasura/metadata/query_collections.yaml new file mode 100644 index 00000000..fe51488c --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/query_collections.yaml @@ -0,0 +1 @@ +[] diff --git a/backend/hasura-mail/hasura/metadata/remote_schemas.yaml b/backend/hasura-mail/hasura/metadata/remote_schemas.yaml new file mode 100644 index 00000000..fe51488c --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/remote_schemas.yaml @@ -0,0 +1 @@ +[] diff --git a/backend/hasura-mail/hasura/metadata/rest_endpoints.yaml b/backend/hasura-mail/hasura/metadata/rest_endpoints.yaml new file mode 100644 index 00000000..fe51488c --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/rest_endpoints.yaml @@ -0,0 +1 @@ +[] diff --git a/backend/hasura-mail/hasura/metadata/version.yaml b/backend/hasura-mail/hasura/metadata/version.yaml new file mode 100644 index 00000000..0a70affa --- /dev/null +++ b/backend/hasura-mail/hasura/metadata/version.yaml @@ -0,0 +1 @@ +version: 3 diff --git a/backend/hasura-mail/hasura/migrations/default/1711624665816_initial/up.sql b/backend/hasura-mail/hasura/migrations/default/1711624665816_initial/up.sql new file mode 100644 index 00000000..d574b36b --- /dev/null +++ b/backend/hasura-mail/hasura/migrations/default/1711624665816_initial/up.sql @@ -0,0 +1,45 @@ +SET check_function_bodies = false; +CREATE FUNCTION public.set_current_timestamp_updated_at() RETURNS trigger + LANGUAGE plpgsql + AS $$ +DECLARE + _new record; +BEGIN + _new := NEW; + _new."updated_at" = NOW(); + RETURN _new; +END; +$$; +CREATE TABLE public.custom_address ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + address text NOT NULL, + description text NOT NULL, + key text NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL +); +COMMENT ON TABLE public.custom_address IS 'custom address for paybox'; +CREATE TABLE public.mails ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + from_address text NOT NULL, + to_address text NOT NULL, + subject text NOT NULL, + text_content text NOT NULL, + html_content text NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + date timestamp with time zone NOT NULL +); +COMMENT ON TABLE public.mails IS 'mails from clients'; +ALTER TABLE ONLY public.custom_address + ADD CONSTRAINT custom_address_address_key UNIQUE (address); +ALTER TABLE ONLY public.custom_address + ADD CONSTRAINT custom_address_key_key UNIQUE (key); +ALTER TABLE ONLY public.custom_address + ADD CONSTRAINT custom_address_pkey PRIMARY KEY (id); +ALTER TABLE ONLY public.mails + ADD CONSTRAINT mails_pkey PRIMARY KEY (id); +CREATE TRIGGER set_public_custom_address_updated_at BEFORE UPDATE ON public.custom_address FOR EACH ROW EXECUTE FUNCTION public.set_current_timestamp_updated_at(); +COMMENT ON TRIGGER set_public_custom_address_updated_at ON public.custom_address IS 'trigger to set value of column "updated_at" to current timestamp on row update'; +CREATE TRIGGER set_public_mails_updated_at BEFORE UPDATE ON public.mails FOR EACH ROW EXECUTE FUNCTION public.set_current_timestamp_updated_at(); +COMMENT ON TRIGGER set_public_mails_updated_at ON public.mails IS 'trigger to set value of column "updated_at" to current timestamp on row update'; diff --git a/backend/hasura/docker-compose.yml b/backend/hasura/docker-compose.yml index 97d588aa..2667cc46 100644 --- a/backend/hasura/docker-compose.yml +++ b/backend/hasura/docker-compose.yml @@ -29,7 +29,7 @@ services: timeout: 5s hasura: - image: hasura/graphql-engine:v2.18.0.cli-migrations-v3 + image: hasura/graphql-engine:v2.38.0 ports: - 8112:8080 depends_on: @@ -47,6 +47,7 @@ services: HASURA_GRAPHQL_DATABASE_URL: postgres://user:pass@postgres/reef_dev HASURA_GRAPHQL_DEV_MODE: "true" HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey + HASURA_GRAPHQL_ENABLE_CONSOLE: "true" volumes: data: \ No newline at end of file diff --git a/backend/mail-zeus/.dockerignore b/backend/mail-zeus/.dockerignore new file mode 100644 index 00000000..1828d45e --- /dev/null +++ b/backend/mail-zeus/.dockerignore @@ -0,0 +1,10 @@ +node_modules +.build +.next +out +.env +dist +.DS_Store +npm-debug.log +yarn-error.log +.turbo diff --git a/backend/mail-zeus/.env.example b/backend/mail-zeus/.env.example new file mode 100644 index 00000000..83073e69 --- /dev/null +++ b/backend/mail-zeus/.env.example @@ -0,0 +1,2 @@ +HASURA_MAIL_URL= +HASURA_MAIL_ADMIN_SECRET= \ No newline at end of file diff --git a/backend/mail-zeus/.gitignore b/backend/mail-zeus/.gitignore new file mode 100644 index 00000000..de4772a7 --- /dev/null +++ b/backend/mail-zeus/.gitignore @@ -0,0 +1,34 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +node_modules +.pnp +.pnp.js + +# testing +coverage + +build +/dist + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# turbo +.turbo + +# vercel +.vercel diff --git a/backend/mail-zeus/.yarnrc b/backend/mail-zeus/.yarnrc new file mode 100644 index 00000000..cf16ca24 --- /dev/null +++ b/backend/mail-zeus/.yarnrc @@ -0,0 +1,13 @@ +# backend/ws/.yarnrc + +# Use Workspaces (if needed, though it's typically inherited) +workspaces-experimental true + +"@paybox:registry" "https://registry.yarnpkg.com/" + +# Specify private registry for private packages +# "@paybox:registry" "https://your-private-registry-url/" + +# Use selective version resolutions if needed +# For example, to specify a different version of a package for this workspace +# "@paybox/ws" "1.0.0" diff --git a/backend/mail-zeus/CHANGELOG.md b/backend/mail-zeus/CHANGELOG.md new file mode 100644 index 00000000..9e2cec26 --- /dev/null +++ b/backend/mail-zeus/CHANGELOG.md @@ -0,0 +1,13 @@ +# @paybox/zeus + +## 0.1.1 + +### Patch Changes + +- 2f0d245: feat: updating scripts and pipeline and adding some actions + +## 0.1.0 + +### Minor Changes + +- init package publishing diff --git a/backend/mail-zeus/package.json b/backend/mail-zeus/package.json new file mode 100644 index 00000000..395e17ac --- /dev/null +++ b/backend/mail-zeus/package.json @@ -0,0 +1,23 @@ +{ + "name": "@paybox/mail-zeus", + "version": "0.0.1", + "main": "./src/index.ts", + "types": "./src/index.ts", + "license": "MIT", + "private": "true", + "scripts": { + "zeus": "zeus http://localhost:8114/v1/graphql ./src --header=x-hasura-admin-secret:myadminsecretkey --header=x-hasura-role:admin --subscriptions && prettier src/zeus/*.ts --write", + "build": "esbuild ./src/index.ts --bundle --platform=node --outfile=dist/index.js", + "dev": "yarn build -- --watch", + "codegen": "graphql-codegen generate --config src/codegen.yml" + }, + "dependencies": { + "@graphql-codegen/cli": "^5.0.0", + "@graphql-codegen/typescript": "^4.0.1", + "@graphql-codegen/typescript-operations": "^4.0.1", + "graphql": "^16.8.1", + "graphql-zeus": "^5.3.2", + "prettier": "^3.1.0", + "tsc-alias": "^1.7.1" + } +} diff --git a/backend/mail-zeus/src/codegen.yml b/backend/mail-zeus/src/codegen.yml new file mode 100644 index 00000000..bce0711c --- /dev/null +++ b/backend/mail-zeus/src/codegen.yml @@ -0,0 +1,9 @@ +overwrite: true +schema: + - http://localhost:8114/v1/graphql: + headers: + x-hasura-admin-secret: myadminsecretkey +generates: + src/codegen/types.ts: + plugins: + - "typescript" \ No newline at end of file diff --git a/backend/mail-zeus/src/codegen/types.ts b/backend/mail-zeus/src/codegen/types.ts new file mode 100644 index 00000000..7659cbc8 --- /dev/null +++ b/backend/mail-zeus/src/codegen/types.ts @@ -0,0 +1,771 @@ +export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +export type MakeEmpty = { [_ in K]?: never }; +export type Incremental = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: { input: string; output: string; } + String: { input: string; output: string; } + Boolean: { input: boolean; output: boolean; } + Int: { input: number; output: number; } + Float: { input: number; output: number; } + timestamptz: { input: any; output: any; } + uuid: { input: any; output: any; } +}; + +/** Boolean expression to compare columns of type "String". All fields are combined with logical 'AND'. */ +export type String_Comparison_Exp = { + _eq?: InputMaybe; + _gt?: InputMaybe; + _gte?: InputMaybe; + /** does the column match the given case-insensitive pattern */ + _ilike?: InputMaybe; + _in?: InputMaybe>; + /** does the column match the given POSIX regular expression, case insensitive */ + _iregex?: InputMaybe; + _is_null?: InputMaybe; + /** does the column match the given pattern */ + _like?: InputMaybe; + _lt?: InputMaybe; + _lte?: InputMaybe; + _neq?: InputMaybe; + /** does the column NOT match the given case-insensitive pattern */ + _nilike?: InputMaybe; + _nin?: InputMaybe>; + /** does the column NOT match the given POSIX regular expression, case insensitive */ + _niregex?: InputMaybe; + /** does the column NOT match the given pattern */ + _nlike?: InputMaybe; + /** does the column NOT match the given POSIX regular expression, case sensitive */ + _nregex?: InputMaybe; + /** does the column NOT match the given SQL regular expression */ + _nsimilar?: InputMaybe; + /** does the column match the given POSIX regular expression, case sensitive */ + _regex?: InputMaybe; + /** does the column match the given SQL regular expression */ + _similar?: InputMaybe; +}; + +/** ordering argument of a cursor */ +export enum Cursor_Ordering { + /** ascending ordering of the cursor */ + Asc = 'ASC', + /** descending ordering of the cursor */ + Desc = 'DESC' +} + +/** custom address for paybox */ +export type Custom_Address = { + __typename?: 'custom_address'; + address: Scalars['String']['output']; + createdAt: Scalars['timestamptz']['output']; + description: Scalars['String']['output']; + id: Scalars['uuid']['output']; + key: Scalars['String']['output']; + updatedAt: Scalars['timestamptz']['output']; +}; + +/** aggregated selection of "custom_address" */ +export type Custom_Address_Aggregate = { + __typename?: 'custom_address_aggregate'; + aggregate?: Maybe; + nodes: Array; +}; + +/** aggregate fields of "custom_address" */ +export type Custom_Address_Aggregate_Fields = { + __typename?: 'custom_address_aggregate_fields'; + count: Scalars['Int']['output']; + max?: Maybe; + min?: Maybe; +}; + + +/** aggregate fields of "custom_address" */ +export type Custom_Address_Aggregate_FieldsCountArgs = { + columns?: InputMaybe>; + distinct?: InputMaybe; +}; + +/** Boolean expression to filter rows from the table "custom_address". All fields are combined with a logical 'AND'. */ +export type Custom_Address_Bool_Exp = { + _and?: InputMaybe>; + _not?: InputMaybe; + _or?: InputMaybe>; + address?: InputMaybe; + createdAt?: InputMaybe; + description?: InputMaybe; + id?: InputMaybe; + key?: InputMaybe; + updatedAt?: InputMaybe; +}; + +/** unique or primary key constraints on table "custom_address" */ +export enum Custom_Address_Constraint { + /** unique or primary key constraint on columns "address" */ + CustomAddressAddressKey = 'custom_address_address_key', + /** unique or primary key constraint on columns "key" */ + CustomAddressKeyKey = 'custom_address_key_key', + /** unique or primary key constraint on columns "id" */ + CustomAddressPkey = 'custom_address_pkey' +} + +/** input type for inserting data into table "custom_address" */ +export type Custom_Address_Insert_Input = { + address?: InputMaybe; + createdAt?: InputMaybe; + description?: InputMaybe; + id?: InputMaybe; + key?: InputMaybe; + updatedAt?: InputMaybe; +}; + +/** aggregate max on columns */ +export type Custom_Address_Max_Fields = { + __typename?: 'custom_address_max_fields'; + address?: Maybe; + createdAt?: Maybe; + description?: Maybe; + id?: Maybe; + key?: Maybe; + updatedAt?: Maybe; +}; + +/** aggregate min on columns */ +export type Custom_Address_Min_Fields = { + __typename?: 'custom_address_min_fields'; + address?: Maybe; + createdAt?: Maybe; + description?: Maybe; + id?: Maybe; + key?: Maybe; + updatedAt?: Maybe; +}; + +/** response of any mutation on the table "custom_address" */ +export type Custom_Address_Mutation_Response = { + __typename?: 'custom_address_mutation_response'; + /** number of rows affected by the mutation */ + affected_rows: Scalars['Int']['output']; + /** data from the rows affected by the mutation */ + returning: Array; +}; + +/** on_conflict condition type for table "custom_address" */ +export type Custom_Address_On_Conflict = { + constraint: Custom_Address_Constraint; + update_columns?: Array; + where?: InputMaybe; +}; + +/** Ordering options when selecting data from "custom_address". */ +export type Custom_Address_Order_By = { + address?: InputMaybe; + createdAt?: InputMaybe; + description?: InputMaybe; + id?: InputMaybe; + key?: InputMaybe; + updatedAt?: InputMaybe; +}; + +/** primary key columns input for table: custom_address */ +export type Custom_Address_Pk_Columns_Input = { + id: Scalars['uuid']['input']; +}; + +/** select columns of table "custom_address" */ +export enum Custom_Address_Select_Column { + /** column name */ + Address = 'address', + /** column name */ + CreatedAt = 'createdAt', + /** column name */ + Description = 'description', + /** column name */ + Id = 'id', + /** column name */ + Key = 'key', + /** column name */ + UpdatedAt = 'updatedAt' +} + +/** input type for updating data in table "custom_address" */ +export type Custom_Address_Set_Input = { + address?: InputMaybe; + createdAt?: InputMaybe; + description?: InputMaybe; + id?: InputMaybe; + key?: InputMaybe; + updatedAt?: InputMaybe; +}; + +/** Streaming cursor of the table "custom_address" */ +export type Custom_Address_Stream_Cursor_Input = { + /** Stream column input with initial value */ + initial_value: Custom_Address_Stream_Cursor_Value_Input; + /** cursor ordering */ + ordering?: InputMaybe; +}; + +/** Initial value of the column from where the streaming should start */ +export type Custom_Address_Stream_Cursor_Value_Input = { + address?: InputMaybe; + createdAt?: InputMaybe; + description?: InputMaybe; + id?: InputMaybe; + key?: InputMaybe; + updatedAt?: InputMaybe; +}; + +/** update columns of table "custom_address" */ +export enum Custom_Address_Update_Column { + /** column name */ + Address = 'address', + /** column name */ + CreatedAt = 'createdAt', + /** column name */ + Description = 'description', + /** column name */ + Id = 'id', + /** column name */ + Key = 'key', + /** column name */ + UpdatedAt = 'updatedAt' +} + +export type Custom_Address_Updates = { + /** sets the columns of the filtered rows to the given values */ + _set?: InputMaybe; + /** filter the rows which have to be updated */ + where: Custom_Address_Bool_Exp; +}; + +/** mails from clients */ +export type Mails = { + __typename?: 'mails'; + createdAt: Scalars['timestamptz']['output']; + date: Scalars['timestamptz']['output']; + fromAddress: Scalars['String']['output']; + htmlContent: Scalars['String']['output']; + id: Scalars['uuid']['output']; + subject: Scalars['String']['output']; + textContent: Scalars['String']['output']; + toAddress: Scalars['String']['output']; + updatedAt: Scalars['timestamptz']['output']; +}; + +/** aggregated selection of "mails" */ +export type Mails_Aggregate = { + __typename?: 'mails_aggregate'; + aggregate?: Maybe; + nodes: Array; +}; + +/** aggregate fields of "mails" */ +export type Mails_Aggregate_Fields = { + __typename?: 'mails_aggregate_fields'; + count: Scalars['Int']['output']; + max?: Maybe; + min?: Maybe; +}; + + +/** aggregate fields of "mails" */ +export type Mails_Aggregate_FieldsCountArgs = { + columns?: InputMaybe>; + distinct?: InputMaybe; +}; + +/** Boolean expression to filter rows from the table "mails". All fields are combined with a logical 'AND'. */ +export type Mails_Bool_Exp = { + _and?: InputMaybe>; + _not?: InputMaybe; + _or?: InputMaybe>; + createdAt?: InputMaybe; + date?: InputMaybe; + fromAddress?: InputMaybe; + htmlContent?: InputMaybe; + id?: InputMaybe; + subject?: InputMaybe; + textContent?: InputMaybe; + toAddress?: InputMaybe; + updatedAt?: InputMaybe; +}; + +/** unique or primary key constraints on table "mails" */ +export enum Mails_Constraint { + /** unique or primary key constraint on columns "id" */ + MailsPkey = 'mails_pkey' +} + +/** input type for inserting data into table "mails" */ +export type Mails_Insert_Input = { + createdAt?: InputMaybe; + date?: InputMaybe; + fromAddress?: InputMaybe; + htmlContent?: InputMaybe; + id?: InputMaybe; + subject?: InputMaybe; + textContent?: InputMaybe; + toAddress?: InputMaybe; + updatedAt?: InputMaybe; +}; + +/** aggregate max on columns */ +export type Mails_Max_Fields = { + __typename?: 'mails_max_fields'; + createdAt?: Maybe; + date?: Maybe; + fromAddress?: Maybe; + htmlContent?: Maybe; + id?: Maybe; + subject?: Maybe; + textContent?: Maybe; + toAddress?: Maybe; + updatedAt?: Maybe; +}; + +/** aggregate min on columns */ +export type Mails_Min_Fields = { + __typename?: 'mails_min_fields'; + createdAt?: Maybe; + date?: Maybe; + fromAddress?: Maybe; + htmlContent?: Maybe; + id?: Maybe; + subject?: Maybe; + textContent?: Maybe; + toAddress?: Maybe; + updatedAt?: Maybe; +}; + +/** response of any mutation on the table "mails" */ +export type Mails_Mutation_Response = { + __typename?: 'mails_mutation_response'; + /** number of rows affected by the mutation */ + affected_rows: Scalars['Int']['output']; + /** data from the rows affected by the mutation */ + returning: Array; +}; + +/** on_conflict condition type for table "mails" */ +export type Mails_On_Conflict = { + constraint: Mails_Constraint; + update_columns?: Array; + where?: InputMaybe; +}; + +/** Ordering options when selecting data from "mails". */ +export type Mails_Order_By = { + createdAt?: InputMaybe; + date?: InputMaybe; + fromAddress?: InputMaybe; + htmlContent?: InputMaybe; + id?: InputMaybe; + subject?: InputMaybe; + textContent?: InputMaybe; + toAddress?: InputMaybe; + updatedAt?: InputMaybe; +}; + +/** primary key columns input for table: mails */ +export type Mails_Pk_Columns_Input = { + id: Scalars['uuid']['input']; +}; + +/** select columns of table "mails" */ +export enum Mails_Select_Column { + /** column name */ + CreatedAt = 'createdAt', + /** column name */ + Date = 'date', + /** column name */ + FromAddress = 'fromAddress', + /** column name */ + HtmlContent = 'htmlContent', + /** column name */ + Id = 'id', + /** column name */ + Subject = 'subject', + /** column name */ + TextContent = 'textContent', + /** column name */ + ToAddress = 'toAddress', + /** column name */ + UpdatedAt = 'updatedAt' +} + +/** input type for updating data in table "mails" */ +export type Mails_Set_Input = { + createdAt?: InputMaybe; + date?: InputMaybe; + fromAddress?: InputMaybe; + htmlContent?: InputMaybe; + id?: InputMaybe; + subject?: InputMaybe; + textContent?: InputMaybe; + toAddress?: InputMaybe; + updatedAt?: InputMaybe; +}; + +/** Streaming cursor of the table "mails" */ +export type Mails_Stream_Cursor_Input = { + /** Stream column input with initial value */ + initial_value: Mails_Stream_Cursor_Value_Input; + /** cursor ordering */ + ordering?: InputMaybe; +}; + +/** Initial value of the column from where the streaming should start */ +export type Mails_Stream_Cursor_Value_Input = { + createdAt?: InputMaybe; + date?: InputMaybe; + fromAddress?: InputMaybe; + htmlContent?: InputMaybe; + id?: InputMaybe; + subject?: InputMaybe; + textContent?: InputMaybe; + toAddress?: InputMaybe; + updatedAt?: InputMaybe; +}; + +/** update columns of table "mails" */ +export enum Mails_Update_Column { + /** column name */ + CreatedAt = 'createdAt', + /** column name */ + Date = 'date', + /** column name */ + FromAddress = 'fromAddress', + /** column name */ + HtmlContent = 'htmlContent', + /** column name */ + Id = 'id', + /** column name */ + Subject = 'subject', + /** column name */ + TextContent = 'textContent', + /** column name */ + ToAddress = 'toAddress', + /** column name */ + UpdatedAt = 'updatedAt' +} + +export type Mails_Updates = { + /** sets the columns of the filtered rows to the given values */ + _set?: InputMaybe; + /** filter the rows which have to be updated */ + where: Mails_Bool_Exp; +}; + +/** mutation root */ +export type Mutation_Root = { + __typename?: 'mutation_root'; + /** delete data from the table: "custom_address" */ + delete_custom_address?: Maybe; + /** delete single row from the table: "custom_address" */ + delete_custom_address_by_pk?: Maybe; + /** delete data from the table: "mails" */ + delete_mails?: Maybe; + /** delete single row from the table: "mails" */ + delete_mails_by_pk?: Maybe; + /** insert data into the table: "custom_address" */ + insert_custom_address?: Maybe; + /** insert a single row into the table: "custom_address" */ + insert_custom_address_one?: Maybe; + /** insert data into the table: "mails" */ + insert_mails?: Maybe; + /** insert a single row into the table: "mails" */ + insert_mails_one?: Maybe; + /** update data of the table: "custom_address" */ + update_custom_address?: Maybe; + /** update single row of the table: "custom_address" */ + update_custom_address_by_pk?: Maybe; + /** update multiples rows of table: "custom_address" */ + update_custom_address_many?: Maybe>>; + /** update data of the table: "mails" */ + update_mails?: Maybe; + /** update single row of the table: "mails" */ + update_mails_by_pk?: Maybe; + /** update multiples rows of table: "mails" */ + update_mails_many?: Maybe>>; +}; + + +/** mutation root */ +export type Mutation_RootDelete_Custom_AddressArgs = { + where: Custom_Address_Bool_Exp; +}; + + +/** mutation root */ +export type Mutation_RootDelete_Custom_Address_By_PkArgs = { + id: Scalars['uuid']['input']; +}; + + +/** mutation root */ +export type Mutation_RootDelete_MailsArgs = { + where: Mails_Bool_Exp; +}; + + +/** mutation root */ +export type Mutation_RootDelete_Mails_By_PkArgs = { + id: Scalars['uuid']['input']; +}; + + +/** mutation root */ +export type Mutation_RootInsert_Custom_AddressArgs = { + objects: Array; + on_conflict?: InputMaybe; +}; + + +/** mutation root */ +export type Mutation_RootInsert_Custom_Address_OneArgs = { + object: Custom_Address_Insert_Input; + on_conflict?: InputMaybe; +}; + + +/** mutation root */ +export type Mutation_RootInsert_MailsArgs = { + objects: Array; + on_conflict?: InputMaybe; +}; + + +/** mutation root */ +export type Mutation_RootInsert_Mails_OneArgs = { + object: Mails_Insert_Input; + on_conflict?: InputMaybe; +}; + + +/** mutation root */ +export type Mutation_RootUpdate_Custom_AddressArgs = { + _set?: InputMaybe; + where: Custom_Address_Bool_Exp; +}; + + +/** mutation root */ +export type Mutation_RootUpdate_Custom_Address_By_PkArgs = { + _set?: InputMaybe; + pk_columns: Custom_Address_Pk_Columns_Input; +}; + + +/** mutation root */ +export type Mutation_RootUpdate_Custom_Address_ManyArgs = { + updates: Array; +}; + + +/** mutation root */ +export type Mutation_RootUpdate_MailsArgs = { + _set?: InputMaybe; + where: Mails_Bool_Exp; +}; + + +/** mutation root */ +export type Mutation_RootUpdate_Mails_By_PkArgs = { + _set?: InputMaybe; + pk_columns: Mails_Pk_Columns_Input; +}; + + +/** mutation root */ +export type Mutation_RootUpdate_Mails_ManyArgs = { + updates: Array; +}; + +/** column ordering options */ +export enum Order_By { + /** in ascending order, nulls last */ + Asc = 'asc', + /** in ascending order, nulls first */ + AscNullsFirst = 'asc_nulls_first', + /** in ascending order, nulls last */ + AscNullsLast = 'asc_nulls_last', + /** in descending order, nulls first */ + Desc = 'desc', + /** in descending order, nulls first */ + DescNullsFirst = 'desc_nulls_first', + /** in descending order, nulls last */ + DescNullsLast = 'desc_nulls_last' +} + +export type Query_Root = { + __typename?: 'query_root'; + /** fetch data from the table: "custom_address" */ + custom_address: Array; + /** fetch aggregated fields from the table: "custom_address" */ + custom_address_aggregate: Custom_Address_Aggregate; + /** fetch data from the table: "custom_address" using primary key columns */ + custom_address_by_pk?: Maybe; + /** fetch data from the table: "mails" */ + mails: Array; + /** fetch aggregated fields from the table: "mails" */ + mails_aggregate: Mails_Aggregate; + /** fetch data from the table: "mails" using primary key columns */ + mails_by_pk?: Maybe; +}; + + +export type Query_RootCustom_AddressArgs = { + distinct_on?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; + order_by?: InputMaybe>; + where?: InputMaybe; +}; + + +export type Query_RootCustom_Address_AggregateArgs = { + distinct_on?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; + order_by?: InputMaybe>; + where?: InputMaybe; +}; + + +export type Query_RootCustom_Address_By_PkArgs = { + id: Scalars['uuid']['input']; +}; + + +export type Query_RootMailsArgs = { + distinct_on?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; + order_by?: InputMaybe>; + where?: InputMaybe; +}; + + +export type Query_RootMails_AggregateArgs = { + distinct_on?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; + order_by?: InputMaybe>; + where?: InputMaybe; +}; + + +export type Query_RootMails_By_PkArgs = { + id: Scalars['uuid']['input']; +}; + +export type Subscription_Root = { + __typename?: 'subscription_root'; + /** fetch data from the table: "custom_address" */ + custom_address: Array; + /** fetch aggregated fields from the table: "custom_address" */ + custom_address_aggregate: Custom_Address_Aggregate; + /** fetch data from the table: "custom_address" using primary key columns */ + custom_address_by_pk?: Maybe; + /** fetch data from the table in a streaming manner: "custom_address" */ + custom_address_stream: Array; + /** fetch data from the table: "mails" */ + mails: Array; + /** fetch aggregated fields from the table: "mails" */ + mails_aggregate: Mails_Aggregate; + /** fetch data from the table: "mails" using primary key columns */ + mails_by_pk?: Maybe; + /** fetch data from the table in a streaming manner: "mails" */ + mails_stream: Array; +}; + + +export type Subscription_RootCustom_AddressArgs = { + distinct_on?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; + order_by?: InputMaybe>; + where?: InputMaybe; +}; + + +export type Subscription_RootCustom_Address_AggregateArgs = { + distinct_on?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; + order_by?: InputMaybe>; + where?: InputMaybe; +}; + + +export type Subscription_RootCustom_Address_By_PkArgs = { + id: Scalars['uuid']['input']; +}; + + +export type Subscription_RootCustom_Address_StreamArgs = { + batch_size: Scalars['Int']['input']; + cursor: Array>; + where?: InputMaybe; +}; + + +export type Subscription_RootMailsArgs = { + distinct_on?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; + order_by?: InputMaybe>; + where?: InputMaybe; +}; + + +export type Subscription_RootMails_AggregateArgs = { + distinct_on?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; + order_by?: InputMaybe>; + where?: InputMaybe; +}; + + +export type Subscription_RootMails_By_PkArgs = { + id: Scalars['uuid']['input']; +}; + + +export type Subscription_RootMails_StreamArgs = { + batch_size: Scalars['Int']['input']; + cursor: Array>; + where?: InputMaybe; +}; + +/** Boolean expression to compare columns of type "timestamptz". All fields are combined with logical 'AND'. */ +export type Timestamptz_Comparison_Exp = { + _eq?: InputMaybe; + _gt?: InputMaybe; + _gte?: InputMaybe; + _in?: InputMaybe>; + _is_null?: InputMaybe; + _lt?: InputMaybe; + _lte?: InputMaybe; + _neq?: InputMaybe; + _nin?: InputMaybe>; +}; + +/** Boolean expression to compare columns of type "uuid". All fields are combined with logical 'AND'. */ +export type Uuid_Comparison_Exp = { + _eq?: InputMaybe; + _gt?: InputMaybe; + _gte?: InputMaybe; + _in?: InputMaybe>; + _is_null?: InputMaybe; + _lt?: InputMaybe; + _lte?: InputMaybe; + _neq?: InputMaybe; + _nin?: InputMaybe>; +}; diff --git a/backend/mail-zeus/src/index.ts b/backend/mail-zeus/src/index.ts new file mode 100644 index 00000000..f4da921b --- /dev/null +++ b/backend/mail-zeus/src/index.ts @@ -0,0 +1,3 @@ +// export * from "./zeus/const"; +// export * from "./zeus/index"; +// export * from "./codegen/types"; diff --git a/backend/mail-zeus/src/zeus/const.ts b/backend/mail-zeus/src/zeus/const.ts new file mode 100644 index 00000000..86275732 --- /dev/null +++ b/backend/mail-zeus/src/zeus/const.ts @@ -0,0 +1,402 @@ +/* eslint-disable */ + +export const AllTypesProps: Record = { + String_comparison_exp: {}, + cursor_ordering: "enum" as const, + custom_address_aggregate_fields: { + count: { + columns: "custom_address_select_column", + }, + }, + custom_address_bool_exp: { + _and: "custom_address_bool_exp", + _not: "custom_address_bool_exp", + _or: "custom_address_bool_exp", + address: "String_comparison_exp", + createdAt: "timestamptz_comparison_exp", + description: "String_comparison_exp", + id: "uuid_comparison_exp", + key: "String_comparison_exp", + updatedAt: "timestamptz_comparison_exp", + }, + custom_address_constraint: "enum" as const, + custom_address_insert_input: { + createdAt: "timestamptz", + id: "uuid", + updatedAt: "timestamptz", + }, + custom_address_on_conflict: { + constraint: "custom_address_constraint", + update_columns: "custom_address_update_column", + where: "custom_address_bool_exp", + }, + custom_address_order_by: { + address: "order_by", + createdAt: "order_by", + description: "order_by", + id: "order_by", + key: "order_by", + updatedAt: "order_by", + }, + custom_address_pk_columns_input: { + id: "uuid", + }, + custom_address_select_column: "enum" as const, + custom_address_set_input: { + createdAt: "timestamptz", + id: "uuid", + updatedAt: "timestamptz", + }, + custom_address_stream_cursor_input: { + initial_value: "custom_address_stream_cursor_value_input", + ordering: "cursor_ordering", + }, + custom_address_stream_cursor_value_input: { + createdAt: "timestamptz", + id: "uuid", + updatedAt: "timestamptz", + }, + custom_address_update_column: "enum" as const, + custom_address_updates: { + _set: "custom_address_set_input", + where: "custom_address_bool_exp", + }, + mails_aggregate_fields: { + count: { + columns: "mails_select_column", + }, + }, + mails_bool_exp: { + _and: "mails_bool_exp", + _not: "mails_bool_exp", + _or: "mails_bool_exp", + createdAt: "timestamptz_comparison_exp", + date: "timestamptz_comparison_exp", + fromAddress: "String_comparison_exp", + htmlContent: "String_comparison_exp", + id: "uuid_comparison_exp", + subject: "String_comparison_exp", + textContent: "String_comparison_exp", + toAddress: "String_comparison_exp", + updatedAt: "timestamptz_comparison_exp", + }, + mails_constraint: "enum" as const, + mails_insert_input: { + createdAt: "timestamptz", + date: "timestamptz", + id: "uuid", + updatedAt: "timestamptz", + }, + mails_on_conflict: { + constraint: "mails_constraint", + update_columns: "mails_update_column", + where: "mails_bool_exp", + }, + mails_order_by: { + createdAt: "order_by", + date: "order_by", + fromAddress: "order_by", + htmlContent: "order_by", + id: "order_by", + subject: "order_by", + textContent: "order_by", + toAddress: "order_by", + updatedAt: "order_by", + }, + mails_pk_columns_input: { + id: "uuid", + }, + mails_select_column: "enum" as const, + mails_set_input: { + createdAt: "timestamptz", + date: "timestamptz", + id: "uuid", + updatedAt: "timestamptz", + }, + mails_stream_cursor_input: { + initial_value: "mails_stream_cursor_value_input", + ordering: "cursor_ordering", + }, + mails_stream_cursor_value_input: { + createdAt: "timestamptz", + date: "timestamptz", + id: "uuid", + updatedAt: "timestamptz", + }, + mails_update_column: "enum" as const, + mails_updates: { + _set: "mails_set_input", + where: "mails_bool_exp", + }, + mutation_root: { + delete_custom_address: { + where: "custom_address_bool_exp", + }, + delete_custom_address_by_pk: { + id: "uuid", + }, + delete_mails: { + where: "mails_bool_exp", + }, + delete_mails_by_pk: { + id: "uuid", + }, + insert_custom_address: { + objects: "custom_address_insert_input", + on_conflict: "custom_address_on_conflict", + }, + insert_custom_address_one: { + object: "custom_address_insert_input", + on_conflict: "custom_address_on_conflict", + }, + insert_mails: { + objects: "mails_insert_input", + on_conflict: "mails_on_conflict", + }, + insert_mails_one: { + object: "mails_insert_input", + on_conflict: "mails_on_conflict", + }, + update_custom_address: { + _set: "custom_address_set_input", + where: "custom_address_bool_exp", + }, + update_custom_address_by_pk: { + _set: "custom_address_set_input", + pk_columns: "custom_address_pk_columns_input", + }, + update_custom_address_many: { + updates: "custom_address_updates", + }, + update_mails: { + _set: "mails_set_input", + where: "mails_bool_exp", + }, + update_mails_by_pk: { + _set: "mails_set_input", + pk_columns: "mails_pk_columns_input", + }, + update_mails_many: { + updates: "mails_updates", + }, + }, + order_by: "enum" as const, + query_root: { + custom_address: { + distinct_on: "custom_address_select_column", + order_by: "custom_address_order_by", + where: "custom_address_bool_exp", + }, + custom_address_aggregate: { + distinct_on: "custom_address_select_column", + order_by: "custom_address_order_by", + where: "custom_address_bool_exp", + }, + custom_address_by_pk: { + id: "uuid", + }, + mails: { + distinct_on: "mails_select_column", + order_by: "mails_order_by", + where: "mails_bool_exp", + }, + mails_aggregate: { + distinct_on: "mails_select_column", + order_by: "mails_order_by", + where: "mails_bool_exp", + }, + mails_by_pk: { + id: "uuid", + }, + }, + subscription_root: { + custom_address: { + distinct_on: "custom_address_select_column", + order_by: "custom_address_order_by", + where: "custom_address_bool_exp", + }, + custom_address_aggregate: { + distinct_on: "custom_address_select_column", + order_by: "custom_address_order_by", + where: "custom_address_bool_exp", + }, + custom_address_by_pk: { + id: "uuid", + }, + custom_address_stream: { + cursor: "custom_address_stream_cursor_input", + where: "custom_address_bool_exp", + }, + mails: { + distinct_on: "mails_select_column", + order_by: "mails_order_by", + where: "mails_bool_exp", + }, + mails_aggregate: { + distinct_on: "mails_select_column", + order_by: "mails_order_by", + where: "mails_bool_exp", + }, + mails_by_pk: { + id: "uuid", + }, + mails_stream: { + cursor: "mails_stream_cursor_input", + where: "mails_bool_exp", + }, + }, + timestamptz: `scalar.timestamptz` as const, + timestamptz_comparison_exp: { + _eq: "timestamptz", + _gt: "timestamptz", + _gte: "timestamptz", + _in: "timestamptz", + _lt: "timestamptz", + _lte: "timestamptz", + _neq: "timestamptz", + _nin: "timestamptz", + }, + uuid: `scalar.uuid` as const, + uuid_comparison_exp: { + _eq: "uuid", + _gt: "uuid", + _gte: "uuid", + _in: "uuid", + _lt: "uuid", + _lte: "uuid", + _neq: "uuid", + _nin: "uuid", + }, +}; + +export const ReturnTypes: Record = { + cached: { + ttl: "Int", + refresh: "Boolean", + }, + custom_address: { + address: "String", + createdAt: "timestamptz", + description: "String", + id: "uuid", + key: "String", + updatedAt: "timestamptz", + }, + custom_address_aggregate: { + aggregate: "custom_address_aggregate_fields", + nodes: "custom_address", + }, + custom_address_aggregate_fields: { + count: "Int", + max: "custom_address_max_fields", + min: "custom_address_min_fields", + }, + custom_address_max_fields: { + address: "String", + createdAt: "timestamptz", + description: "String", + id: "uuid", + key: "String", + updatedAt: "timestamptz", + }, + custom_address_min_fields: { + address: "String", + createdAt: "timestamptz", + description: "String", + id: "uuid", + key: "String", + updatedAt: "timestamptz", + }, + custom_address_mutation_response: { + affected_rows: "Int", + returning: "custom_address", + }, + mails: { + createdAt: "timestamptz", + date: "timestamptz", + fromAddress: "String", + htmlContent: "String", + id: "uuid", + subject: "String", + textContent: "String", + toAddress: "String", + updatedAt: "timestamptz", + }, + mails_aggregate: { + aggregate: "mails_aggregate_fields", + nodes: "mails", + }, + mails_aggregate_fields: { + count: "Int", + max: "mails_max_fields", + min: "mails_min_fields", + }, + mails_max_fields: { + createdAt: "timestamptz", + date: "timestamptz", + fromAddress: "String", + htmlContent: "String", + id: "uuid", + subject: "String", + textContent: "String", + toAddress: "String", + updatedAt: "timestamptz", + }, + mails_min_fields: { + createdAt: "timestamptz", + date: "timestamptz", + fromAddress: "String", + htmlContent: "String", + id: "uuid", + subject: "String", + textContent: "String", + toAddress: "String", + updatedAt: "timestamptz", + }, + mails_mutation_response: { + affected_rows: "Int", + returning: "mails", + }, + mutation_root: { + delete_custom_address: "custom_address_mutation_response", + delete_custom_address_by_pk: "custom_address", + delete_mails: "mails_mutation_response", + delete_mails_by_pk: "mails", + insert_custom_address: "custom_address_mutation_response", + insert_custom_address_one: "custom_address", + insert_mails: "mails_mutation_response", + insert_mails_one: "mails", + update_custom_address: "custom_address_mutation_response", + update_custom_address_by_pk: "custom_address", + update_custom_address_many: "custom_address_mutation_response", + update_mails: "mails_mutation_response", + update_mails_by_pk: "mails", + update_mails_many: "mails_mutation_response", + }, + query_root: { + custom_address: "custom_address", + custom_address_aggregate: "custom_address_aggregate", + custom_address_by_pk: "custom_address", + mails: "mails", + mails_aggregate: "mails_aggregate", + mails_by_pk: "mails", + }, + subscription_root: { + custom_address: "custom_address", + custom_address_aggregate: "custom_address_aggregate", + custom_address_by_pk: "custom_address", + custom_address_stream: "custom_address", + mails: "mails", + mails_aggregate: "mails_aggregate", + mails_by_pk: "mails", + mails_stream: "mails", + }, + timestamptz: `scalar.timestamptz` as const, + uuid: `scalar.uuid` as const, +}; + +export const Ops = { + query: "query_root" as const, + mutation: "mutation_root" as const, + subscription: "subscription_root" as const, +}; diff --git a/backend/mail-zeus/src/zeus/index.ts b/backend/mail-zeus/src/zeus/index.ts new file mode 100644 index 00000000..9f9ba1c6 --- /dev/null +++ b/backend/mail-zeus/src/zeus/index.ts @@ -0,0 +1,3785 @@ +/* eslint-disable */ + +import { AllTypesProps, ReturnTypes, Ops } from "./const"; +export const HOST = "http://localhost:8114/v1/graphql"; + +export const HEADERS = {}; +export const apiSubscription = (options: chainOptions) => (query: string) => { + try { + const queryString = options[0] + "?query=" + encodeURIComponent(query); + const wsString = queryString.replace("http", "ws"); + const host = (options.length > 1 && options[1]?.websocket?.[0]) || wsString; + const webSocketOptions = options[1]?.websocket || [host]; + const ws = new WebSocket(...webSocketOptions); + return { + ws, + on: (e: (args: any) => void) => { + ws.onmessage = (event: any) => { + if (event.data) { + const parsed = JSON.parse(event.data); + const data = parsed.data; + return e(data); + } + }; + }, + off: (e: (args: any) => void) => { + ws.onclose = e; + }, + error: (e: (args: any) => void) => { + ws.onerror = e; + }, + open: (e: () => void) => { + ws.onopen = e; + }, + }; + } catch { + throw new Error("No websockets implemented"); + } +}; +const handleFetchResponse = (response: Response): Promise => { + if (!response.ok) { + return new Promise((_, reject) => { + response + .text() + .then((text) => { + try { + reject(JSON.parse(text)); + } catch (err) { + reject(text); + } + }) + .catch(reject); + }); + } + return response.json() as Promise; +}; + +export const apiFetch = + (options: fetchOptions) => + (query: string, variables: Record = {}) => { + const fetchOptions = options[1] || {}; + if (fetchOptions.method && fetchOptions.method === "GET") { + return fetch( + `${options[0]}?query=${encodeURIComponent(query)}`, + fetchOptions, + ) + .then(handleFetchResponse) + .then((response: GraphQLResponse) => { + if (response.errors) { + throw new GraphQLError(response); + } + return response.data; + }); + } + return fetch(`${options[0]}`, { + body: JSON.stringify({ query, variables }), + method: "POST", + headers: { + "Content-Type": "application/json", + }, + ...fetchOptions, + }) + .then(handleFetchResponse) + .then((response: GraphQLResponse) => { + if (response.errors) { + throw new GraphQLError(response); + } + return response.data; + }); + }; + +export const InternalsBuildQuery = ({ + ops, + props, + returns, + options, + scalars, +}: { + props: AllTypesPropsType; + returns: ReturnTypesType; + ops: Operations; + options?: OperationOptions; + scalars?: ScalarDefinition; +}) => { + const ibb = ( + k: string, + o: InputValueType | VType, + p = "", + root = true, + vars: Array<{ name: string; graphQLType: string }> = [], + ): string => { + const keyForPath = purifyGraphQLKey(k); + const newPath = [p, keyForPath].join(SEPARATOR); + if (!o) { + return ""; + } + if (typeof o === "boolean" || typeof o === "number") { + return k; + } + if (typeof o === "string") { + return `${k} ${o}`; + } + if (Array.isArray(o)) { + const args = InternalArgsBuilt({ + props, + returns, + ops, + scalars, + vars, + })(o[0], newPath); + return `${ibb(args ? `${k}(${args})` : k, o[1], p, false, vars)}`; + } + if (k === "__alias") { + return Object.entries(o) + .map(([alias, objectUnderAlias]) => { + if ( + typeof objectUnderAlias !== "object" || + Array.isArray(objectUnderAlias) + ) { + throw new Error( + "Invalid alias it should be __alias:{ YOUR_ALIAS_NAME: { OPERATION_NAME: { ...selectors }}}", + ); + } + const operationName = Object.keys(objectUnderAlias)[0]; + const operation = objectUnderAlias[operationName]; + return ibb(`${alias}:${operationName}`, operation, p, false, vars); + }) + .join("\n"); + } + const hasOperationName = + root && options?.operationName ? " " + options.operationName : ""; + const keyForDirectives = o.__directives ?? ""; + const query = `{${Object.entries(o) + .filter(([k]) => k !== "__directives") + .map((e) => + ibb(...e, [p, `field<>${keyForPath}`].join(SEPARATOR), false, vars), + ) + .join("\n")}}`; + if (!root) { + return `${k} ${keyForDirectives}${hasOperationName} ${query}`; + } + const varsString = vars + .map((v) => `${v.name}: ${v.graphQLType}`) + .join(", "); + return `${k} ${keyForDirectives}${hasOperationName}${varsString ? `(${varsString})` : ""} ${query}`; + }; + return ibb; +}; + +export const Thunder = + (fn: FetchFunction) => + < + O extends keyof typeof Ops, + SCLR extends ScalarDefinition, + R extends keyof ValueTypes = GenericOperation, + >( + operation: O, + graphqlOptions?: ThunderGraphQLOptions, + ) => + ( + o: (Z & ValueTypes[R]) | ValueTypes[R], + ops?: OperationOptions & { variables?: Record }, + ) => + fn( + Zeus(operation, o, { + operationOptions: ops, + scalars: graphqlOptions?.scalars, + }), + ops?.variables, + ).then((data) => { + if (graphqlOptions?.scalars) { + return decodeScalarsInResponse({ + response: data, + initialOp: operation, + initialZeusQuery: o as VType, + returns: ReturnTypes, + scalars: graphqlOptions.scalars, + ops: Ops, + }); + } + return data; + }) as Promise>; + +export const Chain = (...options: chainOptions) => Thunder(apiFetch(options)); + +export const SubscriptionThunder = + (fn: SubscriptionFunction) => + < + O extends keyof typeof Ops, + SCLR extends ScalarDefinition, + R extends keyof ValueTypes = GenericOperation, + >( + operation: O, + graphqlOptions?: ThunderGraphQLOptions, + ) => + ( + o: (Z & ValueTypes[R]) | ValueTypes[R], + ops?: OperationOptions & { variables?: ExtractVariables }, + ) => { + const returnedFunction = fn( + Zeus(operation, o, { + operationOptions: ops, + scalars: graphqlOptions?.scalars, + }), + ) as SubscriptionToGraphQL; + if (returnedFunction?.on && graphqlOptions?.scalars) { + const wrapped = returnedFunction.on; + returnedFunction.on = ( + fnToCall: (args: InputType) => void, + ) => + wrapped((data: InputType) => { + if (graphqlOptions?.scalars) { + return fnToCall( + decodeScalarsInResponse({ + response: data, + initialOp: operation, + initialZeusQuery: o as VType, + returns: ReturnTypes, + scalars: graphqlOptions.scalars, + ops: Ops, + }), + ); + } + return fnToCall(data); + }); + } + return returnedFunction; + }; + +export const Subscription = (...options: chainOptions) => + SubscriptionThunder(apiSubscription(options)); +export const Zeus = < + Z extends ValueTypes[R], + O extends keyof typeof Ops, + R extends keyof ValueTypes = GenericOperation, +>( + operation: O, + o: (Z & ValueTypes[R]) | ValueTypes[R], + ops?: { + operationOptions?: OperationOptions; + scalars?: ScalarDefinition; + }, +) => + InternalsBuildQuery({ + props: AllTypesProps, + returns: ReturnTypes, + ops: Ops, + options: ops?.operationOptions, + scalars: ops?.scalars, + })(operation, o as VType); + +export const ZeusSelect = () => ((t: unknown) => t) as SelectionFunction; + +export const Selector = (key: T) => + key && ZeusSelect(); + +export const TypeFromSelector = (key: T) => + key && ZeusSelect(); +export const Gql = Chain(HOST, { + headers: { + "Content-Type": "application/json", + ...HEADERS, + }, +}); + +export const ZeusScalars = ZeusSelect(); + +export const decodeScalarsInResponse = ({ + response, + scalars, + returns, + ops, + initialZeusQuery, + initialOp, +}: { + ops: O; + response: any; + returns: ReturnTypesType; + scalars?: Record; + initialOp: keyof O; + initialZeusQuery: InputValueType | VType; +}) => { + if (!scalars) { + return response; + } + const builder = PrepareScalarPaths({ + ops, + returns, + }); + + const scalarPaths = builder( + initialOp as string, + ops[initialOp], + initialZeusQuery, + ); + if (scalarPaths) { + const r = traverseResponse({ scalarPaths, resolvers: scalars })( + initialOp as string, + response, + [ops[initialOp]], + ); + return r; + } + return response; +}; + +export const traverseResponse = ({ + resolvers, + scalarPaths, +}: { + scalarPaths: { [x: string]: `scalar.${string}` }; + resolvers: { + [x: string]: ScalarResolver | undefined; + }; +}) => { + const ibb = ( + k: string, + o: InputValueType | VType, + p: string[] = [], + ): unknown => { + if (Array.isArray(o)) { + return o.map((eachO) => ibb(k, eachO, p)); + } + if (o == null) { + return o; + } + const scalarPathString = p.join(SEPARATOR); + const currentScalarString = scalarPaths[scalarPathString]; + if (currentScalarString) { + const currentDecoder = + resolvers[currentScalarString.split(".")[1]]?.decode; + if (currentDecoder) { + return currentDecoder(o); + } + } + if ( + typeof o === "boolean" || + typeof o === "number" || + typeof o === "string" || + !o + ) { + return o; + } + const entries = Object.entries(o).map( + ([k, v]) => [k, ibb(k, v, [...p, purifyGraphQLKey(k)])] as const, + ); + const objectFromEntries = entries.reduce>( + (a, [k, v]) => { + a[k] = v; + return a; + }, + {}, + ); + return objectFromEntries; + }; + return ibb; +}; + +export type AllTypesPropsType = { + [x: string]: + | undefined + | `scalar.${string}` + | "enum" + | { + [x: string]: + | undefined + | string + | { + [x: string]: string | undefined; + }; + }; +}; + +export type ReturnTypesType = { + [x: string]: + | { + [x: string]: string | undefined; + } + | `scalar.${string}` + | undefined; +}; +export type InputValueType = { + [x: string]: + | undefined + | boolean + | string + | number + | [any, undefined | boolean | InputValueType] + | InputValueType; +}; +export type VType = + | undefined + | boolean + | string + | number + | [any, undefined | boolean | InputValueType] + | InputValueType; + +export type PlainType = boolean | number | string | null | undefined; +export type ZeusArgsType = + | PlainType + | { + [x: string]: ZeusArgsType; + } + | Array; + +export type Operations = Record; + +export type VariableDefinition = { + [x: string]: unknown; +}; + +export const SEPARATOR = "|"; + +export type fetchOptions = Parameters; +type websocketOptions = typeof WebSocket extends new ( + ...args: infer R +) => WebSocket + ? R + : never; +export type chainOptions = + | [fetchOptions[0], fetchOptions[1] & { websocket?: websocketOptions }] + | [fetchOptions[0]]; +export type FetchFunction = ( + query: string, + variables?: Record, +) => Promise; +export type SubscriptionFunction = (query: string) => any; +type NotUndefined = T extends undefined ? never : T; +export type ResolverType = NotUndefined< + F extends [infer ARGS, any] ? ARGS : undefined +>; + +export type OperationOptions = { + operationName?: string; +}; + +export type ScalarCoder = Record string>; + +export interface GraphQLResponse { + data?: Record; + errors?: Array<{ + message: string; + }>; +} +export class GraphQLError extends Error { + constructor(public response: GraphQLResponse) { + super(""); + console.error(response); + } + toString() { + return "GraphQL Response Error"; + } +} +export type GenericOperation = O extends keyof typeof Ops + ? (typeof Ops)[O] + : never; +export type ThunderGraphQLOptions = { + scalars?: SCLR | ScalarCoders; +}; + +const ExtractScalar = ( + mappedParts: string[], + returns: ReturnTypesType, +): `scalar.${string}` | undefined => { + if (mappedParts.length === 0) { + return; + } + const oKey = mappedParts[0]; + const returnP1 = returns[oKey]; + if (typeof returnP1 === "object") { + const returnP2 = returnP1[mappedParts[1]]; + if (returnP2) { + return ExtractScalar([returnP2, ...mappedParts.slice(2)], returns); + } + return undefined; + } + return returnP1 as `scalar.${string}` | undefined; +}; + +export const PrepareScalarPaths = ({ + ops, + returns, +}: { + returns: ReturnTypesType; + ops: Operations; +}) => { + const ibb = ( + k: string, + originalKey: string, + o: InputValueType | VType, + p: string[] = [], + pOriginals: string[] = [], + root = true, + ): { [x: string]: `scalar.${string}` } | undefined => { + if (!o) { + return; + } + if ( + typeof o === "boolean" || + typeof o === "number" || + typeof o === "string" + ) { + const extractionArray = [...pOriginals, originalKey]; + const isScalar = ExtractScalar(extractionArray, returns); + if (isScalar?.startsWith("scalar")) { + const partOfTree = { + [[...p, k].join(SEPARATOR)]: isScalar, + }; + return partOfTree; + } + return {}; + } + if (Array.isArray(o)) { + return ibb(k, k, o[1], p, pOriginals, false); + } + if (k === "__alias") { + return Object.entries(o) + .map(([alias, objectUnderAlias]) => { + if ( + typeof objectUnderAlias !== "object" || + Array.isArray(objectUnderAlias) + ) { + throw new Error( + "Invalid alias it should be __alias:{ YOUR_ALIAS_NAME: { OPERATION_NAME: { ...selectors }}}", + ); + } + const operationName = Object.keys(objectUnderAlias)[0]; + const operation = objectUnderAlias[operationName]; + return ibb(alias, operationName, operation, p, pOriginals, false); + }) + .reduce((a, b) => ({ + ...a, + ...b, + })); + } + const keyName = root ? ops[k] : k; + return Object.entries(o) + .filter(([k]) => k !== "__directives") + .map(([k, v]) => { + // Inline fragments shouldn't be added to the path as they aren't a field + const isInlineFragment = originalKey.match(/^...\s*on/) != null; + return ibb( + k, + k, + v, + isInlineFragment ? p : [...p, purifyGraphQLKey(keyName || k)], + isInlineFragment + ? pOriginals + : [...pOriginals, purifyGraphQLKey(originalKey)], + false, + ); + }) + .reduce((a, b) => ({ + ...a, + ...b, + })); + }; + return ibb; +}; + +export const purifyGraphQLKey = (k: string) => + k.replace(/\([^)]*\)/g, "").replace(/^[^:]*\:/g, ""); + +const mapPart = (p: string) => { + const [isArg, isField] = p.split("<>"); + if (isField) { + return { + v: isField, + __type: "field", + } as const; + } + return { + v: isArg, + __type: "arg", + } as const; +}; + +type Part = ReturnType; + +export const ResolveFromPath = ( + props: AllTypesPropsType, + returns: ReturnTypesType, + ops: Operations, +) => { + const ResolvePropsType = (mappedParts: Part[]) => { + const oKey = ops[mappedParts[0].v]; + const propsP1 = oKey ? props[oKey] : props[mappedParts[0].v]; + if (propsP1 === "enum" && mappedParts.length === 1) { + return "enum"; + } + if ( + typeof propsP1 === "string" && + propsP1.startsWith("scalar.") && + mappedParts.length === 1 + ) { + return propsP1; + } + if (typeof propsP1 === "object") { + if (mappedParts.length < 2) { + return "not"; + } + const propsP2 = propsP1[mappedParts[1].v]; + if (typeof propsP2 === "string") { + return rpp( + `${propsP2}${SEPARATOR}${mappedParts + .slice(2) + .map((mp) => mp.v) + .join(SEPARATOR)}`, + ); + } + if (typeof propsP2 === "object") { + if (mappedParts.length < 3) { + return "not"; + } + const propsP3 = propsP2[mappedParts[2].v]; + if (propsP3 && mappedParts[2].__type === "arg") { + return rpp( + `${propsP3}${SEPARATOR}${mappedParts + .slice(3) + .map((mp) => mp.v) + .join(SEPARATOR)}`, + ); + } + } + } + }; + const ResolveReturnType = (mappedParts: Part[]) => { + if (mappedParts.length === 0) { + return "not"; + } + const oKey = ops[mappedParts[0].v]; + const returnP1 = oKey ? returns[oKey] : returns[mappedParts[0].v]; + if (typeof returnP1 === "object") { + if (mappedParts.length < 2) return "not"; + const returnP2 = returnP1[mappedParts[1].v]; + if (returnP2) { + return rpp( + `${returnP2}${SEPARATOR}${mappedParts + .slice(2) + .map((mp) => mp.v) + .join(SEPARATOR)}`, + ); + } + } + }; + const rpp = (path: string): "enum" | "not" | `scalar.${string}` => { + const parts = path.split(SEPARATOR).filter((l) => l.length > 0); + const mappedParts = parts.map(mapPart); + const propsP1 = ResolvePropsType(mappedParts); + if (propsP1) { + return propsP1; + } + const returnP1 = ResolveReturnType(mappedParts); + if (returnP1) { + return returnP1; + } + return "not"; + }; + return rpp; +}; + +export const InternalArgsBuilt = ({ + props, + ops, + returns, + scalars, + vars, +}: { + props: AllTypesPropsType; + returns: ReturnTypesType; + ops: Operations; + scalars?: ScalarDefinition; + vars: Array<{ name: string; graphQLType: string }>; +}) => { + const arb = (a: ZeusArgsType, p = "", root = true): string => { + if (typeof a === "string") { + if (a.startsWith(START_VAR_NAME)) { + const [varName, graphQLType] = a + .replace(START_VAR_NAME, "$") + .split(GRAPHQL_TYPE_SEPARATOR); + const v = vars.find((v) => v.name === varName); + if (!v) { + vars.push({ + name: varName, + graphQLType, + }); + } else { + if (v.graphQLType !== graphQLType) { + throw new Error( + `Invalid variable exists with two different GraphQL Types, "${v.graphQLType}" and ${graphQLType}`, + ); + } + } + return varName; + } + } + const checkType = ResolveFromPath(props, returns, ops)(p); + if (checkType.startsWith("scalar.")) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const [_, ...splittedScalar] = checkType.split("."); + const scalarKey = splittedScalar.join("."); + return (scalars?.[scalarKey]?.encode?.(a) as string) || JSON.stringify(a); + } + if (Array.isArray(a)) { + return `[${a.map((arr) => arb(arr, p, false)).join(", ")}]`; + } + if (typeof a === "string") { + if (checkType === "enum") { + return a; + } + return `${JSON.stringify(a)}`; + } + if (typeof a === "object") { + if (a === null) { + return `null`; + } + const returnedObjectString = Object.entries(a) + .filter(([, v]) => typeof v !== "undefined") + .map(([k, v]) => `${k}: ${arb(v, [p, k].join(SEPARATOR), false)}`) + .join(",\n"); + if (!root) { + return `{${returnedObjectString}}`; + } + return returnedObjectString; + } + return `${a}`; + }; + return arb; +}; + +export const resolverFor = < + X, + T extends keyof ResolverInputTypes, + Z extends keyof ResolverInputTypes[T], +>( + type: T, + field: Z, + fn: ( + args: Required[Z] extends [infer Input, any] + ? Input + : any, + source: any, + ) => Z extends keyof ModelTypes[T] + ? ModelTypes[T][Z] | Promise | X + : never, +) => fn as (args?: any, source?: any) => ReturnType; + +export type UnwrapPromise = T extends Promise ? R : T; +export type ZeusState Promise> = NonNullable< + UnwrapPromise> +>; +export type ZeusHook< + T extends ( + ...args: any[] + ) => Record Promise>, + N extends keyof ReturnType, +> = ZeusState[N]>; + +export type WithTypeNameValue = T & { + __typename?: boolean; + __directives?: string; +}; +export type AliasType = WithTypeNameValue & { + __alias?: Record>; +}; +type DeepAnify = { + [P in keyof T]?: any; +}; +type IsPayLoad = T extends [any, infer PayLoad] ? PayLoad : T; +export type ScalarDefinition = Record; + +type IsScalar = S extends "scalar" & { + name: infer T; +} + ? T extends keyof SCLR + ? SCLR[T]["decode"] extends (s: unknown) => unknown + ? ReturnType + : unknown + : unknown + : S; +type IsArray = + T extends Array ? InputType[] : InputType; +type FlattenArray = T extends Array ? R : T; +type BaseZeusResolver = boolean | 1 | string | Variable; + +type IsInterfaced< + SRC extends DeepAnify, + DST, + SCLR extends ScalarDefinition, +> = + FlattenArray extends ZEUS_INTERFACES | ZEUS_UNIONS + ? { + [P in keyof SRC]: SRC[P] extends "__union" & infer R + ? P extends keyof DST + ? IsArray< + R, + "__typename" extends keyof DST + ? DST[P] & { __typename: true } + : DST[P], + SCLR + > + : IsArray< + R, + "__typename" extends keyof DST + ? { __typename: true } + : Record, + SCLR + > + : never; + }[keyof SRC] & { + [P in keyof Omit< + Pick< + SRC, + { + [P in keyof DST]: SRC[P] extends "__union" & infer R ? never : P; + }[keyof DST] + >, + "__typename" + >]: IsPayLoad extends BaseZeusResolver + ? IsScalar + : IsArray; + } + : { + [P in keyof Pick]: IsPayLoad< + DST[P] + > extends BaseZeusResolver + ? IsScalar + : IsArray; + }; + +export type MapType = + SRC extends DeepAnify ? IsInterfaced : never; +// eslint-disable-next-line @typescript-eslint/ban-types +export type InputType = + IsPayLoad extends { __alias: infer R } + ? { + [P in keyof R]: MapType[keyof MapType< + SRC, + R[P], + SCLR + >]; + } & MapType, "__alias">, SCLR> + : MapType, SCLR>; +export type SubscriptionToGraphQL = { + ws: WebSocket; + on: (fn: (args: InputType) => void) => void; + off: ( + fn: (e: { + data?: InputType; + code?: number; + reason?: string; + message?: string; + }) => void, + ) => void; + error: ( + fn: (e: { data?: InputType; errors?: string[] }) => void, + ) => void; + open: () => void; +}; + +// eslint-disable-next-line @typescript-eslint/ban-types +export type FromSelector< + SELECTOR, + NAME extends keyof GraphQLTypes, + SCLR extends ScalarDefinition = {}, +> = InputType; + +export type ScalarResolver = { + encode?: (s: unknown) => string; + decode?: (s: unknown) => unknown; +}; + +export type SelectionFunction = (t: T | V) => T; + +type BuiltInVariableTypes = { + ["String"]: string; + ["Int"]: number; + ["Float"]: number; + ["ID"]: unknown; + ["Boolean"]: boolean; +}; +type AllVariableTypes = keyof BuiltInVariableTypes | keyof ZEUS_VARIABLES; +type VariableRequired = + | `${T}!` + | T + | `[${T}]` + | `[${T}]!` + | `[${T}!]` + | `[${T}!]!`; +type VR = VariableRequired>; + +export type GraphQLVariableType = VR; + +type ExtractVariableTypeString = + T extends VR + ? R1 extends VR + ? R2 extends VR + ? R3 extends VR + ? R4 extends VR + ? R5 + : R4 + : R3 + : R2 + : R1 + : T; + +type DecomposeType = T extends `[${infer R}]` + ? Array> | undefined + : T extends `${infer R}!` + ? NonNullable> + : Type | undefined; + +type ExtractTypeFromGraphQLType = + T extends keyof ZEUS_VARIABLES + ? ZEUS_VARIABLES[T] + : T extends keyof BuiltInVariableTypes + ? BuiltInVariableTypes[T] + : any; + +export type GetVariableType = DecomposeType< + T, + ExtractTypeFromGraphQLType> +>; + +type UndefinedKeys = { + [K in keyof T]-?: T[K] extends NonNullable ? never : K; +}[keyof T]; + +type WithNullableKeys = Pick>; +type WithNonNullableKeys = Omit>; + +type OptionalKeys = { + [P in keyof T]?: T[P]; +}; + +export type WithOptionalNullables = OptionalKeys> & + WithNonNullableKeys; + +export type Variable = { + " __zeus_name": Name; + " __zeus_type": T; +}; + +export type ExtractVariablesDeep = + Query extends Variable + ? { [key in VName]: GetVariableType } + : Query extends string | number | boolean | Array + ? // eslint-disable-next-line @typescript-eslint/ban-types + {} + : UnionToIntersection< + { + [K in keyof Query]: WithOptionalNullables< + ExtractVariablesDeep + >; + }[keyof Query] + >; + +export type ExtractVariables = + Query extends Variable + ? { [key in VName]: GetVariableType } + : Query extends [infer Inputs, infer Outputs] + ? ExtractVariablesDeep & ExtractVariables + : Query extends + | string + | number + | boolean + | Array + ? // eslint-disable-next-line @typescript-eslint/ban-types + {} + : UnionToIntersection< + { + [K in keyof Query]: WithOptionalNullables< + ExtractVariables + >; + }[keyof Query] + >; + +type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ( + k: infer I, +) => void + ? I + : never; + +export const START_VAR_NAME = `$ZEUS_VAR`; +export const GRAPHQL_TYPE_SEPARATOR = `__$GRAPHQL__`; + +export const $ = ( + name: Name, + graphqlType: Type, +) => { + return (START_VAR_NAME + + name + + GRAPHQL_TYPE_SEPARATOR + + graphqlType) as unknown as Variable; +}; +type ZEUS_INTERFACES = never; +export type ScalarCoders = { + timestamptz?: ScalarResolver; + uuid?: ScalarResolver; +}; +type ZEUS_UNIONS = never; + +export type ValueTypes = { + /** Boolean expression to compare columns of type "String". All fields are combined with logical 'AND'. */ + ["String_comparison_exp"]: { + _eq?: string | undefined | null | Variable; + _gt?: string | undefined | null | Variable; + _gte?: string | undefined | null | Variable; + /** does the column match the given case-insensitive pattern */ + _ilike?: string | undefined | null | Variable; + _in?: Array | undefined | null | Variable; + /** does the column match the given POSIX regular expression, case insensitive */ + _iregex?: string | undefined | null | Variable; + _is_null?: boolean | undefined | null | Variable; + /** does the column match the given pattern */ + _like?: string | undefined | null | Variable; + _lt?: string | undefined | null | Variable; + _lte?: string | undefined | null | Variable; + _neq?: string | undefined | null | Variable; + /** does the column NOT match the given case-insensitive pattern */ + _nilike?: string | undefined | null | Variable; + _nin?: Array | undefined | null | Variable; + /** does the column NOT match the given POSIX regular expression, case insensitive */ + _niregex?: string | undefined | null | Variable; + /** does the column NOT match the given pattern */ + _nlike?: string | undefined | null | Variable; + /** does the column NOT match the given POSIX regular expression, case sensitive */ + _nregex?: string | undefined | null | Variable; + /** does the column NOT match the given SQL regular expression */ + _nsimilar?: string | undefined | null | Variable; + /** does the column match the given POSIX regular expression, case sensitive */ + _regex?: string | undefined | null | Variable; + /** does the column match the given SQL regular expression */ + _similar?: string | undefined | null | Variable; + }; + /** ordering argument of a cursor */ + ["cursor_ordering"]: cursor_ordering; + /** custom address for paybox */ + ["custom_address"]: AliasType<{ + address?: boolean | `@${string}`; + createdAt?: boolean | `@${string}`; + description?: boolean | `@${string}`; + id?: boolean | `@${string}`; + key?: boolean | `@${string}`; + updatedAt?: boolean | `@${string}`; + __typename?: boolean | `@${string}`; + }>; + /** aggregated selection of "custom_address" */ + ["custom_address_aggregate"]: AliasType<{ + aggregate?: ValueTypes["custom_address_aggregate_fields"]; + nodes?: ValueTypes["custom_address"]; + __typename?: boolean | `@${string}`; + }>; + /** aggregate fields of "custom_address" */ + ["custom_address_aggregate_fields"]: AliasType<{ + count?: [ + { + columns?: + | Array + | undefined + | null + | Variable; + distinct?: boolean | undefined | null | Variable; + }, + boolean | `@${string}`, + ]; + max?: ValueTypes["custom_address_max_fields"]; + min?: ValueTypes["custom_address_min_fields"]; + __typename?: boolean | `@${string}`; + }>; + /** Boolean expression to filter rows from the table "custom_address". All fields are combined with a logical 'AND'. */ + ["custom_address_bool_exp"]: { + _and?: + | Array + | undefined + | null + | Variable; + _not?: + | ValueTypes["custom_address_bool_exp"] + | undefined + | null + | Variable; + _or?: + | Array + | undefined + | null + | Variable; + address?: + | ValueTypes["String_comparison_exp"] + | undefined + | null + | Variable; + createdAt?: + | ValueTypes["timestamptz_comparison_exp"] + | undefined + | null + | Variable; + description?: + | ValueTypes["String_comparison_exp"] + | undefined + | null + | Variable; + id?: + | ValueTypes["uuid_comparison_exp"] + | undefined + | null + | Variable; + key?: + | ValueTypes["String_comparison_exp"] + | undefined + | null + | Variable; + updatedAt?: + | ValueTypes["timestamptz_comparison_exp"] + | undefined + | null + | Variable; + }; + /** unique or primary key constraints on table "custom_address" */ + ["custom_address_constraint"]: custom_address_constraint; + /** input type for inserting data into table "custom_address" */ + ["custom_address_insert_input"]: { + address?: string | undefined | null | Variable; + createdAt?: + | ValueTypes["timestamptz"] + | undefined + | null + | Variable; + description?: string | undefined | null | Variable; + id?: ValueTypes["uuid"] | undefined | null | Variable; + key?: string | undefined | null | Variable; + updatedAt?: + | ValueTypes["timestamptz"] + | undefined + | null + | Variable; + }; + /** aggregate max on columns */ + ["custom_address_max_fields"]: AliasType<{ + address?: boolean | `@${string}`; + createdAt?: boolean | `@${string}`; + description?: boolean | `@${string}`; + id?: boolean | `@${string}`; + key?: boolean | `@${string}`; + updatedAt?: boolean | `@${string}`; + __typename?: boolean | `@${string}`; + }>; + /** aggregate min on columns */ + ["custom_address_min_fields"]: AliasType<{ + address?: boolean | `@${string}`; + createdAt?: boolean | `@${string}`; + description?: boolean | `@${string}`; + id?: boolean | `@${string}`; + key?: boolean | `@${string}`; + updatedAt?: boolean | `@${string}`; + __typename?: boolean | `@${string}`; + }>; + /** response of any mutation on the table "custom_address" */ + ["custom_address_mutation_response"]: AliasType<{ + /** number of rows affected by the mutation */ + affected_rows?: boolean | `@${string}`; + /** data from the rows affected by the mutation */ + returning?: ValueTypes["custom_address"]; + __typename?: boolean | `@${string}`; + }>; + /** on_conflict condition type for table "custom_address" */ + ["custom_address_on_conflict"]: { + constraint: ValueTypes["custom_address_constraint"] | Variable; + update_columns: + | Array + | Variable; + where?: + | ValueTypes["custom_address_bool_exp"] + | undefined + | null + | Variable; + }; + /** Ordering options when selecting data from "custom_address". */ + ["custom_address_order_by"]: { + address?: ValueTypes["order_by"] | undefined | null | Variable; + createdAt?: + | ValueTypes["order_by"] + | undefined + | null + | Variable; + description?: + | ValueTypes["order_by"] + | undefined + | null + | Variable; + id?: ValueTypes["order_by"] | undefined | null | Variable; + key?: ValueTypes["order_by"] | undefined | null | Variable; + updatedAt?: + | ValueTypes["order_by"] + | undefined + | null + | Variable; + }; + /** primary key columns input for table: custom_address */ + ["custom_address_pk_columns_input"]: { + id: ValueTypes["uuid"] | Variable; + }; + /** select columns of table "custom_address" */ + ["custom_address_select_column"]: custom_address_select_column; + /** input type for updating data in table "custom_address" */ + ["custom_address_set_input"]: { + address?: string | undefined | null | Variable; + createdAt?: + | ValueTypes["timestamptz"] + | undefined + | null + | Variable; + description?: string | undefined | null | Variable; + id?: ValueTypes["uuid"] | undefined | null | Variable; + key?: string | undefined | null | Variable; + updatedAt?: + | ValueTypes["timestamptz"] + | undefined + | null + | Variable; + }; + /** Streaming cursor of the table "custom_address" */ + ["custom_address_stream_cursor_input"]: { + /** Stream column input with initial value */ + initial_value: + | ValueTypes["custom_address_stream_cursor_value_input"] + | Variable; + /** cursor ordering */ + ordering?: + | ValueTypes["cursor_ordering"] + | undefined + | null + | Variable; + }; + /** Initial value of the column from where the streaming should start */ + ["custom_address_stream_cursor_value_input"]: { + address?: string | undefined | null | Variable; + createdAt?: + | ValueTypes["timestamptz"] + | undefined + | null + | Variable; + description?: string | undefined | null | Variable; + id?: ValueTypes["uuid"] | undefined | null | Variable; + key?: string | undefined | null | Variable; + updatedAt?: + | ValueTypes["timestamptz"] + | undefined + | null + | Variable; + }; + /** update columns of table "custom_address" */ + ["custom_address_update_column"]: custom_address_update_column; + ["custom_address_updates"]: { + /** sets the columns of the filtered rows to the given values */ + _set?: + | ValueTypes["custom_address_set_input"] + | undefined + | null + | Variable; + /** filter the rows which have to be updated */ + where: ValueTypes["custom_address_bool_exp"] | Variable; + }; + /** mails from clients */ + ["mails"]: AliasType<{ + createdAt?: boolean | `@${string}`; + date?: boolean | `@${string}`; + fromAddress?: boolean | `@${string}`; + htmlContent?: boolean | `@${string}`; + id?: boolean | `@${string}`; + subject?: boolean | `@${string}`; + textContent?: boolean | `@${string}`; + toAddress?: boolean | `@${string}`; + updatedAt?: boolean | `@${string}`; + __typename?: boolean | `@${string}`; + }>; + /** aggregated selection of "mails" */ + ["mails_aggregate"]: AliasType<{ + aggregate?: ValueTypes["mails_aggregate_fields"]; + nodes?: ValueTypes["mails"]; + __typename?: boolean | `@${string}`; + }>; + /** aggregate fields of "mails" */ + ["mails_aggregate_fields"]: AliasType<{ + count?: [ + { + columns?: + | Array + | undefined + | null + | Variable; + distinct?: boolean | undefined | null | Variable; + }, + boolean | `@${string}`, + ]; + max?: ValueTypes["mails_max_fields"]; + min?: ValueTypes["mails_min_fields"]; + __typename?: boolean | `@${string}`; + }>; + /** Boolean expression to filter rows from the table "mails". All fields are combined with a logical 'AND'. */ + ["mails_bool_exp"]: { + _and?: + | Array + | undefined + | null + | Variable; + _not?: + | ValueTypes["mails_bool_exp"] + | undefined + | null + | Variable; + _or?: + | Array + | undefined + | null + | Variable; + createdAt?: + | ValueTypes["timestamptz_comparison_exp"] + | undefined + | null + | Variable; + date?: + | ValueTypes["timestamptz_comparison_exp"] + | undefined + | null + | Variable; + fromAddress?: + | ValueTypes["String_comparison_exp"] + | undefined + | null + | Variable; + htmlContent?: + | ValueTypes["String_comparison_exp"] + | undefined + | null + | Variable; + id?: + | ValueTypes["uuid_comparison_exp"] + | undefined + | null + | Variable; + subject?: + | ValueTypes["String_comparison_exp"] + | undefined + | null + | Variable; + textContent?: + | ValueTypes["String_comparison_exp"] + | undefined + | null + | Variable; + toAddress?: + | ValueTypes["String_comparison_exp"] + | undefined + | null + | Variable; + updatedAt?: + | ValueTypes["timestamptz_comparison_exp"] + | undefined + | null + | Variable; + }; + /** unique or primary key constraints on table "mails" */ + ["mails_constraint"]: mails_constraint; + /** input type for inserting data into table "mails" */ + ["mails_insert_input"]: { + createdAt?: + | ValueTypes["timestamptz"] + | undefined + | null + | Variable; + date?: ValueTypes["timestamptz"] | undefined | null | Variable; + fromAddress?: string | undefined | null | Variable; + htmlContent?: string | undefined | null | Variable; + id?: ValueTypes["uuid"] | undefined | null | Variable; + subject?: string | undefined | null | Variable; + textContent?: string | undefined | null | Variable; + toAddress?: string | undefined | null | Variable; + updatedAt?: + | ValueTypes["timestamptz"] + | undefined + | null + | Variable; + }; + /** aggregate max on columns */ + ["mails_max_fields"]: AliasType<{ + createdAt?: boolean | `@${string}`; + date?: boolean | `@${string}`; + fromAddress?: boolean | `@${string}`; + htmlContent?: boolean | `@${string}`; + id?: boolean | `@${string}`; + subject?: boolean | `@${string}`; + textContent?: boolean | `@${string}`; + toAddress?: boolean | `@${string}`; + updatedAt?: boolean | `@${string}`; + __typename?: boolean | `@${string}`; + }>; + /** aggregate min on columns */ + ["mails_min_fields"]: AliasType<{ + createdAt?: boolean | `@${string}`; + date?: boolean | `@${string}`; + fromAddress?: boolean | `@${string}`; + htmlContent?: boolean | `@${string}`; + id?: boolean | `@${string}`; + subject?: boolean | `@${string}`; + textContent?: boolean | `@${string}`; + toAddress?: boolean | `@${string}`; + updatedAt?: boolean | `@${string}`; + __typename?: boolean | `@${string}`; + }>; + /** response of any mutation on the table "mails" */ + ["mails_mutation_response"]: AliasType<{ + /** number of rows affected by the mutation */ + affected_rows?: boolean | `@${string}`; + /** data from the rows affected by the mutation */ + returning?: ValueTypes["mails"]; + __typename?: boolean | `@${string}`; + }>; + /** on_conflict condition type for table "mails" */ + ["mails_on_conflict"]: { + constraint: ValueTypes["mails_constraint"] | Variable; + update_columns: + | Array + | Variable; + where?: + | ValueTypes["mails_bool_exp"] + | undefined + | null + | Variable; + }; + /** Ordering options when selecting data from "mails". */ + ["mails_order_by"]: { + createdAt?: + | ValueTypes["order_by"] + | undefined + | null + | Variable; + date?: ValueTypes["order_by"] | undefined | null | Variable; + fromAddress?: + | ValueTypes["order_by"] + | undefined + | null + | Variable; + htmlContent?: + | ValueTypes["order_by"] + | undefined + | null + | Variable; + id?: ValueTypes["order_by"] | undefined | null | Variable; + subject?: ValueTypes["order_by"] | undefined | null | Variable; + textContent?: + | ValueTypes["order_by"] + | undefined + | null + | Variable; + toAddress?: + | ValueTypes["order_by"] + | undefined + | null + | Variable; + updatedAt?: + | ValueTypes["order_by"] + | undefined + | null + | Variable; + }; + /** primary key columns input for table: mails */ + ["mails_pk_columns_input"]: { + id: ValueTypes["uuid"] | Variable; + }; + /** select columns of table "mails" */ + ["mails_select_column"]: mails_select_column; + /** input type for updating data in table "mails" */ + ["mails_set_input"]: { + createdAt?: + | ValueTypes["timestamptz"] + | undefined + | null + | Variable; + date?: ValueTypes["timestamptz"] | undefined | null | Variable; + fromAddress?: string | undefined | null | Variable; + htmlContent?: string | undefined | null | Variable; + id?: ValueTypes["uuid"] | undefined | null | Variable; + subject?: string | undefined | null | Variable; + textContent?: string | undefined | null | Variable; + toAddress?: string | undefined | null | Variable; + updatedAt?: + | ValueTypes["timestamptz"] + | undefined + | null + | Variable; + }; + /** Streaming cursor of the table "mails" */ + ["mails_stream_cursor_input"]: { + /** Stream column input with initial value */ + initial_value: + | ValueTypes["mails_stream_cursor_value_input"] + | Variable; + /** cursor ordering */ + ordering?: + | ValueTypes["cursor_ordering"] + | undefined + | null + | Variable; + }; + /** Initial value of the column from where the streaming should start */ + ["mails_stream_cursor_value_input"]: { + createdAt?: + | ValueTypes["timestamptz"] + | undefined + | null + | Variable; + date?: ValueTypes["timestamptz"] | undefined | null | Variable; + fromAddress?: string | undefined | null | Variable; + htmlContent?: string | undefined | null | Variable; + id?: ValueTypes["uuid"] | undefined | null | Variable; + subject?: string | undefined | null | Variable; + textContent?: string | undefined | null | Variable; + toAddress?: string | undefined | null | Variable; + updatedAt?: + | ValueTypes["timestamptz"] + | undefined + | null + | Variable; + }; + /** update columns of table "mails" */ + ["mails_update_column"]: mails_update_column; + ["mails_updates"]: { + /** sets the columns of the filtered rows to the given values */ + _set?: + | ValueTypes["mails_set_input"] + | undefined + | null + | Variable; + /** filter the rows which have to be updated */ + where: ValueTypes["mails_bool_exp"] | Variable; + }; + /** mutation root */ + ["mutation_root"]: AliasType<{ + delete_custom_address?: [ + { + /** filter the rows which have to be deleted */ + where: ValueTypes["custom_address_bool_exp"] | Variable; + }, + ValueTypes["custom_address_mutation_response"], + ]; + delete_custom_address_by_pk?: [ + { id: ValueTypes["uuid"] | Variable }, + ValueTypes["custom_address"], + ]; + delete_mails?: [ + { + /** filter the rows which have to be deleted */ + where: ValueTypes["mails_bool_exp"] | Variable; + }, + ValueTypes["mails_mutation_response"], + ]; + delete_mails_by_pk?: [ + { id: ValueTypes["uuid"] | Variable }, + ValueTypes["mails"], + ]; + insert_custom_address?: [ + { + /** the rows to be inserted */ + objects: + | Array + | Variable /** upsert condition */; + on_conflict?: + | ValueTypes["custom_address_on_conflict"] + | undefined + | null + | Variable; + }, + ValueTypes["custom_address_mutation_response"], + ]; + insert_custom_address_one?: [ + { + /** the row to be inserted */ + object: + | ValueTypes["custom_address_insert_input"] + | Variable /** upsert condition */; + on_conflict?: + | ValueTypes["custom_address_on_conflict"] + | undefined + | null + | Variable; + }, + ValueTypes["custom_address"], + ]; + insert_mails?: [ + { + /** the rows to be inserted */ + objects: + | Array + | Variable /** upsert condition */; + on_conflict?: + | ValueTypes["mails_on_conflict"] + | undefined + | null + | Variable; + }, + ValueTypes["mails_mutation_response"], + ]; + insert_mails_one?: [ + { + /** the row to be inserted */ + object: + | ValueTypes["mails_insert_input"] + | Variable /** upsert condition */; + on_conflict?: + | ValueTypes["mails_on_conflict"] + | undefined + | null + | Variable; + }, + ValueTypes["mails"], + ]; + update_custom_address?: [ + { + /** sets the columns of the filtered rows to the given values */ + _set?: + | ValueTypes["custom_address_set_input"] + | undefined + | null + | Variable< + any, + string + > /** filter the rows which have to be updated */; + where: ValueTypes["custom_address_bool_exp"] | Variable; + }, + ValueTypes["custom_address_mutation_response"], + ]; + update_custom_address_by_pk?: [ + { + /** sets the columns of the filtered rows to the given values */ + _set?: + | ValueTypes["custom_address_set_input"] + | undefined + | null + | Variable; + pk_columns: + | ValueTypes["custom_address_pk_columns_input"] + | Variable; + }, + ValueTypes["custom_address"], + ]; + update_custom_address_many?: [ + { + /** updates to execute, in order */ + updates: + | Array + | Variable; + }, + ValueTypes["custom_address_mutation_response"], + ]; + update_mails?: [ + { + /** sets the columns of the filtered rows to the given values */ + _set?: + | ValueTypes["mails_set_input"] + | undefined + | null + | Variable< + any, + string + > /** filter the rows which have to be updated */; + where: ValueTypes["mails_bool_exp"] | Variable; + }, + ValueTypes["mails_mutation_response"], + ]; + update_mails_by_pk?: [ + { + /** sets the columns of the filtered rows to the given values */ + _set?: + | ValueTypes["mails_set_input"] + | undefined + | null + | Variable; + pk_columns: + | ValueTypes["mails_pk_columns_input"] + | Variable; + }, + ValueTypes["mails"], + ]; + update_mails_many?: [ + { + /** updates to execute, in order */ + updates: Array | Variable; + }, + ValueTypes["mails_mutation_response"], + ]; + __typename?: boolean | `@${string}`; + }>; + /** column ordering options */ + ["order_by"]: order_by; + ["query_root"]: AliasType<{ + custom_address?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null + | Variable /** limit the number of rows returned */; + limit?: + | number + | undefined + | null + | Variable< + any, + string + > /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null + | Variable /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null + | Variable /** filter the rows returned */; + where?: + | ValueTypes["custom_address_bool_exp"] + | undefined + | null + | Variable; + }, + ValueTypes["custom_address"], + ]; + custom_address_aggregate?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null + | Variable /** limit the number of rows returned */; + limit?: + | number + | undefined + | null + | Variable< + any, + string + > /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null + | Variable /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null + | Variable /** filter the rows returned */; + where?: + | ValueTypes["custom_address_bool_exp"] + | undefined + | null + | Variable; + }, + ValueTypes["custom_address_aggregate"], + ]; + custom_address_by_pk?: [ + { id: ValueTypes["uuid"] | Variable }, + ValueTypes["custom_address"], + ]; + mails?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null + | Variable /** limit the number of rows returned */; + limit?: + | number + | undefined + | null + | Variable< + any, + string + > /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null + | Variable /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null + | Variable /** filter the rows returned */; + where?: + | ValueTypes["mails_bool_exp"] + | undefined + | null + | Variable; + }, + ValueTypes["mails"], + ]; + mails_aggregate?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null + | Variable /** limit the number of rows returned */; + limit?: + | number + | undefined + | null + | Variable< + any, + string + > /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null + | Variable /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null + | Variable /** filter the rows returned */; + where?: + | ValueTypes["mails_bool_exp"] + | undefined + | null + | Variable; + }, + ValueTypes["mails_aggregate"], + ]; + mails_by_pk?: [ + { id: ValueTypes["uuid"] | Variable }, + ValueTypes["mails"], + ]; + __typename?: boolean | `@${string}`; + }>; + ["subscription_root"]: AliasType<{ + custom_address?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null + | Variable /** limit the number of rows returned */; + limit?: + | number + | undefined + | null + | Variable< + any, + string + > /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null + | Variable /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null + | Variable /** filter the rows returned */; + where?: + | ValueTypes["custom_address_bool_exp"] + | undefined + | null + | Variable; + }, + ValueTypes["custom_address"], + ]; + custom_address_aggregate?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null + | Variable /** limit the number of rows returned */; + limit?: + | number + | undefined + | null + | Variable< + any, + string + > /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null + | Variable /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null + | Variable /** filter the rows returned */; + where?: + | ValueTypes["custom_address_bool_exp"] + | undefined + | null + | Variable; + }, + ValueTypes["custom_address_aggregate"], + ]; + custom_address_by_pk?: [ + { id: ValueTypes["uuid"] | Variable }, + ValueTypes["custom_address"], + ]; + custom_address_stream?: [ + { + /** maximum number of rows returned in a single batch */ + batch_size: + | number + | Variable< + any, + string + > /** cursor to stream the results returned by the query */; + cursor: + | Array< + | ValueTypes["custom_address_stream_cursor_input"] + | undefined + | null + > + | Variable /** filter the rows returned */; + where?: + | ValueTypes["custom_address_bool_exp"] + | undefined + | null + | Variable; + }, + ValueTypes["custom_address"], + ]; + mails?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null + | Variable /** limit the number of rows returned */; + limit?: + | number + | undefined + | null + | Variable< + any, + string + > /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null + | Variable /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null + | Variable /** filter the rows returned */; + where?: + | ValueTypes["mails_bool_exp"] + | undefined + | null + | Variable; + }, + ValueTypes["mails"], + ]; + mails_aggregate?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null + | Variable /** limit the number of rows returned */; + limit?: + | number + | undefined + | null + | Variable< + any, + string + > /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null + | Variable /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null + | Variable /** filter the rows returned */; + where?: + | ValueTypes["mails_bool_exp"] + | undefined + | null + | Variable; + }, + ValueTypes["mails_aggregate"], + ]; + mails_by_pk?: [ + { id: ValueTypes["uuid"] | Variable }, + ValueTypes["mails"], + ]; + mails_stream?: [ + { + /** maximum number of rows returned in a single batch */ + batch_size: + | number + | Variable< + any, + string + > /** cursor to stream the results returned by the query */; + cursor: + | Array + | Variable /** filter the rows returned */; + where?: + | ValueTypes["mails_bool_exp"] + | undefined + | null + | Variable; + }, + ValueTypes["mails"], + ]; + __typename?: boolean | `@${string}`; + }>; + ["timestamptz"]: unknown; + /** Boolean expression to compare columns of type "timestamptz". All fields are combined with logical 'AND'. */ + ["timestamptz_comparison_exp"]: { + _eq?: ValueTypes["timestamptz"] | undefined | null | Variable; + _gt?: ValueTypes["timestamptz"] | undefined | null | Variable; + _gte?: ValueTypes["timestamptz"] | undefined | null | Variable; + _in?: + | Array + | undefined + | null + | Variable; + _is_null?: boolean | undefined | null | Variable; + _lt?: ValueTypes["timestamptz"] | undefined | null | Variable; + _lte?: ValueTypes["timestamptz"] | undefined | null | Variable; + _neq?: ValueTypes["timestamptz"] | undefined | null | Variable; + _nin?: + | Array + | undefined + | null + | Variable; + }; + ["uuid"]: unknown; + /** Boolean expression to compare columns of type "uuid". All fields are combined with logical 'AND'. */ + ["uuid_comparison_exp"]: { + _eq?: ValueTypes["uuid"] | undefined | null | Variable; + _gt?: ValueTypes["uuid"] | undefined | null | Variable; + _gte?: ValueTypes["uuid"] | undefined | null | Variable; + _in?: Array | undefined | null | Variable; + _is_null?: boolean | undefined | null | Variable; + _lt?: ValueTypes["uuid"] | undefined | null | Variable; + _lte?: ValueTypes["uuid"] | undefined | null | Variable; + _neq?: ValueTypes["uuid"] | undefined | null | Variable; + _nin?: Array | undefined | null | Variable; + }; +}; + +export type ResolverInputTypes = { + ["schema"]: AliasType<{ + query?: ResolverInputTypes["query_root"]; + mutation?: ResolverInputTypes["mutation_root"]; + subscription?: ResolverInputTypes["subscription_root"]; + __typename?: boolean | `@${string}`; + }>; + /** Boolean expression to compare columns of type "String". All fields are combined with logical 'AND'. */ + ["String_comparison_exp"]: { + _eq?: string | undefined | null; + _gt?: string | undefined | null; + _gte?: string | undefined | null; + /** does the column match the given case-insensitive pattern */ + _ilike?: string | undefined | null; + _in?: Array | undefined | null; + /** does the column match the given POSIX regular expression, case insensitive */ + _iregex?: string | undefined | null; + _is_null?: boolean | undefined | null; + /** does the column match the given pattern */ + _like?: string | undefined | null; + _lt?: string | undefined | null; + _lte?: string | undefined | null; + _neq?: string | undefined | null; + /** does the column NOT match the given case-insensitive pattern */ + _nilike?: string | undefined | null; + _nin?: Array | undefined | null; + /** does the column NOT match the given POSIX regular expression, case insensitive */ + _niregex?: string | undefined | null; + /** does the column NOT match the given pattern */ + _nlike?: string | undefined | null; + /** does the column NOT match the given POSIX regular expression, case sensitive */ + _nregex?: string | undefined | null; + /** does the column NOT match the given SQL regular expression */ + _nsimilar?: string | undefined | null; + /** does the column match the given POSIX regular expression, case sensitive */ + _regex?: string | undefined | null; + /** does the column match the given SQL regular expression */ + _similar?: string | undefined | null; + }; + /** ordering argument of a cursor */ + ["cursor_ordering"]: cursor_ordering; + /** custom address for paybox */ + ["custom_address"]: AliasType<{ + address?: boolean | `@${string}`; + createdAt?: boolean | `@${string}`; + description?: boolean | `@${string}`; + id?: boolean | `@${string}`; + key?: boolean | `@${string}`; + updatedAt?: boolean | `@${string}`; + __typename?: boolean | `@${string}`; + }>; + /** aggregated selection of "custom_address" */ + ["custom_address_aggregate"]: AliasType<{ + aggregate?: ResolverInputTypes["custom_address_aggregate_fields"]; + nodes?: ResolverInputTypes["custom_address"]; + __typename?: boolean | `@${string}`; + }>; + /** aggregate fields of "custom_address" */ + ["custom_address_aggregate_fields"]: AliasType<{ + count?: [ + { + columns?: + | Array + | undefined + | null; + distinct?: boolean | undefined | null; + }, + boolean | `@${string}`, + ]; + max?: ResolverInputTypes["custom_address_max_fields"]; + min?: ResolverInputTypes["custom_address_min_fields"]; + __typename?: boolean | `@${string}`; + }>; + /** Boolean expression to filter rows from the table "custom_address". All fields are combined with a logical 'AND'. */ + ["custom_address_bool_exp"]: { + _and?: + | Array + | undefined + | null; + _not?: ResolverInputTypes["custom_address_bool_exp"] | undefined | null; + _or?: + | Array + | undefined + | null; + address?: ResolverInputTypes["String_comparison_exp"] | undefined | null; + createdAt?: + | ResolverInputTypes["timestamptz_comparison_exp"] + | undefined + | null; + description?: + | ResolverInputTypes["String_comparison_exp"] + | undefined + | null; + id?: ResolverInputTypes["uuid_comparison_exp"] | undefined | null; + key?: ResolverInputTypes["String_comparison_exp"] | undefined | null; + updatedAt?: + | ResolverInputTypes["timestamptz_comparison_exp"] + | undefined + | null; + }; + /** unique or primary key constraints on table "custom_address" */ + ["custom_address_constraint"]: custom_address_constraint; + /** input type for inserting data into table "custom_address" */ + ["custom_address_insert_input"]: { + address?: string | undefined | null; + createdAt?: ResolverInputTypes["timestamptz"] | undefined | null; + description?: string | undefined | null; + id?: ResolverInputTypes["uuid"] | undefined | null; + key?: string | undefined | null; + updatedAt?: ResolverInputTypes["timestamptz"] | undefined | null; + }; + /** aggregate max on columns */ + ["custom_address_max_fields"]: AliasType<{ + address?: boolean | `@${string}`; + createdAt?: boolean | `@${string}`; + description?: boolean | `@${string}`; + id?: boolean | `@${string}`; + key?: boolean | `@${string}`; + updatedAt?: boolean | `@${string}`; + __typename?: boolean | `@${string}`; + }>; + /** aggregate min on columns */ + ["custom_address_min_fields"]: AliasType<{ + address?: boolean | `@${string}`; + createdAt?: boolean | `@${string}`; + description?: boolean | `@${string}`; + id?: boolean | `@${string}`; + key?: boolean | `@${string}`; + updatedAt?: boolean | `@${string}`; + __typename?: boolean | `@${string}`; + }>; + /** response of any mutation on the table "custom_address" */ + ["custom_address_mutation_response"]: AliasType<{ + /** number of rows affected by the mutation */ + affected_rows?: boolean | `@${string}`; + /** data from the rows affected by the mutation */ + returning?: ResolverInputTypes["custom_address"]; + __typename?: boolean | `@${string}`; + }>; + /** on_conflict condition type for table "custom_address" */ + ["custom_address_on_conflict"]: { + constraint: ResolverInputTypes["custom_address_constraint"]; + update_columns: Array; + where?: ResolverInputTypes["custom_address_bool_exp"] | undefined | null; + }; + /** Ordering options when selecting data from "custom_address". */ + ["custom_address_order_by"]: { + address?: ResolverInputTypes["order_by"] | undefined | null; + createdAt?: ResolverInputTypes["order_by"] | undefined | null; + description?: ResolverInputTypes["order_by"] | undefined | null; + id?: ResolverInputTypes["order_by"] | undefined | null; + key?: ResolverInputTypes["order_by"] | undefined | null; + updatedAt?: ResolverInputTypes["order_by"] | undefined | null; + }; + /** primary key columns input for table: custom_address */ + ["custom_address_pk_columns_input"]: { + id: ResolverInputTypes["uuid"]; + }; + /** select columns of table "custom_address" */ + ["custom_address_select_column"]: custom_address_select_column; + /** input type for updating data in table "custom_address" */ + ["custom_address_set_input"]: { + address?: string | undefined | null; + createdAt?: ResolverInputTypes["timestamptz"] | undefined | null; + description?: string | undefined | null; + id?: ResolverInputTypes["uuid"] | undefined | null; + key?: string | undefined | null; + updatedAt?: ResolverInputTypes["timestamptz"] | undefined | null; + }; + /** Streaming cursor of the table "custom_address" */ + ["custom_address_stream_cursor_input"]: { + /** Stream column input with initial value */ + initial_value: ResolverInputTypes["custom_address_stream_cursor_value_input"]; + /** cursor ordering */ + ordering?: ResolverInputTypes["cursor_ordering"] | undefined | null; + }; + /** Initial value of the column from where the streaming should start */ + ["custom_address_stream_cursor_value_input"]: { + address?: string | undefined | null; + createdAt?: ResolverInputTypes["timestamptz"] | undefined | null; + description?: string | undefined | null; + id?: ResolverInputTypes["uuid"] | undefined | null; + key?: string | undefined | null; + updatedAt?: ResolverInputTypes["timestamptz"] | undefined | null; + }; + /** update columns of table "custom_address" */ + ["custom_address_update_column"]: custom_address_update_column; + ["custom_address_updates"]: { + /** sets the columns of the filtered rows to the given values */ + _set?: ResolverInputTypes["custom_address_set_input"] | undefined | null; + /** filter the rows which have to be updated */ + where: ResolverInputTypes["custom_address_bool_exp"]; + }; + /** mails from clients */ + ["mails"]: AliasType<{ + createdAt?: boolean | `@${string}`; + date?: boolean | `@${string}`; + fromAddress?: boolean | `@${string}`; + htmlContent?: boolean | `@${string}`; + id?: boolean | `@${string}`; + subject?: boolean | `@${string}`; + textContent?: boolean | `@${string}`; + toAddress?: boolean | `@${string}`; + updatedAt?: boolean | `@${string}`; + __typename?: boolean | `@${string}`; + }>; + /** aggregated selection of "mails" */ + ["mails_aggregate"]: AliasType<{ + aggregate?: ResolverInputTypes["mails_aggregate_fields"]; + nodes?: ResolverInputTypes["mails"]; + __typename?: boolean | `@${string}`; + }>; + /** aggregate fields of "mails" */ + ["mails_aggregate_fields"]: AliasType<{ + count?: [ + { + columns?: + | Array + | undefined + | null; + distinct?: boolean | undefined | null; + }, + boolean | `@${string}`, + ]; + max?: ResolverInputTypes["mails_max_fields"]; + min?: ResolverInputTypes["mails_min_fields"]; + __typename?: boolean | `@${string}`; + }>; + /** Boolean expression to filter rows from the table "mails". All fields are combined with a logical 'AND'. */ + ["mails_bool_exp"]: { + _and?: Array | undefined | null; + _not?: ResolverInputTypes["mails_bool_exp"] | undefined | null; + _or?: Array | undefined | null; + createdAt?: + | ResolverInputTypes["timestamptz_comparison_exp"] + | undefined + | null; + date?: ResolverInputTypes["timestamptz_comparison_exp"] | undefined | null; + fromAddress?: + | ResolverInputTypes["String_comparison_exp"] + | undefined + | null; + htmlContent?: + | ResolverInputTypes["String_comparison_exp"] + | undefined + | null; + id?: ResolverInputTypes["uuid_comparison_exp"] | undefined | null; + subject?: ResolverInputTypes["String_comparison_exp"] | undefined | null; + textContent?: + | ResolverInputTypes["String_comparison_exp"] + | undefined + | null; + toAddress?: ResolverInputTypes["String_comparison_exp"] | undefined | null; + updatedAt?: + | ResolverInputTypes["timestamptz_comparison_exp"] + | undefined + | null; + }; + /** unique or primary key constraints on table "mails" */ + ["mails_constraint"]: mails_constraint; + /** input type for inserting data into table "mails" */ + ["mails_insert_input"]: { + createdAt?: ResolverInputTypes["timestamptz"] | undefined | null; + date?: ResolverInputTypes["timestamptz"] | undefined | null; + fromAddress?: string | undefined | null; + htmlContent?: string | undefined | null; + id?: ResolverInputTypes["uuid"] | undefined | null; + subject?: string | undefined | null; + textContent?: string | undefined | null; + toAddress?: string | undefined | null; + updatedAt?: ResolverInputTypes["timestamptz"] | undefined | null; + }; + /** aggregate max on columns */ + ["mails_max_fields"]: AliasType<{ + createdAt?: boolean | `@${string}`; + date?: boolean | `@${string}`; + fromAddress?: boolean | `@${string}`; + htmlContent?: boolean | `@${string}`; + id?: boolean | `@${string}`; + subject?: boolean | `@${string}`; + textContent?: boolean | `@${string}`; + toAddress?: boolean | `@${string}`; + updatedAt?: boolean | `@${string}`; + __typename?: boolean | `@${string}`; + }>; + /** aggregate min on columns */ + ["mails_min_fields"]: AliasType<{ + createdAt?: boolean | `@${string}`; + date?: boolean | `@${string}`; + fromAddress?: boolean | `@${string}`; + htmlContent?: boolean | `@${string}`; + id?: boolean | `@${string}`; + subject?: boolean | `@${string}`; + textContent?: boolean | `@${string}`; + toAddress?: boolean | `@${string}`; + updatedAt?: boolean | `@${string}`; + __typename?: boolean | `@${string}`; + }>; + /** response of any mutation on the table "mails" */ + ["mails_mutation_response"]: AliasType<{ + /** number of rows affected by the mutation */ + affected_rows?: boolean | `@${string}`; + /** data from the rows affected by the mutation */ + returning?: ResolverInputTypes["mails"]; + __typename?: boolean | `@${string}`; + }>; + /** on_conflict condition type for table "mails" */ + ["mails_on_conflict"]: { + constraint: ResolverInputTypes["mails_constraint"]; + update_columns: Array; + where?: ResolverInputTypes["mails_bool_exp"] | undefined | null; + }; + /** Ordering options when selecting data from "mails". */ + ["mails_order_by"]: { + createdAt?: ResolverInputTypes["order_by"] | undefined | null; + date?: ResolverInputTypes["order_by"] | undefined | null; + fromAddress?: ResolverInputTypes["order_by"] | undefined | null; + htmlContent?: ResolverInputTypes["order_by"] | undefined | null; + id?: ResolverInputTypes["order_by"] | undefined | null; + subject?: ResolverInputTypes["order_by"] | undefined | null; + textContent?: ResolverInputTypes["order_by"] | undefined | null; + toAddress?: ResolverInputTypes["order_by"] | undefined | null; + updatedAt?: ResolverInputTypes["order_by"] | undefined | null; + }; + /** primary key columns input for table: mails */ + ["mails_pk_columns_input"]: { + id: ResolverInputTypes["uuid"]; + }; + /** select columns of table "mails" */ + ["mails_select_column"]: mails_select_column; + /** input type for updating data in table "mails" */ + ["mails_set_input"]: { + createdAt?: ResolverInputTypes["timestamptz"] | undefined | null; + date?: ResolverInputTypes["timestamptz"] | undefined | null; + fromAddress?: string | undefined | null; + htmlContent?: string | undefined | null; + id?: ResolverInputTypes["uuid"] | undefined | null; + subject?: string | undefined | null; + textContent?: string | undefined | null; + toAddress?: string | undefined | null; + updatedAt?: ResolverInputTypes["timestamptz"] | undefined | null; + }; + /** Streaming cursor of the table "mails" */ + ["mails_stream_cursor_input"]: { + /** Stream column input with initial value */ + initial_value: ResolverInputTypes["mails_stream_cursor_value_input"]; + /** cursor ordering */ + ordering?: ResolverInputTypes["cursor_ordering"] | undefined | null; + }; + /** Initial value of the column from where the streaming should start */ + ["mails_stream_cursor_value_input"]: { + createdAt?: ResolverInputTypes["timestamptz"] | undefined | null; + date?: ResolverInputTypes["timestamptz"] | undefined | null; + fromAddress?: string | undefined | null; + htmlContent?: string | undefined | null; + id?: ResolverInputTypes["uuid"] | undefined | null; + subject?: string | undefined | null; + textContent?: string | undefined | null; + toAddress?: string | undefined | null; + updatedAt?: ResolverInputTypes["timestamptz"] | undefined | null; + }; + /** update columns of table "mails" */ + ["mails_update_column"]: mails_update_column; + ["mails_updates"]: { + /** sets the columns of the filtered rows to the given values */ + _set?: ResolverInputTypes["mails_set_input"] | undefined | null; + /** filter the rows which have to be updated */ + where: ResolverInputTypes["mails_bool_exp"]; + }; + /** mutation root */ + ["mutation_root"]: AliasType<{ + delete_custom_address?: [ + { + /** filter the rows which have to be deleted */ + where: ResolverInputTypes["custom_address_bool_exp"]; + }, + ResolverInputTypes["custom_address_mutation_response"], + ]; + delete_custom_address_by_pk?: [ + { id: ResolverInputTypes["uuid"] }, + ResolverInputTypes["custom_address"], + ]; + delete_mails?: [ + { + /** filter the rows which have to be deleted */ + where: ResolverInputTypes["mails_bool_exp"]; + }, + ResolverInputTypes["mails_mutation_response"], + ]; + delete_mails_by_pk?: [ + { id: ResolverInputTypes["uuid"] }, + ResolverInputTypes["mails"], + ]; + insert_custom_address?: [ + { + /** the rows to be inserted */ + objects: Array< + ResolverInputTypes["custom_address_insert_input"] + > /** upsert condition */; + on_conflict?: + | ResolverInputTypes["custom_address_on_conflict"] + | undefined + | null; + }, + ResolverInputTypes["custom_address_mutation_response"], + ]; + insert_custom_address_one?: [ + { + /** the row to be inserted */ + object: ResolverInputTypes["custom_address_insert_input"] /** upsert condition */; + on_conflict?: + | ResolverInputTypes["custom_address_on_conflict"] + | undefined + | null; + }, + ResolverInputTypes["custom_address"], + ]; + insert_mails?: [ + { + /** the rows to be inserted */ + objects: Array< + ResolverInputTypes["mails_insert_input"] + > /** upsert condition */; + on_conflict?: + | ResolverInputTypes["mails_on_conflict"] + | undefined + | null; + }, + ResolverInputTypes["mails_mutation_response"], + ]; + insert_mails_one?: [ + { + /** the row to be inserted */ + object: ResolverInputTypes["mails_insert_input"] /** upsert condition */; + on_conflict?: + | ResolverInputTypes["mails_on_conflict"] + | undefined + | null; + }, + ResolverInputTypes["mails"], + ]; + update_custom_address?: [ + { + /** sets the columns of the filtered rows to the given values */ + _set?: + | ResolverInputTypes["custom_address_set_input"] + | undefined + | null /** filter the rows which have to be updated */; + where: ResolverInputTypes["custom_address_bool_exp"]; + }, + ResolverInputTypes["custom_address_mutation_response"], + ]; + update_custom_address_by_pk?: [ + { + /** sets the columns of the filtered rows to the given values */ + _set?: + | ResolverInputTypes["custom_address_set_input"] + | undefined + | null; + pk_columns: ResolverInputTypes["custom_address_pk_columns_input"]; + }, + ResolverInputTypes["custom_address"], + ]; + update_custom_address_many?: [ + { + /** updates to execute, in order */ + updates: Array; + }, + ResolverInputTypes["custom_address_mutation_response"], + ]; + update_mails?: [ + { + /** sets the columns of the filtered rows to the given values */ + _set?: + | ResolverInputTypes["mails_set_input"] + | undefined + | null /** filter the rows which have to be updated */; + where: ResolverInputTypes["mails_bool_exp"]; + }, + ResolverInputTypes["mails_mutation_response"], + ]; + update_mails_by_pk?: [ + { + /** sets the columns of the filtered rows to the given values */ + _set?: ResolverInputTypes["mails_set_input"] | undefined | null; + pk_columns: ResolverInputTypes["mails_pk_columns_input"]; + }, + ResolverInputTypes["mails"], + ]; + update_mails_many?: [ + { + /** updates to execute, in order */ + updates: Array; + }, + ResolverInputTypes["mails_mutation_response"], + ]; + __typename?: boolean | `@${string}`; + }>; + /** column ordering options */ + ["order_by"]: order_by; + ["query_root"]: AliasType<{ + custom_address?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null /** limit the number of rows returned */; + limit?: + | number + | undefined + | null /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null /** filter the rows returned */; + where?: + | ResolverInputTypes["custom_address_bool_exp"] + | undefined + | null; + }, + ResolverInputTypes["custom_address"], + ]; + custom_address_aggregate?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null /** limit the number of rows returned */; + limit?: + | number + | undefined + | null /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null /** filter the rows returned */; + where?: + | ResolverInputTypes["custom_address_bool_exp"] + | undefined + | null; + }, + ResolverInputTypes["custom_address_aggregate"], + ]; + custom_address_by_pk?: [ + { id: ResolverInputTypes["uuid"] }, + ResolverInputTypes["custom_address"], + ]; + mails?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null /** limit the number of rows returned */; + limit?: + | number + | undefined + | null /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null /** filter the rows returned */; + where?: ResolverInputTypes["mails_bool_exp"] | undefined | null; + }, + ResolverInputTypes["mails"], + ]; + mails_aggregate?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null /** limit the number of rows returned */; + limit?: + | number + | undefined + | null /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null /** filter the rows returned */; + where?: ResolverInputTypes["mails_bool_exp"] | undefined | null; + }, + ResolverInputTypes["mails_aggregate"], + ]; + mails_by_pk?: [ + { id: ResolverInputTypes["uuid"] }, + ResolverInputTypes["mails"], + ]; + __typename?: boolean | `@${string}`; + }>; + ["subscription_root"]: AliasType<{ + custom_address?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null /** limit the number of rows returned */; + limit?: + | number + | undefined + | null /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null /** filter the rows returned */; + where?: + | ResolverInputTypes["custom_address_bool_exp"] + | undefined + | null; + }, + ResolverInputTypes["custom_address"], + ]; + custom_address_aggregate?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null /** limit the number of rows returned */; + limit?: + | number + | undefined + | null /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null /** filter the rows returned */; + where?: + | ResolverInputTypes["custom_address_bool_exp"] + | undefined + | null; + }, + ResolverInputTypes["custom_address_aggregate"], + ]; + custom_address_by_pk?: [ + { id: ResolverInputTypes["uuid"] }, + ResolverInputTypes["custom_address"], + ]; + custom_address_stream?: [ + { + /** maximum number of rows returned in a single batch */ + batch_size: number /** cursor to stream the results returned by the query */; + cursor: Array< + | ResolverInputTypes["custom_address_stream_cursor_input"] + | undefined + | null + > /** filter the rows returned */; + where?: + | ResolverInputTypes["custom_address_bool_exp"] + | undefined + | null; + }, + ResolverInputTypes["custom_address"], + ]; + mails?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null /** limit the number of rows returned */; + limit?: + | number + | undefined + | null /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null /** filter the rows returned */; + where?: ResolverInputTypes["mails_bool_exp"] | undefined | null; + }, + ResolverInputTypes["mails"], + ]; + mails_aggregate?: [ + { + /** distinct select on columns */ + distinct_on?: + | Array + | undefined + | null /** limit the number of rows returned */; + limit?: + | number + | undefined + | null /** skip the first n rows. Use only with order_by */; + offset?: + | number + | undefined + | null /** sort the rows by one or more columns */; + order_by?: + | Array + | undefined + | null /** filter the rows returned */; + where?: ResolverInputTypes["mails_bool_exp"] | undefined | null; + }, + ResolverInputTypes["mails_aggregate"], + ]; + mails_by_pk?: [ + { id: ResolverInputTypes["uuid"] }, + ResolverInputTypes["mails"], + ]; + mails_stream?: [ + { + /** maximum number of rows returned in a single batch */ + batch_size: number /** cursor to stream the results returned by the query */; + cursor: Array< + ResolverInputTypes["mails_stream_cursor_input"] | undefined | null + > /** filter the rows returned */; + where?: ResolverInputTypes["mails_bool_exp"] | undefined | null; + }, + ResolverInputTypes["mails"], + ]; + __typename?: boolean | `@${string}`; + }>; + ["timestamptz"]: unknown; + /** Boolean expression to compare columns of type "timestamptz". All fields are combined with logical 'AND'. */ + ["timestamptz_comparison_exp"]: { + _eq?: ResolverInputTypes["timestamptz"] | undefined | null; + _gt?: ResolverInputTypes["timestamptz"] | undefined | null; + _gte?: ResolverInputTypes["timestamptz"] | undefined | null; + _in?: Array | undefined | null; + _is_null?: boolean | undefined | null; + _lt?: ResolverInputTypes["timestamptz"] | undefined | null; + _lte?: ResolverInputTypes["timestamptz"] | undefined | null; + _neq?: ResolverInputTypes["timestamptz"] | undefined | null; + _nin?: Array | undefined | null; + }; + ["uuid"]: unknown; + /** Boolean expression to compare columns of type "uuid". All fields are combined with logical 'AND'. */ + ["uuid_comparison_exp"]: { + _eq?: ResolverInputTypes["uuid"] | undefined | null; + _gt?: ResolverInputTypes["uuid"] | undefined | null; + _gte?: ResolverInputTypes["uuid"] | undefined | null; + _in?: Array | undefined | null; + _is_null?: boolean | undefined | null; + _lt?: ResolverInputTypes["uuid"] | undefined | null; + _lte?: ResolverInputTypes["uuid"] | undefined | null; + _neq?: ResolverInputTypes["uuid"] | undefined | null; + _nin?: Array | undefined | null; + }; +}; + +export type ModelTypes = { + ["schema"]: { + query?: ModelTypes["query_root"] | undefined; + mutation?: ModelTypes["mutation_root"] | undefined; + subscription?: ModelTypes["subscription_root"] | undefined; + }; + /** Boolean expression to compare columns of type "String". All fields are combined with logical 'AND'. */ + ["String_comparison_exp"]: { + _eq?: string | undefined; + _gt?: string | undefined; + _gte?: string | undefined; + /** does the column match the given case-insensitive pattern */ + _ilike?: string | undefined; + _in?: Array | undefined; + /** does the column match the given POSIX regular expression, case insensitive */ + _iregex?: string | undefined; + _is_null?: boolean | undefined; + /** does the column match the given pattern */ + _like?: string | undefined; + _lt?: string | undefined; + _lte?: string | undefined; + _neq?: string | undefined; + /** does the column NOT match the given case-insensitive pattern */ + _nilike?: string | undefined; + _nin?: Array | undefined; + /** does the column NOT match the given POSIX regular expression, case insensitive */ + _niregex?: string | undefined; + /** does the column NOT match the given pattern */ + _nlike?: string | undefined; + /** does the column NOT match the given POSIX regular expression, case sensitive */ + _nregex?: string | undefined; + /** does the column NOT match the given SQL regular expression */ + _nsimilar?: string | undefined; + /** does the column match the given POSIX regular expression, case sensitive */ + _regex?: string | undefined; + /** does the column match the given SQL regular expression */ + _similar?: string | undefined; + }; + ["cursor_ordering"]: cursor_ordering; + /** custom address for paybox */ + ["custom_address"]: { + address: string; + createdAt: ModelTypes["timestamptz"]; + description: string; + id: ModelTypes["uuid"]; + key: string; + updatedAt: ModelTypes["timestamptz"]; + }; + /** aggregated selection of "custom_address" */ + ["custom_address_aggregate"]: { + aggregate?: ModelTypes["custom_address_aggregate_fields"] | undefined; + nodes: Array; + }; + /** aggregate fields of "custom_address" */ + ["custom_address_aggregate_fields"]: { + count: number; + max?: ModelTypes["custom_address_max_fields"] | undefined; + min?: ModelTypes["custom_address_min_fields"] | undefined; + }; + /** Boolean expression to filter rows from the table "custom_address". All fields are combined with a logical 'AND'. */ + ["custom_address_bool_exp"]: { + _and?: Array | undefined; + _not?: ModelTypes["custom_address_bool_exp"] | undefined; + _or?: Array | undefined; + address?: ModelTypes["String_comparison_exp"] | undefined; + createdAt?: ModelTypes["timestamptz_comparison_exp"] | undefined; + description?: ModelTypes["String_comparison_exp"] | undefined; + id?: ModelTypes["uuid_comparison_exp"] | undefined; + key?: ModelTypes["String_comparison_exp"] | undefined; + updatedAt?: ModelTypes["timestamptz_comparison_exp"] | undefined; + }; + ["custom_address_constraint"]: custom_address_constraint; + /** input type for inserting data into table "custom_address" */ + ["custom_address_insert_input"]: { + address?: string | undefined; + createdAt?: ModelTypes["timestamptz"] | undefined; + description?: string | undefined; + id?: ModelTypes["uuid"] | undefined; + key?: string | undefined; + updatedAt?: ModelTypes["timestamptz"] | undefined; + }; + /** aggregate max on columns */ + ["custom_address_max_fields"]: { + address?: string | undefined; + createdAt?: ModelTypes["timestamptz"] | undefined; + description?: string | undefined; + id?: ModelTypes["uuid"] | undefined; + key?: string | undefined; + updatedAt?: ModelTypes["timestamptz"] | undefined; + }; + /** aggregate min on columns */ + ["custom_address_min_fields"]: { + address?: string | undefined; + createdAt?: ModelTypes["timestamptz"] | undefined; + description?: string | undefined; + id?: ModelTypes["uuid"] | undefined; + key?: string | undefined; + updatedAt?: ModelTypes["timestamptz"] | undefined; + }; + /** response of any mutation on the table "custom_address" */ + ["custom_address_mutation_response"]: { + /** number of rows affected by the mutation */ + affected_rows: number; + /** data from the rows affected by the mutation */ + returning: Array; + }; + /** on_conflict condition type for table "custom_address" */ + ["custom_address_on_conflict"]: { + constraint: ModelTypes["custom_address_constraint"]; + update_columns: Array; + where?: ModelTypes["custom_address_bool_exp"] | undefined; + }; + /** Ordering options when selecting data from "custom_address". */ + ["custom_address_order_by"]: { + address?: ModelTypes["order_by"] | undefined; + createdAt?: ModelTypes["order_by"] | undefined; + description?: ModelTypes["order_by"] | undefined; + id?: ModelTypes["order_by"] | undefined; + key?: ModelTypes["order_by"] | undefined; + updatedAt?: ModelTypes["order_by"] | undefined; + }; + /** primary key columns input for table: custom_address */ + ["custom_address_pk_columns_input"]: { + id: ModelTypes["uuid"]; + }; + ["custom_address_select_column"]: custom_address_select_column; + /** input type for updating data in table "custom_address" */ + ["custom_address_set_input"]: { + address?: string | undefined; + createdAt?: ModelTypes["timestamptz"] | undefined; + description?: string | undefined; + id?: ModelTypes["uuid"] | undefined; + key?: string | undefined; + updatedAt?: ModelTypes["timestamptz"] | undefined; + }; + /** Streaming cursor of the table "custom_address" */ + ["custom_address_stream_cursor_input"]: { + /** Stream column input with initial value */ + initial_value: ModelTypes["custom_address_stream_cursor_value_input"]; + /** cursor ordering */ + ordering?: ModelTypes["cursor_ordering"] | undefined; + }; + /** Initial value of the column from where the streaming should start */ + ["custom_address_stream_cursor_value_input"]: { + address?: string | undefined; + createdAt?: ModelTypes["timestamptz"] | undefined; + description?: string | undefined; + id?: ModelTypes["uuid"] | undefined; + key?: string | undefined; + updatedAt?: ModelTypes["timestamptz"] | undefined; + }; + ["custom_address_update_column"]: custom_address_update_column; + ["custom_address_updates"]: { + /** sets the columns of the filtered rows to the given values */ + _set?: ModelTypes["custom_address_set_input"] | undefined; + /** filter the rows which have to be updated */ + where: ModelTypes["custom_address_bool_exp"]; + }; + /** mails from clients */ + ["mails"]: { + createdAt: ModelTypes["timestamptz"]; + date: ModelTypes["timestamptz"]; + fromAddress: string; + htmlContent: string; + id: ModelTypes["uuid"]; + subject: string; + textContent: string; + toAddress: string; + updatedAt: ModelTypes["timestamptz"]; + }; + /** aggregated selection of "mails" */ + ["mails_aggregate"]: { + aggregate?: ModelTypes["mails_aggregate_fields"] | undefined; + nodes: Array; + }; + /** aggregate fields of "mails" */ + ["mails_aggregate_fields"]: { + count: number; + max?: ModelTypes["mails_max_fields"] | undefined; + min?: ModelTypes["mails_min_fields"] | undefined; + }; + /** Boolean expression to filter rows from the table "mails". All fields are combined with a logical 'AND'. */ + ["mails_bool_exp"]: { + _and?: Array | undefined; + _not?: ModelTypes["mails_bool_exp"] | undefined; + _or?: Array | undefined; + createdAt?: ModelTypes["timestamptz_comparison_exp"] | undefined; + date?: ModelTypes["timestamptz_comparison_exp"] | undefined; + fromAddress?: ModelTypes["String_comparison_exp"] | undefined; + htmlContent?: ModelTypes["String_comparison_exp"] | undefined; + id?: ModelTypes["uuid_comparison_exp"] | undefined; + subject?: ModelTypes["String_comparison_exp"] | undefined; + textContent?: ModelTypes["String_comparison_exp"] | undefined; + toAddress?: ModelTypes["String_comparison_exp"] | undefined; + updatedAt?: ModelTypes["timestamptz_comparison_exp"] | undefined; + }; + ["mails_constraint"]: mails_constraint; + /** input type for inserting data into table "mails" */ + ["mails_insert_input"]: { + createdAt?: ModelTypes["timestamptz"] | undefined; + date?: ModelTypes["timestamptz"] | undefined; + fromAddress?: string | undefined; + htmlContent?: string | undefined; + id?: ModelTypes["uuid"] | undefined; + subject?: string | undefined; + textContent?: string | undefined; + toAddress?: string | undefined; + updatedAt?: ModelTypes["timestamptz"] | undefined; + }; + /** aggregate max on columns */ + ["mails_max_fields"]: { + createdAt?: ModelTypes["timestamptz"] | undefined; + date?: ModelTypes["timestamptz"] | undefined; + fromAddress?: string | undefined; + htmlContent?: string | undefined; + id?: ModelTypes["uuid"] | undefined; + subject?: string | undefined; + textContent?: string | undefined; + toAddress?: string | undefined; + updatedAt?: ModelTypes["timestamptz"] | undefined; + }; + /** aggregate min on columns */ + ["mails_min_fields"]: { + createdAt?: ModelTypes["timestamptz"] | undefined; + date?: ModelTypes["timestamptz"] | undefined; + fromAddress?: string | undefined; + htmlContent?: string | undefined; + id?: ModelTypes["uuid"] | undefined; + subject?: string | undefined; + textContent?: string | undefined; + toAddress?: string | undefined; + updatedAt?: ModelTypes["timestamptz"] | undefined; + }; + /** response of any mutation on the table "mails" */ + ["mails_mutation_response"]: { + /** number of rows affected by the mutation */ + affected_rows: number; + /** data from the rows affected by the mutation */ + returning: Array; + }; + /** on_conflict condition type for table "mails" */ + ["mails_on_conflict"]: { + constraint: ModelTypes["mails_constraint"]; + update_columns: Array; + where?: ModelTypes["mails_bool_exp"] | undefined; + }; + /** Ordering options when selecting data from "mails". */ + ["mails_order_by"]: { + createdAt?: ModelTypes["order_by"] | undefined; + date?: ModelTypes["order_by"] | undefined; + fromAddress?: ModelTypes["order_by"] | undefined; + htmlContent?: ModelTypes["order_by"] | undefined; + id?: ModelTypes["order_by"] | undefined; + subject?: ModelTypes["order_by"] | undefined; + textContent?: ModelTypes["order_by"] | undefined; + toAddress?: ModelTypes["order_by"] | undefined; + updatedAt?: ModelTypes["order_by"] | undefined; + }; + /** primary key columns input for table: mails */ + ["mails_pk_columns_input"]: { + id: ModelTypes["uuid"]; + }; + ["mails_select_column"]: mails_select_column; + /** input type for updating data in table "mails" */ + ["mails_set_input"]: { + createdAt?: ModelTypes["timestamptz"] | undefined; + date?: ModelTypes["timestamptz"] | undefined; + fromAddress?: string | undefined; + htmlContent?: string | undefined; + id?: ModelTypes["uuid"] | undefined; + subject?: string | undefined; + textContent?: string | undefined; + toAddress?: string | undefined; + updatedAt?: ModelTypes["timestamptz"] | undefined; + }; + /** Streaming cursor of the table "mails" */ + ["mails_stream_cursor_input"]: { + /** Stream column input with initial value */ + initial_value: ModelTypes["mails_stream_cursor_value_input"]; + /** cursor ordering */ + ordering?: ModelTypes["cursor_ordering"] | undefined; + }; + /** Initial value of the column from where the streaming should start */ + ["mails_stream_cursor_value_input"]: { + createdAt?: ModelTypes["timestamptz"] | undefined; + date?: ModelTypes["timestamptz"] | undefined; + fromAddress?: string | undefined; + htmlContent?: string | undefined; + id?: ModelTypes["uuid"] | undefined; + subject?: string | undefined; + textContent?: string | undefined; + toAddress?: string | undefined; + updatedAt?: ModelTypes["timestamptz"] | undefined; + }; + ["mails_update_column"]: mails_update_column; + ["mails_updates"]: { + /** sets the columns of the filtered rows to the given values */ + _set?: ModelTypes["mails_set_input"] | undefined; + /** filter the rows which have to be updated */ + where: ModelTypes["mails_bool_exp"]; + }; + /** mutation root */ + ["mutation_root"]: { + /** delete data from the table: "custom_address" */ + delete_custom_address?: + | ModelTypes["custom_address_mutation_response"] + | undefined; + /** delete single row from the table: "custom_address" */ + delete_custom_address_by_pk?: ModelTypes["custom_address"] | undefined; + /** delete data from the table: "mails" */ + delete_mails?: ModelTypes["mails_mutation_response"] | undefined; + /** delete single row from the table: "mails" */ + delete_mails_by_pk?: ModelTypes["mails"] | undefined; + /** insert data into the table: "custom_address" */ + insert_custom_address?: + | ModelTypes["custom_address_mutation_response"] + | undefined; + /** insert a single row into the table: "custom_address" */ + insert_custom_address_one?: ModelTypes["custom_address"] | undefined; + /** insert data into the table: "mails" */ + insert_mails?: ModelTypes["mails_mutation_response"] | undefined; + /** insert a single row into the table: "mails" */ + insert_mails_one?: ModelTypes["mails"] | undefined; + /** update data of the table: "custom_address" */ + update_custom_address?: + | ModelTypes["custom_address_mutation_response"] + | undefined; + /** update single row of the table: "custom_address" */ + update_custom_address_by_pk?: ModelTypes["custom_address"] | undefined; + /** update multiples rows of table: "custom_address" */ + update_custom_address_many?: + | Array + | undefined; + /** update data of the table: "mails" */ + update_mails?: ModelTypes["mails_mutation_response"] | undefined; + /** update single row of the table: "mails" */ + update_mails_by_pk?: ModelTypes["mails"] | undefined; + /** update multiples rows of table: "mails" */ + update_mails_many?: + | Array + | undefined; + }; + ["order_by"]: order_by; + ["query_root"]: { + /** fetch data from the table: "custom_address" */ + custom_address: Array; + /** fetch aggregated fields from the table: "custom_address" */ + custom_address_aggregate: ModelTypes["custom_address_aggregate"]; + /** fetch data from the table: "custom_address" using primary key columns */ + custom_address_by_pk?: ModelTypes["custom_address"] | undefined; + /** fetch data from the table: "mails" */ + mails: Array; + /** fetch aggregated fields from the table: "mails" */ + mails_aggregate: ModelTypes["mails_aggregate"]; + /** fetch data from the table: "mails" using primary key columns */ + mails_by_pk?: ModelTypes["mails"] | undefined; + }; + ["subscription_root"]: { + /** fetch data from the table: "custom_address" */ + custom_address: Array; + /** fetch aggregated fields from the table: "custom_address" */ + custom_address_aggregate: ModelTypes["custom_address_aggregate"]; + /** fetch data from the table: "custom_address" using primary key columns */ + custom_address_by_pk?: ModelTypes["custom_address"] | undefined; + /** fetch data from the table in a streaming manner: "custom_address" */ + custom_address_stream: Array; + /** fetch data from the table: "mails" */ + mails: Array; + /** fetch aggregated fields from the table: "mails" */ + mails_aggregate: ModelTypes["mails_aggregate"]; + /** fetch data from the table: "mails" using primary key columns */ + mails_by_pk?: ModelTypes["mails"] | undefined; + /** fetch data from the table in a streaming manner: "mails" */ + mails_stream: Array; + }; + ["timestamptz"]: any; + /** Boolean expression to compare columns of type "timestamptz". All fields are combined with logical 'AND'. */ + ["timestamptz_comparison_exp"]: { + _eq?: ModelTypes["timestamptz"] | undefined; + _gt?: ModelTypes["timestamptz"] | undefined; + _gte?: ModelTypes["timestamptz"] | undefined; + _in?: Array | undefined; + _is_null?: boolean | undefined; + _lt?: ModelTypes["timestamptz"] | undefined; + _lte?: ModelTypes["timestamptz"] | undefined; + _neq?: ModelTypes["timestamptz"] | undefined; + _nin?: Array | undefined; + }; + ["uuid"]: any; + /** Boolean expression to compare columns of type "uuid". All fields are combined with logical 'AND'. */ + ["uuid_comparison_exp"]: { + _eq?: ModelTypes["uuid"] | undefined; + _gt?: ModelTypes["uuid"] | undefined; + _gte?: ModelTypes["uuid"] | undefined; + _in?: Array | undefined; + _is_null?: boolean | undefined; + _lt?: ModelTypes["uuid"] | undefined; + _lte?: ModelTypes["uuid"] | undefined; + _neq?: ModelTypes["uuid"] | undefined; + _nin?: Array | undefined; + }; +}; + +export type GraphQLTypes = { + /** Boolean expression to compare columns of type "String". All fields are combined with logical 'AND'. */ + ["String_comparison_exp"]: { + _eq?: string | undefined; + _gt?: string | undefined; + _gte?: string | undefined; + /** does the column match the given case-insensitive pattern */ + _ilike?: string | undefined; + _in?: Array | undefined; + /** does the column match the given POSIX regular expression, case insensitive */ + _iregex?: string | undefined; + _is_null?: boolean | undefined; + /** does the column match the given pattern */ + _like?: string | undefined; + _lt?: string | undefined; + _lte?: string | undefined; + _neq?: string | undefined; + /** does the column NOT match the given case-insensitive pattern */ + _nilike?: string | undefined; + _nin?: Array | undefined; + /** does the column NOT match the given POSIX regular expression, case insensitive */ + _niregex?: string | undefined; + /** does the column NOT match the given pattern */ + _nlike?: string | undefined; + /** does the column NOT match the given POSIX regular expression, case sensitive */ + _nregex?: string | undefined; + /** does the column NOT match the given SQL regular expression */ + _nsimilar?: string | undefined; + /** does the column match the given POSIX regular expression, case sensitive */ + _regex?: string | undefined; + /** does the column match the given SQL regular expression */ + _similar?: string | undefined; + }; + /** ordering argument of a cursor */ + ["cursor_ordering"]: cursor_ordering; + /** custom address for paybox */ + ["custom_address"]: { + __typename: "custom_address"; + address: string; + createdAt: GraphQLTypes["timestamptz"]; + description: string; + id: GraphQLTypes["uuid"]; + key: string; + updatedAt: GraphQLTypes["timestamptz"]; + }; + /** aggregated selection of "custom_address" */ + ["custom_address_aggregate"]: { + __typename: "custom_address_aggregate"; + aggregate?: GraphQLTypes["custom_address_aggregate_fields"] | undefined; + nodes: Array; + }; + /** aggregate fields of "custom_address" */ + ["custom_address_aggregate_fields"]: { + __typename: "custom_address_aggregate_fields"; + count: number; + max?: GraphQLTypes["custom_address_max_fields"] | undefined; + min?: GraphQLTypes["custom_address_min_fields"] | undefined; + }; + /** Boolean expression to filter rows from the table "custom_address". All fields are combined with a logical 'AND'. */ + ["custom_address_bool_exp"]: { + _and?: Array | undefined; + _not?: GraphQLTypes["custom_address_bool_exp"] | undefined; + _or?: Array | undefined; + address?: GraphQLTypes["String_comparison_exp"] | undefined; + createdAt?: GraphQLTypes["timestamptz_comparison_exp"] | undefined; + description?: GraphQLTypes["String_comparison_exp"] | undefined; + id?: GraphQLTypes["uuid_comparison_exp"] | undefined; + key?: GraphQLTypes["String_comparison_exp"] | undefined; + updatedAt?: GraphQLTypes["timestamptz_comparison_exp"] | undefined; + }; + /** unique or primary key constraints on table "custom_address" */ + ["custom_address_constraint"]: custom_address_constraint; + /** input type for inserting data into table "custom_address" */ + ["custom_address_insert_input"]: { + address?: string | undefined; + createdAt?: GraphQLTypes["timestamptz"] | undefined; + description?: string | undefined; + id?: GraphQLTypes["uuid"] | undefined; + key?: string | undefined; + updatedAt?: GraphQLTypes["timestamptz"] | undefined; + }; + /** aggregate max on columns */ + ["custom_address_max_fields"]: { + __typename: "custom_address_max_fields"; + address?: string | undefined; + createdAt?: GraphQLTypes["timestamptz"] | undefined; + description?: string | undefined; + id?: GraphQLTypes["uuid"] | undefined; + key?: string | undefined; + updatedAt?: GraphQLTypes["timestamptz"] | undefined; + }; + /** aggregate min on columns */ + ["custom_address_min_fields"]: { + __typename: "custom_address_min_fields"; + address?: string | undefined; + createdAt?: GraphQLTypes["timestamptz"] | undefined; + description?: string | undefined; + id?: GraphQLTypes["uuid"] | undefined; + key?: string | undefined; + updatedAt?: GraphQLTypes["timestamptz"] | undefined; + }; + /** response of any mutation on the table "custom_address" */ + ["custom_address_mutation_response"]: { + __typename: "custom_address_mutation_response"; + /** number of rows affected by the mutation */ + affected_rows: number; + /** data from the rows affected by the mutation */ + returning: Array; + }; + /** on_conflict condition type for table "custom_address" */ + ["custom_address_on_conflict"]: { + constraint: GraphQLTypes["custom_address_constraint"]; + update_columns: Array; + where?: GraphQLTypes["custom_address_bool_exp"] | undefined; + }; + /** Ordering options when selecting data from "custom_address". */ + ["custom_address_order_by"]: { + address?: GraphQLTypes["order_by"] | undefined; + createdAt?: GraphQLTypes["order_by"] | undefined; + description?: GraphQLTypes["order_by"] | undefined; + id?: GraphQLTypes["order_by"] | undefined; + key?: GraphQLTypes["order_by"] | undefined; + updatedAt?: GraphQLTypes["order_by"] | undefined; + }; + /** primary key columns input for table: custom_address */ + ["custom_address_pk_columns_input"]: { + id: GraphQLTypes["uuid"]; + }; + /** select columns of table "custom_address" */ + ["custom_address_select_column"]: custom_address_select_column; + /** input type for updating data in table "custom_address" */ + ["custom_address_set_input"]: { + address?: string | undefined; + createdAt?: GraphQLTypes["timestamptz"] | undefined; + description?: string | undefined; + id?: GraphQLTypes["uuid"] | undefined; + key?: string | undefined; + updatedAt?: GraphQLTypes["timestamptz"] | undefined; + }; + /** Streaming cursor of the table "custom_address" */ + ["custom_address_stream_cursor_input"]: { + /** Stream column input with initial value */ + initial_value: GraphQLTypes["custom_address_stream_cursor_value_input"]; + /** cursor ordering */ + ordering?: GraphQLTypes["cursor_ordering"] | undefined; + }; + /** Initial value of the column from where the streaming should start */ + ["custom_address_stream_cursor_value_input"]: { + address?: string | undefined; + createdAt?: GraphQLTypes["timestamptz"] | undefined; + description?: string | undefined; + id?: GraphQLTypes["uuid"] | undefined; + key?: string | undefined; + updatedAt?: GraphQLTypes["timestamptz"] | undefined; + }; + /** update columns of table "custom_address" */ + ["custom_address_update_column"]: custom_address_update_column; + ["custom_address_updates"]: { + /** sets the columns of the filtered rows to the given values */ + _set?: GraphQLTypes["custom_address_set_input"] | undefined; + /** filter the rows which have to be updated */ + where: GraphQLTypes["custom_address_bool_exp"]; + }; + /** mails from clients */ + ["mails"]: { + __typename: "mails"; + createdAt: GraphQLTypes["timestamptz"]; + date: GraphQLTypes["timestamptz"]; + fromAddress: string; + htmlContent: string; + id: GraphQLTypes["uuid"]; + subject: string; + textContent: string; + toAddress: string; + updatedAt: GraphQLTypes["timestamptz"]; + }; + /** aggregated selection of "mails" */ + ["mails_aggregate"]: { + __typename: "mails_aggregate"; + aggregate?: GraphQLTypes["mails_aggregate_fields"] | undefined; + nodes: Array; + }; + /** aggregate fields of "mails" */ + ["mails_aggregate_fields"]: { + __typename: "mails_aggregate_fields"; + count: number; + max?: GraphQLTypes["mails_max_fields"] | undefined; + min?: GraphQLTypes["mails_min_fields"] | undefined; + }; + /** Boolean expression to filter rows from the table "mails". All fields are combined with a logical 'AND'. */ + ["mails_bool_exp"]: { + _and?: Array | undefined; + _not?: GraphQLTypes["mails_bool_exp"] | undefined; + _or?: Array | undefined; + createdAt?: GraphQLTypes["timestamptz_comparison_exp"] | undefined; + date?: GraphQLTypes["timestamptz_comparison_exp"] | undefined; + fromAddress?: GraphQLTypes["String_comparison_exp"] | undefined; + htmlContent?: GraphQLTypes["String_comparison_exp"] | undefined; + id?: GraphQLTypes["uuid_comparison_exp"] | undefined; + subject?: GraphQLTypes["String_comparison_exp"] | undefined; + textContent?: GraphQLTypes["String_comparison_exp"] | undefined; + toAddress?: GraphQLTypes["String_comparison_exp"] | undefined; + updatedAt?: GraphQLTypes["timestamptz_comparison_exp"] | undefined; + }; + /** unique or primary key constraints on table "mails" */ + ["mails_constraint"]: mails_constraint; + /** input type for inserting data into table "mails" */ + ["mails_insert_input"]: { + createdAt?: GraphQLTypes["timestamptz"] | undefined; + date?: GraphQLTypes["timestamptz"] | undefined; + fromAddress?: string | undefined; + htmlContent?: string | undefined; + id?: GraphQLTypes["uuid"] | undefined; + subject?: string | undefined; + textContent?: string | undefined; + toAddress?: string | undefined; + updatedAt?: GraphQLTypes["timestamptz"] | undefined; + }; + /** aggregate max on columns */ + ["mails_max_fields"]: { + __typename: "mails_max_fields"; + createdAt?: GraphQLTypes["timestamptz"] | undefined; + date?: GraphQLTypes["timestamptz"] | undefined; + fromAddress?: string | undefined; + htmlContent?: string | undefined; + id?: GraphQLTypes["uuid"] | undefined; + subject?: string | undefined; + textContent?: string | undefined; + toAddress?: string | undefined; + updatedAt?: GraphQLTypes["timestamptz"] | undefined; + }; + /** aggregate min on columns */ + ["mails_min_fields"]: { + __typename: "mails_min_fields"; + createdAt?: GraphQLTypes["timestamptz"] | undefined; + date?: GraphQLTypes["timestamptz"] | undefined; + fromAddress?: string | undefined; + htmlContent?: string | undefined; + id?: GraphQLTypes["uuid"] | undefined; + subject?: string | undefined; + textContent?: string | undefined; + toAddress?: string | undefined; + updatedAt?: GraphQLTypes["timestamptz"] | undefined; + }; + /** response of any mutation on the table "mails" */ + ["mails_mutation_response"]: { + __typename: "mails_mutation_response"; + /** number of rows affected by the mutation */ + affected_rows: number; + /** data from the rows affected by the mutation */ + returning: Array; + }; + /** on_conflict condition type for table "mails" */ + ["mails_on_conflict"]: { + constraint: GraphQLTypes["mails_constraint"]; + update_columns: Array; + where?: GraphQLTypes["mails_bool_exp"] | undefined; + }; + /** Ordering options when selecting data from "mails". */ + ["mails_order_by"]: { + createdAt?: GraphQLTypes["order_by"] | undefined; + date?: GraphQLTypes["order_by"] | undefined; + fromAddress?: GraphQLTypes["order_by"] | undefined; + htmlContent?: GraphQLTypes["order_by"] | undefined; + id?: GraphQLTypes["order_by"] | undefined; + subject?: GraphQLTypes["order_by"] | undefined; + textContent?: GraphQLTypes["order_by"] | undefined; + toAddress?: GraphQLTypes["order_by"] | undefined; + updatedAt?: GraphQLTypes["order_by"] | undefined; + }; + /** primary key columns input for table: mails */ + ["mails_pk_columns_input"]: { + id: GraphQLTypes["uuid"]; + }; + /** select columns of table "mails" */ + ["mails_select_column"]: mails_select_column; + /** input type for updating data in table "mails" */ + ["mails_set_input"]: { + createdAt?: GraphQLTypes["timestamptz"] | undefined; + date?: GraphQLTypes["timestamptz"] | undefined; + fromAddress?: string | undefined; + htmlContent?: string | undefined; + id?: GraphQLTypes["uuid"] | undefined; + subject?: string | undefined; + textContent?: string | undefined; + toAddress?: string | undefined; + updatedAt?: GraphQLTypes["timestamptz"] | undefined; + }; + /** Streaming cursor of the table "mails" */ + ["mails_stream_cursor_input"]: { + /** Stream column input with initial value */ + initial_value: GraphQLTypes["mails_stream_cursor_value_input"]; + /** cursor ordering */ + ordering?: GraphQLTypes["cursor_ordering"] | undefined; + }; + /** Initial value of the column from where the streaming should start */ + ["mails_stream_cursor_value_input"]: { + createdAt?: GraphQLTypes["timestamptz"] | undefined; + date?: GraphQLTypes["timestamptz"] | undefined; + fromAddress?: string | undefined; + htmlContent?: string | undefined; + id?: GraphQLTypes["uuid"] | undefined; + subject?: string | undefined; + textContent?: string | undefined; + toAddress?: string | undefined; + updatedAt?: GraphQLTypes["timestamptz"] | undefined; + }; + /** update columns of table "mails" */ + ["mails_update_column"]: mails_update_column; + ["mails_updates"]: { + /** sets the columns of the filtered rows to the given values */ + _set?: GraphQLTypes["mails_set_input"] | undefined; + /** filter the rows which have to be updated */ + where: GraphQLTypes["mails_bool_exp"]; + }; + /** mutation root */ + ["mutation_root"]: { + __typename: "mutation_root"; + /** delete data from the table: "custom_address" */ + delete_custom_address?: + | GraphQLTypes["custom_address_mutation_response"] + | undefined; + /** delete single row from the table: "custom_address" */ + delete_custom_address_by_pk?: GraphQLTypes["custom_address"] | undefined; + /** delete data from the table: "mails" */ + delete_mails?: GraphQLTypes["mails_mutation_response"] | undefined; + /** delete single row from the table: "mails" */ + delete_mails_by_pk?: GraphQLTypes["mails"] | undefined; + /** insert data into the table: "custom_address" */ + insert_custom_address?: + | GraphQLTypes["custom_address_mutation_response"] + | undefined; + /** insert a single row into the table: "custom_address" */ + insert_custom_address_one?: GraphQLTypes["custom_address"] | undefined; + /** insert data into the table: "mails" */ + insert_mails?: GraphQLTypes["mails_mutation_response"] | undefined; + /** insert a single row into the table: "mails" */ + insert_mails_one?: GraphQLTypes["mails"] | undefined; + /** update data of the table: "custom_address" */ + update_custom_address?: + | GraphQLTypes["custom_address_mutation_response"] + | undefined; + /** update single row of the table: "custom_address" */ + update_custom_address_by_pk?: GraphQLTypes["custom_address"] | undefined; + /** update multiples rows of table: "custom_address" */ + update_custom_address_many?: + | Array + | undefined; + /** update data of the table: "mails" */ + update_mails?: GraphQLTypes["mails_mutation_response"] | undefined; + /** update single row of the table: "mails" */ + update_mails_by_pk?: GraphQLTypes["mails"] | undefined; + /** update multiples rows of table: "mails" */ + update_mails_many?: + | Array + | undefined; + }; + /** column ordering options */ + ["order_by"]: order_by; + ["query_root"]: { + __typename: "query_root"; + /** fetch data from the table: "custom_address" */ + custom_address: Array; + /** fetch aggregated fields from the table: "custom_address" */ + custom_address_aggregate: GraphQLTypes["custom_address_aggregate"]; + /** fetch data from the table: "custom_address" using primary key columns */ + custom_address_by_pk?: GraphQLTypes["custom_address"] | undefined; + /** fetch data from the table: "mails" */ + mails: Array; + /** fetch aggregated fields from the table: "mails" */ + mails_aggregate: GraphQLTypes["mails_aggregate"]; + /** fetch data from the table: "mails" using primary key columns */ + mails_by_pk?: GraphQLTypes["mails"] | undefined; + }; + ["subscription_root"]: { + __typename: "subscription_root"; + /** fetch data from the table: "custom_address" */ + custom_address: Array; + /** fetch aggregated fields from the table: "custom_address" */ + custom_address_aggregate: GraphQLTypes["custom_address_aggregate"]; + /** fetch data from the table: "custom_address" using primary key columns */ + custom_address_by_pk?: GraphQLTypes["custom_address"] | undefined; + /** fetch data from the table in a streaming manner: "custom_address" */ + custom_address_stream: Array; + /** fetch data from the table: "mails" */ + mails: Array; + /** fetch aggregated fields from the table: "mails" */ + mails_aggregate: GraphQLTypes["mails_aggregate"]; + /** fetch data from the table: "mails" using primary key columns */ + mails_by_pk?: GraphQLTypes["mails"] | undefined; + /** fetch data from the table in a streaming manner: "mails" */ + mails_stream: Array; + }; + ["timestamptz"]: "scalar" & { name: "timestamptz" }; + /** Boolean expression to compare columns of type "timestamptz". All fields are combined with logical 'AND'. */ + ["timestamptz_comparison_exp"]: { + _eq?: GraphQLTypes["timestamptz"] | undefined; + _gt?: GraphQLTypes["timestamptz"] | undefined; + _gte?: GraphQLTypes["timestamptz"] | undefined; + _in?: Array | undefined; + _is_null?: boolean | undefined; + _lt?: GraphQLTypes["timestamptz"] | undefined; + _lte?: GraphQLTypes["timestamptz"] | undefined; + _neq?: GraphQLTypes["timestamptz"] | undefined; + _nin?: Array | undefined; + }; + ["uuid"]: "scalar" & { name: "uuid" }; + /** Boolean expression to compare columns of type "uuid". All fields are combined with logical 'AND'. */ + ["uuid_comparison_exp"]: { + _eq?: GraphQLTypes["uuid"] | undefined; + _gt?: GraphQLTypes["uuid"] | undefined; + _gte?: GraphQLTypes["uuid"] | undefined; + _in?: Array | undefined; + _is_null?: boolean | undefined; + _lt?: GraphQLTypes["uuid"] | undefined; + _lte?: GraphQLTypes["uuid"] | undefined; + _neq?: GraphQLTypes["uuid"] | undefined; + _nin?: Array | undefined; + }; +}; +/** ordering argument of a cursor */ +export const enum cursor_ordering { + ASC = "ASC", + DESC = "DESC", +} +/** unique or primary key constraints on table "custom_address" */ +export const enum custom_address_constraint { + custom_address_address_key = "custom_address_address_key", + custom_address_key_key = "custom_address_key_key", + custom_address_pkey = "custom_address_pkey", +} +/** select columns of table "custom_address" */ +export const enum custom_address_select_column { + address = "address", + createdAt = "createdAt", + description = "description", + id = "id", + key = "key", + updatedAt = "updatedAt", +} +/** update columns of table "custom_address" */ +export const enum custom_address_update_column { + address = "address", + createdAt = "createdAt", + description = "description", + id = "id", + key = "key", + updatedAt = "updatedAt", +} +/** unique or primary key constraints on table "mails" */ +export const enum mails_constraint { + mails_pkey = "mails_pkey", +} +/** select columns of table "mails" */ +export const enum mails_select_column { + createdAt = "createdAt", + date = "date", + fromAddress = "fromAddress", + htmlContent = "htmlContent", + id = "id", + subject = "subject", + textContent = "textContent", + toAddress = "toAddress", + updatedAt = "updatedAt", +} +/** update columns of table "mails" */ +export const enum mails_update_column { + createdAt = "createdAt", + date = "date", + fromAddress = "fromAddress", + htmlContent = "htmlContent", + id = "id", + subject = "subject", + textContent = "textContent", + toAddress = "toAddress", + updatedAt = "updatedAt", +} +/** column ordering options */ +export const enum order_by { + asc = "asc", + asc_nulls_first = "asc_nulls_first", + asc_nulls_last = "asc_nulls_last", + desc = "desc", + desc_nulls_first = "desc_nulls_first", + desc_nulls_last = "desc_nulls_last", +} + +type ZEUS_VARIABLES = { + ["String_comparison_exp"]: ValueTypes["String_comparison_exp"]; + ["cursor_ordering"]: ValueTypes["cursor_ordering"]; + ["custom_address_bool_exp"]: ValueTypes["custom_address_bool_exp"]; + ["custom_address_constraint"]: ValueTypes["custom_address_constraint"]; + ["custom_address_insert_input"]: ValueTypes["custom_address_insert_input"]; + ["custom_address_on_conflict"]: ValueTypes["custom_address_on_conflict"]; + ["custom_address_order_by"]: ValueTypes["custom_address_order_by"]; + ["custom_address_pk_columns_input"]: ValueTypes["custom_address_pk_columns_input"]; + ["custom_address_select_column"]: ValueTypes["custom_address_select_column"]; + ["custom_address_set_input"]: ValueTypes["custom_address_set_input"]; + ["custom_address_stream_cursor_input"]: ValueTypes["custom_address_stream_cursor_input"]; + ["custom_address_stream_cursor_value_input"]: ValueTypes["custom_address_stream_cursor_value_input"]; + ["custom_address_update_column"]: ValueTypes["custom_address_update_column"]; + ["custom_address_updates"]: ValueTypes["custom_address_updates"]; + ["mails_bool_exp"]: ValueTypes["mails_bool_exp"]; + ["mails_constraint"]: ValueTypes["mails_constraint"]; + ["mails_insert_input"]: ValueTypes["mails_insert_input"]; + ["mails_on_conflict"]: ValueTypes["mails_on_conflict"]; + ["mails_order_by"]: ValueTypes["mails_order_by"]; + ["mails_pk_columns_input"]: ValueTypes["mails_pk_columns_input"]; + ["mails_select_column"]: ValueTypes["mails_select_column"]; + ["mails_set_input"]: ValueTypes["mails_set_input"]; + ["mails_stream_cursor_input"]: ValueTypes["mails_stream_cursor_input"]; + ["mails_stream_cursor_value_input"]: ValueTypes["mails_stream_cursor_value_input"]; + ["mails_update_column"]: ValueTypes["mails_update_column"]; + ["mails_updates"]: ValueTypes["mails_updates"]; + ["order_by"]: ValueTypes["order_by"]; + ["timestamptz"]: ValueTypes["timestamptz"]; + ["timestamptz_comparison_exp"]: ValueTypes["timestamptz_comparison_exp"]; + ["uuid"]: ValueTypes["uuid"]; + ["uuid_comparison_exp"]: ValueTypes["uuid_comparison_exp"]; +}; diff --git a/backend/mail-zeus/tsconfig.json b/backend/mail-zeus/tsconfig.json new file mode 100644 index 00000000..e075f973 --- /dev/null +++ b/backend/mail-zeus/tsconfig.json @@ -0,0 +1,109 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/backend/mail/.dockerignore b/backend/mail/.dockerignore new file mode 100644 index 00000000..9d8bc087 --- /dev/null +++ b/backend/mail/.dockerignore @@ -0,0 +1,9 @@ +node_modules +.build +.next +out +.env +dist +.DS_Store +npm-debug.log +yarn-error.log \ No newline at end of file diff --git a/backend/mail/.env.example b/backend/mail/.env.example new file mode 100644 index 00000000..e69de29b diff --git a/backend/mail/.gitignore b/backend/mail/.gitignore new file mode 100644 index 00000000..7f4f1832 --- /dev/null +++ b/backend/mail/.gitignore @@ -0,0 +1,34 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +node_modules +.pnp +.pnp.js + +# testing +coverage + +build +/dist + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# turbo +.turbo + +# vercel +.vercel \ No newline at end of file diff --git a/backend/mail/.yarnrc b/backend/mail/.yarnrc new file mode 100644 index 00000000..cf16ca24 --- /dev/null +++ b/backend/mail/.yarnrc @@ -0,0 +1,13 @@ +# backend/ws/.yarnrc + +# Use Workspaces (if needed, though it's typically inherited) +workspaces-experimental true + +"@paybox:registry" "https://registry.yarnpkg.com/" + +# Specify private registry for private packages +# "@paybox:registry" "https://your-private-registry-url/" + +# Use selective version resolutions if needed +# For example, to specify a different version of a package for this workspace +# "@paybox/ws" "1.0.0" diff --git a/backend/mail/package.json b/backend/mail/package.json new file mode 100644 index 00000000..7bf3fa97 --- /dev/null +++ b/backend/mail/package.json @@ -0,0 +1,25 @@ +{ + "name": "@paybox/mail", + "version": "0.0.1", + "main": "./src/index.ts", + "types": "./src/index.ts", + "type": "commonjs", + "license": "MIT", + "private": "true", + "description": "Smtp mail server for paybox", + "scripts": { + "build": "esbuild ./src/index.ts --bundle --platform=node --outfile=dist/index.js", + "dev": "yarn run build && node dist/index.js --trace-warning", + "lint": "turbo lint", + "format": "prettier --write \"**/*.{ts,tsx,md}\"" + }, + "dependencies": { + "mailparser": "^3.6.9", + "smtp-server": "^3.13.3" + }, + "devDependencies": { + "@paybox/common": "*", + "@types/mailparser": "^3.4.4", + "@types/smtp-server": "^3.5.10" + } +} diff --git a/backend/mail/src/index.ts b/backend/mail/src/index.ts new file mode 100644 index 00000000..dc99dc9e --- /dev/null +++ b/backend/mail/src/index.ts @@ -0,0 +1,61 @@ +import { SMTPServer } from "smtp-server"; +import { simpleParser } from "mailparser"; +import { MAILPORT } from "@paybox/common"; + + + +const app = new SMTPServer({ + authOptional: true, + // Make it false if you want to send mail + allowInsecureAuth: true, + + onConnect(session, callback) { + //todo: handle error + console.log("Connected with: ", session.id); + return callback(); + }, + + onMailFrom(address, session, callback) { + //todo: check if the email is valid by spf and dkim + console.log("Mail from: ", address.address, session.id); + return callback(); + }, + + onRcptTo(address, session, callback) { + //todo: query the database to check if the email key is valid + console.log("Mail to: ", address.address, session.id); + return callback(); + }, + + onData(stream, session, callback) { + // todo: save the metadata to the database or use worker for that + console.log("Data: ", session.id); + let data = ''; + stream.on("data", async (chunk) => { + data += chunk.toString(); + console.log("Chunk: ", chunk.toString()); + }); + stream.on("end", async () => { + let parsed = await simpleParser(data); + console.log("Parsed: ", parsed); + return callback(); + }); + }, +}); + +app.on("error", (err) => { + console.error(err); +}); + +process.on("uncaughtException", function (err) { + console.log("Caught exception: " + err); +}); + +process.on("unhandledRejection", function (reason, _promise) { + console.log("Unhandled Rejection at:", reason); +}); + + +app.listen(MAILPORT, () => { + console.log(`Mail Server Listening on port: ${MAILPORT}`); +}); \ No newline at end of file diff --git a/backend/mail/tsconfig.json b/backend/mail/tsconfig.json new file mode 100644 index 00000000..e075f973 --- /dev/null +++ b/backend/mail/tsconfig.json @@ -0,0 +1,109 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/packages/common/src/constant.ts b/packages/common/src/constant.ts index 420def84..e224e90e 100644 --- a/packages/common/src/constant.ts +++ b/packages/common/src/constant.ts @@ -3,9 +3,11 @@ import { Cluster } from "@solana/web3.js"; export const PORT: number = 8080; export const WSPORT: number = 8081; +export const MAILPORT: number = 25; export const SolanaRpcUrl = "https://api.devnet.solana.com"; export const BACKEND_URL = "http://localhost:8080"; export const WS_BACKEND_URL = "http://localhost:8081"; +export const MAIL_URL = "http://localhost:25"; export const HASURA_ADMIN_SERCRET = "myadminsecretkey"; export const REDIS_URL = "redis://localhost:6379"; export const JWT_ALGO = "RS256"; diff --git a/yarn.lock b/yarn.lock index e58d70ae..b62b2c2a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1015,7 +1015,7 @@ "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz" integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== dependencies: "@babel/highlight" "^7.24.2" @@ -1028,7 +1028,7 @@ "@babel/core@^7.14.0", "@babel/core@^7.22.9", "@babel/core@^7.24.0": version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.3.tgz#568864247ea10fbd4eff04dda1e05f9e2ea985c3" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz" integrity sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ== dependencies: "@ampproject/remapping" "^2.2.0" @@ -1049,7 +1049,7 @@ "@babel/eslint-parser@^7.23.10": version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz#e27eee93ed1d271637165ef3a86e2b9332395c32" + resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz" integrity sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" @@ -1068,7 +1068,7 @@ "@babel/generator@^7.24.1": version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.1.tgz#e67e06f68568a4ebf194d1c6014235344f0476d0" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz" integrity sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A== dependencies: "@babel/types" "^7.24.0" @@ -1213,7 +1213,7 @@ "@babel/helpers@^7.24.1": version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.1.tgz#183e44714b9eba36c3038e442516587b1e0a1a94" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz" integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg== dependencies: "@babel/template" "^7.24.0" @@ -1231,7 +1231,7 @@ "@babel/highlight@^7.24.2": version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz" integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== dependencies: "@babel/helper-validator-identifier" "^7.22.20" @@ -1246,7 +1246,7 @@ "@babel/parser@^7.24.1": version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz" integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg== "@babel/plugin-proposal-class-properties@^7.0.0": @@ -1512,7 +1512,7 @@ "@babel/traverse@^7.24.1": version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz" integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== dependencies: "@babel/code-frame" "^7.24.1" @@ -1773,7 +1773,7 @@ "@colors/colors@1.6.0", "@colors/colors@^1.6.0": version "1.6.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz" integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== "@cspotcode/source-map-support@0.8.1", "@cspotcode/source-map-support@^0.8.0": @@ -1785,7 +1785,7 @@ "@dabh/diagnostics@^2.0.2": version "2.0.3" - resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + resolved "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz" integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== dependencies: colorspace "1.1.x" @@ -2942,7 +2942,7 @@ "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== dependencies: "@jridgewell/set-array" "^1.2.1" @@ -2982,7 +2982,7 @@ "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== dependencies: "@jridgewell/resolve-uri" "^3.1.0" @@ -3259,7 +3259,7 @@ "@napi-rs/snappy-darwin-arm64@7.2.2": version "7.2.2" - resolved "https://registry.yarnpkg.com/@napi-rs/snappy-darwin-arm64/-/snappy-darwin-arm64-7.2.2.tgz#32bd351c695fbf60c899b365fff4f64bcd8b612c" + resolved "https://registry.npmjs.org/@napi-rs/snappy-darwin-arm64/-/snappy-darwin-arm64-7.2.2.tgz" integrity sha512-USgArHbfrmdbuq33bD5ssbkPIoT7YCXCRLmZpDS6dMDrx+iM7eD2BecNbOOo7/v1eu6TRmQ0xOzeQ6I/9FIi5g== "@napi-rs/snappy-darwin-x64@7.2.2": @@ -3776,7 +3776,7 @@ "@opentelemetry/api@^1.4.0": version "1.8.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.8.0.tgz#5aa7abb48f23f693068ed2999ae627d2f7d902ec" + resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz" integrity sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w== "@panva/hkdf@^1.0.2": @@ -4858,7 +4858,7 @@ "@rushstack/eslint-patch@^1.3.3", "@rushstack/eslint-patch@^1.7.2": version "1.8.0" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.8.0.tgz#c5545e6a5d2bd5c26b4021c357177a28698c950e" + resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.8.0.tgz" integrity sha512-0HejFckBN2W+ucM6cUOlwsByTKt9/+0tWhqUffNIcHqCXkthY/mZ7AuYPK/2IIaGWhdl0h+tICDO0ssLMd6XMQ== "@sailshq/lodash@^3.10.2": @@ -4888,6 +4888,14 @@ "@noble/hashes" "~1.3.2" "@scure/base" "~1.1.4" +"@selderee/plugin-htmlparser2@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz" + integrity sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ== + dependencies: + domhandler "^5.0.3" + selderee "^0.11.0" + "@sigstore/bundle@^1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz" @@ -4973,7 +4981,7 @@ "@sindresorhus/is@^4.0.0": version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== "@smithy/abort-controller@^2.1.4": @@ -6287,7 +6295,7 @@ "@szmarczak/http-timer@^4.0.5": version "4.0.6" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: defer-to-connect "^2.0.0" @@ -7013,7 +7021,7 @@ "@types/cacheable-request@^6.0.1": version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz" integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== dependencies: "@types/http-cache-semantics" "*" @@ -7123,7 +7131,7 @@ "@types/http-cache-semantics@*": version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" + resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz" integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== "@types/http-errors@*": @@ -7168,7 +7176,7 @@ "@types/keyv@^3.1.4": version "3.1.4" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz" integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== dependencies: "@types/node" "*" @@ -7190,6 +7198,14 @@ resolved "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz" integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== +"@types/mailparser@^3.4.4": + version "3.4.4" + resolved "https://registry.npmjs.org/@types/mailparser/-/mailparser-3.4.4.tgz" + integrity sha512-C6Znp2QVS25JqtuPyxj38Qh+QoFcLycdxsvcc6IZCGekhaMBzbdTXzwGzhGoYb3TfKu8IRCNV0sV1o3Od97cEQ== + dependencies: + "@types/node" "*" + iconv-lite "^0.6.3" + "@types/mime@*": version "3.0.4" resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.4.tgz" @@ -7271,7 +7287,7 @@ resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== -"@types/nodemailer@^6.4.14": +"@types/nodemailer@*", "@types/nodemailer@^6.4.14": version "6.4.14" resolved "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.14.tgz" integrity sha512-fUWthHO9k9DSdPCSPRqcu6TWhYyxTBg382vlNIttSe9M7XfsT06y0f24KHXtbnijPGGRIcVvdKHTNikOI6qiHA== @@ -7353,7 +7369,7 @@ "@types/response-time@^2.3.8": version "2.3.8" - resolved "https://registry.yarnpkg.com/@types/response-time/-/response-time-2.3.8.tgz#cd8618080eeec73a7f3386fc2a9f6ea5c46f36be" + resolved "https://registry.npmjs.org/@types/response-time/-/response-time-2.3.8.tgz" integrity sha512-7qGaNYvdxc0zRab8oHpYx7AW17qj+G0xuag1eCrw3M2VWPJQ/HyKaaghWygiaOUl0y9x7QGQwppDpqLJ5V9pzw== dependencies: "@types/express" "*" @@ -7361,7 +7377,7 @@ "@types/responselike@^1.0.0": version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" + resolved "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz" integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== dependencies: "@types/node" "*" @@ -7393,6 +7409,14 @@ "@types/mime" "*" "@types/node" "*" +"@types/smtp-server@^3.5.10": + version "3.5.10" + resolved "https://registry.npmjs.org/@types/smtp-server/-/smtp-server-3.5.10.tgz" + integrity sha512-i3Jx7sJ2qF52vjaOf3HguulXlWRFf6BSfsRLsIdmytDyVGv7KkhSs+gR9BXJnJWg1Ljkh/56Fh1Xqwa6u6X7zw== + dependencies: + "@types/node" "*" + "@types/nodemailer" "*" + "@types/speakeasy@^2.0.10": version "2.0.10" resolved "https://registry.npmjs.org/@types/speakeasy/-/speakeasy-2.0.10.tgz" @@ -7427,7 +7451,7 @@ "@types/triple-beam@^1.3.2": version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" + resolved "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz" integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== "@types/twilio@^3.19.3": @@ -7466,7 +7490,7 @@ "@types/winston@^2.4.4": version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/winston/-/winston-2.4.4.tgz#48cc744b7b42fad74b9a2e8490e0112bd9a3d08d" + resolved "https://registry.npmjs.org/@types/winston/-/winston-2.4.4.tgz" integrity sha512-BVGCztsypW8EYwJ+Hq+QNYiT/MUyCif0ouBH+flrY66O5W+KIXAMML6E/0fJpm7VjIzgangahl5S03bJJQGrZw== dependencies: winston "*" @@ -7511,7 +7535,7 @@ "@typescript-eslint/eslint-plugin@^7.1.1": version "7.3.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.3.1.tgz#0d8f38a6c8a1802139e62184ee7a68ed024f30a1" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.3.1.tgz" integrity sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw== dependencies: "@eslint-community/regexpp" "^4.5.1" @@ -7539,7 +7563,7 @@ "@typescript-eslint/parser@^7.1.1": version "7.3.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.3.1.tgz#c4ba7dc2744318a5e4506596cbc3a0086255c526" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.3.1.tgz" integrity sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw== dependencies: "@typescript-eslint/scope-manager" "7.3.1" @@ -7566,7 +7590,7 @@ "@typescript-eslint/scope-manager@7.3.1": version "7.3.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz#73fd0cb4211a7be23e49e5b6efec8820caa6ec36" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz" integrity sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag== dependencies: "@typescript-eslint/types" "7.3.1" @@ -7584,7 +7608,7 @@ "@typescript-eslint/type-utils@7.3.1": version "7.3.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.3.1.tgz#cbf90d3d7e788466aa8a5c0ab3f46103f098aa0d" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.3.1.tgz" integrity sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw== dependencies: "@typescript-eslint/typescript-estree" "7.3.1" @@ -7604,7 +7628,7 @@ "@typescript-eslint/types@7.3.1": version "7.3.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.3.1.tgz#ae104de8efa4227a462c0874d856602c5994413c" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz" integrity sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw== "@typescript-eslint/typescript-estree@5.62.0": @@ -7636,7 +7660,7 @@ "@typescript-eslint/typescript-estree@7.3.1": version "7.3.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz#598848195fad34c7aa73f548bd00a4d4e5f5e2bb" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz" integrity sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ== dependencies: "@typescript-eslint/types" "7.3.1" @@ -7663,7 +7687,7 @@ "@typescript-eslint/utils@7.3.1", "@typescript-eslint/utils@^7.1.1": version "7.3.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.3.1.tgz#fc28fd508ccf89495012561b7c02a6fdad162460" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz" integrity sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ== dependencies: "@eslint-community/eslint-utils" "^4.4.0" @@ -7706,7 +7730,7 @@ "@typescript-eslint/visitor-keys@7.3.1": version "7.3.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz#6ddef14a3ce2a79690f01176f5305c34d7b93d8c" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz" integrity sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw== dependencies: "@typescript-eslint/types" "7.3.1" @@ -7719,7 +7743,7 @@ "@vercel/style-guide@^6.0.0": version "6.0.0" - resolved "https://registry.yarnpkg.com/@vercel/style-guide/-/style-guide-6.0.0.tgz#00b5a01b64e5e42420cd704470c22acbca9757fe" + resolved "https://registry.npmjs.org/@vercel/style-guide/-/style-guide-6.0.0.tgz" integrity sha512-tu0wFINGz91EPwaT5VjSqUwbvCY9pvLach7SPG4XyfJKPU9Vku2TFa6+AyzJ4oroGbo9fK+TQhIFHrnFl0nCdg== dependencies: "@babel/core" "^7.24.0" @@ -8470,7 +8494,7 @@ array.prototype.filter@^1.0.3: array.prototype.findlast@^1.2.4: version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" + resolved "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz" integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== dependencies: call-bind "^1.0.7" @@ -8513,7 +8537,7 @@ array.prototype.flatmap@^1.3.2: array.prototype.toreversed@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#b989a6bf35c4c5051e1dc0325151bf8088954eba" + resolved "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz" integrity sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA== dependencies: call-bind "^1.0.2" @@ -8617,7 +8641,7 @@ astral-regex@^2.0.0: async-exit-hook@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" + resolved "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz" integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== async-mutex@^0.4.0: @@ -8780,6 +8804,11 @@ base32.js@0.0.1: resolved "https://registry.npmjs.org/base32.js/-/base32.js-0.0.1.tgz" integrity sha512-EGHIRiegFa62/SsA1J+Xs2tIzludPdzM064N9wjbiEgHnGnJ1V0WEpA4pEwCYT5nDvZk3ubf0shqaCS7k6xeUQ== +base32.js@0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/base32.js/-/base32.js-0.1.0.tgz" + integrity sha512-n3TkB02ixgBOhTvANakDb4xaMXnYUVkNoRFJjQflcqMQhyEKxEHdj3E6N8t8sUQ0mjH/3/JxzlXuz3ul/J90pQ== + base64-js@^1.3.1: version "1.5.1" resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" @@ -8870,7 +8899,7 @@ bindings@^1.3.0, bindings@^1.5.0: bintrees@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8" + resolved "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz" integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== bip32@^4.0.0: @@ -9110,7 +9139,7 @@ bser@2.1.1: btoa@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + resolved "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz" integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== buffer-alloc-unsafe@^1.1.0: @@ -9253,12 +9282,12 @@ cacache@^18.0.0: cacheable-lookup@^5.0.3: version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== cacheable-request@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz" integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== dependencies: clone-response "^1.0.2" @@ -9487,7 +9516,7 @@ ci-info@^3.2.0, ci-info@^3.6.1, ci-info@^3.7.0: ci-info@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.0.0.tgz#65466f8b280fc019b9f50a5388115d17a63a44f2" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz" integrity sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: @@ -9615,7 +9644,7 @@ clone-deep@4.0.1: clone-response@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== dependencies: mimic-response "^1.0.0" @@ -9678,7 +9707,7 @@ color-name@^1.0.0, color-name@~1.1.4: color-string@^1.6.0: version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== dependencies: color-name "^1.0.0" @@ -9691,7 +9720,7 @@ color-support@^1.1.3: color@^3.1.3: version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + resolved "https://registry.npmjs.org/color/-/color-3.2.1.tgz" integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== dependencies: color-convert "^1.9.3" @@ -9709,7 +9738,7 @@ colorette@^2.0.16: colorspace@1.1.x: version "1.1.4" - resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + resolved "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz" integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== dependencies: color "^3.1.3" @@ -9970,7 +9999,7 @@ copy-to-clipboard@^3.3.1: core-js-compat@^3.34.0: version "3.36.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.1.tgz#1818695d72c99c25d621dca94e6883e190cea3c8" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz" integrity sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA== dependencies: browserslist "^4.23.0" @@ -10184,7 +10213,7 @@ data-uri-to-buffer@^6.0.2: data-view-buffer@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + resolved "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz" integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== dependencies: call-bind "^1.0.6" @@ -10193,7 +10222,7 @@ data-view-buffer@^1.0.1: data-view-byte-length@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + resolved "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz" integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== dependencies: call-bind "^1.0.7" @@ -10202,7 +10231,7 @@ data-view-byte-length@^1.0.1: data-view-byte-offset@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + resolved "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz" integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== dependencies: call-bind "^1.0.6" @@ -10287,7 +10316,7 @@ decode-uri-component@^0.2.2: decompress-response@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== dependencies: mimic-response "^3.1.0" @@ -10321,7 +10350,7 @@ defaults@^1.0.3: defer-to-connect@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== define-data-property@^1.0.1, define-data-property@^1.1.2, define-data-property@^1.1.4: @@ -10402,7 +10431,7 @@ depd@2.0.0, depd@~2.0.0: depd@~1.1.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== dependency-graph@^0.11.0: @@ -10533,11 +10562,41 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + dot-case@^2.1.0: version "2.1.1" resolved "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz" @@ -10695,7 +10754,7 @@ emoji-regex@^9.2.2: enabled@2.0.x: version "2.0.0" - resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" + resolved "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz" integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== encode-utf8@^1.0.3: @@ -10708,6 +10767,11 @@ encodeurl@~1.0.2: resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +encoding-japanese@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/encoding-japanese/-/encoding-japanese-2.0.0.tgz" + integrity sha512-++P0RhebUC8MJAwJOsT93dT+5oc5oPImp1HubZpAuCZ5kTLnhuuBhKHj2jJeO/Gj93idPBWmIuQ9QWMe5rX3pQ== + encoding@^0.1.13: version "0.1.13" resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" @@ -10761,6 +10825,11 @@ enquirer@~2.3.6: dependencies: ansi-colors "^4.1.1" +entities@^4.2.0, entities@^4.4.0: + version "4.5.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + env-paths@^2.2.0: version "2.2.1" resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" @@ -10832,7 +10901,7 @@ es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.22.4: es-abstract@^1.23.0, es-abstract@^1.23.2: version "1.23.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.2.tgz#693312f3940f967b8dd3eebacb590b01712622e0" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.2.tgz" integrity sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w== dependencies: array-buffer-byte-length "^1.0.1" @@ -10922,7 +10991,7 @@ es-iterator-helpers@^1.0.15: es-iterator-helpers@^1.0.17: version "1.0.18" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz#4d3424f46b24df38d064af6fbbc89274e29ea69d" + resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz" integrity sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA== dependencies: call-bind "^1.0.7" @@ -10942,7 +11011,7 @@ es-iterator-helpers@^1.0.17: es-object-atoms@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz" integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== dependencies: es-errors "^1.3.0" @@ -11195,7 +11264,7 @@ eslint-plugin-import@^2.28.1, eslint-plugin-import@^2.29.1: eslint-plugin-jest@^27.9.0: version "27.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz#7c98a33605e1d8b8442ace092b60e9919730000b" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz" integrity sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug== dependencies: "@typescript-eslint/utils" "^5.10.0" @@ -11229,7 +11298,7 @@ eslint-plugin-only-warn@^1.1.0: eslint-plugin-playwright@^1.5.2: version "1.5.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-playwright/-/eslint-plugin-playwright-1.5.4.tgz#12e6f31010c460e7f59ba5ec0ec7a96b331bbc44" + resolved "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-1.5.4.tgz" integrity sha512-J38Wy3Vc2f9y73J+KRmgXgbYI8TZ3zbz6qBbTj3PhpFndUS572jZ7kqQ3rJ9si5BaMHT7lmZzraO+3UjwIDV4Q== dependencies: globals "^13.23.0" @@ -11241,7 +11310,7 @@ eslint-plugin-playwright@^1.5.2: eslint-plugin-react@^7.33.2, eslint-plugin-react@^7.34.0: version "7.34.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#6806b70c97796f5bbfb235a5d3379ece5f4da997" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz" integrity sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw== dependencies: array-includes "^3.1.7" @@ -11265,7 +11334,7 @@ eslint-plugin-react@^7.33.2, eslint-plugin-react@^7.34.0: eslint-plugin-testing-library@^6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-6.2.0.tgz#af3340b783c881eb19ec5ac6b3a4bfe8ab4a1f74" + resolved "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-6.2.0.tgz" integrity sha512-+LCYJU81WF2yQ+Xu4A135CgK8IszcFcyMF4sWkbiu6Oj+Nel0TrkZq/HvDw0/1WuO3dhDQsZA/OpEMGd0NfcUw== dependencies: "@typescript-eslint/utils" "^5.58.0" @@ -11287,7 +11356,7 @@ eslint-plugin-turbo@1.12.4: eslint-plugin-unicorn@^51.0.1: version "51.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-51.0.1.tgz#3641c5e110324c3739d6cb98fc1b99ada39f477b" + resolved "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-51.0.1.tgz" integrity sha512-MuR/+9VuB0fydoI0nIn2RDA5WISRn4AsJyNSaNKLVwie9/ONvQhxOBbkfSICBPnzKrB77Fh6CZZXjgTt/4Latw== dependencies: "@babel/helper-validator-identifier" "^7.22.20" @@ -11309,7 +11378,7 @@ eslint-plugin-unicorn@^51.0.1: eslint-plugin-vitest@^0.3.22: version "0.3.26" - resolved "https://registry.yarnpkg.com/eslint-plugin-vitest/-/eslint-plugin-vitest-0.3.26.tgz#0906893c1f8f7094614fc6ff255c0a369cfbf427" + resolved "https://registry.npmjs.org/eslint-plugin-vitest/-/eslint-plugin-vitest-0.3.26.tgz" integrity sha512-oxe5JSPgRjco8caVLTh7Ti8PxpwJdhSV0hTQAmkFcNcmy/9DnqLB/oNVRA11RmVRP//2+jIIT6JuBEcpW3obYg== dependencies: "@typescript-eslint/utils" "^7.1.1" @@ -11664,7 +11733,7 @@ express-rate-limit@^7.2.0: express@^4.17.1, express@^4.18.2, express@^4.19.1: version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" + resolved "https://registry.npmjs.org/express/-/express-4.19.2.tgz" integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== dependencies: accepts "~1.3.8" @@ -11829,7 +11898,7 @@ fbjs@^3.0.0: fecha@^4.2.0: version "4.2.3" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz" integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== figures@3.2.0, figures@^3.0.0: @@ -11949,7 +12018,7 @@ flatted@^3.2.9: fn.name@1.x.x: version "1.1.0" - resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" + resolved "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz" integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== follow-redirects@^1.15.4: @@ -12190,7 +12259,7 @@ get-stream@6.0.0: get-stream@^5.1.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" @@ -12443,7 +12512,7 @@ gopd@^1.0.1: got@^11.8.6: version "11.8.6" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + resolved "https://registry.npmjs.org/got/-/got-11.8.6.tgz" integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== dependencies: "@sindresorhus/is" "^4.0.0" @@ -12677,11 +12746,16 @@ hasown@^2.0.0, hasown@^2.0.1: hasown@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: function-bind "^1.1.2" +he@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + header-case@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz" @@ -12756,11 +12830,32 @@ hosted-git-info@^7.0.0: dependencies: lru-cache "^10.0.1" +html-to-text@9.0.5: + version "9.0.5" + resolved "https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.5.tgz" + integrity sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg== + dependencies: + "@selderee/plugin-htmlparser2" "^0.11.0" + deepmerge "^4.3.1" + dom-serializer "^2.0.0" + htmlparser2 "^8.0.2" + selderee "^0.11.0" + html5-qrcode@^2.3.8: version "2.3.8" resolved "https://registry.npmjs.org/html5-qrcode/-/html5-qrcode-2.3.8.tgz" integrity sha512-jsr4vafJhwoLVEDW3n1KvPnCCXWaQfRng0/EEYk1vNcQGcG/htAdhJX0be8YyqMoSz7+hZvOZSTAepsabiuhiQ== +htmlparser2@^8.0.2: + version "8.0.2" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz" + integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + entities "^4.4.0" + http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" @@ -12801,7 +12896,7 @@ http-shutdown@^1.2.2: http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz" integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== dependencies: quick-lru "^5.1.1" @@ -12862,7 +12957,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2: +iconv-lite@0.6.3, iconv-lite@^0.6.2, iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -13059,6 +13154,11 @@ ipaddr.js@1.9.1: resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +ipv6-normalize@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/ipv6-normalize/-/ipv6-normalize-1.0.1.tgz" + integrity sha512-Bm6H79i01DjgGTCWjUuCjJ6QDo1HB96PT/xCYuyJUP9WFbVDrLSbG4EZCvOCun2rNswZb0c3e4Jt/ws795esHA== + iron-webcrypto@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.0.0.tgz" @@ -13095,7 +13195,7 @@ is-arrayish@^0.2.1: is-arrayish@^0.3.1: version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-async-function@^2.0.0: @@ -13155,7 +13255,7 @@ is-core-module@^2.1.0, is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-m is-data-view@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + resolved "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz" integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== dependencies: is-typed-array "^1.1.13" @@ -13659,9 +13759,9 @@ jsbn@1.1.0: integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== jschardet@latest: - version "3.1.1" - resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-3.1.1.tgz#39a18bd1a1cdc7e85a6f42eef47490ee79b2f0c1" - integrity sha512-Jbygqaa20I+0ImPjmMbrsY3QrMkfwfI5G/VNlb6c9nDIyyOw8msfWHzTy04/sawa4rjn0t9WYy3nahWlSjB5zw== + version "3.1.2" + resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-3.1.2.tgz#9bf4364deba0677fe9e3bd9e29eda57febf2e9db" + integrity sha512-mw3CBZGzW8nUBPYhFU2ztZ/kJ6NClQUQVpyzvFMfznZsoC///ZQ30J2RCUanNsr5yF22LqhgYr/lj807/ZleWA== jsesc@^2.5.1: version "2.5.2" @@ -13902,7 +14002,7 @@ kleur@^4.1.5: kuler@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" + resolved "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz" integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== language-subtag-registry@^0.3.20: @@ -13917,6 +14017,11 @@ language-tags@^1.0.9: dependencies: language-subtag-registry "^0.3.20" +leac@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz" + integrity sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg== + lerna@^8.1.2: version "8.1.2" resolved "https://registry.npmjs.org/lerna/-/lerna-8.1.2.tgz" @@ -14005,6 +14110,36 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +libbase64@1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/libbase64/-/libbase64-1.2.1.tgz" + integrity sha512-l+nePcPbIG1fNlqMzrh68MLkX/gTxk/+vdvAb388Ssi7UuUN31MI44w4Yf33mM3Cm4xDfw48mdf3rkdHszLNew== + +libbase64@1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/libbase64/-/libbase64-1.3.0.tgz" + integrity sha512-GgOXd0Eo6phYgh0DJtjQ2tO8dc0IVINtZJeARPeiIJqge+HdsWSuaDTe8ztQ7j/cONByDZ3zeB325AHiv5O0dg== + +libmime@5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/libmime/-/libmime-5.2.0.tgz" + integrity sha512-X2U5Wx0YmK0rXFbk67ASMeqYIkZ6E5vY7pNWRKtnNzqjvdYYG8xtPDpCnuUEnPU9vlgNev+JoSrcaKSUaNvfsw== + dependencies: + encoding-japanese "2.0.0" + iconv-lite "0.6.3" + libbase64 "1.2.1" + libqp "2.0.1" + +libmime@5.3.4: + version "5.3.4" + resolved "https://registry.npmjs.org/libmime/-/libmime-5.3.4.tgz" + integrity sha512-TsqPdercr6DHrnoQx1F0nS2Y4yPT+fWuOjEP2rqzvV77hMYWomTe/rpm0u9JORQ/FavEXybAGcBJsQbLr9+hjA== + dependencies: + encoding-japanese "2.0.0" + iconv-lite "0.6.3" + libbase64 "1.3.0" + libqp "2.1.0" + libnpmaccess@7.0.2: version "7.0.2" resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-7.0.2.tgz" @@ -14027,6 +14162,16 @@ libnpmpublish@7.3.0: sigstore "^1.4.0" ssri "^10.0.1" +libqp@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/libqp/-/libqp-2.0.1.tgz" + integrity sha512-Ka0eC5LkF3IPNQHJmYBWljJsw0UvM6j+QdKRbWyCdTmYwvIDE6a7bCm0UkTAL/K+3KXK5qXT/ClcInU01OpdLg== + +libqp@2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/libqp/-/libqp-2.1.0.tgz" + integrity sha512-O6O6/fsG5jiUVbvdgT7YX3xY3uIadR6wEZ7+vy9u7PKHAlSEB6blvC1o5pHBjgsi95Uo0aiBBdkyFecj6jtb7A== + lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" @@ -14047,6 +14192,13 @@ lines-and-columns@~2.0.3: resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz" integrity sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A== +linkify-it@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz" + integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== + dependencies: + uc.micro "^2.0.0" + listhen@^1.5.5: version "1.7.2" resolved "https://registry.npmjs.org/listhen/-/listhen-1.7.2.tgz" @@ -14292,7 +14444,7 @@ log-update@^4.0.0: logform@^2.3.2, logform@^2.4.0: version "2.6.0" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.6.0.tgz#8c82a983f05d6eaeb2d75e3decae7a768b2bf9b5" + resolved "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz" integrity sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ== dependencies: "@colors/colors" "1.6.0" @@ -14352,7 +14504,7 @@ lower-case@^2.0.2: lowercase-keys@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== "lru-cache@7.10.1 - 7.13.1": @@ -14404,6 +14556,31 @@ magic-string@^0.25.3: dependencies: sourcemap-codec "^1.4.8" +mailparser@^3.6.9: + version "3.6.9" + resolved "https://registry.npmjs.org/mailparser/-/mailparser-3.6.9.tgz" + integrity sha512-1fIDZlgN1NnuzmTSEUxkaViquXYkw5NbQehVc+kz55QRy98QgLdTtRSKv289Jy4NrCiDchRx6zAijB4HrPsvkA== + dependencies: + encoding-japanese "2.0.0" + he "1.2.0" + html-to-text "9.0.5" + iconv-lite "0.6.3" + libmime "5.3.4" + linkify-it "5.0.0" + mailsplit "5.4.0" + nodemailer "6.9.11" + punycode "2.3.1" + tlds "1.250.0" + +mailsplit@5.4.0: + version "5.4.0" + resolved "https://registry.npmjs.org/mailsplit/-/mailsplit-5.4.0.tgz" + integrity sha512-wnYxX5D5qymGIPYLwnp6h8n1+6P6vz/MJn5AzGjZ8pwICWssL+CCQjWBIToOVHASmATot4ktvlLo6CyLfOXWYA== + dependencies: + libbase64 "1.2.1" + libmime "5.2.0" + libqp "2.0.1" + make-dir@4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" @@ -14612,12 +14789,12 @@ mimic-fn@^4.0.0: mimic-response@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== mimic-response@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== min-document@^2.19.0: @@ -15103,7 +15280,7 @@ node-releases@^2.0.14: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== -nodemailer@^6.9.10: +nodemailer@6.9.11, nodemailer@^6.9.10: version "6.9.11" resolved "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.11.tgz" integrity sha512-UiAkgiERuG94kl/3bKfE8o10epvDnl0vokNEtZDPTq9BWzIl6EFT9336SbIT4oaTBD8NmmUTLsQyXHV82eXSWg== @@ -15174,7 +15351,7 @@ normalize-range@^0.1.2: normalize-url@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== npm-bundled@^1.1.2: @@ -15449,7 +15626,7 @@ object.groupby@^1.0.1: object.hasown@^1.1.3: version "1.1.4" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc" + resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz" integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg== dependencies: define-properties "^1.2.1" @@ -15522,7 +15699,7 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: one-time@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" + resolved "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz" integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== dependencies: fn.name "1.x.x" @@ -15648,7 +15825,7 @@ outdent@^0.5.0: p-cancelable@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== p-filter@^2.1.0: @@ -15898,6 +16075,14 @@ parse-url@^8.1.0: dependencies: parse-path "^7.0.0" +parseley@^0.12.0: + version "0.12.1" + resolved "https://registry.npmjs.org/parseley/-/parseley-0.12.1.tgz" + integrity sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw== + dependencies: + leac "^0.6.0" + peberminta "^0.9.0" + parseurl@^1.3.3, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" @@ -16027,6 +16212,11 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +peberminta@^0.9.0: + version "0.9.0" + resolved "https://registry.npmjs.org/peberminta/-/peberminta-0.9.0.tgz" + integrity sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ== + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" @@ -16059,7 +16249,7 @@ pify@^4.0.1: pino-abstract-transport@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz#083d98f966262164504afb989bccd05f665937a8" + resolved "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz" integrity sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA== dependencies: readable-stream "^4.0.0" @@ -16075,7 +16265,7 @@ pino-abstract-transport@v0.5.0: pino-loki@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/pino-loki/-/pino-loki-2.2.1.tgz#1efe9faa62c6064df7d36ce4e02d19d2e8529845" + resolved "https://registry.npmjs.org/pino-loki/-/pino-loki-2.2.1.tgz" integrity sha512-NLo9INo4lOQ8PfC0i/AZBh8xh6LCCkuGRuREq69Mw25zmoISlZiYCn5FBidagu+Cjm/dvhvt19THRhc0B71NnA== dependencies: commander "^10.0.1" @@ -16258,7 +16448,7 @@ prelude-ls@^1.2.1: prettier-plugin-packagejson@^2.4.12: version "2.4.12" - resolved "https://registry.yarnpkg.com/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.4.12.tgz#eeb917dad83ae42d0caccc9f26d3728b5c4f2434" + resolved "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.4.12.tgz" integrity sha512-hifuuOgw5rHHTdouw9VrhT8+Nd7UwxtL1qco8dUfd4XUFQL6ia3xyjSxhPQTsGnSYFraTWy5Omb+MZm/OWDTpQ== dependencies: sort-package-json "2.8.0" @@ -16315,7 +16505,7 @@ process@^0.11.10: prom-client@^15.1.0: version "15.1.0" - resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-15.1.0.tgz#816a4a2128da169d0471093baeccc6d2f17a4613" + resolved "https://registry.npmjs.org/prom-client/-/prom-client-15.1.0.tgz" integrity sha512-cCD7jLTqyPdjEPBo/Xk4Iu8jxjuZgZJ3e/oET3L+ZwOuap/7Cw3dH/TJSsZKs1TQLZ2IHpIlRAKw82ef06kmMw== dependencies: "@opentelemetry/api" "^1.4.0" @@ -16377,7 +16567,7 @@ protobufjs@7.2.5: protobufjs@^7.2.4: version "7.2.6" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz" integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== dependencies: "@protobufjs/aspromise" "^1.1.2" @@ -16450,16 +16640,16 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +punycode@2.3.1, punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + punycode@^1.3.2: version "1.4.1" resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - pushdata-bitcoin@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/pushdata-bitcoin/-/pushdata-bitcoin-1.0.1.tgz" @@ -16567,7 +16757,7 @@ quick-lru@^4.0.1: quick-lru@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== radix3@^1.1.0: @@ -16732,7 +16922,7 @@ react-remove-scroll@2.5.5: react-resizable-panels@^1.0.9: version "1.0.10" - resolved "https://registry.yarnpkg.com/react-resizable-panels/-/react-resizable-panels-1.0.10.tgz#51262e5530cdc77bba25605b7b2a58604ba4f9c6" + resolved "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-1.0.10.tgz" integrity sha512-0+g0CNqregkuocr+Mi+e6wgWVARnKTYIX3U1QK7GlkLQKCmbymZakx80YGwcRO7HNnKJTQ5v38HlBos/cGxWvg== react-style-singleton@^2.2.1: @@ -16900,7 +17090,7 @@ real-require@^0.1.0: recoil@^0.7.7: version "0.7.7" - resolved "https://registry.yarnpkg.com/recoil/-/recoil-0.7.7.tgz#c5f2c843224384c9c09e4a62c060fb4c1454dc8e" + resolved "https://registry.npmjs.org/recoil/-/recoil-0.7.7.tgz" integrity sha512-8Og5KPQW9LwC577Vc7Ug2P0vQshkv1y3zG3tSSkWMqkWSwHmE+by06L8JtnGocjW6gcCvfwB3YtrJG6/tWivNQ== dependencies: hamt_plus "1.0.2" @@ -17053,7 +17243,7 @@ requires-port@^1.0.0: resolve-alpn@^1.0.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-cwd@^3.0.0: @@ -17111,7 +17301,7 @@ resolve@~1.19.0: response-time@^2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/response-time/-/response-time-2.3.2.tgz#ffa71bab952d62f7c1d49b7434355fbc68dffc5a" + resolved "https://registry.npmjs.org/response-time/-/response-time-2.3.2.tgz" integrity sha512-MUIDaDQf+CVqflfTdQ5yam+aYCkXj1PY8fjlPDQ6ppxJlmgZb864pHtA750mayywNg8tx4rS7qH9JXd/OF+3gw== dependencies: depd "~1.1.0" @@ -17119,7 +17309,7 @@ response-time@^2.3.2: responselike@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + resolved "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz" integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== dependencies: lowercase-keys "^2.0.0" @@ -17340,7 +17530,7 @@ safe-array-concat@^1.1.0: safe-array-concat@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" + resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz" integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== dependencies: call-bind "^1.0.7" @@ -17424,6 +17614,13 @@ secp256k1@^5.0.0: node-addon-api "^5.0.0" node-gyp-build "^4.2.0" +selderee@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/selderee/-/selderee-0.11.0.tgz" + integrity sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA== + dependencies: + parseley "^0.12.0" + selfsigned@^2.0.1: version "2.4.1" resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz" @@ -17588,7 +17785,7 @@ side-channel@^1.0.4: side-channel@^1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz" integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== dependencies: call-bind "^1.0.7" @@ -17636,7 +17833,7 @@ sigstore@^2.2.0: simple-swizzle@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== dependencies: is-arrayish "^0.3.1" @@ -17686,6 +17883,16 @@ smartwrap@^2.0.2: wcwidth "^1.0.1" yargs "^15.1.0" +smtp-server@^3.13.3: + version "3.13.3" + resolved "https://registry.npmjs.org/smtp-server/-/smtp-server-3.13.3.tgz" + integrity sha512-a5lGUfh0GkXGKHlDK/F6ErqIDOOGUGhcVnAiBB3a5iGQXPO95vY7LIceKsPYy96N8Aqsl4JZFANil46qh5m2mg== + dependencies: + base32.js "0.1.0" + ipv6-normalize "1.0.1" + nodemailer "6.9.11" + punycode "2.3.1" + snake-case@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz" @@ -17703,7 +17910,7 @@ snake-case@^3.0.4: snappy@^7.2.2: version "7.2.2" - resolved "https://registry.yarnpkg.com/snappy/-/snappy-7.2.2.tgz#dbd9217ae06b651c073856036618c2dc8992ef17" + resolved "https://registry.npmjs.org/snappy/-/snappy-7.2.2.tgz" integrity sha512-iADMq1kY0v3vJmGTuKcFWSXt15qYUz7wFkArOrsSg0IFfI3nJqIJvK2/ZbEIndg7erIJLtAVX2nSOqPz7DcwbA== optionalDependencies: "@napi-rs/snappy-android-arm-eabi" "7.2.2" @@ -17935,7 +18142,7 @@ ssri@^9.0.1: stack-trace@0.0.x: version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + resolved "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz" integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== stacktracey@^2.1.8: @@ -18001,8 +18208,7 @@ string-env-interpolation@^1.0.1: resolved "https://registry.npmjs.org/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz" integrity sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - name string-width-cjs +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -18020,6 +18226,15 @@ string-env-interpolation@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" @@ -18031,7 +18246,7 @@ string-width@^5.0.1, string-width@^5.1.2: string.prototype.matchall@^4.0.10: version "4.0.11" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz" integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== dependencies: call-bind "^1.0.7" @@ -18058,7 +18273,7 @@ string.prototype.trim@^1.2.8: string.prototype.trim@^1.2.9: version "1.2.9" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz" integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== dependencies: call-bind "^1.0.7" @@ -18077,7 +18292,7 @@ string.prototype.trimend@^1.0.7: string.prototype.trimend@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz" integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== dependencies: call-bind "^1.0.7" @@ -18397,7 +18612,7 @@ tar@^6.1.11, tar@^6.1.2: tdigest@^0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced" + resolved "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz" integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA== dependencies: bintrees "1.0.2" @@ -18424,7 +18639,7 @@ text-extensions@^1.0.0: text-hex@1.0.x: version "1.0.0" - resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + resolved "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz" integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== text-table@^0.2.0: @@ -18512,6 +18727,11 @@ title-case@^3.0.3: dependencies: tslib "^2.0.3" +tlds@1.250.0: + version "1.250.0" + resolved "https://registry.npmjs.org/tlds/-/tlds-1.250.0.tgz" + integrity sha512-rWsBfFCWKrjM/o2Q1TTUeYQv6tHSd/umUutDjVs6taTuEgRDIreVYIBgWRWW4ot7jp6n0UVUuxhTLWBtUmPu/w== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" @@ -18570,7 +18790,7 @@ trim-newlines@^3.0.0: triple-beam@^1.3.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" + resolved "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz" integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== ts-api-utils@^1.0.1: @@ -18736,7 +18956,7 @@ turbo-darwin-64@1.13.0: turbo-darwin-arm64@1.13.0: version "1.13.0" - resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-1.13.0.tgz#7ea8dd837ce4e839bc1c757220a4504285748616" + resolved "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.13.0.tgz" integrity sha512-/Q9/pNFkF9w83tNxwMpgapwLYdQ12p8mpty2YQRoUiS9ClWkcqe136jR0mtuMqzlNlpREOFZaoyIthjt6Sdo0g== turbo-linux-64@1.13.0: @@ -18896,7 +19116,7 @@ typeforce@^1.11.5, typeforce@^1.18.0: typescript@5.4.3: version "5.4.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.3.tgz#5c6fedd4c87bee01cd7a528a30145521f8e0feff" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz" integrity sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg== "typescript@>=3 < 6", typescript@^5.3.3: @@ -18906,7 +19126,7 @@ typescript@5.4.3: typescript@^4.6.2: version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== ua-parser-js@^1.0.35, ua-parser-js@^1.0.37: @@ -18914,6 +19134,11 @@ ua-parser-js@^1.0.35, ua-parser-js@^1.0.37: resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz" integrity sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ== +uc.micro@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz" + integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== + ufo@^1.3.0, ufo@^1.3.1, ufo@^1.3.2, ufo@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz" @@ -19139,7 +19364,7 @@ url-parse@^1.5.9: url-polyfill@^1.1.12: version "1.1.12" - resolved "https://registry.yarnpkg.com/url-polyfill/-/url-polyfill-1.1.12.tgz#6cdaa17f6b022841b3aec0bf8dbd87ac0cd33331" + resolved "https://registry.npmjs.org/url-polyfill/-/url-polyfill-1.1.12.tgz" integrity sha512-mYFmBHCapZjtcNHW0MDq9967t+z4Dmg5CJ0KqysK3+ZbyoNOWQHksGCTWwDhxGXllkWlOc10Xfko6v4a3ucM6A== urlpattern-polyfill@^10.0.0: @@ -19650,7 +19875,7 @@ which-typed-array@^1.1.14, which-typed-array@^1.1.2, which-typed-array@^1.1.9: which-typed-array@^1.1.15: version "1.1.15" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz" integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== dependencies: available-typed-arrays "^1.0.7" @@ -19703,7 +19928,7 @@ wif@^4.0.0: winston-loki@^6.0.8: version "6.0.8" - resolved "https://registry.yarnpkg.com/winston-loki/-/winston-loki-6.0.8.tgz#8afd88e28568202bf9e178d85633ca870ef7357d" + resolved "https://registry.npmjs.org/winston-loki/-/winston-loki-6.0.8.tgz" integrity sha512-TwPxpMApBiDFBjwCFpOWurTpQOGXk3VVCwziANgmQdPAUXwH9ObYp7AcSJXCpa9zOtEi9w4MX6zPx+xAmQY5Mw== dependencies: async-exit-hook "2.0.1" @@ -19716,7 +19941,7 @@ winston-loki@^6.0.8: winston-transport@^4.3.0, winston-transport@^4.7.0: version "4.7.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.7.0.tgz#e302e6889e6ccb7f383b926df6936a5b781bd1f0" + resolved "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz" integrity sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg== dependencies: logform "^2.3.2" @@ -19725,7 +19950,7 @@ winston-transport@^4.3.0, winston-transport@^4.7.0: winston@*, winston@^3.13.0: version "3.13.0" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.13.0.tgz#e76c0d722f78e04838158c61adc1287201de7ce3" + resolved "https://registry.npmjs.org/winston/-/winston-3.13.0.tgz" integrity sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ== dependencies: "@colors/colors" "^1.6.0" @@ -19778,8 +20003,7 @@ wrangler@^3.25.0, wrangler@^3.30.1: optionalDependencies: fsevents "~2.3.2" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: - name wrap-ansi-cjs +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -19806,6 +20030,15 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz"