From 17f1932467273e66b52808bb263ffaefe8195918 Mon Sep 17 00:00:00 2001 From: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com> Date: Mon, 28 Apr 2025 16:54:58 -0400 Subject: [PATCH] refactor: Use Salesforce GraphQL for account ownership routing (#20655) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Omar López --- packages/app-store/salesforce/.gitignore | 5 + packages/app-store/salesforce/README.md | 8 + packages/app-store/salesforce/codegen.ts | 16 + .../app-store/salesforce/graphql.config.ts | 6 + .../app-store/salesforce/graphqlrc.config.ts | 6 + .../salesforce/lib/CrmService.test.ts | 43 +- .../app-store/salesforce/lib/CrmService.ts | 140 +- .../__tests__/CrmService.integration.test.ts | 93 +- .../lib/graphql/SalesforceGraphQLClient.ts | 183 ++ .../__tests__/SalesforceGraphQLClient.test.ts | 79 + .../lib/graphql/__tests__/urqlMock.ts | 173 ++ .../lib/graphql/documents/queries.ts | 79 + ...ssibleWebsiteValuesFromEmailDomain.test.ts | 20 + .../__tests__/getDominantAccountId.test.ts | 18 + ...AllPossibleWebsiteValuesFromEmailDomain.ts | 10 + .../lib/utils/getDominantAccountId.ts | 35 + packages/app-store/salesforce/package.json | 14 +- packages/app-store/salesforce/src/gql/gql.ts | 56 + .../app-store/salesforce/src/gql/types.ts | 542 +++++ yarn.lock | 1992 ++++++++++++++++- 20 files changed, 3272 insertions(+), 246 deletions(-) create mode 100644 packages/app-store/salesforce/.gitignore create mode 100644 packages/app-store/salesforce/README.md create mode 100644 packages/app-store/salesforce/codegen.ts create mode 100644 packages/app-store/salesforce/graphql.config.ts create mode 100644 packages/app-store/salesforce/graphqlrc.config.ts create mode 100644 packages/app-store/salesforce/lib/graphql/SalesforceGraphQLClient.ts create mode 100644 packages/app-store/salesforce/lib/graphql/__tests__/SalesforceGraphQLClient.test.ts create mode 100644 packages/app-store/salesforce/lib/graphql/__tests__/urqlMock.ts create mode 100644 packages/app-store/salesforce/lib/graphql/documents/queries.ts create mode 100644 packages/app-store/salesforce/lib/utils/__tests__/getAllPossibleWebsiteValuesFromEmailDomain.test.ts create mode 100644 packages/app-store/salesforce/lib/utils/__tests__/getDominantAccountId.test.ts create mode 100644 packages/app-store/salesforce/lib/utils/getAllPossibleWebsiteValuesFromEmailDomain.ts create mode 100644 packages/app-store/salesforce/lib/utils/getDominantAccountId.ts create mode 100644 packages/app-store/salesforce/src/gql/gql.ts create mode 100644 packages/app-store/salesforce/src/gql/types.ts diff --git a/packages/app-store/salesforce/.gitignore b/packages/app-store/salesforce/.gitignore new file mode 100644 index 0000000000..6c37df8e9e --- /dev/null +++ b/packages/app-store/salesforce/.gitignore @@ -0,0 +1,5 @@ +src/gql/fragment-masking.ts +# src/gql/gql.ts +src/gql/graphql.ts +src/gql/index.ts +schema.graphql \ No newline at end of file diff --git a/packages/app-store/salesforce/README.md b/packages/app-store/salesforce/README.md new file mode 100644 index 0000000000..760e44d0c6 --- /dev/null +++ b/packages/app-store/salesforce/README.md @@ -0,0 +1,8 @@ +## Working With GraphQL +This package utilizes [`GraphQL Codegen`](https://the-guild.dev/graphql/codegen#graphql-codegen) to generate types and queries from the Salesforce schema. + +### Generating GraphQL Schema +Currently v63 of the Salesforce graphql endpoint throws an error when trying to generate files. This is due to the `Setup__JoinInput` type not generating any fields. To work around this, the `schema.json` file comes from the [Salesforce graphql introspection query](https://www.postman.com/salesforce-developers/salesforce-developers/request/sy8qaf9/introspection-query). This file is then converted to a SDL file using the [graphql-introspection-json-to-sdl](https://github.com/Calcom/graphql-introspection-json-to-sdl) package. You can generate the SDL file by running `yarn generate:schema`. + +### Generating Queries +When working with graphql files ensure that `yarn codegen:watch` is running in the background. This will generate the types and queries from the SDL file. \ No newline at end of file diff --git a/packages/app-store/salesforce/codegen.ts b/packages/app-store/salesforce/codegen.ts new file mode 100644 index 0000000000..81a091924b --- /dev/null +++ b/packages/app-store/salesforce/codegen.ts @@ -0,0 +1,16 @@ +import type { CodegenConfig } from "@graphql-codegen/cli"; + +const config: CodegenConfig = { + schema: "./schema.graphql", + documents: ["./lib/graphql/documents/queries.ts"], + ignoreNoDocuments: false, + generates: { + "./src/gql/": { + preset: "client", + }, + }, + debug: true, + verbose: true, +}; + +export default config; diff --git a/packages/app-store/salesforce/graphql.config.ts b/packages/app-store/salesforce/graphql.config.ts new file mode 100644 index 0000000000..36ea1a310e --- /dev/null +++ b/packages/app-store/salesforce/graphql.config.ts @@ -0,0 +1,6 @@ +const config = { + schema: "./schema.graphql", + documents: ["./lib/graphql/documents/queries.ts"], +}; + +export default config; diff --git a/packages/app-store/salesforce/graphqlrc.config.ts b/packages/app-store/salesforce/graphqlrc.config.ts new file mode 100644 index 0000000000..db4d247bd1 --- /dev/null +++ b/packages/app-store/salesforce/graphqlrc.config.ts @@ -0,0 +1,6 @@ +const config = { + schema: "./schema.graphql", + documents: "**/lib/graphql/documents/*.{ts}", +}; + +export default config; diff --git a/packages/app-store/salesforce/lib/CrmService.test.ts b/packages/app-store/salesforce/lib/CrmService.test.ts index 0410384330..6954453c9f 100644 --- a/packages/app-store/salesforce/lib/CrmService.test.ts +++ b/packages/app-store/salesforce/lib/CrmService.test.ts @@ -78,6 +78,14 @@ const accountQueryResponse = { ], }; +const mockSalesforceGraphQLClientQuery = vi.fn(); + +vi.mock("./graphql/SalesforceGraphQLClient", () => ({ + SalesforceGraphQLClient: class { + GetAccountRecordsForRRSkip = mockSalesforceGraphQLClientQuery; + }, +})); + describe("SalesforceCRMService", () => { let service: SalesforceCRMService; let mockConnection: { query: any; sobject: any }; @@ -484,11 +492,16 @@ describe("SalesforceCRMService", () => { mockAppOptions({ roundRobinSkipCheckRecordOn: SalesforceRecordEnum.ACCOUNT, }); - const querySpy = vi.spyOn(mockConnection, "query"); - querySpy - .mockResolvedValueOnce(contactUnderAccountQueryResponse) - .mockResolvedValueOnce(accountQueryResponse) - .mockResolvedValueOnce(ownerQueryResponse); + + mockSalesforceGraphQLClientQuery.mockResolvedValueOnce([ + { + id: "acc001", + email: "test@example.com", + ownerId: "owner001", + ownerEmail: "owner@example.com", + recordType: SalesforceRecordEnum.ACCOUNT, + }, + ]); const result = await service.getContacts({ emails: "test@example.com", @@ -504,11 +517,6 @@ describe("SalesforceCRMService", () => { recordType: "Account", }, ]); - - expect(querySpy).toHaveBeenNthCalledWith( - 1, - "SELECT Id, Email, OwnerId, AccountId, Account.Owner.Email, Account.Website FROM Contact WHERE Email = 'test@example.com' AND AccountId != null" - ); }); }); }); @@ -572,19 +580,4 @@ describe("SalesforceCRMService", () => { ); }); }); - - describe("getAccountBasedOnEmailDomainOfContacts", () => { - it("should return the account ID based on email domain", async () => { - const querySpy = vi.spyOn(mockConnection, "query"); - querySpy.mockResolvedValueOnce(accountQueryResponse); - - await service.getAccountBasedOnEmailDomainOfContacts("test@example.com"); - expect(querySpy).toHaveBeenNthCalledWith( - 1, - `SELECT Id, OwnerId, Owner.Email, Website FROM Account WHERE Website IN (${service.getAllPossibleAccountWebsiteFromEmailDomain( - "example.com" - )}) LIMIT 1` - ); - }); - }); }); diff --git a/packages/app-store/salesforce/lib/CrmService.ts b/packages/app-store/salesforce/lib/CrmService.ts index db0874ffcc..ceba6894af 100644 --- a/packages/app-store/salesforce/lib/CrmService.ts +++ b/packages/app-store/salesforce/lib/CrmService.ts @@ -27,6 +27,10 @@ import { RoutingReasons, } from "./enums"; import { getSalesforceAppKeys } from "./getSalesforceAppKeys"; +import { SalesforceGraphQLClient } from "./graphql/SalesforceGraphQLClient"; +import getAllPossibleWebsiteValuesFromEmailDomain from "./utils/getAllPossibleWebsiteValuesFromEmailDomain"; +import getDominantAccountId from "./utils/getDominantAccountId"; +import type { GetDominantAccountIdInput } from "./utils/getDominantAccountId"; class SFObjectToUpdateNotFoundError extends RetryableError { constructor(message: string) { @@ -78,6 +82,8 @@ export default class SalesforceCRMService implements CRM { private appOptions: z.infer; private doNotCreateEvent = false; private fallbackToContact = false; + private accessToken: string; + private instanceUrl: string; constructor(credential: CredentialPayload, appOptions: z.infer, testMode = false) { this.integrationName = "salesforce_other_calendar"; @@ -86,6 +92,9 @@ export default class SalesforceCRMService implements CRM { } this.log = logger.getSubLogger({ prefix: [`[[lib] ${this.integrationName}`] }); this.appOptions = appOptions; + const credentialKey = credential.key as unknown as ExtendedTokenResponse; + this.accessToken = credentialKey.access_token; + this.instanceUrl = credentialKey.instance_url; } public getAppOptions() { @@ -394,6 +403,7 @@ export default class SalesforceCRMService implements CRM { forRoundRobinSkip?: boolean; }) { const log = logger.getSubLogger({ prefix: [`[getContacts]:${emails}`] }); + try { const conn = await this.conn; const emailArray = Array.isArray(emails) ? emails : [emails]; @@ -416,6 +426,20 @@ export default class SalesforceCRMService implements CRM { }) ); + if (recordToSearch === SalesforceRecordEnum.ACCOUNT && forRoundRobinSkip) { + try { + const client = new SalesforceGraphQLClient({ + accessToken: this.accessToken, + instanceUrl: this.instanceUrl, + }); + + return await client.GetAccountRecordsForRRSkip(emailArray[0]); + } catch (error) { + log.error("Error getting account records for round robin skip", safeStringify({ error })); + return []; + } + } + // Handle Account record type if (recordToSearch === SalesforceRecordEnum.ACCOUNT) { // For an account let's assume that the first email is the one we should be querying against @@ -494,15 +518,6 @@ export default class SalesforceCRMService implements CRM { records = results.records as ContactRecord[]; } - if (recordToSearch === SalesforceRecordEnum.ACCOUNT && forRoundRobinSkip && !results.records.length) { - const attendeeEmail = emailArray[0]; - // If we can't find the exact contact, then we need to search for an account where the contacts share the same email domain - const account = await this.getAccountBasedOnEmailDomainOfContacts(attendeeEmail); - if (account) { - records = [account]; - } - } - if (!records.length) { log.info("No records found"); return []; @@ -772,33 +787,8 @@ export default class SalesforceCRMService implements CRM { return this.doNotCreateEvent; } - private getDominantAccountId(contacts: { AccountId: string }[]) { - const log = logger.getSubLogger({ prefix: [`[getDominantAccountId]:${contacts}`] }); - // To get the dominant AccountId we only need to iterate through half the array - const iterateLength = Math.ceil(contacts.length / 2); - // Store AccountId frequencies - const accountIdCounts: { [accountId: string]: number } = {}; - - for (const contact of contacts) { - const accountId = contact.AccountId; - accountIdCounts[accountId] = (accountIdCounts[accountId] || 0) + 1; - // If the number of AccountIds makes up 50% of the array length then return early - if (accountIdCounts[accountId] > iterateLength) return accountId; - } - - // Else figure out which AccountId occurs the most - let dominantAccountId; - let highestCount = 0; - - for (const accountId in accountIdCounts) { - if (accountIdCounts[accountId] > highestCount) { - highestCount = accountIdCounts[accountId]; - dominantAccountId = accountId; - } - } - - log.info("Dominant AccountId", safeStringify({ dominantAccountId })); - return dominantAccountId; + private getDominantAccountId(contacts: GetDominantAccountIdInput) { + return getDominantAccountId(contacts); } private async createAttendeeRecord({ @@ -946,14 +936,8 @@ export default class SalesforceCRMService implements CRM { } public getAllPossibleAccountWebsiteFromEmailDomain(emailDomain: string) { - const websites = [ - emailDomain, - `www.${emailDomain}`, - `http://www.${emailDomain}`, - `http://${emailDomain}`, - `https://www.${emailDomain}`, - `https://${emailDomain}`, - ]; + const websites = getAllPossibleWebsiteValuesFromEmailDomain(emailDomain); + // Format for SOQL query return websites.map((website) => `'${website}'`).join(", "); } @@ -993,72 +977,6 @@ export default class SalesforceCRMService implements CRM { return accountId; } - public async getAccountBasedOnEmailDomainOfContacts(email: string) { - const conn = await this.conn; - const emailDomain = email.split("@")[1]; - const log = logger.getSubLogger({ prefix: [`[getAccountBasedOnEmailDomainOfContacts]:${email}`] }); - log.info("Querying first account matching email domain", safeStringify({ emailDomain })); - // First check if an account has the same website as the email domain of the attendee - const accountQuery = await conn.query( - `SELECT Id, OwnerId, Owner.Email, Website FROM Account WHERE Website IN (${this.getAllPossibleAccountWebsiteFromEmailDomain( - emailDomain - )}) LIMIT 1` - ); - - if (accountQuery.records.length > 0) { - const account = accountQuery.records[0] as { - Id?: string; - OwnerId?: string; - Owner?: { Email?: string }; - Website?: string; - }; - - log.info( - "Found account matching email domain", - safeStringify({ - emailDomain, - accountWebsite: account.Website, - accountOwnerEmail: account.Owner?.Email, - accountOwnerId: account.OwnerId, - accountId: account.Id, - }) - ); - - return { - ...account, - Email: undefined, - }; - } - - // Fallback to querying which account the majority of contacts are under - const contactQuery = await conn.query( - `SELECT Id, Email, AccountId, Account.OwnerId, Account.Owner.Email FROM Contact WHERE Email LIKE '%@${emailDomain}' AND AccountId != null` - ); - - const contacts = contactQuery?.records as { - AccountId: string; - Account: { OwnerId?: string; Owner: { Email: string } }; - }[]; - if (!contacts) return; - - const dominantAccountId = this.getDominantAccountId(contacts); - - const contactUnderAccount = contacts.find((contact) => contact.AccountId === dominantAccountId); - log.info("Using dominant account's owner", safeStringify({ dominantAccountId })); - - return { - Id: dominantAccountId, - Email: undefined, - OwnerId: contactUnderAccount?.Account?.OwnerId, - Owner: { - Email: contactUnderAccount?.Account?.Owner?.Email, - }, - attributes: { - type: SalesforceRecordEnum.ACCOUNT, - }, - }; - } - private setFallbackToContact(boolean: boolean) { this.fallbackToContact = boolean; } @@ -1149,9 +1067,9 @@ export default class SalesforceCRMService implements CRM { }): Promise> { const log = logger.getSubLogger({ prefix: [`[buildRecordUpdatePayload] ${recordId}`] }); const writeOnRecordBody: Record = {}; + let fieldTypeHandled = false; for (const field of existingFields) { - let fieldTypeHandled = false; const fieldConfig = fieldsToWriteTo[field.name]; if (!fieldConfig) { diff --git a/packages/app-store/salesforce/lib/__tests__/CrmService.integration.test.ts b/packages/app-store/salesforce/lib/__tests__/CrmService.integration.test.ts index f34ee32819..bddb48b226 100644 --- a/packages/app-store/salesforce/lib/__tests__/CrmService.integration.test.ts +++ b/packages/app-store/salesforce/lib/__tests__/CrmService.integration.test.ts @@ -13,8 +13,23 @@ import { describe, it, expect, vi, beforeEach } from "vitest"; import SalesforceCRMService from "../CrmService"; import { SalesforceRecordEnum } from "../enums"; +import { + mockValueOfAccountOwnershipQueryMatchingContact, + mockValueOfAccountOwnershipQueryMatchingAccountWebsite, + mockValueOfAccountOwnershipQueryMatchingRelatedContacts, +} from "../graphql/__tests__/urqlMock"; import { createSalesforceMock } from "./salesforceMock"; +const mockUrqlQuery = vi.fn(); + +vi.mock("@urql/core", () => ({ + Client: class { + query = mockUrqlQuery; + }, + cacheExchange: vi.fn(), + fetchExchange: vi.fn(), +})); + vi.mock("@calcom/lib/constants", () => { return { WEBAPP_URL: "https://app.cal.com", @@ -116,28 +131,10 @@ describe("SalesforceCRMService", () => { describe("getContacts: forRoundRobinSkip=true", () => { const forRoundRobinSkip = true; it("(Lookup-1) should return contact's account owner's email as ownerEmail if the contact is found directly by email", async () => { + mockUrqlQuery.mockResolvedValue(mockValueOfAccountOwnershipQueryMatchingContact()); const crmService = new SalesforceCRMService(credential, appOptions); - const contactAccountOwnerEmail = "contact-account-owner@acme.com"; - const contactOwnerEmail = "contact-owner@acme.com"; - const lookingForEmail = "test@example.com"; - - const account = salesforceMock.addAccount({ - Id: "test-account-id", - Owner: { - Email: contactAccountOwnerEmail, - }, - Website: "https://anything", - }); - - salesforceMock.addContact({ - Email: lookingForEmail, - FirstName: "Test", - LastName: "User", - AccountId: account.Id, - Owner: { - Email: contactOwnerEmail, - }, - }); + const contactAccountOwnerEmail = "owner@test.com"; + const lookingForEmail = "contact@email.com"; const contacts = await crmService.getContacts({ emails: lookingForEmail, @@ -148,21 +145,15 @@ describe("SalesforceCRMService", () => { expect(contacts[0].ownerEmail).toBe(contactAccountOwnerEmail); expect(contacts[0].email).toBe(lookingForEmail); expect(contacts[0].recordType).toBe(SalesforceRecordEnum.ACCOUNT); - expect(contacts[0].id).toBe(account.Id); + expect(contacts[0].id).toBe("accountId"); }); it("(Lookup-2) should fallback to account(and use the account owner email as ownerEmail) matched by emailDomain if the contact is not found(i.e Lookup-1 fails)", async () => { + mockUrqlQuery.mockResolvedValue(mockValueOfAccountOwnershipQueryMatchingAccountWebsite()); const crmService = new SalesforceCRMService(credential, appOptions); - const contactAccountOwnerEmail = "contact-account-owner@example.com"; + const contactAccountOwnerEmail = "owner@test.com"; const emailDomain = "example.com"; const lookingForEmail = `test@${emailDomain}`; - const account = salesforceMock.addAccount({ - Id: "test-account-id", - Owner: { - Email: contactAccountOwnerEmail, - }, - Website: `https://${emailDomain}`, - }); const contacts = await crmService.getContacts({ emails: lookingForEmail, @@ -179,47 +170,11 @@ describe("SalesforceCRMService", () => { }); it("(Lookup-3) should fallback to account having most number of contacts matched by emailDomain when Lookup-1 and Lookup-2 fails", async () => { + mockUrqlQuery.mockResolvedValue(mockValueOfAccountOwnershipQueryMatchingRelatedContacts()); const crmService = new SalesforceCRMService(credential, appOptions); - const account1OwnerEmail = "account1-owner@example.com"; - const account2OwnerEmail = "account2-owner@example.com"; + const accountOwnerEmail = "owner1@test.com"; const emailDomain = "example.com"; const lookingForEmail = `test@${emailDomain}`; - const account1 = salesforceMock.addAccount({ - Id: "test-account-id1", - Owner: { - Email: account1OwnerEmail, - }, - Website: `https://anything`, - }); - - const dominatingAccount = salesforceMock.addAccount({ - Id: "test-account-id2", - Owner: { - Email: account2OwnerEmail, - }, - Website: `https://anything`, - }); - - salesforceMock.addContact({ - Email: `some-other-contact_acc2_1@${emailDomain}`, - FirstName: "Test", - LastName: "User", - AccountId: dominatingAccount.Id, - }); - - salesforceMock.addContact({ - Email: `some-other-contact_acc2_2@${emailDomain}`, - FirstName: "Test", - LastName: "User", - AccountId: dominatingAccount.Id, - }); - - salesforceMock.addContact({ - Email: `some-other-contact_acc1_1@${emailDomain}`, - FirstName: "Test", - LastName: "User", - AccountId: account1.Id, - }); const contacts = await crmService.getContacts({ emails: lookingForEmail, @@ -227,7 +182,7 @@ describe("SalesforceCRMService", () => { }); expect(contacts).toHaveLength(1); - expect(contacts[0].ownerEmail).toBe(account2OwnerEmail); + expect(contacts[0].ownerEmail).toBe(accountOwnerEmail); // Account doesn't have email expect(contacts[0].email).toBe(""); expect(contacts[0].recordType).toBe(SalesforceRecordEnum.ACCOUNT); diff --git a/packages/app-store/salesforce/lib/graphql/SalesforceGraphQLClient.ts b/packages/app-store/salesforce/lib/graphql/SalesforceGraphQLClient.ts new file mode 100644 index 0000000000..b10995c057 --- /dev/null +++ b/packages/app-store/salesforce/lib/graphql/SalesforceGraphQLClient.ts @@ -0,0 +1,183 @@ +import { Client, cacheExchange, fetchExchange } from "@urql/core"; + +import logger from "@calcom/lib/logger"; +import { safeStringify } from "@calcom/lib/safeStringify"; +import type { Contact } from "@calcom/types/CrmService"; + +import { SalesforceRecordEnum } from "../enums"; +import getAllPossibleWebsiteValuesFromEmailDomain from "../utils/getAllPossibleWebsiteValuesFromEmailDomain"; +import getDominantAccountId from "../utils/getDominantAccountId"; +import { GetAccountRecordsForRRSkip } from "./documents/queries"; + +export class SalesforceGraphQLClient { + private log: typeof logger; + private version = "v63.0"; + private accessToken: string; + private client: Client; + + constructor({ accessToken, instanceUrl }: { accessToken: string; instanceUrl: string }) { + this.accessToken = accessToken; + this.client = new Client({ + url: `${instanceUrl}/services/data/${this.version}/graphql`, + exchanges: [cacheExchange, fetchExchange], + fetchOptions: () => { + return { + headers: { authorization: `Bearer ${this.accessToken}` }, + "Content-Type": "application/json", + }; + }, + }); + this.log = logger.getSubLogger({ prefix: ["[SalesforceGraphQLClient]"] }); + } + + /** + * Returns the owner of an account. There are three methods we use to the find the account owner + * 1. If there is a contact with that matches the email, return the account owner + * 2. If no contact is found, then find an account that is an exact match of the email domain + * 3. If no account is found, then find contacts that match the email domain and find the account that the majority of contacts are connect to + */ + async GetAccountRecordsForRRSkip(email: string): Promise { + const log = logger.getSubLogger({ prefix: ["[getAccountRecordsForRRSkip]:${email}"] }); + const emailDomain = email.split("@")[1]; + const websites = this.getAllPossibleAccountWebsiteFromEmailDomain(emailDomain); + + log.info(`Query against email and email domain of ${emailDomain}`); + + const query = await this.client.query(GetAccountRecordsForRRSkip, { + email, + websites, + emailDomain: `%@${emailDomain}`, + }); + + const queryData = query?.data; + + if (query?.error) { + const errors = query.error; + if (errors.graphQLErrors.length) { + log.error("GraphQL error", safeStringify({ errors })); + } + if (errors.networkError) { + log.error("Network error", safeStringify({ errors })); + } + } + + if (!queryData) { + log.error("No query data found", safeStringify({ error: query?.error })); + return []; + } + + // If there is an existing contact, return the owner of the account + if (queryData.uiapi.query.Contact) { + const contact = queryData.uiapi.query.Contact?.edges?.[0]?.node; + + if (contact) { + log.info(`Existing contact found with id ${contact.Id}`); + return [ + { + id: contact.AccountId?.value || contact.Id, + email: contact.Email?.value, + ownerId: contact.Account?.Owner?.Id, + ownerEmail: contact.Account?.Owner?.Email?.value, + recordType: SalesforceRecordEnum.ACCOUNT, + }, + ]; + } + } + + // If no contact is found, query for accounts based on website field + if (queryData.uiapi.query.Account) { + const account = queryData.uiapi.query.Account?.edges?.[0]?.node; + if (account) { + log.info( + `Existing account with website that matches email domain of ${emailDomain} found with id ${account.Id}` + ); + return [ + { + id: account.Id, + email: "", + ownerId: account.Owner?.Id, + ownerEmail: account.Owner?.Email?.value, + recordType: SalesforceRecordEnum.ACCOUNT, + }, + ]; + } + } + + // If no account is found, find an account based on existing contacts + if (queryData.uiapi.query.relatedContacts) { + const relatedContactsResults = queryData.uiapi.query.relatedContacts?.edges; + + if (!relatedContactsResults) return []; + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore - in CD/CI pipeline this will have any type + const relatedContacts = relatedContactsResults.reduce((contacts, edge) => { + const node = edge?.node; + if (!node) { + log.error("A related contact query didn't include a node"); + return contacts; + } + if (!node.AccountId?.value) { + log.error(`A related contact with id ${node.Id} didn't have an account id`); + return contacts; + } + if (!node.Account?.Owner?.Id) { + log.error(`A related contact with id ${node.Id} didn't have an account owner id`); + return contacts; + } + if (!node.Account?.Owner?.Email?.value) { + log.error(`A related contact with id ${node.Id} didn't have an account owner email`); + return contacts; + } + + contacts.push({ + id: node.Id, + AccountId: node.AccountId.value, + ownerId: node.Account.Owner.Id, + ownerEmail: node.Account.Owner.Email.value, + }); + + return contacts; + }, [] as { id: string; AccountId: string; ownerId: string; ownerEmail: string }[]); + + const dominantAccountId = getDominantAccountId(relatedContacts); + + if (!dominantAccountId) { + log.error( + "Could not find dominant account id with the following contacts", + safeStringify({ relatedContacts }) + ); + return []; + } + + // Get a contact from the dominant account + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore - in CD/CI pipeline this will have any type + const contactUnderAccount = relatedContacts.find((contact) => contact.AccountId === dominantAccountId); + if (!contactUnderAccount) { + log.error( + `Could not find a contact under the dominant account id ${dominantAccountId}`, + safeStringify({ relatedContacts }) + ); + return []; + } + + log.info(`Account found via related contacts with account id ${dominantAccountId}`); + return [ + { + id: dominantAccountId, + email: "", + ownerId: contactUnderAccount.ownerId, + ownerEmail: contactUnderAccount.ownerEmail, + recordType: SalesforceRecordEnum.ACCOUNT, + }, + ]; + } + + log.info("No account found for attendee"); + return []; + } + + private getAllPossibleAccountWebsiteFromEmailDomain(emailDomain: string) { + return getAllPossibleWebsiteValuesFromEmailDomain(emailDomain); + } +} diff --git a/packages/app-store/salesforce/lib/graphql/__tests__/SalesforceGraphQLClient.test.ts b/packages/app-store/salesforce/lib/graphql/__tests__/SalesforceGraphQLClient.test.ts new file mode 100644 index 0000000000..3969146a9c --- /dev/null +++ b/packages/app-store/salesforce/lib/graphql/__tests__/SalesforceGraphQLClient.test.ts @@ -0,0 +1,79 @@ +import { describe, it, vi, expect, beforeEach } from "vitest"; + +import { SalesforceRecordEnum } from "../../enums"; +import { SalesforceGraphQLClient } from "../SalesforceGraphQLClient"; +import { + mockValueOfAccountOwnershipQueryMatchingContact, + mockValueOfAccountOwnershipQueryMatchingAccountWebsite, + mockValueOfAccountOwnershipQueryMatchingRelatedContacts, +} from "./urqlMock"; + +const mockUrqlQuery = vi.fn(); + +vi.mock("@urql/core", () => ({ + Client: class { + query = mockUrqlQuery; + }, + cacheExchange: vi.fn(), + fetchExchange: vi.fn(), +})); + +describe("SalesforceGraphQLClient", () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it("should return the account owner if a contact exists", async () => { + mockUrqlQuery.mockResolvedValue(mockValueOfAccountOwnershipQueryMatchingContact()); + + const client = new SalesforceGraphQLClient({ accessToken: "", instanceUrl: "" }); + + const owner = await client.GetAccountRecordsForRRSkip("test@example.com"); + + expect(owner).toEqual([ + { + id: "accountId", + email: "contact@email.com", + ownerId: "ownerId", + ownerEmail: "owner@test.com", + recordType: SalesforceRecordEnum.ACCOUNT, + }, + ]); + }); + + it("should return the account owner if email domain matches account website", async () => { + mockUrqlQuery.mockResolvedValue(mockValueOfAccountOwnershipQueryMatchingAccountWebsite()); + + const client = new SalesforceGraphQLClient({ accessToken: "", instanceUrl: "" }); + + const owner = await client.GetAccountRecordsForRRSkip("test@example.com"); + + expect(owner).toEqual([ + { + id: "accountId", + email: "", + ownerId: "ownerId", + ownerEmail: "owner@test.com", + recordType: SalesforceRecordEnum.ACCOUNT, + }, + ]); + }); + + it("should return the account owner based on related contacts", async () => { + mockUrqlQuery.mockResolvedValue(mockValueOfAccountOwnershipQueryMatchingRelatedContacts()); + + const client = new SalesforceGraphQLClient({ accessToken: "", instanceUrl: "" }); + + const owner = await client.GetAccountRecordsForRRSkip("test@example.com"); + + expect(owner).toEqual([ + { + id: "accountId1", + email: "", + ownerId: "owner1", + ownerEmail: "owner1@test.com", + recordType: SalesforceRecordEnum.ACCOUNT, + }, + ]); + }); +}); diff --git a/packages/app-store/salesforce/lib/graphql/__tests__/urqlMock.ts b/packages/app-store/salesforce/lib/graphql/__tests__/urqlMock.ts new file mode 100644 index 0000000000..3d64e84659 --- /dev/null +++ b/packages/app-store/salesforce/lib/graphql/__tests__/urqlMock.ts @@ -0,0 +1,173 @@ +export const generateMockResponse = (children: any) => { + return { + data: { + uiapi: { + query: { + ...children, + }, + }, + }, + }; +}; + +export const mockValueOfAccountOwnershipQueryMatchingContact = () => { + return generateMockResponse({ + Contact: { + edges: [ + { + node: { + Id: "contactId", + Email: { + value: "contact@email.com", + }, + AccountId: { + value: "accountId", + }, + Account: { + Owner: { + Id: "ownerId", + Email: { + value: "owner@test.com", + }, + }, + }, + }, + }, + ], + }, + // This shouldn't be hit + Account: { + edges: [ + { + node: { + Id: "accountId", + Owner: { + Id: "ownerId", + Email: { + value: "owner@test.com", + }, + }, + }, + }, + ], + }, + }); +}; + +export const mockValueOfAccountOwnershipQueryMatchingAccountWebsite = () => { + return generateMockResponse({ + Contact: { + edges: [], + }, + Account: { + edges: [ + { + node: { + Id: "accountId", + Owner: { + Id: "ownerId", + Email: { + value: "owner@test.com", + }, + }, + }, + }, + ], + }, + }); +}; + +export const mockValueOfAccountOwnershipQueryMatchingRelatedContacts = () => { + return generateMockResponse({ + Contact: { + edges: [], + }, + Account: { + edges: [], + }, + relatedContacts: { + edges: [ + { + node: { + Id: "contact1", + AccountId: { + value: "accountId1", + }, + Account: { + Owner: { + Id: "owner1", + Email: { + value: "owner1@test.com", + }, + }, + }, + }, + }, + { + node: { + Id: "contact2", + AccountId: { + value: "accountId2", + }, + Account: { + Owner: { + Id: "owner2", + Email: { + value: "owner2@test.com", + }, + }, + }, + }, + }, + { + node: { + Id: "contact3", + AccountId: { + value: "accountId2", + }, + Account: { + Owner: { + Id: "owner2", + Email: { + value: "owner2@test.com", + }, + }, + }, + }, + }, + { + node: { + Id: "contact4", + AccountId: { + value: "accountId1", + }, + Account: { + Owner: { + Id: "owner1", + Email: { + value: "owner1@test.com", + }, + }, + }, + }, + }, + { + node: { + Id: "contact5", + AccountId: { + value: "accountId1", + }, + Account: { + Owner: { + Id: "owner1", + Email: { + value: "owner1@test.com", + }, + }, + }, + }, + }, + ], + }, + }); +}; diff --git a/packages/app-store/salesforce/lib/graphql/documents/queries.ts b/packages/app-store/salesforce/lib/graphql/documents/queries.ts new file mode 100644 index 0000000000..8ee911f7dc --- /dev/null +++ b/packages/app-store/salesforce/lib/graphql/documents/queries.ts @@ -0,0 +1,79 @@ +import { graphql } from "../../../src/gql/gql"; + +export const GetAccountRecordsForRRSkip = graphql(` + query GetAccountRecordsForRRSkip($email: Email!, $websites: [Url!]!, $emailDomain: Email!) { + uiapi { + query { + Contact(where: { Email: { eq: $email } }) { + edges { + node { + Id + Email { + value + } + OwnerId { + value + } + AccountId { + value + } + Account { + Website { + value + } + Owner { + Id + Email { + value + } + } + } + } + } + } + Account(where: { Website: { in: $websites } }) { + edges { + node { + Id + Website { + value + } + Owner { + Id + Email { + value + } + } + } + } + } + relatedContacts: Contact( + where: { + and: [{ Email: { like: $emailDomain } }, { Email: { ne: $email } }, { AccountId: { ne: null } }] + } + ) { + edges { + node { + Id + Email { + value + } + AccountId { + value + } + Account { + Id + Owner { + Id + Email { + value + } + } + } + } + } + } + } + } + } +`); diff --git a/packages/app-store/salesforce/lib/utils/__tests__/getAllPossibleWebsiteValuesFromEmailDomain.test.ts b/packages/app-store/salesforce/lib/utils/__tests__/getAllPossibleWebsiteValuesFromEmailDomain.test.ts new file mode 100644 index 0000000000..63eb9193fe --- /dev/null +++ b/packages/app-store/salesforce/lib/utils/__tests__/getAllPossibleWebsiteValuesFromEmailDomain.test.ts @@ -0,0 +1,20 @@ +import { describe, expect, it } from "vitest"; + +import getAllPossibleWebsiteValuesFromEmailDomain from "../getAllPossibleWebsiteValuesFromEmailDomain"; + +describe("getAllPossibleWebsiteValuesFromEmailDomain", () => { + it("should return all possible website values from email domain", () => { + const emailDomain = "example.com"; + + const websiteValues = getAllPossibleWebsiteValuesFromEmailDomain(emailDomain); + + expect(websiteValues).toEqual([ + emailDomain, + `www.${emailDomain}`, + `http://www.${emailDomain}`, + `http://${emailDomain}`, + `https://www.${emailDomain}`, + `https://${emailDomain}`, + ]); + }); +}); diff --git a/packages/app-store/salesforce/lib/utils/__tests__/getDominantAccountId.test.ts b/packages/app-store/salesforce/lib/utils/__tests__/getDominantAccountId.test.ts new file mode 100644 index 0000000000..edf7710678 --- /dev/null +++ b/packages/app-store/salesforce/lib/utils/__tests__/getDominantAccountId.test.ts @@ -0,0 +1,18 @@ +import { describe, expect, it } from "vitest"; + +import getDominantAccountId from "../getDominantAccountId"; + +describe("getDominantAccountId", () => { + it("should return the dominant account ID", () => { + const accounts = [ + { AccountId: "acc001" }, + { AccountId: "acc003" }, + { AccountId: "acc002" }, + { AccountId: "acc003" }, + ]; + + const dominantAccountId = getDominantAccountId(accounts); + + expect(dominantAccountId).toEqual("acc003"); + }); +}); diff --git a/packages/app-store/salesforce/lib/utils/getAllPossibleWebsiteValuesFromEmailDomain.ts b/packages/app-store/salesforce/lib/utils/getAllPossibleWebsiteValuesFromEmailDomain.ts new file mode 100644 index 0000000000..aa1bed749d --- /dev/null +++ b/packages/app-store/salesforce/lib/utils/getAllPossibleWebsiteValuesFromEmailDomain.ts @@ -0,0 +1,10 @@ +export default function getAllPossibleWebsiteValuesFromEmailDomain(emailDomain: string) { + return [ + emailDomain, + `www.${emailDomain}`, + `http://www.${emailDomain}`, + `http://${emailDomain}`, + `https://www.${emailDomain}`, + `https://${emailDomain}`, + ]; +} diff --git a/packages/app-store/salesforce/lib/utils/getDominantAccountId.ts b/packages/app-store/salesforce/lib/utils/getDominantAccountId.ts new file mode 100644 index 0000000000..df9d5d0314 --- /dev/null +++ b/packages/app-store/salesforce/lib/utils/getDominantAccountId.ts @@ -0,0 +1,35 @@ +import logger from "@calcom/lib/logger"; +import { safeStringify } from "@calcom/lib/safeStringify"; + +export type GetDominantAccountIdInput = { + AccountId: string; +}[]; + +export default function getDominantAccountId(contacts: GetDominantAccountIdInput) { + const log = logger.getSubLogger({ prefix: [`[getDominantAccountId]:${contacts}`] }); + // To get the dominant AccountId we only need to iterate through half the array + const iterateLength = Math.ceil(contacts.length / 2); + // Store AccountId frequencies + const accountIdCounts: { [accountId: string]: number } = {}; + + for (const contact of contacts) { + const accountId = contact.AccountId; + accountIdCounts[accountId] = (accountIdCounts[accountId] || 0) + 1; + // If the number of AccountIds makes up 50% of the array length then return early + if (accountIdCounts[accountId] > iterateLength) return accountId; + } + + // Else figure out which AccountId occurs the most + let dominantAccountId; + let highestCount = 0; + + for (const accountId in accountIdCounts) { + if (accountIdCounts[accountId] > highestCount) { + highestCount = accountIdCounts[accountId]; + dominantAccountId = accountId; + } + } + + log.info("Dominant AccountId", safeStringify({ dominantAccountId })); + return dominantAccountId; +} diff --git a/packages/app-store/salesforce/package.json b/packages/app-store/salesforce/package.json index 9735b5ee37..0385c6da9a 100644 --- a/packages/app-store/salesforce/package.json +++ b/packages/app-store/salesforce/package.json @@ -4,13 +4,23 @@ "version": "0.0.0", "main": "./index.ts", "description": "Salesforce (Sales Cloud) is a cloud-based application designed to help your salespeople sell smarter and faster by centralizing customer information, logging their interactions with your company, and automating many of the tasks salespeople do every day.", + "scripts": { + "generate:schema": "graphql-introspection-json-to-sdl ./schema.json > ./schema.graphql", + "codegen": "graphql-codegen --config codegen.ts", + "codegen:watch": "graphql-codegen --config codegen.ts --watch" + }, "dependencies": { "@calcom/lib": "*", "@calcom/prisma": "*", "@jetstreamapp/soql-parser-js": "^6.1.0", - "@jsforce/jsforce-node": "^3.6.3" + "@jsforce/jsforce-node": "^3.6.3", + "@urql/core": "^5.1.1" }, "devDependencies": { - "@calcom/types": "*" + "@calcom/types": "*", + "@graphql-codegen/cli": "^5.0.5", + "@parcel/watcher": "^2.5.1", + "graphql-config": "^5.1.3", + "graphql-introspection-json-to-sdl": "^1.0.3" } } diff --git a/packages/app-store/salesforce/src/gql/gql.ts b/packages/app-store/salesforce/src/gql/gql.ts new file mode 100644 index 0000000000..c237332afd --- /dev/null +++ b/packages/app-store/salesforce/src/gql/gql.ts @@ -0,0 +1,56 @@ +/* eslint-disable */ +// import * as types from './graphql'; +import { TypedDocumentNode as DocumentNode } from "@graphql-typed-document-node/core"; + +import * as types from "./types"; + +/** + * Map of all GraphQL operations in the project. + * + * This map has several performance disadvantages: + * 1. It is not tree-shakeable, so it will include all operations in the project. + * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle. + * 3. It does not support dead code elimination, so it will add unused operations. + * + * Therefore it is highly recommended to use the babel or swc plugin for production. + * Learn more about it here: https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#reducing-bundle-size + */ +type Documents = { + "\n query GetAccountRecordsForRRSkip($email: Email!, $websites: [Url!]!, $emailDomain: Email!) {\n uiapi {\n query {\n Contact(where: { Email: { eq: $email } }) {\n edges {\n node {\n Id\n Email {\n value\n }\n OwnerId {\n value\n }\n AccountId {\n value\n }\n Account {\n Website {\n value\n }\n Owner {\n Id\n Email {\n value\n }\n }\n }\n }\n }\n }\n Account(where: { Website: { in: $websites } }) {\n edges {\n node {\n Id\n Website {\n value\n }\n Owner {\n Id\n Email {\n value\n }\n }\n }\n }\n }\n relatedContacts: Contact(\n where: {\n and: [{ Email: { like: $emailDomain } }, { Email: { ne: $email } }, { AccountId: { ne: null } }]\n }\n ) {\n edges {\n node {\n Id\n Email {\n value\n }\n AccountId {\n value\n }\n Account {\n Id\n Owner {\n Id\n Email {\n value\n }\n }\n }\n }\n }\n }\n }\n }\n }\n": typeof types.GetAccountRecordsForRrSkipDocument; +}; +const documents: Documents = { + "\n query GetAccountRecordsForRRSkip($email: Email!, $websites: [Url!]!, $emailDomain: Email!) {\n uiapi {\n query {\n Contact(where: { Email: { eq: $email } }) {\n edges {\n node {\n Id\n Email {\n value\n }\n OwnerId {\n value\n }\n AccountId {\n value\n }\n Account {\n Website {\n value\n }\n Owner {\n Id\n Email {\n value\n }\n }\n }\n }\n }\n }\n Account(where: { Website: { in: $websites } }) {\n edges {\n node {\n Id\n Website {\n value\n }\n Owner {\n Id\n Email {\n value\n }\n }\n }\n }\n }\n relatedContacts: Contact(\n where: {\n and: [{ Email: { like: $emailDomain } }, { Email: { ne: $email } }, { AccountId: { ne: null } }]\n }\n ) {\n edges {\n node {\n Id\n Email {\n value\n }\n AccountId {\n value\n }\n Account {\n Id\n Owner {\n Id\n Email {\n value\n }\n }\n }\n }\n }\n }\n }\n }\n }\n": + types.GetAccountRecordsForRrSkipDocument, +}; + +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + * + * + * @example + * ```ts + * const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`); + * ``` + * + * The query argument is unknown! + * Please regenerate the types. + */ +export function graphql(source: string): unknown; + +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: "\n query GetAccountRecordsForRRSkip($email: Email!, $websites: [Url!]!, $emailDomain: Email!) {\n uiapi {\n query {\n Contact(where: { Email: { eq: $email } }) {\n edges {\n node {\n Id\n Email {\n value\n }\n OwnerId {\n value\n }\n AccountId {\n value\n }\n Account {\n Website {\n value\n }\n Owner {\n Id\n Email {\n value\n }\n }\n }\n }\n }\n }\n Account(where: { Website: { in: $websites } }) {\n edges {\n node {\n Id\n Website {\n value\n }\n Owner {\n Id\n Email {\n value\n }\n }\n }\n }\n }\n relatedContacts: Contact(\n where: {\n and: [{ Email: { like: $emailDomain } }, { Email: { ne: $email } }, { AccountId: { ne: null } }]\n }\n ) {\n edges {\n node {\n Id\n Email {\n value\n }\n AccountId {\n value\n }\n Account {\n Id\n Owner {\n Id\n Email {\n value\n }\n }\n }\n }\n }\n }\n }\n }\n }\n" +): (typeof documents)["\n query GetAccountRecordsForRRSkip($email: Email!, $websites: [Url!]!, $emailDomain: Email!) {\n uiapi {\n query {\n Contact(where: { Email: { eq: $email } }) {\n edges {\n node {\n Id\n Email {\n value\n }\n OwnerId {\n value\n }\n AccountId {\n value\n }\n Account {\n Website {\n value\n }\n Owner {\n Id\n Email {\n value\n }\n }\n }\n }\n }\n }\n Account(where: { Website: { in: $websites } }) {\n edges {\n node {\n Id\n Website {\n value\n }\n Owner {\n Id\n Email {\n value\n }\n }\n }\n }\n }\n relatedContacts: Contact(\n where: {\n and: [{ Email: { like: $emailDomain } }, { Email: { ne: $email } }, { AccountId: { ne: null } }]\n }\n ) {\n edges {\n node {\n Id\n Email {\n value\n }\n AccountId {\n value\n }\n Account {\n Id\n Owner {\n Id\n Email {\n value\n }\n }\n }\n }\n }\n }\n }\n }\n }\n"]; + +export function graphql(source: string) { + return (documents as any)[source] ?? {}; +} + +export type DocumentType> = TDocumentNode extends DocumentNode< + infer TType, + any +> + ? TType + : never; diff --git a/packages/app-store/salesforce/src/gql/types.ts b/packages/app-store/salesforce/src/gql/types.ts new file mode 100644 index 0000000000..8dc9042411 --- /dev/null +++ b/packages/app-store/salesforce/src/gql/types.ts @@ -0,0 +1,542 @@ +import type { TypedDocumentNode as DocumentNode } from "@graphql-typed-document-node/core"; + +export type Exact = { [K in keyof T]: T[K] }; +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 }; + Base64: { input: any; output: any }; + Currency: { input: any; output: any }; + Date: { input: any; output: any }; + DateTime: { input: any; output: any }; + Double: { input: any; output: any }; + Email: { input: any; output: any }; + EncryptedString: { input: any; output: any }; + /** Can be set to an ID or a Reference to the result of another mutation operation. */ + IdOrRef: { input: any; output: any }; + JSON: { input: any; output: any }; + Latitude: { input: any; output: any }; + /** Long type */ + Long: { input: any; output: any }; + LongTextArea: { input: any; output: any }; + Longitude: { input: any; output: any }; + MultiPicklist: { input: any; output: any }; + Percent: { input: any; output: any }; + PhoneNumber: { input: any; output: any }; + Picklist: { input: any; output: any }; + RichTextArea: { input: any; output: any }; + TextArea: { input: any; output: any }; + Time: { input: any; output: any }; + Url: { input: any; output: any }; +}; + +export type GetAccountRecordsForRrSkipQueryVariables = Exact<{ + email: Scalars["Email"]["input"]; + websites: Array | Scalars["Url"]["input"]; + emailDomain: Scalars["Email"]["input"]; +}>; +export type GetAccountRecordsForRrSkipQuery = { + __typename?: "Query"; + uiapi: { + __typename?: "UIAPI"; + query: { + __typename?: "RecordQuery"; + Contact?: { + __typename?: "ContactConnection"; + edges?: Array<{ + __typename?: "ContactEdge"; + node?: { + __typename?: "Contact"; + Id: string; + Email?: { __typename?: "EmailValue"; value?: any | null } | null; + OwnerId?: { __typename?: "IDValue"; value?: string | null } | null; + AccountId?: { __typename?: "IDValue"; value?: string | null } | null; + Account?: { + __typename?: "Account"; + Website?: { __typename?: "UrlValue"; value?: any | null } | null; + Owner?: { + __typename?: "User"; + Id: string; + Email?: { __typename?: "EmailValue"; value?: any | null } | null; + } | null; + } | null; + } | null; + } | null> | null; + } | null; + Account?: { + __typename?: "AccountConnection"; + edges?: Array<{ + __typename?: "AccountEdge"; + node?: { + __typename?: "Account"; + Id: string; + Website?: { __typename?: "UrlValue"; value?: any | null } | null; + Owner?: { + __typename?: "User"; + Id: string; + Email?: { __typename?: "EmailValue"; value?: any | null } | null; + } | null; + } | null; + } | null> | null; + } | null; + relatedContacts?: { + __typename?: "ContactConnection"; + edges?: Array<{ + __typename?: "ContactEdge"; + node?: { + __typename?: "Contact"; + Id: string; + Email?: { __typename?: "EmailValue"; value?: any | null } | null; + AccountId?: { __typename?: "IDValue"; value?: string | null } | null; + Account?: { + __typename?: "Account"; + Id: string; + Owner?: { + __typename?: "User"; + Id: string; + Email?: { __typename?: "EmailValue"; value?: any | null } | null; + } | null; + } | null; + } | null; + } | null> | null; + } | null; + }; + }; +}; +export const GetAccountRecordsForRrSkipDocument = { + kind: "Document", + definitions: [ + { + kind: "OperationDefinition", + operation: "query", + name: { kind: "Name", value: "GetAccountRecordsForRRSkip" }, + variableDefinitions: [ + { + kind: "VariableDefinition", + variable: { kind: "Variable", name: { kind: "Name", value: "email" } }, + type: { kind: "NonNullType", type: { kind: "NamedType", name: { kind: "Name", value: "Email" } } }, + }, + { + kind: "VariableDefinition", + variable: { kind: "Variable", name: { kind: "Name", value: "websites" } }, + type: { + kind: "NonNullType", + type: { + kind: "ListType", + type: { + kind: "NonNullType", + type: { kind: "NamedType", name: { kind: "Name", value: "Url" } }, + }, + }, + }, + }, + { + kind: "VariableDefinition", + variable: { kind: "Variable", name: { kind: "Name", value: "emailDomain" } }, + type: { kind: "NonNullType", type: { kind: "NamedType", name: { kind: "Name", value: "Email" } } }, + }, + ], + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "uiapi" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "query" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "Contact" }, + arguments: [ + { + kind: "Argument", + name: { kind: "Name", value: "where" }, + value: { + kind: "ObjectValue", + fields: [ + { + kind: "ObjectField", + name: { kind: "Name", value: "Email" }, + value: { + kind: "ObjectValue", + fields: [ + { + kind: "ObjectField", + name: { kind: "Name", value: "eq" }, + value: { kind: "Variable", name: { kind: "Name", value: "email" } }, + }, + ], + }, + }, + ], + }, + }, + ], + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "edges" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "node" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "Id" } }, + { + kind: "Field", + name: { kind: "Name", value: "Email" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "value" } }, + ], + }, + }, + { + kind: "Field", + name: { kind: "Name", value: "OwnerId" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "value" } }, + ], + }, + }, + { + kind: "Field", + name: { kind: "Name", value: "AccountId" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "value" } }, + ], + }, + }, + { + kind: "Field", + name: { kind: "Name", value: "Account" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "Website" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "value" } }, + ], + }, + }, + { + kind: "Field", + name: { kind: "Name", value: "Owner" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "Id" } }, + { + kind: "Field", + name: { kind: "Name", value: "Email" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "value" }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + { + kind: "Field", + name: { kind: "Name", value: "Account" }, + arguments: [ + { + kind: "Argument", + name: { kind: "Name", value: "where" }, + value: { + kind: "ObjectValue", + fields: [ + { + kind: "ObjectField", + name: { kind: "Name", value: "Website" }, + value: { + kind: "ObjectValue", + fields: [ + { + kind: "ObjectField", + name: { kind: "Name", value: "in" }, + value: { + kind: "Variable", + name: { kind: "Name", value: "websites" }, + }, + }, + ], + }, + }, + ], + }, + }, + ], + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "edges" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "node" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "Id" } }, + { + kind: "Field", + name: { kind: "Name", value: "Website" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "value" } }, + ], + }, + }, + { + kind: "Field", + name: { kind: "Name", value: "Owner" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "Id" } }, + { + kind: "Field", + name: { kind: "Name", value: "Email" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "value" } }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + { + kind: "Field", + alias: { kind: "Name", value: "relatedContacts" }, + name: { kind: "Name", value: "Contact" }, + arguments: [ + { + kind: "Argument", + name: { kind: "Name", value: "where" }, + value: { + kind: "ObjectValue", + fields: [ + { + kind: "ObjectField", + name: { kind: "Name", value: "and" }, + value: { + kind: "ListValue", + values: [ + { + kind: "ObjectValue", + fields: [ + { + kind: "ObjectField", + name: { kind: "Name", value: "Email" }, + value: { + kind: "ObjectValue", + fields: [ + { + kind: "ObjectField", + name: { kind: "Name", value: "like" }, + value: { + kind: "Variable", + name: { kind: "Name", value: "emailDomain" }, + }, + }, + ], + }, + }, + ], + }, + { + kind: "ObjectValue", + fields: [ + { + kind: "ObjectField", + name: { kind: "Name", value: "Email" }, + value: { + kind: "ObjectValue", + fields: [ + { + kind: "ObjectField", + name: { kind: "Name", value: "ne" }, + value: { + kind: "Variable", + name: { kind: "Name", value: "email" }, + }, + }, + ], + }, + }, + ], + }, + { + kind: "ObjectValue", + fields: [ + { + kind: "ObjectField", + name: { kind: "Name", value: "AccountId" }, + value: { + kind: "ObjectValue", + fields: [ + { + kind: "ObjectField", + name: { kind: "Name", value: "ne" }, + value: { kind: "NullValue" }, + }, + ], + }, + }, + ], + }, + ], + }, + }, + ], + }, + }, + ], + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "edges" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "node" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "Id" } }, + { + kind: "Field", + name: { kind: "Name", value: "Email" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "value" } }, + ], + }, + }, + { + kind: "Field", + name: { kind: "Name", value: "AccountId" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "value" } }, + ], + }, + }, + { + kind: "Field", + name: { kind: "Name", value: "Account" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "Id" } }, + { + kind: "Field", + name: { kind: "Name", value: "Owner" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "Id" } }, + { + kind: "Field", + name: { kind: "Name", value: "Email" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "value" }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; diff --git a/yarn.lock b/yarn.lock index 26bd7595de..eaad830528 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,18 @@ __metadata: version: 6 cacheKey: 8 +"@0no-co/graphql.web@npm:^1.0.5": + version: 1.1.2 + resolution: "@0no-co/graphql.web@npm:1.1.2" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + graphql: + optional: true + checksum: ddf4f073c9f03c41a5672b9285ad5573f34ad6d40ed73691c128d5332ff6186222ff909949cf6ef07bad8b417bbb5b609636e049700d3727a196111019a7aab4 + languageName: node + linkType: hard + "@adobe/css-tools@npm:^4.0.1": version: 4.2.0 resolution: "@adobe/css-tools@npm:4.2.0" @@ -126,6 +138,28 @@ __metadata: languageName: node linkType: hard +"@ardatan/relay-compiler@npm:^12.0.3": + version: 12.0.3 + resolution: "@ardatan/relay-compiler@npm:12.0.3" + dependencies: + "@babel/generator": ^7.26.10 + "@babel/parser": ^7.26.10 + "@babel/runtime": ^7.26.10 + chalk: ^4.0.0 + fb-watchman: ^2.0.0 + immutable: ~3.7.6 + invariant: ^2.2.4 + nullthrows: ^1.1.1 + relay-runtime: 12.0.0 + signedsource: ^1.0.0 + peerDependencies: + graphql: "*" + bin: + relay-compiler: bin/relay-compiler + checksum: 28fbf8f3cd877866f463fe384ca5ca72929434e28dc7cacb3ee9febc3560ae0990737815d969aaf0678fec4ffc06294092b2c2908c887b3ea693549b75a148e1 + languageName: node + linkType: hard + "@asamuzakjp/css-color@npm:^3.1.1": version: 3.1.1 resolution: "@asamuzakjp/css-color@npm:3.1.1" @@ -1031,6 +1065,17 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.26.2": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" + dependencies: + "@babel/helper-validator-identifier": ^7.25.9 + js-tokens: ^4.0.0 + picocolors: ^1.0.0 + checksum: db13f5c42d54b76c1480916485e6900748bbcb0014a8aca87f50a091f70ff4e0d0a6db63cade75eb41fcc3d2b6ba0a7f89e343def4f96f00269b41b8ab8dd7b8 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.22.9": version: 7.22.9 resolution: "@babel/compat-data@npm:7.22.9" @@ -1052,6 +1097,13 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.26.8": + version: 7.26.8 + resolution: "@babel/compat-data@npm:7.26.8" + checksum: 1bb04c6860c8c9555b933cb9c3caf5ef1dac331a37a351efb67956fc679f695d487aea76e792dd43823702c1300f7906f2a298e50b4a8d7ec199ada9c340c365 + languageName: node + linkType: hard + "@babel/core@npm:^7.11.6": version: 7.23.5 resolution: "@babel/core@npm:7.23.5" @@ -1144,6 +1196,29 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:^7.26.10": + version: 7.26.10 + resolution: "@babel/core@npm:7.26.10" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.26.2 + "@babel/generator": ^7.26.10 + "@babel/helper-compilation-targets": ^7.26.5 + "@babel/helper-module-transforms": ^7.26.0 + "@babel/helpers": ^7.26.10 + "@babel/parser": ^7.26.10 + "@babel/template": ^7.26.9 + "@babel/traverse": ^7.26.10 + "@babel/types": ^7.26.10 + convert-source-map: ^2.0.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: 0217325bd46fb9c828331c14dbe3f015ee13d9aecec423ef5acc0ce8b51a3d2a2d55f2ede252b99d0ab9b2f1a06e2881694a890f92006aeac9ebe5be2914c089 + languageName: node + linkType: hard + "@babel/generator@npm:7.17.7": version: 7.17.7 resolution: "@babel/generator@npm:7.17.7" @@ -1167,6 +1242,19 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.18.13, @babel/generator@npm:^7.26.10, @babel/generator@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/generator@npm:7.27.0" + dependencies: + "@babel/parser": ^7.27.0 + "@babel/types": ^7.27.0 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + jsesc: ^3.0.2 + checksum: cdb6e3e8441241321192275f7a1265b6d610b44d57ae3bbb6047cb142849fd2ace1e15d5ee0685337e152f5d8760babd3ab898b6e5065e4b344006d2f0da759f + languageName: node + linkType: hard + "@babel/generator@npm:^7.23.5": version: 7.23.5 resolution: "@babel/generator@npm:7.23.5" @@ -1264,6 +1352,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.26.5": + version: 7.27.0 + resolution: "@babel/helper-compilation-targets@npm:7.27.0" + dependencies: + "@babel/compat-data": ^7.26.8 + "@babel/helper-validator-option": ^7.25.9 + browserslist: ^4.24.0 + lru-cache: ^5.1.1 + semver: ^6.3.1 + checksum: ad8b2351cde8d2e5c417f02f0d88af61ba080439e74f6d6ac578af5d63f8e35d0f36619cf18620ab627e9360c5c4b8a23784eecbef32d97944acb4ad2a57223f + languageName: node + linkType: hard + "@babel/helper-environment-visitor@npm:^7.16.7, @babel/helper-environment-visitor@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-environment-visitor@npm:7.22.5" @@ -1363,6 +1464,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-imports@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-module-imports@npm:7.25.9" + dependencies: + "@babel/traverse": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: 1b411ce4ca825422ef7065dffae7d8acef52023e51ad096351e3e2c05837e9bf9fca2af9ca7f28dc26d596a588863d0fedd40711a88e350b736c619a80e704e6 + languageName: node + linkType: hard + "@babel/helper-module-transforms@npm:^7.22.9": version: 7.22.9 resolution: "@babel/helper-module-transforms@npm:7.22.9" @@ -1408,6 +1519,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helper-module-transforms@npm:7.26.0" + dependencies: + "@babel/helper-module-imports": ^7.25.9 + "@babel/helper-validator-identifier": ^7.25.9 + "@babel/traverse": ^7.25.9 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 942eee3adf2b387443c247a2c190c17c4fd45ba92a23087abab4c804f40541790d51ad5277e4b5b1ed8d5ba5b62de73857446b7742f835c18ebd350384e63917 + languageName: node + linkType: hard + "@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.22.5 resolution: "@babel/helper-plugin-utils@npm:7.22.5" @@ -1415,6 +1539,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.25.9": + version: 7.26.5 + resolution: "@babel/helper-plugin-utils@npm:7.26.5" + checksum: 4771fbb1711c624c62d12deabc2ed7435a6e6994b6ce09d5ede1bc1bf19be59c3775461a1e693bdd596af865685e87bb2abc778f62ceadc1b2095a8e2aa74180 + languageName: node + linkType: hard + "@babel/helper-simple-access@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-simple-access@npm:7.22.5" @@ -1473,6 +1604,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-string-parser@npm:7.25.9" + checksum: 6435ee0849e101681c1849868278b5aee82686ba2c1e27280e5e8aca6233af6810d39f8e4e693d2f2a44a3728a6ccfd66f72d71826a94105b86b731697cdfa99 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.16.7, @babel/helper-validator-identifier@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-validator-identifier@npm:7.22.5" @@ -1494,6 +1632,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-identifier@npm:7.25.9" + checksum: 5b85918cb1a92a7f3f508ea02699e8d2422fe17ea8e82acd445006c0ef7520fbf48e3dbcdaf7b0a1d571fc3a2715a29719e5226636cb6042e15fe6ed2a590944 + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.22.15": version: 7.22.15 resolution: "@babel/helper-validator-option@npm:7.22.15" @@ -1522,6 +1667,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-option@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-option@npm:7.25.9" + checksum: 9491b2755948ebbdd68f87da907283698e663b5af2d2b1b02a2765761974b1120d5d8d49e9175b167f16f72748ffceec8c9cf62acfbee73f4904507b246e2b3d + languageName: node + linkType: hard + "@babel/helpers@npm:^7.22.11": version: 7.22.11 resolution: "@babel/helpers@npm:7.22.11" @@ -1565,6 +1717,16 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.26.10": + version: 7.27.0 + resolution: "@babel/helpers@npm:7.27.0" + dependencies: + "@babel/template": ^7.27.0 + "@babel/types": ^7.27.0 + checksum: d11bb8ada0c5c298d2dbd478d69b16a79216b812010e78855143e321807df4e34f60ab65e56332e72315ccfe52a22057f0cf1dcc06e518dcfa3e3141bb8576cd + languageName: node + linkType: hard + "@babel/highlight@npm:^7.22.13": version: 7.22.13 resolution: "@babel/highlight@npm:7.22.13" @@ -1644,6 +1806,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.26.10, @babel/parser@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/parser@npm:7.27.0" + dependencies: + "@babel/types": ^7.27.0 + bin: + parser: ./bin/babel-parser.js + checksum: 062a4e6d51553603253990c84e051ed48671a55b9d4e9caf2eff9dc888465070a0cfd288a467dbf0d99507781ea4a835b5606e32ddc0319f1b9273f913676829 + languageName: node + linkType: hard + "@babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" @@ -1677,6 +1850,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-import-assertions@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.26.0" + dependencies: + "@babel/helper-plugin-utils": ^7.25.9 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b58f2306df4a690ca90b763d832ec05202c50af787158ff8b50cdf3354359710bce2e1eb2b5135fcabf284756ac8eadf09ca74764aa7e76d12a5cac5f6b21e67 + languageName: node + linkType: hard + "@babel/plugin-syntax-import-meta@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" @@ -1889,6 +2073,15 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.26.10": + version: 7.27.0 + resolution: "@babel/runtime@npm:7.27.0" + dependencies: + regenerator-runtime: ^0.14.0 + checksum: 3e73d9e65f76fad8f99802b5364c941f4a60c693b3eca66147bb0bfa54cf0fbe017232155e16e3fd83c0a049b51b8d7239efbd73626534abe8b54a6dd57dcb1b + languageName: node + linkType: hard + "@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.22.11 resolution: "@babel/runtime@npm:7.22.11" @@ -1916,6 +2109,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.26.9, @babel/template@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/template@npm:7.27.0" + dependencies: + "@babel/code-frame": ^7.26.2 + "@babel/parser": ^7.27.0 + "@babel/types": ^7.27.0 + checksum: 46d6db4c204a092f11ad6c3bfb6ec3dc1422e32121186d68ab1b3e633313aa5b7e21f26ca801dbd7da21f256225305a76454429fc500e52dabadb30af35df961 + languageName: node + linkType: hard + "@babel/template@npm:^7.22.15": version: 7.22.15 resolution: "@babel/template@npm:7.22.15" @@ -2050,6 +2254,21 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.10": + version: 7.27.0 + resolution: "@babel/traverse@npm:7.27.0" + dependencies: + "@babel/code-frame": ^7.26.2 + "@babel/generator": ^7.27.0 + "@babel/parser": ^7.27.0 + "@babel/template": ^7.27.0 + "@babel/types": ^7.27.0 + debug: ^4.3.1 + globals: ^11.1.0 + checksum: 922d22aa91200e1880cfa782802100aa5b236fab89a44b9c40cfea94163246efd010626f7dc2b9d7769851c1fa2d8e8f8a1e0168ff4a7094e9b737c32760baa1 + languageName: node + linkType: hard + "@babel/types@npm:7.17.0": version: 7.17.0 resolution: "@babel/types@npm:7.17.0" @@ -2082,6 +2301,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.18.13, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.10, @babel/types@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/types@npm:7.27.0" + dependencies: + "@babel/helper-string-parser": ^7.25.9 + "@babel/helper-validator-identifier": ^7.25.9 + checksum: 59582019eb8a693d4277015d4dec0233874d884b9019dcd09550332db7f0f2ac9e30eca685bb0ada4bab5a4dc8bbc2a6bcaadb151c69b7e6aa94b5eaf8fc8c51 + languageName: node + linkType: hard + "@babel/types@npm:^7.20.7, @babel/types@npm:^7.23.5": version: 7.23.5 resolution: "@babel/types@npm:7.23.5" @@ -3473,8 +3702,13 @@ __metadata: "@calcom/lib": "*" "@calcom/prisma": "*" "@calcom/types": "*" + "@graphql-codegen/cli": ^5.0.5 "@jetstreamapp/soql-parser-js": ^6.1.0 "@jsforce/jsforce-node": ^3.6.3 + "@parcel/watcher": ^2.5.1 + "@urql/core": ^5.1.1 + graphql-config: ^5.1.3 + graphql-introspection-json-to-sdl: ^1.0.3 languageName: unknown linkType: soft @@ -4609,6 +4843,38 @@ __metadata: languageName: node linkType: hard +"@envelop/core@npm:^5.2.3": + version: 5.2.3 + resolution: "@envelop/core@npm:5.2.3" + dependencies: + "@envelop/instrumentation": ^1.0.0 + "@envelop/types": ^5.2.1 + "@whatwg-node/promise-helpers": ^1.2.4 + tslib: ^2.5.0 + checksum: b63c0ed8f95316e49c14f4f17bc6e14c3fb62dc65013b40cf8fbbad354734eda8b585f50a78dc5677731ef0c3184b2b5f9d69a007d62756797230fed6d3a6578 + languageName: node + linkType: hard + +"@envelop/instrumentation@npm:^1.0.0": + version: 1.0.0 + resolution: "@envelop/instrumentation@npm:1.0.0" + dependencies: + "@whatwg-node/promise-helpers": ^1.2.1 + tslib: ^2.5.0 + checksum: a6ec4705f54e1bc430d38722deb8449113ec043e276c6c0ab333524ab1101009660785d9e7648724770820867919a867d00d7ba25197a03f229ce1b6f2a537e3 + languageName: node + linkType: hard + +"@envelop/types@npm:^5.2.1": + version: 5.2.1 + resolution: "@envelop/types@npm:5.2.1" + dependencies: + "@whatwg-node/promise-helpers": ^1.0.0 + tslib: ^2.5.0 + checksum: 0e13a72dc3b2f44baefeac6241df4de6da2cb0a9e61f97a6a55ce3fbae2e98453e4a5465fd1c29310c853f4aaa907a4da7a8348d4a833f7538796cf9ab16535d + languageName: node + linkType: hard + "@esbuild/aix-ppc64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/aix-ppc64@npm:0.20.2" @@ -5763,6 +6029,622 @@ __metadata: languageName: node linkType: hard +"@graphql-codegen/add@npm:^5.0.3": + version: 5.0.3 + resolution: "@graphql-codegen/add@npm:5.0.3" + dependencies: + "@graphql-codegen/plugin-helpers": ^5.0.3 + tslib: ~2.6.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 5196b6c64907f03dc1adc0ac4f98ed5fe69abe0eb87027a55dfc14b178cc1fee2bc47f68c8f5a68ce7aa4bc5a4f970f983d1d85b6d7a20489e50657baccd2ad0 + languageName: node + linkType: hard + +"@graphql-codegen/cli@npm:^5.0.5": + version: 5.0.5 + resolution: "@graphql-codegen/cli@npm:5.0.5" + dependencies: + "@babel/generator": ^7.18.13 + "@babel/template": ^7.18.10 + "@babel/types": ^7.18.13 + "@graphql-codegen/client-preset": ^4.6.0 + "@graphql-codegen/core": ^4.0.2 + "@graphql-codegen/plugin-helpers": ^5.0.3 + "@graphql-tools/apollo-engine-loader": ^8.0.0 + "@graphql-tools/code-file-loader": ^8.0.0 + "@graphql-tools/git-loader": ^8.0.0 + "@graphql-tools/github-loader": ^8.0.0 + "@graphql-tools/graphql-file-loader": ^8.0.0 + "@graphql-tools/json-file-loader": ^8.0.0 + "@graphql-tools/load": ^8.0.0 + "@graphql-tools/prisma-loader": ^8.0.0 + "@graphql-tools/url-loader": ^8.0.0 + "@graphql-tools/utils": ^10.0.0 + "@whatwg-node/fetch": ^0.10.0 + chalk: ^4.1.0 + cosmiconfig: ^8.1.3 + debounce: ^1.2.0 + detect-indent: ^6.0.0 + graphql-config: ^5.1.1 + inquirer: ^8.0.0 + is-glob: ^4.0.1 + jiti: ^1.17.1 + json-to-pretty-yaml: ^1.2.2 + listr2: ^4.0.5 + log-symbols: ^4.0.0 + micromatch: ^4.0.5 + shell-quote: ^1.7.3 + string-env-interpolation: ^1.0.1 + ts-log: ^2.2.3 + tslib: ^2.4.0 + yaml: ^2.3.1 + yargs: ^17.0.0 + peerDependencies: + "@parcel/watcher": ^2.1.0 + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + "@parcel/watcher": + optional: true + bin: + gql-gen: cjs/bin.js + graphql-code-generator: cjs/bin.js + graphql-codegen: cjs/bin.js + graphql-codegen-esm: esm/bin.js + checksum: f3ff651b52878da37ff131605600391ff09ff5614b2c17dace14d4c36c16de0e9331b3acbae3631ff97f038483a224f3ba9f4c1631e27d02e9dc01f26960926b + languageName: node + linkType: hard + +"@graphql-codegen/client-preset@npm:^4.6.0": + version: 4.8.0 + resolution: "@graphql-codegen/client-preset@npm:4.8.0" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/template": ^7.20.7 + "@graphql-codegen/add": ^5.0.3 + "@graphql-codegen/gql-tag-operations": 4.0.17 + "@graphql-codegen/plugin-helpers": ^5.1.0 + "@graphql-codegen/typed-document-node": ^5.1.1 + "@graphql-codegen/typescript": ^4.1.6 + "@graphql-codegen/typescript-operations": ^4.6.0 + "@graphql-codegen/visitor-plugin-common": ^5.8.0 + "@graphql-tools/documents": ^1.0.0 + "@graphql-tools/utils": ^10.0.0 + "@graphql-typed-document-node/core": 3.2.0 + tslib: ~2.6.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-sock: ^1.0.0 + checksum: a4ddaf4f9b3501a1c0016090f3621f0cab8e004903cefb2b0c6e8cd40abc947bb5e601db5a42d63d8dbdeb090d5bba0be03e553cadd6a8d8cf7c43bb3b3d2a6b + languageName: node + linkType: hard + +"@graphql-codegen/core@npm:^4.0.2": + version: 4.0.2 + resolution: "@graphql-codegen/core@npm:4.0.2" + dependencies: + "@graphql-codegen/plugin-helpers": ^5.0.3 + "@graphql-tools/schema": ^10.0.0 + "@graphql-tools/utils": ^10.0.0 + tslib: ~2.6.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 5fda4e843174aacd4a481b73b4d259fa2df7ffe4200bd06e95ecd4b3f43aa5969deeaeb51f6cf15a542e99ee5756c3e02a29d9d2ff9891af40e234a8f68ead4d + languageName: node + linkType: hard + +"@graphql-codegen/gql-tag-operations@npm:4.0.17": + version: 4.0.17 + resolution: "@graphql-codegen/gql-tag-operations@npm:4.0.17" + dependencies: + "@graphql-codegen/plugin-helpers": ^5.1.0 + "@graphql-codegen/visitor-plugin-common": 5.8.0 + "@graphql-tools/utils": ^10.0.0 + auto-bind: ~4.0.0 + tslib: ~2.6.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 43054dab1f79ab4280bd0fbfc34d3dbb629c45bc4568d21ed05eb576f395a50c987c3b41d1b37f38dac648fcc1b9e3da372596b5d2f98cb3f0e84856d9293f38 + languageName: node + linkType: hard + +"@graphql-codegen/plugin-helpers@npm:^5.0.3, @graphql-codegen/plugin-helpers@npm:^5.1.0": + version: 5.1.0 + resolution: "@graphql-codegen/plugin-helpers@npm:5.1.0" + dependencies: + "@graphql-tools/utils": ^10.0.0 + change-case-all: 1.0.15 + common-tags: 1.8.2 + import-from: 4.0.0 + lodash: ~4.17.0 + tslib: ~2.6.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 235762e2e7a55898e71fb1d52ef3093c26787c16e7eb5a3df6e06a7b2003da641b9a9c96833091e9fb11f9cf72da9e7c5f19ce124074d5d7d33a419117d050a9 + languageName: node + linkType: hard + +"@graphql-codegen/schema-ast@npm:^4.0.2": + version: 4.1.0 + resolution: "@graphql-codegen/schema-ast@npm:4.1.0" + dependencies: + "@graphql-codegen/plugin-helpers": ^5.0.3 + "@graphql-tools/utils": ^10.0.0 + tslib: ~2.6.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: cddec7723d708990ac8e33eb8935e72545b60ed7b772452ba45b60e577af950d23503de83f0919d1730f7d52dcb970900d3587d9a54202032164ba3c246d4c10 + languageName: node + linkType: hard + +"@graphql-codegen/typed-document-node@npm:^5.1.1": + version: 5.1.1 + resolution: "@graphql-codegen/typed-document-node@npm:5.1.1" + dependencies: + "@graphql-codegen/plugin-helpers": ^5.1.0 + "@graphql-codegen/visitor-plugin-common": 5.8.0 + auto-bind: ~4.0.0 + change-case-all: 1.0.15 + tslib: ~2.6.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 8f81c374e4d24938f80e153e90be8e2555baf28021dc33443ac1a58084e4745e4b31f448f471f69517e4fe9d9aedb41a893d6d3c7dba0127b53bf006e3db7339 + languageName: node + linkType: hard + +"@graphql-codegen/typescript-operations@npm:^4.6.0": + version: 4.6.0 + resolution: "@graphql-codegen/typescript-operations@npm:4.6.0" + dependencies: + "@graphql-codegen/plugin-helpers": ^5.1.0 + "@graphql-codegen/typescript": ^4.1.6 + "@graphql-codegen/visitor-plugin-common": 5.8.0 + auto-bind: ~4.0.0 + tslib: ~2.6.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-sock: ^1.0.0 + checksum: 42f6e068b34e3d0d19005615460a0ec29afef00d093eabb02931274c5804ffb2a0a97c67893eca1d9c6ef67aa52c8536e0091c008b4234613030d84099e2592c + languageName: node + linkType: hard + +"@graphql-codegen/typescript@npm:^4.1.6": + version: 4.1.6 + resolution: "@graphql-codegen/typescript@npm:4.1.6" + dependencies: + "@graphql-codegen/plugin-helpers": ^5.1.0 + "@graphql-codegen/schema-ast": ^4.0.2 + "@graphql-codegen/visitor-plugin-common": 5.8.0 + auto-bind: ~4.0.0 + tslib: ~2.6.0 + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 459fc3fc834801b797cd718d45f3ee910431cf192e3439be155433a4dd845559d39ef4e9df4338e0965300d5cf294e0c335b01ba00dea94667a454600d52ae01 + languageName: node + linkType: hard + +"@graphql-codegen/visitor-plugin-common@npm:5.8.0, @graphql-codegen/visitor-plugin-common@npm:^5.8.0": + version: 5.8.0 + resolution: "@graphql-codegen/visitor-plugin-common@npm:5.8.0" + dependencies: + "@graphql-codegen/plugin-helpers": ^5.1.0 + "@graphql-tools/optimize": ^2.0.0 + "@graphql-tools/relay-operation-optimizer": ^7.0.0 + "@graphql-tools/utils": ^10.0.0 + auto-bind: ~4.0.0 + change-case-all: 1.0.15 + dependency-graph: ^0.11.0 + graphql-tag: ^2.11.0 + parse-filepath: ^1.0.2 + tslib: ~2.6.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: e9594790d51fd8c2ee6c6ff7593a5be73fe9b9e4c667bcb54652a09ee8ebfcfae9a6da32c34e88ab57265bc55a6be43ff2c472be1c72ca2000d6bbd1c5111b4f + languageName: node + linkType: hard + +"@graphql-hive/signal@npm:^1.0.0": + version: 1.0.0 + resolution: "@graphql-hive/signal@npm:1.0.0" + checksum: 622b071c128028d7aa770fd6544d10668750a78a2d5bc9ae310a9e8a713196347a0a2687fd6b75a7dc0581a45100e7da7e7c0c6827438a833114c277321526c2 + languageName: node + linkType: hard + +"@graphql-tools/apollo-engine-loader@npm:^8.0.0": + version: 8.0.20 + resolution: "@graphql-tools/apollo-engine-loader@npm:8.0.20" + dependencies: + "@graphql-tools/utils": ^10.8.6 + "@whatwg-node/fetch": ^0.10.0 + sync-fetch: 0.6.0-2 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 4ad725fff316d7a2ed5d0fbab555fcbcb0e7fc640f3c03a426e6b8e4fcee1aa94f1697be2225e8b7ca033cd1a789663355eec7917a174b6bf5600dddbed826cf + languageName: node + linkType: hard + +"@graphql-tools/batch-execute@npm:^9.0.15": + version: 9.0.15 + resolution: "@graphql-tools/batch-execute@npm:9.0.15" + dependencies: + "@graphql-tools/utils": ^10.8.1 + "@whatwg-node/promise-helpers": ^1.3.0 + dataloader: ^2.2.3 + tslib: ^2.8.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 711e56f07ce8c96fe1eb6ce0a6826a90f278dbf5729a540161fd24e9b79ad32d2aad09c4b97954f78215ecf44340f03fbc5647d159c10e0369c11d42f84c1a94 + languageName: node + linkType: hard + +"@graphql-tools/code-file-loader@npm:^8.0.0": + version: 8.1.20 + resolution: "@graphql-tools/code-file-loader@npm:8.1.20" + dependencies: + "@graphql-tools/graphql-tag-pluck": 8.3.19 + "@graphql-tools/utils": ^10.8.6 + globby: ^11.0.3 + tslib: ^2.4.0 + unixify: ^1.0.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: f18bcec913051a6fe38000b537e2d8d6942c9d1febf8819922dc8b18efe1e9378a03e1b9e9b228005455f489f570447494e175e0ec8a8ec82888caad7dac8957 + languageName: node + linkType: hard + +"@graphql-tools/delegate@npm:^10.2.17": + version: 10.2.17 + resolution: "@graphql-tools/delegate@npm:10.2.17" + dependencies: + "@graphql-tools/batch-execute": ^9.0.15 + "@graphql-tools/executor": ^1.4.7 + "@graphql-tools/schema": ^10.0.11 + "@graphql-tools/utils": ^10.8.1 + "@repeaterjs/repeater": ^3.0.6 + "@whatwg-node/promise-helpers": ^1.3.0 + dataloader: ^2.2.3 + dset: ^3.1.2 + tslib: ^2.8.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: e8896aa5fc127431d5700302d0ffd6d5cf970d796850ea546fc657812e35297ef7995bc043677640a13cc0971720fd6821ddbdd294d2ae23bcd7011c001ce80b + languageName: node + linkType: hard + +"@graphql-tools/documents@npm:^1.0.0": + version: 1.0.1 + resolution: "@graphql-tools/documents@npm:1.0.1" + dependencies: + lodash.sortby: ^4.7.0 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: c6ff859d2673dbf884f19d6319735afacc6bff2df6f8ea3dbf56839d01568f61210f256f0905156f123428cc24962ada26b37903263699fc8cd7efb8849a6508 + languageName: node + linkType: hard + +"@graphql-tools/executor-common@npm:^0.0.4": + version: 0.0.4 + resolution: "@graphql-tools/executor-common@npm:0.0.4" + dependencies: + "@envelop/core": ^5.2.3 + "@graphql-tools/utils": ^10.8.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 203f61e292e72a6e511aa2a9202696a367bf8dfb4410859090f7cca6c2f441ff2842115de9e47ae9aeee9abce2202da1e7d29e49303a969de9f4c17e5930c55f + languageName: node + linkType: hard + +"@graphql-tools/executor-graphql-ws@npm:^2.0.1": + version: 2.0.5 + resolution: "@graphql-tools/executor-graphql-ws@npm:2.0.5" + dependencies: + "@graphql-tools/executor-common": ^0.0.4 + "@graphql-tools/utils": ^10.8.1 + "@whatwg-node/disposablestack": ^0.0.6 + graphql-ws: ^6.0.3 + isomorphic-ws: ^5.0.0 + tslib: ^2.8.1 + ws: ^8.17.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: eb7ac967c4ed49d7149e4f2e85b5275bab433a2eef9ca310d9a9b3d356ad47270b9919a2ec003150d6a3eedafbb30bf2bf5182533fb7047aa1c689f83cc0f4d3 + languageName: node + linkType: hard + +"@graphql-tools/executor-http@npm:^1.1.9": + version: 1.3.3 + resolution: "@graphql-tools/executor-http@npm:1.3.3" + dependencies: + "@graphql-hive/signal": ^1.0.0 + "@graphql-tools/executor-common": ^0.0.4 + "@graphql-tools/utils": ^10.8.1 + "@repeaterjs/repeater": ^3.0.4 + "@whatwg-node/disposablestack": ^0.0.6 + "@whatwg-node/fetch": ^0.10.4 + "@whatwg-node/promise-helpers": ^1.3.0 + meros: ^1.2.1 + tslib: ^2.8.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 880752910f93b70d4f56cea56a66d19d0b22df757d3bc380f44c0619eb3e7bff11ab43b80bc30f82dbdd1ef56a12b625b6cf4f7d1a195a4a92d47f4ab557fd51 + languageName: node + linkType: hard + +"@graphql-tools/executor-legacy-ws@npm:^1.1.17": + version: 1.1.17 + resolution: "@graphql-tools/executor-legacy-ws@npm:1.1.17" + dependencies: + "@graphql-tools/utils": ^10.8.6 + "@types/ws": ^8.0.0 + isomorphic-ws: ^5.0.0 + tslib: ^2.4.0 + ws: ^8.17.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: dd20288fccee5f4f3ddfa0876894bfb2feb4d95663b7ce38a39050fe11d137dc895f32f792a7bec3c4afa1450ddacb13f51269fcef7569881bcdf39286ae1e36 + languageName: node + linkType: hard + +"@graphql-tools/executor@npm:^1.4.7": + version: 1.4.7 + resolution: "@graphql-tools/executor@npm:1.4.7" + dependencies: + "@graphql-tools/utils": ^10.8.6 + "@graphql-typed-document-node/core": ^3.2.0 + "@repeaterjs/repeater": ^3.0.4 + "@whatwg-node/disposablestack": ^0.0.6 + "@whatwg-node/promise-helpers": ^1.0.0 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: e7d4923851a31ae8f81e76edf4396837d8b5518272fdc42ffb58d8eadf31f3a470e3d133daf23779c1265301f27f0b367ce619a415371286566372f114af3e69 + languageName: node + linkType: hard + +"@graphql-tools/git-loader@npm:^8.0.0": + version: 8.0.24 + resolution: "@graphql-tools/git-loader@npm:8.0.24" + dependencies: + "@graphql-tools/graphql-tag-pluck": 8.3.19 + "@graphql-tools/utils": ^10.8.6 + is-glob: 4.0.3 + micromatch: ^4.0.8 + tslib: ^2.4.0 + unixify: ^1.0.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: d43987ee53d6c29e909075ad84ff03395e126f2af9c5aa68d1757ec77f38b75511e876eb2d171c4f4064b044e32d831113d1f60cf38b80167b7d67d17e64952e + languageName: node + linkType: hard + +"@graphql-tools/github-loader@npm:^8.0.0": + version: 8.0.20 + resolution: "@graphql-tools/github-loader@npm:8.0.20" + dependencies: + "@graphql-tools/executor-http": ^1.1.9 + "@graphql-tools/graphql-tag-pluck": ^8.3.19 + "@graphql-tools/utils": ^10.8.6 + "@whatwg-node/fetch": ^0.10.0 + "@whatwg-node/promise-helpers": ^1.0.0 + sync-fetch: 0.6.0-2 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: dd0018a85772449efd6d34bb771d63341a158b02619785b464e95f2144569d17b4b798c35a31b40fbca2429a36e97a01521dc986f97f534fe2dcd8617188da19 + languageName: node + linkType: hard + +"@graphql-tools/graphql-file-loader@npm:^8.0.0": + version: 8.0.19 + resolution: "@graphql-tools/graphql-file-loader@npm:8.0.19" + dependencies: + "@graphql-tools/import": 7.0.18 + "@graphql-tools/utils": ^10.8.6 + globby: ^11.0.3 + tslib: ^2.4.0 + unixify: ^1.0.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: feed9b68ac38246ac4f3d4e9019cbc5981d2c0d21bda3b6a38ea7a4fdf6c5b58f5ea3c9689ae1700e18516b47a49810471800702cf579ff9f2f5f7a0f09442f5 + languageName: node + linkType: hard + +"@graphql-tools/graphql-tag-pluck@npm:8.3.19, @graphql-tools/graphql-tag-pluck@npm:^8.3.19": + version: 8.3.19 + resolution: "@graphql-tools/graphql-tag-pluck@npm:8.3.19" + dependencies: + "@babel/core": ^7.26.10 + "@babel/parser": ^7.26.10 + "@babel/plugin-syntax-import-assertions": ^7.26.0 + "@babel/traverse": ^7.26.10 + "@babel/types": ^7.26.10 + "@graphql-tools/utils": ^10.8.6 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: f19fa4bb88c60f9eba9a9810e7c9db2bb5c8e5cecdba134b40d9862aeafe5a58691d5207849b0c02df09433860a6851fb5d13946992a3bc8a100b8d4f3c4d1e2 + languageName: node + linkType: hard + +"@graphql-tools/import@npm:7.0.18": + version: 7.0.18 + resolution: "@graphql-tools/import@npm:7.0.18" + dependencies: + "@graphql-tools/utils": ^10.8.6 + resolve-from: 5.0.0 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 76e86a975e080102afd60b5246a90e27545e5a416d4f5ffbbe43c7a009501ecc8bdd253d4d9ac49163dae529115c3720ff94a86854b85874ccc76acbb7c53cd5 + languageName: node + linkType: hard + +"@graphql-tools/json-file-loader@npm:^8.0.0": + version: 8.0.18 + resolution: "@graphql-tools/json-file-loader@npm:8.0.18" + dependencies: + "@graphql-tools/utils": ^10.8.6 + globby: ^11.0.3 + tslib: ^2.4.0 + unixify: ^1.0.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 193293e13dbc1854d5c2adab602320498066e378a389effe78072abc9c1c0fac966afaef895d8f69a0cb936a7726525c02b94c5c9c088e67c1b2e572e1a2927c + languageName: node + linkType: hard + +"@graphql-tools/load@npm:^8.0.0": + version: 8.0.19 + resolution: "@graphql-tools/load@npm:8.0.19" + dependencies: + "@graphql-tools/schema": ^10.0.23 + "@graphql-tools/utils": ^10.8.6 + p-limit: 3.1.0 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 485fbac7f5ae1b0b88eb399cf8fdb4f6765a1c66e796df0ba0cd0c9449dfcfd26344bc177bae38362089dc62db378d0dfb97f88ac2af740f908ddfc98a21b985 + languageName: node + linkType: hard + +"@graphql-tools/merge@npm:^9.0.0, @graphql-tools/merge@npm:^9.0.24": + version: 9.0.24 + resolution: "@graphql-tools/merge@npm:9.0.24" + dependencies: + "@graphql-tools/utils": ^10.8.6 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: c6831afeca780c54042d692ed4a59829b6bc653bd623c3e9ada08394a09989910ec0a73ef6cdf0de63a051dc8288473af06254770d33d45e279368fd0c938b08 + languageName: node + linkType: hard + +"@graphql-tools/optimize@npm:^2.0.0": + version: 2.0.0 + resolution: "@graphql-tools/optimize@npm:2.0.0" + dependencies: + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 7f79c0e1852abc571308e887d27d613da5b797256c8c6eb6c5fe7ca77f09e61524778ae281cebc0b698c51d4fe1074e2b8e0d0627b8e2dcf505aa6ed09b49a2f + languageName: node + linkType: hard + +"@graphql-tools/prisma-loader@npm:^8.0.0": + version: 8.0.17 + resolution: "@graphql-tools/prisma-loader@npm:8.0.17" + dependencies: + "@graphql-tools/url-loader": ^8.0.15 + "@graphql-tools/utils": ^10.5.6 + "@types/js-yaml": ^4.0.0 + "@whatwg-node/fetch": ^0.10.0 + chalk: ^4.1.0 + debug: ^4.3.1 + dotenv: ^16.0.0 + graphql-request: ^6.0.0 + http-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.0 + jose: ^5.0.0 + js-yaml: ^4.0.0 + lodash: ^4.17.20 + scuid: ^1.1.0 + tslib: ^2.4.0 + yaml-ast-parser: ^0.0.43 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: e05be13e5dd152cb5f88acba90ab23982bdea3ed623647956d399196dd6c73a75e47a5c594f9d5a2ef1fc19db178a5a956c9d9cecf75ab0f77609b07808e0b35 + languageName: node + linkType: hard + +"@graphql-tools/relay-operation-optimizer@npm:^7.0.0": + version: 7.0.19 + resolution: "@graphql-tools/relay-operation-optimizer@npm:7.0.19" + dependencies: + "@ardatan/relay-compiler": ^12.0.3 + "@graphql-tools/utils": ^10.8.6 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 169788840355e3b3ba2f750705a15345ef92ad07d72a3371dff8c6c9888fef9e4e5b362203db50397358715b8eb4d14e0800a9af0ecac1d5a0d71525d23662c2 + languageName: node + linkType: hard + +"@graphql-tools/schema@npm:^10.0.0, @graphql-tools/schema@npm:^10.0.11, @graphql-tools/schema@npm:^10.0.23": + version: 10.0.23 + resolution: "@graphql-tools/schema@npm:10.0.23" + dependencies: + "@graphql-tools/merge": ^9.0.24 + "@graphql-tools/utils": ^10.8.6 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 2c351afec47c1a7dbdc62ae74a1c1270d279544a412bf415779d341e1ec1b70b7b2affa13c730fedcde760b43dde24e96c4f4961a81b9fc1376f62e0cc8d0288 + languageName: node + linkType: hard + +"@graphql-tools/url-loader@npm:^8.0.0, @graphql-tools/url-loader@npm:^8.0.15": + version: 8.0.31 + resolution: "@graphql-tools/url-loader@npm:8.0.31" + dependencies: + "@graphql-tools/executor-graphql-ws": ^2.0.1 + "@graphql-tools/executor-http": ^1.1.9 + "@graphql-tools/executor-legacy-ws": ^1.1.17 + "@graphql-tools/utils": ^10.8.6 + "@graphql-tools/wrap": ^10.0.16 + "@types/ws": ^8.0.0 + "@whatwg-node/fetch": ^0.10.0 + "@whatwg-node/promise-helpers": ^1.0.0 + isomorphic-ws: ^5.0.0 + sync-fetch: 0.6.0-2 + tslib: ^2.4.0 + ws: ^8.17.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 2b412cbd3e050698760c84aea85f0cacdbd0024af3e9918252936184495e7a8b8272904ab02b3d6eb14c3c620a3c2bfc45da496dd97f9db4a4640e3e0290c213 + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:^10.0.0, @graphql-tools/utils@npm:^10.5.6, @graphql-tools/utils@npm:^10.8.1, @graphql-tools/utils@npm:^10.8.6": + version: 10.8.6 + resolution: "@graphql-tools/utils@npm:10.8.6" + dependencies: + "@graphql-typed-document-node/core": ^3.1.1 + "@whatwg-node/promise-helpers": ^1.0.0 + cross-inspect: 1.0.1 + dset: ^3.1.4 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 0885dad29d3bc0e3492d590617e571ffa454638ba92899c4c83243baadd4a0c46c23b7e37bd513ab7b053ccac6011b78dc3193fea6a71960c7e3c9084a80b325 + languageName: node + linkType: hard + +"@graphql-tools/wrap@npm:^10.0.16": + version: 10.0.35 + resolution: "@graphql-tools/wrap@npm:10.0.35" + dependencies: + "@graphql-tools/delegate": ^10.2.17 + "@graphql-tools/schema": ^10.0.11 + "@graphql-tools/utils": ^10.8.1 + "@whatwg-node/promise-helpers": ^1.3.0 + tslib: ^2.8.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: f161efb5dd8dd0d55298b2487f91a04286fc61bd4d1058cace21ec3ed154f0cb24fe1d544be01915b00b39235d7424e893e01e1e0b9e8f7b91d78b94ebd8b5e5 + languageName: node + linkType: hard + +"@graphql-typed-document-node/core@npm:3.2.0, @graphql-typed-document-node/core@npm:^3.1.1, @graphql-typed-document-node/core@npm:^3.2.0": + version: 3.2.0 + resolution: "@graphql-typed-document-node/core@npm:3.2.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: fa44443accd28c8cf4cb96aaaf39d144a22e8b091b13366843f4e97d19c7bfeaf609ce3c7603a4aeffe385081eaf8ea245d078633a7324c11c5ec4b2011bb76d + languageName: node + linkType: hard + "@grpc/grpc-js@npm:1.12.6": version: 1.12.6 resolution: "@grpc/grpc-js@npm:1.12.6" @@ -10171,6 +11053,150 @@ __metadata: languageName: node linkType: hard +"@parcel/watcher-android-arm64@npm:2.5.1": + version: 2.5.1 + resolution: "@parcel/watcher-android-arm64@npm:2.5.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-arm64@npm:2.5.1": + version: 2.5.1 + resolution: "@parcel/watcher-darwin-arm64@npm:2.5.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-x64@npm:2.5.1": + version: 2.5.1 + resolution: "@parcel/watcher-darwin-x64@npm:2.5.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-freebsd-x64@npm:2.5.1": + version: 2.5.1 + resolution: "@parcel/watcher-freebsd-x64@npm:2.5.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm-glibc@npm:2.5.1": + version: 2.5.1 + resolution: "@parcel/watcher-linux-arm-glibc@npm:2.5.1" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm-musl@npm:2.5.1": + version: 2.5.1 + resolution: "@parcel/watcher-linux-arm-musl@npm:2.5.1" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-glibc@npm:2.5.1": + version: 2.5.1 + resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.5.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-musl@npm:2.5.1": + version: 2.5.1 + resolution: "@parcel/watcher-linux-arm64-musl@npm:2.5.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-glibc@npm:2.5.1": + version: 2.5.1 + resolution: "@parcel/watcher-linux-x64-glibc@npm:2.5.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-musl@npm:2.5.1": + version: 2.5.1 + resolution: "@parcel/watcher-linux-x64-musl@npm:2.5.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-win32-arm64@npm:2.5.1": + version: 2.5.1 + resolution: "@parcel/watcher-win32-arm64@npm:2.5.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-win32-ia32@npm:2.5.1": + version: 2.5.1 + resolution: "@parcel/watcher-win32-ia32@npm:2.5.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@parcel/watcher-win32-x64@npm:2.5.1": + version: 2.5.1 + resolution: "@parcel/watcher-win32-x64@npm:2.5.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher@npm:^2.5.1": + version: 2.5.1 + resolution: "@parcel/watcher@npm:2.5.1" + dependencies: + "@parcel/watcher-android-arm64": 2.5.1 + "@parcel/watcher-darwin-arm64": 2.5.1 + "@parcel/watcher-darwin-x64": 2.5.1 + "@parcel/watcher-freebsd-x64": 2.5.1 + "@parcel/watcher-linux-arm-glibc": 2.5.1 + "@parcel/watcher-linux-arm-musl": 2.5.1 + "@parcel/watcher-linux-arm64-glibc": 2.5.1 + "@parcel/watcher-linux-arm64-musl": 2.5.1 + "@parcel/watcher-linux-x64-glibc": 2.5.1 + "@parcel/watcher-linux-x64-musl": 2.5.1 + "@parcel/watcher-win32-arm64": 2.5.1 + "@parcel/watcher-win32-ia32": 2.5.1 + "@parcel/watcher-win32-x64": 2.5.1 + detect-libc: ^1.0.3 + is-glob: ^4.0.3 + micromatch: ^4.0.5 + node-addon-api: ^7.0.0 + node-gyp: latest + dependenciesMeta: + "@parcel/watcher-android-arm64": + optional: true + "@parcel/watcher-darwin-arm64": + optional: true + "@parcel/watcher-darwin-x64": + optional: true + "@parcel/watcher-freebsd-x64": + optional: true + "@parcel/watcher-linux-arm-glibc": + optional: true + "@parcel/watcher-linux-arm-musl": + optional: true + "@parcel/watcher-linux-arm64-glibc": + optional: true + "@parcel/watcher-linux-arm64-musl": + optional: true + "@parcel/watcher-linux-x64-glibc": + optional: true + "@parcel/watcher-linux-x64-musl": + optional: true + "@parcel/watcher-win32-arm64": + optional: true + "@parcel/watcher-win32-ia32": + optional: true + "@parcel/watcher-win32-x64": + optional: true + checksum: c6444cd20212929ef2296d5620c0d41343a1719232cb0c947ced51155b8afc1e470c09d238b92f6c3a589e0320048badf5b73cb41790229521be224cbf89e0f4 + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -12991,6 +14017,13 @@ __metadata: languageName: node linkType: hard +"@repeaterjs/repeater@npm:^3.0.4, @repeaterjs/repeater@npm:^3.0.6": + version: 3.0.6 + resolution: "@repeaterjs/repeater@npm:3.0.6" + checksum: aae878b953162bec77c94b45f2236ddfc01a65308267c7cb30220fa2f8511654a302c0d32aad228c58241d685607d7bb35b6d528b2879355e6636ff08fddb266 + languageName: node + linkType: hard + "@resvg/resvg-wasm@npm:2.4.0": version: 2.4.0 resolution: "@resvg/resvg-wasm@npm:2.4.0" @@ -16659,6 +17692,13 @@ __metadata: languageName: node linkType: hard +"@types/graphql@npm:^0.13.4": + version: 0.13.4 + resolution: "@types/graphql@npm:0.13.4" + checksum: d40d800291f3d158dc4fd945bb343c07867a6b653b3e6bf29e33e8fc6bb45d2660c484bb092020b5ad52c4c7f8478880de8d40563e7949c487edb61c131a4b6e + languageName: node + linkType: hard + "@types/hast@npm:^3.0.0, @types/hast@npm:^3.0.4": version: 3.0.4 resolution: "@types/hast@npm:3.0.4" @@ -16779,6 +17819,13 @@ __metadata: languageName: node linkType: hard +"@types/js-yaml@npm:^4.0.0": + version: 4.0.9 + resolution: "@types/js-yaml@npm:4.0.9" + checksum: e5e5e49b5789a29fdb1f7d204f82de11cb9e8f6cb24ab064c616da5d6e1b3ccfbf95aa5d1498a9fbd3b9e745564e69b4a20b6c530b5a8bbb2d4eb830cda9bc69 + languageName: node + linkType: hard + "@types/jsdom@npm:^21.1.3": version: 21.1.7 resolution: "@types/jsdom@npm:21.1.7" @@ -17540,6 +18587,15 @@ __metadata: languageName: node linkType: hard +"@types/ws@npm:^8.0.0": + version: 8.18.1 + resolution: "@types/ws@npm:8.18.1" + dependencies: + "@types/node": "*" + checksum: 0331b14cde388e2805af66cad3e3f51857db8e68ed91e5b99750915e96fe7572e58296dc99999331bbcf08f0ff00a227a0bb214e991f53c2a5aca7b0e71173fa + languageName: node + linkType: hard + "@types/ws@npm:^8.5.4": version: 8.18.0 resolution: "@types/ws@npm:8.18.0" @@ -18010,6 +19066,16 @@ __metadata: languageName: node linkType: hard +"@urql/core@npm:^5.1.1": + version: 5.1.1 + resolution: "@urql/core@npm:5.1.1" + dependencies: + "@0no-co/graphql.web": ^1.0.5 + wonka: ^6.3.2 + checksum: c28736706abe5d0a0172bcde1c80807aba44606041347beba8e73d5237598034301cccad0169c4f63ba08f5bffe7b3a3ad95ee4a53a0d719ad5525f44b84dbcc + languageName: node + linkType: hard + "@vercel/edge-config@npm:^0.1.1": version: 0.1.1 resolution: "@vercel/edge-config@npm:0.1.1" @@ -18524,6 +19590,47 @@ __metadata: languageName: node linkType: hard +"@whatwg-node/disposablestack@npm:^0.0.6": + version: 0.0.6 + resolution: "@whatwg-node/disposablestack@npm:0.0.6" + dependencies: + "@whatwg-node/promise-helpers": ^1.0.0 + tslib: ^2.6.3 + checksum: dae7f8f05b56409858156cdb092345ecefa170a899e27750e17f7800b9489021b4865f40b427fc7f5c979d668a8ffef5ac0adaa284e7f56222127bbe4ee9b114 + languageName: node + linkType: hard + +"@whatwg-node/fetch@npm:^0.10.0, @whatwg-node/fetch@npm:^0.10.4": + version: 0.10.5 + resolution: "@whatwg-node/fetch@npm:0.10.5" + dependencies: + "@whatwg-node/node-fetch": ^0.7.11 + urlpattern-polyfill: ^10.0.0 + checksum: c70e61e858d08fd9c6766265752314dcbb10e1198d037e5177eee47c1579cb5583faa6bf5bb5c4fa592bed526afe2ee4c0f76bef40a71e328c6d1dc2a3cb92a0 + languageName: node + linkType: hard + +"@whatwg-node/node-fetch@npm:^0.7.11": + version: 0.7.17 + resolution: "@whatwg-node/node-fetch@npm:0.7.17" + dependencies: + "@whatwg-node/disposablestack": ^0.0.6 + "@whatwg-node/promise-helpers": ^1.2.5 + busboy: ^1.6.0 + tslib: ^2.6.3 + checksum: 7fb2317687d8f49e2473b262ced284ecac840a9462d320e57b7ddf6c7dfdd782e99f998041d5cee9841ffe329a854170ec52bdd1ce80a7b7f59524d57245afcd + languageName: node + linkType: hard + +"@whatwg-node/promise-helpers@npm:^1.0.0, @whatwg-node/promise-helpers@npm:^1.2.1, @whatwg-node/promise-helpers@npm:^1.2.4, @whatwg-node/promise-helpers@npm:^1.2.5, @whatwg-node/promise-helpers@npm:^1.3.0": + version: 1.3.0 + resolution: "@whatwg-node/promise-helpers@npm:1.3.0" + dependencies: + tslib: ^2.6.3 + checksum: c7d64d38d6898452daee26e19d874d69e1b6bc4aaf0951ac1c72990bc5be7da49e389151d3d8b2cd78515c8e54e03ce75527db3c68cf07a83dac25a66e3ef391 + languageName: node + linkType: hard + "@wojtekmaj/date-utils@npm:^1.0.2, @wojtekmaj/date-utils@npm:^1.0.3": version: 1.0.3 resolution: "@wojtekmaj/date-utils@npm:1.0.3" @@ -19733,7 +20840,7 @@ __metadata: languageName: node linkType: hard -"auto-bind@npm:4.0.0": +"auto-bind@npm:4.0.0, auto-bind@npm:~4.0.0": version: 4.0.0 resolution: "auto-bind@npm:4.0.0" checksum: 00cad71cce5742faccb7dd65c1b55ebc4f45add4b0c9a1547b10b05bab22813230133b0c892c67ba3eb969a4524710c5e43cc45c72898ec84e56f3a596e7a04f @@ -20468,6 +21575,20 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.24.0": + version: 4.24.4 + resolution: "browserslist@npm:4.24.4" + dependencies: + caniuse-lite: ^1.0.30001688 + electron-to-chromium: ^1.5.73 + node-releases: ^2.0.19 + update-browserslist-db: ^1.1.1 + bin: + browserslist: cli.js + checksum: 64074bf6cf0a9ae3094d753270e3eae9cf925149db45d646f0bc67bacc2e46d7ded64a4e835b95f5fdcf0350f63a83c3755b32f80831f643a47f0886deb8a065 + languageName: node + linkType: hard + "bs-logger@npm:0.x": version: 0.2.6 resolution: "bs-logger@npm:0.2.6" @@ -20602,7 +21723,7 @@ __metadata: languageName: node linkType: hard -"busboy@npm:1.6.0, busboy@npm:^1.0.0": +"busboy@npm:1.6.0, busboy@npm:^1.0.0, busboy@npm:^1.6.0": version: 1.6.0 resolution: "busboy@npm:1.6.0" dependencies: @@ -20857,6 +21978,16 @@ __metadata: languageName: node linkType: hard +"camel-case@npm:^4.1.2": + version: 4.1.2 + resolution: "camel-case@npm:4.1.2" + dependencies: + pascal-case: ^3.1.2 + tslib: ^2.0.3 + checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 + languageName: node + linkType: hard + "camelcase-css@npm:^2.0.1": version: 2.0.1 resolution: "camelcase-css@npm:2.0.1" @@ -20945,6 +22076,24 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001688": + version: 1.0.30001712 + resolution: "caniuse-lite@npm:1.0.30001712" + checksum: 83760e735d1d7ab9ff7270747d70b71da4341bdc1c90df9fe2008ada382653e13d7501bfd7068e1d835184b03b8ac598b127bfe3e7d53419b9d7827730b4ae1a + languageName: node + linkType: hard + +"capital-case@npm:^1.0.4": + version: 1.0.4 + resolution: "capital-case@npm:1.0.4" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + upper-case-first: ^2.0.2 + checksum: 41fa8fa87f6d24d0835a2b4a9341a3eaecb64ac29cd7c5391f35d6175a0fa98ab044e7f2602e1ec3afc886231462ed71b5b80c590b8b41af903ec2c15e5c5931 + languageName: node + linkType: hard + "cardinal@npm:^2.1.1": version: 2.1.1 resolution: "cardinal@npm:2.1.1" @@ -21045,6 +22194,24 @@ __metadata: languageName: node linkType: hard +"change-case-all@npm:1.0.15": + version: 1.0.15 + resolution: "change-case-all@npm:1.0.15" + dependencies: + change-case: ^4.1.2 + is-lower-case: ^2.0.2 + is-upper-case: ^2.0.2 + lower-case: ^2.0.2 + lower-case-first: ^2.0.2 + sponge-case: ^1.0.1 + swap-case: ^2.0.2 + title-case: ^3.0.3 + upper-case: ^2.0.2 + upper-case-first: ^2.0.2 + checksum: e1dabdcd8447a3690f3faf15f92979dfbc113109b50916976e1d5e518e6cfdebee4f05f54d0ca24fb79a4bf835185b59ae25e967bb3dc10bd236a775b19ecc52 + languageName: node + linkType: hard + "change-case@npm:^2.3.0": version: 2.3.1 resolution: "change-case@npm:2.3.1" @@ -21069,6 +22236,26 @@ __metadata: languageName: node linkType: hard +"change-case@npm:^4.1.2": + version: 4.1.2 + resolution: "change-case@npm:4.1.2" + dependencies: + camel-case: ^4.1.2 + capital-case: ^1.0.4 + constant-case: ^3.0.4 + dot-case: ^3.0.4 + header-case: ^2.0.4 + no-case: ^3.0.4 + param-case: ^3.0.4 + pascal-case: ^3.1.2 + path-case: ^3.0.4 + sentence-case: ^3.0.4 + snake-case: ^3.0.4 + tslib: ^2.0.3 + checksum: e4bc4a093a1f7cce8b33896665cf9e456e3bc3cc0def2ad7691b1994cfca99b3188d0a513b16855b01a6bd20692fcde12a7d4d87a5615c4c515bbbf0e651f116 + languageName: node + linkType: hard + "char-regex@npm:^1.0.2": version: 1.0.2 resolution: "char-regex@npm:1.0.2" @@ -21833,6 +23020,13 @@ __metadata: languageName: node linkType: hard +"common-tags@npm:1.8.2": + version: 1.8.2 + resolution: "common-tags@npm:1.8.2" + checksum: 767a6255a84bbc47df49a60ab583053bb29a7d9687066a18500a516188a062c4e4cd52de341f22de0b07062e699b1b8fe3cfa1cb55b241cb9301aeb4f45b4dff + languageName: node + linkType: hard + "commondir@npm:^1.0.1": version: 1.0.1 resolution: "commondir@npm:1.0.1" @@ -21978,6 +23172,17 @@ __metadata: languageName: node linkType: hard +"constant-case@npm:^3.0.4": + version: 3.0.4 + resolution: "constant-case@npm:3.0.4" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + upper-case: ^2.0.2 + checksum: 6c3346d51afc28d9fae922e966c68eb77a19d94858dba230dd92d7b918b37d36db50f0311e9ecf6847e43e934b1c01406a0936973376ab17ec2c471fbcfb2cf3 + languageName: node + linkType: hard + "constants-browserify@npm:^1.0.0": version: 1.0.0 resolution: "constants-browserify@npm:1.0.0" @@ -22182,7 +23387,7 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^8.2.0": +"cosmiconfig@npm:^8.1.0, cosmiconfig@npm:^8.1.3, cosmiconfig@npm:^8.2.0": version: 8.3.6 resolution: "cosmiconfig@npm:8.3.6" dependencies: @@ -22305,6 +23510,15 @@ __metadata: languageName: node linkType: hard +"cross-fetch@npm:^3.1.5": + version: 3.2.0 + resolution: "cross-fetch@npm:3.2.0" + dependencies: + node-fetch: ^2.7.0 + checksum: 8ded5ea35f705e81e569e7db244a3f96e05e95996ff51877c89b0c1ec1163c76bb5dad77d0f8fba6bb35a0abacb36403d7271dc586d8b1f636110ee7a8d959fd + languageName: node + linkType: hard + "cross-fetch@npm:^4.0.0": version: 4.0.0 resolution: "cross-fetch@npm:4.0.0" @@ -22314,6 +23528,15 @@ __metadata: languageName: node linkType: hard +"cross-inspect@npm:1.0.1": + version: 1.0.1 + resolution: "cross-inspect@npm:1.0.1" + dependencies: + tslib: ^2.4.0 + checksum: 7c1e02e0a9670b62416a3ea1df7ae880fdad3aa0a857de8932c4e5f8acd71298c7e3db9da8e9da603f5692cd1879938f5e72e34a9f5d1345987bef656d117fc1 + languageName: node + linkType: hard + "cross-spawn@npm:7.0.3, cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -22704,6 +23927,13 @@ __metadata: languageName: node linkType: hard +"data-uri-to-buffer@npm:^4.0.0": + version: 4.0.1 + resolution: "data-uri-to-buffer@npm:4.0.1" + checksum: 0d0790b67ffec5302f204c2ccca4494f70b4e2d940fea3d36b09f0bb2b8539c2e86690429eb1f1dc4bcc9e4df0644193073e63d9ee48ac9fce79ec1506e4aa4c + languageName: node + linkType: hard + "data-urls@npm:^4.0.0": version: 4.0.0 resolution: "data-urls@npm:4.0.0" @@ -22791,6 +24021,13 @@ __metadata: languageName: node linkType: hard +"dataloader@npm:^2.2.3": + version: 2.2.3 + resolution: "dataloader@npm:2.2.3" + checksum: cc272181f6cad0ea20511c0a0d270cbc1df960a3526ab24941bbeb2cb7120499a598fe2cd41b4818527367acf7bc1be0723b6e5034637db4759a396c904b78a6 + languageName: node + linkType: hard + "date-fns@npm:^2.28.0": version: 2.30.0 resolution: "date-fns@npm:2.30.0" @@ -22844,6 +24081,13 @@ __metadata: languageName: node linkType: hard +"debounce@npm:^1.2.0": + version: 1.2.1 + resolution: "debounce@npm:1.2.1" + checksum: 682a89506d9e54fb109526f4da255c5546102fbb8e3ae75eef3b04effaf5d4853756aee97475cd4650641869794e44f410eeb20ace2b18ea592287ab2038519e + languageName: node + linkType: hard + "debug@npm:2.6.9, debug@npm:^2.6.0, debug@npm:^2.6.9": version: 2.6.9 resolution: "debug@npm:2.6.9" @@ -23130,6 +24374,13 @@ __metadata: languageName: node linkType: hard +"dependency-graph@npm:^0.11.0": + version: 0.11.0 + resolution: "dependency-graph@npm:0.11.0" + checksum: 477204beaa9be69e642bc31ffe7a8c383d0cf48fa27acbc91c5df01431ab913e65c154213d2ef83d034c98d77280743ec85e5da018a97a18dd43d3c0b78b28cd + languageName: node + linkType: hard + "dequal@npm:^2.0.0, dequal@npm:^2.0.2, dequal@npm:^2.0.3": version: 2.0.3 resolution: "dequal@npm:2.0.3" @@ -23178,6 +24429,15 @@ __metadata: languageName: node linkType: hard +"detect-libc@npm:^1.0.3": + version: 1.0.3 + resolution: "detect-libc@npm:1.0.3" + bin: + detect-libc: ./bin/detect-libc.js + checksum: daaaed925ffa7889bd91d56e9624e6c8033911bb60f3a50a74a87500680652969dbaab9526d1e200a4c94acf80fc862a22131841145a0a8482d60a99c24f4a3e + languageName: node + linkType: hard + "detect-libc@npm:^2.0.0, detect-libc@npm:^2.0.1, detect-libc@npm:^2.0.3": version: 2.0.3 resolution: "detect-libc@npm:2.0.3" @@ -23431,6 +24691,16 @@ __metadata: languageName: node linkType: hard +"dot-case@npm:^3.0.4": + version: 3.0.4 + resolution: "dot-case@npm:3.0.4" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 + languageName: node + linkType: hard + "dot-prop@npm:^6.0.1": version: 6.0.1 resolution: "dot-prop@npm:6.0.1" @@ -23527,6 +24797,13 @@ __metadata: languageName: node linkType: hard +"dset@npm:^3.1.2, dset@npm:^3.1.4": + version: 3.1.4 + resolution: "dset@npm:3.1.4" + checksum: 9a7677e9ffd3c13ad850f7cf367aa94b39984006510e84c3c09b7b88bba0a5b3b7196d85a99d0c4cae4e47d67bdeca43dc1834a41d80f31bcdc86dd26121ecec + languageName: node + linkType: hard + "dub@npm:^0.59.1": version: 0.59.1 resolution: "dub@npm:0.59.1" @@ -23644,6 +24921,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.5.73": + version: 1.5.135 + resolution: "electron-to-chromium@npm:1.5.135" + checksum: daba16981a21b37b99be3b5bfd60b0c93c59d53d8f9c5bf80e36a3e6a6c1d61c2b20d9ed610eb1ae57abe32bdc514e9c7fe63b2adce7814c1211f57357ed7349 + languageName: node + linkType: hard + "elliptic@npm:^6.5.3": version: 6.5.4 resolution: "elliptic@npm:6.5.4" @@ -24756,6 +26040,13 @@ __metadata: languageName: node linkType: hard +"escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e + languageName: node + linkType: hard + "escape-html@npm:^1.0.3, escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" @@ -26143,6 +27434,28 @@ __metadata: languageName: node linkType: hard +"fbjs-css-vars@npm:^1.0.0": + version: 1.0.2 + resolution: "fbjs-css-vars@npm:1.0.2" + checksum: 72baf6d22c45b75109118b4daecb6c8016d4c83c8c0f23f683f22e9d7c21f32fff6201d288df46eb561e3c7d4bb4489b8ad140b7f56444c453ba407e8bd28511 + languageName: node + linkType: hard + +"fbjs@npm:^3.0.0": + version: 3.0.5 + resolution: "fbjs@npm:3.0.5" + dependencies: + cross-fetch: ^3.1.5 + fbjs-css-vars: ^1.0.0 + loose-envify: ^1.0.0 + object-assign: ^4.1.0 + promise: ^7.1.1 + setimmediate: ^1.0.5 + ua-parser-js: ^1.0.35 + checksum: e609b5b64686bc96495a5c67728ed9b2710b9b3d695c5759c5f5e47c9483d1c323543ac777a86459e3694efc5712c6ce7212e944feb19752867d699568bb0e54 + languageName: node + linkType: hard + "fdir@npm:^6.2.0": version: 6.4.3 resolution: "fdir@npm:6.4.3" @@ -26174,6 +27487,16 @@ __metadata: languageName: node linkType: hard +"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": + version: 3.2.0 + resolution: "fetch-blob@npm:3.2.0" + dependencies: + node-domexception: ^1.0.0 + web-streams-polyfill: ^3.0.3 + checksum: f19bc28a2a0b9626e69fd7cf3a05798706db7f6c7548da657cbf5026a570945f5eeaedff52007ea35c8bcd3d237c58a20bf1543bc568ab2422411d762dd3d5bf + languageName: node + linkType: hard + "fetch-retry@npm:^6.0.0": version: 6.0.0 resolution: "fetch-retry@npm:6.0.0" @@ -26621,6 +27944,15 @@ __metadata: languageName: node linkType: hard +"formdata-polyfill@npm:^4.0.10": + version: 4.0.10 + resolution: "formdata-polyfill@npm:4.0.10" + dependencies: + fetch-blob: ^3.1.2 + checksum: 82a34df292afadd82b43d4a740ce387bc08541e0a534358425193017bf9fb3567875dc5f69564984b1da979979b70703aa73dee715a17b6c229752ae736dd9db + languageName: node + linkType: hard + "formidable@npm:^1.2.2": version: 1.2.6 resolution: "formidable@npm:1.2.6" @@ -27578,7 +28910,7 @@ __metadata: languageName: node linkType: hard -"globby@npm:^11.0.0, globby@npm:^11.1.0": +"globby@npm:^11.0.0, globby@npm:^11.0.3, globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: @@ -27789,6 +29121,97 @@ __metadata: languageName: node linkType: hard +"graphql-config@npm:^5.1.1, graphql-config@npm:^5.1.3": + version: 5.1.3 + resolution: "graphql-config@npm:5.1.3" + dependencies: + "@graphql-tools/graphql-file-loader": ^8.0.0 + "@graphql-tools/json-file-loader": ^8.0.0 + "@graphql-tools/load": ^8.0.0 + "@graphql-tools/merge": ^9.0.0 + "@graphql-tools/url-loader": ^8.0.0 + "@graphql-tools/utils": ^10.0.0 + cosmiconfig: ^8.1.0 + jiti: ^2.0.0 + minimatch: ^9.0.5 + string-env-interpolation: ^1.0.1 + tslib: ^2.4.0 + peerDependencies: + cosmiconfig-toml-loader: ^1.0.0 + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + cosmiconfig-toml-loader: + optional: true + checksum: fde8aee849def42a5eaf02fbe3e404c91be94a53782c22ff58b29bfcfed7e9be2fba114fa94b4a97e12ea1e5970267ebaa119ba6915b2d4d9bb8f5ae9c5485c2 + languageName: node + linkType: hard + +"graphql-introspection-json-to-sdl@npm:^1.0.3": + version: 1.0.3 + resolution: "graphql-introspection-json-to-sdl@npm:1.0.3" + dependencies: + "@types/graphql": ^0.13.4 + "@types/minimist": ^1.2.0 + "@types/node": ^10.7.1 + graphql: ^14.0.0-rc.2 + minimist: ^1.2.0 + bin: + graphql-introspection-json-to-sdl: dist/index.js + checksum: 9581079d10862453a30e20b203215d3d3df0984f626bdd402b11bc86086dd35492c38ad5d719d32e653b79d92448cb714176ee4130c3aae4530e1e8509e48001 + languageName: node + linkType: hard + +"graphql-request@npm:^6.0.0": + version: 6.1.0 + resolution: "graphql-request@npm:6.1.0" + dependencies: + "@graphql-typed-document-node/core": ^3.2.0 + cross-fetch: ^3.1.5 + peerDependencies: + graphql: 14 - 16 + checksum: 6d62630a0169574442320651c1f7626c0c602025c3c46b19e09417c9579bb209306ee63de9793a03be2e1701bb7f13971f8545d99bc6573e340f823af0ad35b2 + languageName: node + linkType: hard + +"graphql-tag@npm:^2.11.0": + version: 2.12.6 + resolution: "graphql-tag@npm:2.12.6" + dependencies: + tslib: ^2.1.0 + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: b15162a3d62f17b9b79302445b9ee330e041582f1c7faca74b9dec5daa74272c906ec1c34e1c50592bb6215e5c3eba80a309103f6ba9e4c1cddc350c46f010df + languageName: node + linkType: hard + +"graphql-ws@npm:^6.0.3": + version: 6.0.4 + resolution: "graphql-ws@npm:6.0.4" + peerDependencies: + "@fastify/websocket": ^10 || ^11 + graphql: ^15.10.1 || ^16 + uWebSockets.js: ^20 + ws: ^8 + peerDependenciesMeta: + "@fastify/websocket": + optional: true + uWebSockets.js: + optional: true + ws: + optional: true + checksum: 11bf3a83e2b3485d73d79bc9e030a9ecf11fce5a999ba107feda365ec3308ddbe35562fc4cb350b3c938743a7822608046442e6a6cf331414e76d437c8536c65 + languageName: node + linkType: hard + +"graphql@npm:^14.0.0-rc.2": + version: 14.7.0 + resolution: "graphql@npm:14.7.0" + dependencies: + iterall: ^1.2.2 + checksum: e5f4e60799421a573904f390e1ec0aa76360f751688dbbe62e9c35baa0d3727c8d59a659bfc524f126dffe3518da87fd8ecaa78c94fd5c0fe4e035c670745242 + languageName: node + linkType: hard + "graphql@npm:^16.3.0": version: 16.5.0 resolution: "graphql@npm:16.5.0" @@ -28150,6 +29573,16 @@ __metadata: languageName: node linkType: hard +"header-case@npm:^2.0.4": + version: 2.0.4 + resolution: "header-case@npm:2.0.4" + dependencies: + capital-case: ^1.0.4 + tslib: ^2.0.3 + checksum: 571c83eeb25e8130d172218712f807c0b96d62b020981400bccc1503a7cf14b09b8b10498a962d2739eccf231d950e3848ba7d420b58a6acd2f9283439546cd9 + languageName: node + linkType: hard + "headers-polyfill@npm:^3.0.4": version: 3.0.7 resolution: "headers-polyfill@npm:3.0.7" @@ -28678,6 +30111,13 @@ __metadata: languageName: node linkType: hard +"immutable@npm:~3.7.6": + version: 3.7.6 + resolution: "immutable@npm:3.7.6" + checksum: 8cccfb22d3ecf14fe0c474612e96d6bb5d117493e7639fe6642fb81e78c9ac4b698dd8a322c105001a709ad873ffc90e30bad7db5d9a3ef0b54a6e1db0258e8e + languageName: node + linkType: hard + "import-fresh@npm:^3.0.0, import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" @@ -28688,6 +30128,13 @@ __metadata: languageName: node linkType: hard +"import-from@npm:4.0.0": + version: 4.0.0 + resolution: "import-from@npm:4.0.0" + checksum: 1fa29c05b048da18914e91d9a529e5d9b91774bebbfab10e53f59bcc1667917672b971cf102fee857f142e5e433ce69fa1f0a596e1c7d82f9947a5ec352694b9 + languageName: node + linkType: hard + "import-in-the-middle@npm:1.4.2": version: 1.4.2 resolution: "import-in-the-middle@npm:1.4.2" @@ -28931,7 +30378,7 @@ __metadata: languageName: node linkType: hard -"inquirer@npm:8.2.6": +"inquirer@npm:8.2.6, inquirer@npm:^8.0.0": version: 8.2.6 resolution: "inquirer@npm:8.2.6" dependencies: @@ -29108,6 +30555,16 @@ __metadata: languageName: node linkType: hard +"is-absolute@npm:^1.0.0": + version: 1.0.0 + resolution: "is-absolute@npm:1.0.0" + dependencies: + is-relative: ^1.0.0 + is-windows: ^1.0.1 + checksum: 9d16b2605eda3f3ce755410f1d423e327ad3a898bcb86c9354cf63970ed3f91ba85e9828aa56f5d6a952b9fae43d0477770f78d37409ae8ecc31e59ebc279b27 + languageName: node + linkType: hard + "is-alphabetical@npm:^2.0.0": version: 2.0.1 resolution: "is-alphabetical@npm:2.0.1" @@ -29476,7 +30933,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": +"is-glob@npm:4.0.3, is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -29526,6 +30983,15 @@ __metadata: languageName: node linkType: hard +"is-lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "is-lower-case@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: ba57dd1201e15fd9b590654736afccf1b3b68e919f40c23ef13b00ebcc639b1d9c2f81fe86415bff3e8eccffec459786c9ac9dc8f3a19cfa4484206c411c1d7d + languageName: node + linkType: hard + "is-map@npm:^2.0.3": version: 2.0.3 resolution: "is-map@npm:2.0.3" @@ -29698,6 +31164,15 @@ __metadata: languageName: node linkType: hard +"is-relative@npm:^1.0.0": + version: 1.0.0 + resolution: "is-relative@npm:1.0.0" + dependencies: + is-unc-path: ^1.0.0 + checksum: 3271a0df109302ef5e14a29dcd5d23d9788e15ade91a40b942b035827ffbb59f7ce9ff82d036ea798541a52913cbf9d2d0b66456340887b51f3542d57b5a4c05 + languageName: node + linkType: hard + "is-retry-allowed@npm:^1.1.0": version: 1.2.0 resolution: "is-retry-allowed@npm:1.2.0" @@ -29842,6 +31317,15 @@ __metadata: languageName: node linkType: hard +"is-unc-path@npm:^1.0.0": + version: 1.0.0 + resolution: "is-unc-path@npm:1.0.0" + dependencies: + unc-path-regex: ^0.1.2 + checksum: e8abfde203f7409f5b03a5f1f8636e3a41e78b983702ef49d9343eb608cdfe691429398e8815157519b987b739bcfbc73ae7cf4c8582b0ab66add5171088eab6 + languageName: node + linkType: hard + "is-unicode-supported@npm:^0.1.0": version: 0.1.0 resolution: "is-unicode-supported@npm:0.1.0" @@ -29872,6 +31356,15 @@ __metadata: languageName: node linkType: hard +"is-upper-case@npm:^2.0.2": + version: 2.0.2 + resolution: "is-upper-case@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: cf4fd43c00c2e72cd5cff911923070b89f0933b464941bd782e2315385f80b5a5acd772db3b796542e5e3cfed735f4dffd88c54d62db1ebfc5c3daa7b1af2bc6 + languageName: node + linkType: hard + "is-weakmap@npm:^2.0.2": version: 2.0.2 resolution: "is-weakmap@npm:2.0.2" @@ -29914,7 +31407,7 @@ __metadata: languageName: node linkType: hard -"is-windows@npm:^1.0.0": +"is-windows@npm:^1.0.0, is-windows@npm:^1.0.1": version: 1.0.2 resolution: "is-windows@npm:1.0.2" checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 @@ -30002,6 +31495,15 @@ __metadata: languageName: node linkType: hard +"isomorphic-ws@npm:^5.0.0": + version: 5.0.0 + resolution: "isomorphic-ws@npm:5.0.0" + peerDependencies: + ws: "*" + checksum: e20eb2aee09ba96247465fda40c6d22c1153394c0144fa34fe6609f341af4c8c564f60ea3ba762335a7a9c306809349f9b863c8beedf2beea09b299834ad5398 + languageName: node + linkType: hard + "isstream@npm:~0.1.2": version: 0.1.2 resolution: "isstream@npm:0.1.2" @@ -30084,6 +31586,13 @@ __metadata: languageName: node linkType: hard +"iterall@npm:^1.2.2": + version: 1.3.0 + resolution: "iterall@npm:1.3.0" + checksum: c78b99678f8c99be488cca7f33e4acca9b72c1326e050afbaf023f086e55619ee466af0464af94a0cb3f292e60cb5bac53a8fd86bd4249ecad26e09f17bb158b + languageName: node + linkType: hard + "iterare@npm:1.2.1": version: 1.2.1 resolution: "iterare@npm:1.2.1" @@ -30716,6 +32225,15 @@ __metadata: languageName: node linkType: hard +"jiti@npm:^1.17.1, jiti@npm:^1.21.6": + version: 1.21.7 + resolution: "jiti@npm:1.21.7" + bin: + jiti: bin/jiti.js + checksum: 9cd20dabf82e3a4cceecb746a69381da7acda93d34eed0cdb9c9bdff3bce07e4f2f4a016ca89924392c935297d9aedc58ff9f7d3281bc5293319ad244926e0b7 + languageName: node + linkType: hard + "jiti@npm:^1.18.2": version: 1.20.0 resolution: "jiti@npm:1.20.0" @@ -30734,12 +32252,12 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^1.21.6": - version: 1.21.7 - resolution: "jiti@npm:1.21.7" +"jiti@npm:^2.0.0": + version: 2.4.2 + resolution: "jiti@npm:2.4.2" bin: - jiti: bin/jiti.js - checksum: 9cd20dabf82e3a4cceecb746a69381da7acda93d34eed0cdb9c9bdff3bce07e4f2f4a016ca89924392c935297d9aedc58ff9f7d3281bc5293319ad244926e0b7 + jiti: lib/jiti-cli.mjs + checksum: c6c30c7b6b293e9f26addfb332b63d964a9f143cdd2cf5e946dbe5143db89f7c1b50ad9223b77fb1f6ddb0b9c5ecef995fea024ecf7d2861d285d779cde66e1e languageName: node linkType: hard @@ -30771,6 +32289,13 @@ __metadata: languageName: node linkType: hard +"jose@npm:^5.0.0": + version: 5.10.0 + resolution: "jose@npm:5.10.0" + checksum: e80965ef3ab47baafac3517f53fa9c74b948b57690de524f51320c314cd545ef51ec7b18761605d58fb5965b7c5e12b2bb6ddae87a6ccf55e3f4ad077347d8d7 + languageName: node + linkType: hard + "jose@npm:^6.0.6": version: 6.0.10 resolution: "jose@npm:6.0.10" @@ -30842,7 +32367,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0": +"js-yaml@npm:4.1.0, js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" dependencies: @@ -30958,6 +32483,15 @@ __metadata: languageName: node linkType: hard +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" + bin: + jsesc: bin/jsesc + checksum: 19c94095ea026725540c0d29da33ab03144f6bcf2d4159e4833d534976e99e0c09c38cefa9a575279a51fc36b31166f8d6d05c9fe2645d5f15851d690b41f17f + languageName: node + linkType: hard + "jsforce@npm:^1.11.0": version: 1.11.1 resolution: "jsforce@npm:1.11.1" @@ -31062,6 +32596,16 @@ __metadata: languageName: node linkType: hard +"json-to-pretty-yaml@npm:^1.2.2": + version: 1.2.2 + resolution: "json-to-pretty-yaml@npm:1.2.2" + dependencies: + remedial: ^1.0.7 + remove-trailing-spaces: ^1.0.6 + checksum: 4b78480f426e176e5fdac073e05877683bb026f1175deb52d0941b992f9c91a58a812c020f00aa67ba1fc7cadb220539a264146f222e48a48c8bb2a0931cac9b + languageName: node + linkType: hard + "json5@npm:^1.0.1, json5@npm:^1.0.2": version: 1.0.2 resolution: "json5@npm:1.0.2" @@ -31869,6 +33413,13 @@ __metadata: languageName: node linkType: hard +"lodash.sortby@npm:^4.7.0": + version: 4.7.0 + resolution: "lodash.sortby@npm:4.7.0" + checksum: db170c9396d29d11fe9a9f25668c4993e0c1331bcb941ddbd48fb76f492e732add7f2a47cfdf8e9d740fa59ac41bbfaf931d268bc72aab3ab49e9f89354d718c + languageName: node + linkType: hard + "lodash.startcase@npm:^4.4.0": version: 4.4.0 resolution: "lodash.startcase@npm:4.4.0" @@ -31890,14 +33441,14 @@ __metadata: languageName: node linkType: hard -"lodash@npm:4.17.21, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:~4.17.15": +"lodash@npm:4.17.21, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:~4.17.0, lodash@npm:~4.17.15": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 languageName: node linkType: hard -"log-symbols@npm:4.1.0, log-symbols@npm:^4.1.0": +"log-symbols@npm:4.1.0, log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0": version: 4.1.0 resolution: "log-symbols@npm:4.1.0" dependencies: @@ -32030,6 +33581,15 @@ __metadata: languageName: node linkType: hard +"lower-case-first@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case-first@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: 33e3da1098ddda219ce125d4ab7a78a944972c0ee8872e95b6ccc35df8ad405284ab233b0ba4d72315ad1a06fe2f0d418ee4cba9ec1ef1c386dea78899fc8958 + languageName: node + linkType: hard + "lower-case@npm:^1.1.0, lower-case@npm:^1.1.1, lower-case@npm:^1.1.2": version: 1.1.4 resolution: "lower-case@npm:1.1.4" @@ -32037,6 +33597,15 @@ __metadata: languageName: node linkType: hard +"lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 + languageName: node + linkType: hard + "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" @@ -32353,6 +33922,13 @@ __metadata: languageName: node linkType: hard +"map-cache@npm:^0.2.0": + version: 0.2.2 + resolution: "map-cache@npm:0.2.2" + checksum: 3067cea54285c43848bb4539f978a15dedc63c03022abeec6ef05c8cb6829f920f13b94bcaf04142fc6a088318e564c4785704072910d120d55dbc2e0c421969 + languageName: node + linkType: hard + "map-obj@npm:^1.0.0": version: 1.0.1 resolution: "map-obj@npm:1.0.1" @@ -32814,6 +34390,18 @@ __metadata: languageName: node linkType: hard +"meros@npm:^1.2.1": + version: 1.3.0 + resolution: "meros@npm:1.3.0" + peerDependencies: + "@types/node": ">=13" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: ea86c83fe9357d3eb2f5bad20909e12642c7bc8c10340d9bd0968b48f69ec453de14f7e5032d138ad04cb10d79b8c9fb3c9601bb515e8fbdf9bec4eed62994ad + languageName: node + linkType: hard + "methods@npm:^1.1.2, methods@npm:~1.1.2": version: 1.1.2 resolution: "methods@npm:1.1.2" @@ -33433,7 +35021,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.4": +"minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": version: 9.0.5 resolution: "minimatch@npm:9.0.5" dependencies: @@ -34673,6 +36261,16 @@ __metadata: languageName: node linkType: hard +"no-case@npm:^3.0.4": + version: 3.0.4 + resolution: "no-case@npm:3.0.4" + dependencies: + lower-case: ^2.0.2 + tslib: ^2.0.3 + checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c + languageName: node + linkType: hard + "node-abi@npm:^3.3.0": version: 3.74.0 resolution: "node-abi@npm:3.74.0" @@ -34707,6 +36305,13 @@ __metadata: languageName: node linkType: hard +"node-domexception@npm:^1.0.0": + version: 1.0.0 + resolution: "node-domexception@npm:1.0.0" + checksum: ee1d37dd2a4eb26a8a92cd6b64dfc29caec72bff5e1ed9aba80c294f57a31ba4895a60fd48347cf17dd6e766da0ae87d75657dfd1f384ebfa60462c2283f5c7f + languageName: node + linkType: hard + "node-emoji@npm:1.11.0": version: 1.11.0 resolution: "node-emoji@npm:1.11.0" @@ -34744,6 +36349,17 @@ __metadata: languageName: node linkType: hard +"node-fetch@npm:^3.3.2": + version: 3.3.2 + resolution: "node-fetch@npm:3.3.2" + dependencies: + data-uri-to-buffer: ^4.0.0 + fetch-blob: ^3.1.4 + formdata-polyfill: ^4.0.10 + checksum: 06a04095a2ddf05b0830a0d5302699704d59bda3102894ea64c7b9d4c865ecdff2d90fd042df7f5bc40337266961cb6183dcc808ea4f3000d024f422b462da92 + languageName: node + linkType: hard + "node-forge@npm:1.3.1, node-forge@npm:^1.3.1": version: 1.3.1 resolution: "node-forge@npm:1.3.1" @@ -34921,6 +36537,13 @@ __metadata: languageName: node linkType: hard +"node-releases@npm:^2.0.19": + version: 2.0.19 + resolution: "node-releases@npm:2.0.19" + checksum: 917dbced519f48c6289a44830a0ca6dc944c3ee9243c468ebd8515a41c97c8b2c256edb7f3f750416bc37952cc9608684e6483c7b6c6f39f6bd8d86c52cfe658 + languageName: node + linkType: hard + "node-releases@npm:^2.0.6": version: 2.0.6 resolution: "node-releases@npm:2.0.6" @@ -35038,6 +36661,15 @@ __metadata: languageName: node linkType: hard +"normalize-path@npm:^2.1.1": + version: 2.1.1 + resolution: "normalize-path@npm:2.1.1" + dependencies: + remove-trailing-separator: ^1.0.1 + checksum: 7e9cbdcf7f5b8da7aa191fbfe33daf290cdcd8c038f422faf1b8a83c972bf7a6d94c5be34c4326cb00fb63bc0fd97d9fbcfaf2e5d6142332c2cd36d2e1b86cea + languageName: node + linkType: hard + "normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" @@ -35149,6 +36781,13 @@ __metadata: languageName: node linkType: hard +"nullthrows@npm:^1.1.1": + version: 1.1.1 + resolution: "nullthrows@npm:1.1.1" + checksum: 10806b92121253eb1b08ecf707d92480f5331ba8ae5b23fa3eb0548ad24196eb797ed47606153006568a5733ea9e528a3579f21421f7828e09e7756f4bdd386f + languageName: node + linkType: hard + "number-allocator@npm:^1.0.9": version: 1.0.14 resolution: "number-allocator@npm:1.0.14" @@ -35205,7 +36844,7 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4, object-assign@npm:^4.0.1, object-assign@npm:^4.1.1": +"object-assign@npm:^4, object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f @@ -35855,6 +37494,15 @@ __metadata: languageName: node linkType: hard +"p-limit@npm:3.1.0, p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: ^0.1.0 + checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 + languageName: node + linkType: hard + "p-limit@npm:^1.1.0": version: 1.3.0 resolution: "p-limit@npm:1.3.0" @@ -35873,15 +37521,6 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: ^0.1.0 - checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 - languageName: node - linkType: hard - "p-limit@npm:^6.2.0": version: 6.2.0 resolution: "p-limit@npm:6.2.0" @@ -36006,6 +37645,16 @@ __metadata: languageName: node linkType: hard +"param-case@npm:^3.0.4": + version: 3.0.4 + resolution: "param-case@npm:3.0.4" + dependencies: + dot-case: ^3.0.4 + tslib: ^2.0.3 + checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 + languageName: node + linkType: hard + "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" @@ -36084,6 +37733,17 @@ __metadata: languageName: node linkType: hard +"parse-filepath@npm:^1.0.2": + version: 1.0.2 + resolution: "parse-filepath@npm:1.0.2" + dependencies: + is-absolute: ^1.0.0 + map-cache: ^0.2.0 + path-root: ^0.1.1 + checksum: 6794c3f38d3921f0f7cc63fb1fb0c4d04cd463356ad389c8ce6726d3c50793b9005971f4138975a6d7025526058d5e65e9bfe634d0765e84c4e2571152665a69 + languageName: node + linkType: hard + "parse-headers@npm:^2.0.0": version: 2.0.5 resolution: "parse-headers@npm:2.0.5" @@ -36162,6 +37822,16 @@ __metadata: languageName: node linkType: hard +"pascal-case@npm:^3.1.2": + version: 3.1.2 + resolution: "pascal-case@npm:3.1.2" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e + languageName: node + linkType: hard + "passport-jwt@npm:^4.0.1": version: 4.0.1 resolution: "passport-jwt@npm:4.0.1" @@ -36223,6 +37893,16 @@ __metadata: languageName: node linkType: hard +"path-case@npm:^3.0.4": + version: 3.0.4 + resolution: "path-case@npm:3.0.4" + dependencies: + dot-case: ^3.0.4 + tslib: ^2.0.3 + checksum: 61de0526222629f65038a66f63330dd22d5b54014ded6636283e1d15364da38b3cf29e4433aa3f9d8b0dba407ae2b059c23b0104a34ee789944b1bc1c5c7e06d + languageName: node + linkType: hard + "path-exists@npm:^3.0.0": version: 3.0.0 resolution: "path-exists@npm:3.0.0" @@ -36272,6 +37952,22 @@ __metadata: languageName: node linkType: hard +"path-root-regex@npm:^0.1.0": + version: 0.1.2 + resolution: "path-root-regex@npm:0.1.2" + checksum: dcd75d1f8e93faabe35a58e875b0f636839b3658ff2ad8c289463c40bc1a844debe0dab73c3398ef9dc8f6ec6c319720aff390cf4633763ddcf3cf4b1bbf7e8b + languageName: node + linkType: hard + +"path-root@npm:^0.1.1": + version: 0.1.1 + resolution: "path-root@npm:0.1.1" + dependencies: + path-root-regex: ^0.1.0 + checksum: ff88aebfc1c59ace510cc06703d67692a11530989920427625e52b66a303ca9b3d4059b0b7d0b2a73248d1ad29bcb342b8b786ec00592f3101d38a45fd3b2e08 + languageName: node + linkType: hard + "path-scurry@npm:^1.10.0, path-scurry@npm:^1.10.1, path-scurry@npm:^1.6.1": version: 1.10.1 resolution: "path-scurry@npm:1.10.1" @@ -39055,6 +40751,17 @@ __metadata: languageName: node linkType: hard +"relay-runtime@npm:12.0.0": + version: 12.0.0 + resolution: "relay-runtime@npm:12.0.0" + dependencies: + "@babel/runtime": ^7.0.0 + fbjs: ^3.0.0 + invariant: ^2.2.4 + checksum: 51cdc8a5e04188982452ae4e7c6ac7d6375ee769130d24ce8e8f9cdd45aa7e11ecd68670f56e30dcee1b4974585e88ecce19e69a9868b80cda0db7678c3b8f0a + languageName: node + linkType: hard + "remark-gfm@npm:^4.0.0": version: 4.0.1 resolution: "remark-gfm@npm:4.0.1" @@ -39127,6 +40834,13 @@ __metadata: languageName: node linkType: hard +"remedial@npm:^1.0.7": + version: 1.0.8 + resolution: "remedial@npm:1.0.8" + checksum: 12df7c55eb92501d7f33cfe5f5ad12be13bb6ac0c53f494aaa9963d5a5155bb8be2143e8d5e17afa1a500ef5dc71d13642920d35350f2a31b65a9778afab6869 + languageName: node + linkType: hard + "remove-markdown@npm:^0.5.0": version: 0.5.0 resolution: "remove-markdown@npm:0.5.0" @@ -39134,6 +40848,20 @@ __metadata: languageName: node linkType: hard +"remove-trailing-separator@npm:^1.0.1": + version: 1.1.0 + resolution: "remove-trailing-separator@npm:1.1.0" + checksum: d3c20b5a2d987db13e1cca9385d56ecfa1641bae143b620835ac02a6b70ab88f68f117a0021838db826c57b31373d609d52e4f31aca75fc490c862732d595419 + languageName: node + linkType: hard + +"remove-trailing-spaces@npm:^1.0.6": + version: 1.0.9 + resolution: "remove-trailing-spaces@npm:1.0.9" + checksum: a1a839ca5f17298fe37236f0515f51f04ea2777882227b1c2e4856f65f0e061c5e44c2f57ffa4bf5f901ebb6b17d7873f475fa02aeafbbd52f77595872adf3d2 + languageName: node + linkType: hard + "repeat-string@npm:^1.6.1": version: 1.6.1 resolution: "repeat-string@npm:1.6.1" @@ -39224,6 +40952,13 @@ __metadata: languageName: node linkType: hard +"resolve-from@npm:5.0.0, resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf + languageName: node + linkType: hard + "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -39231,13 +40966,6 @@ __metadata: languageName: node linkType: hard -"resolve-from@npm:^5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf - languageName: node - linkType: hard - "resolve.exports@npm:^2.0.0": version: 2.0.2 resolution: "resolve.exports@npm:2.0.2" @@ -40149,6 +41877,13 @@ __metadata: languageName: node linkType: hard +"scuid@npm:^1.1.0": + version: 1.1.0 + resolution: "scuid@npm:1.1.0" + checksum: cd094ac3718b0070a222f9a499b280c698fdea10268cc163fa244421099544c1766dd893fdee0e2a8eba5d53ab9d0bcb11067bedff166665030fa6fda25a096b + languageName: node + linkType: hard + "section-matter@npm:^1.0.0": version: 1.0.0 resolution: "section-matter@npm:1.0.0" @@ -40276,6 +42011,17 @@ __metadata: languageName: node linkType: hard +"sentence-case@npm:^3.0.4": + version: 3.0.4 + resolution: "sentence-case@npm:3.0.4" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + upper-case-first: ^2.0.2 + checksum: 3cfe6c0143e649132365695706702d7f729f484fa7b25f43435876efe7af2478243eefb052bacbcce10babf9319fd6b5b6bc59b94c80a1c819bcbb40651465d5 + languageName: node + linkType: hard + "seq-queue@npm:^0.0.5": version: 0.0.5 resolution: "seq-queue@npm:0.0.5" @@ -40408,7 +42154,7 @@ __metadata: languageName: node linkType: hard -"setimmediate@npm:^1.0.4": +"setimmediate@npm:^1.0.4, setimmediate@npm:^1.0.5": version: 1.0.5 resolution: "setimmediate@npm:1.0.5" checksum: c9a6f2c5b51a2dabdc0247db9c46460152ffc62ee139f3157440bd48e7c59425093f42719ac1d7931f054f153e2d26cf37dfeb8da17a794a58198a2705e527fd @@ -40621,7 +42367,7 @@ __metadata: languageName: node linkType: hard -"shell-quote@npm:^1.8.1": +"shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.1": version: 1.8.2 resolution: "shell-quote@npm:1.8.2" checksum: 1e97b62ced1c4c5135015978ebf273bed1f425a68cf84163e83fbb0f34b3ff9471e656720dab2b7cbb4ae0f58998e686d17d166c28dfb3662acd009e8bd7faed @@ -40798,6 +42544,13 @@ __metadata: languageName: node linkType: hard +"signedsource@npm:^1.0.0": + version: 1.0.0 + resolution: "signedsource@npm:1.0.0" + checksum: 64b2c8d7a48de9009cfd3aff62bb7c88abf3b8e0421f17ebb1d7f5ca9cc9c3ad10f5a1e3ae6cd804e4e6121c87b668202ae9057065f058ddfbf34ea65f63945d + languageName: node + linkType: hard + "simple-concat@npm:^1.0.0": version: 1.0.1 resolution: "simple-concat@npm:1.0.1" @@ -40939,6 +42692,16 @@ __metadata: languageName: node linkType: hard +"snake-case@npm:^3.0.4": + version: 3.0.4 + resolution: "snake-case@npm:3.0.4" + dependencies: + dot-case: ^3.0.4 + tslib: ^2.0.3 + checksum: 0a7a79900bbb36f8aaa922cf111702a3647ac6165736d5dc96d3ef367efc50465cac70c53cd172c382b022dac72ec91710608e5393de71f76d7142e6fd80e8a3 + languageName: node + linkType: hard + "socks-proxy-agent@npm:^6.0.0": version: 6.2.1 resolution: "socks-proxy-agent@npm:6.2.1" @@ -41175,6 +42938,15 @@ __metadata: languageName: node linkType: hard +"sponge-case@npm:^1.0.1": + version: 1.0.1 + resolution: "sponge-case@npm:1.0.1" + dependencies: + tslib: ^2.0.3 + checksum: 64f53d930f63c5a9e59d4cae487c1ffa87d25eab682833b01d572cc885e7e3fdbad4f03409a41f03ecb27f1f8959432253eb48332c7007c3388efddb24ba2792 + languageName: node + linkType: hard + "sprintf-js@npm:^1.1.3": version: 1.1.3 resolution: "sprintf-js@npm:1.1.3" @@ -41474,6 +43246,13 @@ __metadata: languageName: node linkType: hard +"string-env-interpolation@npm:^1.0.1": + version: 1.0.1 + resolution: "string-env-interpolation@npm:1.0.1" + checksum: d126329587f635bee65300e4451e7352b9b67e03daeb62f006ca84244cac12a1f6e45176b018653ba0c3ec3b5d980f9ca59d2eeed99cf799501cdaa7f871dc6f + languageName: node + linkType: hard + "string-length@npm:^4.0.1": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -42177,6 +43956,15 @@ __metadata: languageName: node linkType: hard +"swap-case@npm:^2.0.2": + version: 2.0.2 + resolution: "swap-case@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: 6e21c9e1b3cd5735eb2af679a99ec3efc78a14e3d4d5e3fd594e254b91cfd37185b3d1c6e41b22f53a2cdf5d1b963ce30c0fe8b78337e3fd43d0137084670a5f + languageName: node + linkType: hard + "symbol-observable@npm:4.0.0": version: 4.0.0 resolution: "symbol-observable@npm:4.0.0" @@ -42191,6 +43979,17 @@ __metadata: languageName: node linkType: hard +"sync-fetch@npm:0.6.0-2": + version: 0.6.0-2 + resolution: "sync-fetch@npm:0.6.0-2" + dependencies: + node-fetch: ^3.3.2 + timeout-signal: ^2.0.0 + whatwg-mimetype: ^4.0.0 + checksum: 325988e32633affdc7c6dcababd5a6ed5a1e825f30eca55af4a44f877d4154ae5a9783351f82fd793de85d3105213a3f60a12411a4db25e7ae4be08581367252 + languageName: node + linkType: hard + "synchronous-promise@npm:^2.0.15": version: 2.0.15 resolution: "synchronous-promise@npm:2.0.15" @@ -42575,6 +44374,13 @@ __metadata: languageName: node linkType: hard +"timeout-signal@npm:^2.0.0": + version: 2.0.0 + resolution: "timeout-signal@npm:2.0.0" + checksum: 0e3a6fb7ce4912e890475fe268888dd31068814ed096b264b3748d57f5a63a323fa1a5c4ba3d7da4529fb5031ed1a69bf8edfe5fb709bd3eec79d72f9ee51cc9 + languageName: node + linkType: hard + "timers-browserify@npm:^2.0.4": version: 2.0.12 resolution: "timers-browserify@npm:2.0.12" @@ -42722,6 +44528,15 @@ __metadata: languageName: node linkType: hard +"title-case@npm:^3.0.3": + version: 3.0.3 + resolution: "title-case@npm:3.0.3" + dependencies: + tslib: ^2.0.3 + checksum: e8b7ea006b53cf3208d278455d9f1e22c409459d7f9878da324fa3b18cc0aef8560924c19c744e870394a5d9cddfdbe029ebae9875909ee7f4fc562e7cbfc53e + languageName: node + linkType: hard + "tldts-core@npm:^6.1.85": version: 6.1.85 resolution: "tldts-core@npm:6.1.85" @@ -43071,6 +44886,13 @@ __metadata: languageName: node linkType: hard +"ts-log@npm:^2.2.3": + version: 2.2.7 + resolution: "ts-log@npm:2.2.7" + checksum: c423a5eb54abb9471578902953814d3d0c88b3f237db016998f8998ecf982cb0f748bb8ebf93670eeba9b836ff0ce407d8065a340f3ab218ea7b9442c255b3d4 + languageName: node + linkType: hard + "ts-morph@npm:^13.0.2": version: 13.0.3 resolution: "ts-morph@npm:13.0.3" @@ -43211,7 +45033,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2, tslib@npm:^2.6.2, tslib@npm:^2.8.0": +"tslib@npm:2, tslib@npm:^2.0.3, tslib@npm:^2.6.2, tslib@npm:^2.6.3, tslib@npm:^2.8.0, tslib@npm:^2.8.1": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a @@ -43260,6 +45082,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:~2.6.0": + version: 2.6.3 + resolution: "tslib@npm:2.6.3" + checksum: 74fce0e100f1ebd95b8995fbbd0e6c91bdd8f4c35c00d4da62e285a3363aaa534de40a80db30ecfd388ed7c313c42d930ee0eaf108e8114214b180eec3dbe6f5 + languageName: node + linkType: hard + "tslog@npm:^4.9.2": version: 4.9.2 resolution: "tslog@npm:4.9.2" @@ -43860,6 +45689,15 @@ __metadata: languageName: node linkType: hard +"ua-parser-js@npm:^1.0.35": + version: 1.0.40 + resolution: "ua-parser-js@npm:1.0.40" + bin: + ua-parser-js: script/cli.js + checksum: ae555a33dc9395dd877e295d6adbf5634e047aad7c3358328830218f3ca3a6233e35848cd355465a7612f269860e8029984389282940c7a27c9af4dfcdbba8c3 + languageName: node + linkType: hard + "uc.micro@npm:^1.0.1, uc.micro@npm:^1.0.5": version: 1.0.6 resolution: "uc.micro@npm:1.0.6" @@ -43921,6 +45759,13 @@ __metadata: languageName: node linkType: hard +"unc-path-regex@npm:^0.1.2": + version: 0.1.2 + resolution: "unc-path-regex@npm:0.1.2" + checksum: a05fa2006bf4606051c10fc7968f08ce7b28fa646befafa282813aeb1ac1a56f65cb1b577ca7851af2726198d59475bb49b11776036257b843eaacee2860a4ec + languageName: node + linkType: hard + "undici-types@npm:~6.19.2": version: 6.19.8 resolution: "undici-types@npm:6.19.8" @@ -44085,6 +45930,15 @@ __metadata: languageName: node linkType: hard +"unixify@npm:^1.0.0": + version: 1.0.0 + resolution: "unixify@npm:1.0.0" + dependencies: + normalize-path: ^2.1.1 + checksum: 3be30e48579fc6c7390bd59b4ab9e745fede0c164dfb7351cf710bd1dbef8484b1441186205af6bcb13b731c0c88caf9b33459f7bf8c89e79c046e656ae433f0 + languageName: node + linkType: hard + "unpipe@npm:1.0.0, unpipe@npm:~1.0.0": version: 1.0.0 resolution: "unpipe@npm:1.0.0" @@ -44146,6 +46000,20 @@ __metadata: languageName: node linkType: hard +"update-browserslist-db@npm:^1.1.1": + version: 1.1.3 + resolution: "update-browserslist-db@npm:1.1.3" + dependencies: + escalade: ^3.2.0 + picocolors: ^1.1.1 + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 7b6d8d08c34af25ee435bccac542bedcb9e57c710f3c42421615631a80aa6dd28b0a81c9d2afbef53799d482fb41453f714b8a7a0a8003e3b4ec8fb1abb819af + languageName: node + linkType: hard + "update-input-width@npm:^1.2.2": version: 1.4.2 resolution: "update-input-width@npm:1.4.2" @@ -44162,6 +46030,15 @@ __metadata: languageName: node linkType: hard +"upper-case-first@npm:^2.0.2": + version: 2.0.2 + resolution: "upper-case-first@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: 4487db4701effe3b54ced4b3e4aa4d9ab06c548f97244d04aafb642eedf96a76d5a03cf5f38f10f415531d5792d1ac6e1b50f2a76984dc6964ad530f12876409 + languageName: node + linkType: hard + "upper-case@npm:^1.0.3, upper-case@npm:^1.1.0, upper-case@npm:^1.1.1": version: 1.1.3 resolution: "upper-case@npm:1.1.3" @@ -44169,6 +46046,15 @@ __metadata: languageName: node linkType: hard +"upper-case@npm:^2.0.2": + version: 2.0.2 + resolution: "upper-case@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: 508723a2b03ab90cf1d6b7e0397513980fab821cbe79c87341d0e96cedefadf0d85f9d71eac24ab23f526a041d585a575cfca120a9f920e44eb4f8a7cf89121c + languageName: node + linkType: hard + "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -44205,6 +46091,13 @@ __metadata: languageName: node linkType: hard +"urlpattern-polyfill@npm:^10.0.0": + version: 10.0.0 + resolution: "urlpattern-polyfill@npm:10.0.0" + checksum: 61d890f151ea4ecf34a3dcab32c65ad1f3cda857c9d154af198260c6e5b2ad96d024593409baaa6d4428dd1ab206c14799bf37fe011117ac93a6a44913ac5aa4 + languageName: node + linkType: hard + "use-callback-ref@npm:^1.2.3": version: 1.2.5 resolution: "use-callback-ref@npm:1.2.5" @@ -45035,6 +46928,13 @@ __metadata: languageName: node linkType: hard +"web-streams-polyfill@npm:^3.0.3": + version: 3.3.3 + resolution: "web-streams-polyfill@npm:3.3.3" + checksum: 21ab5ea08a730a2ef8023736afe16713b4f2023ec1c7085c16c8e293ee17ed085dff63a0ad8722da30c99c4ccbd4ccd1b2e79c861829f7ef2963d7de7004c2cb + languageName: node + linkType: hard + "web-vitals@npm:^4.2.0": version: 4.2.4 resolution: "web-vitals@npm:4.2.4" @@ -45471,6 +47371,13 @@ __metadata: languageName: node linkType: hard +"wonka@npm:^6.3.2": + version: 6.3.5 + resolution: "wonka@npm:6.3.5" + checksum: bd9f4330664ea971ddbc762275c081d5a635bcebd1c567211d43278b925f3394ad454bb33a0ef5e8beadfaad552cdbc92c018dfb96350f3895341998efa5f521 + languageName: node + linkType: hard + "word-wrap@npm:^1.2.3": version: 1.2.3 resolution: "word-wrap@npm:1.2.3" @@ -45572,7 +47479,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.18.0": +"ws@npm:^8.17.1, ws@npm:^8.18.0": version: 8.18.1 resolution: "ws@npm:8.18.1" peerDependencies: @@ -45789,6 +47696,13 @@ __metadata: languageName: node linkType: hard +"yaml-ast-parser@npm:^0.0.43": + version: 0.0.43 + resolution: "yaml-ast-parser@npm:0.0.43" + checksum: fb5df4c067b6ccbd00953a46faf6ff27f0e290d623c712dc41f330251118f110e22cfd184bbff498bd969cbcda3cd27e0f9d0adb9e6d90eb60ccafc0d8e28077 + languageName: node + linkType: hard + "yaml@npm:2.0.0-1": version: 2.0.0-1 resolution: "yaml@npm:2.0.0-1" @@ -45810,7 +47724,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.3.4": +"yaml@npm:^2.3.1, yaml@npm:^2.3.4": version: 2.7.1 resolution: "yaml@npm:2.7.1" bin: @@ -45877,7 +47791,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.3.1, yargs@npm:^17.6.2, yargs@npm:^17.7.1, yargs@npm:^17.7.2": +"yargs@npm:^17.0.0, yargs@npm:^17.3.1, yargs@npm:^17.6.2, yargs@npm:^17.7.1, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: