diff --git a/.changeset/lucky-cooks-glow.md b/.changeset/lucky-cooks-glow.md new file mode 100644 index 0000000000..a845151cc8 --- /dev/null +++ b/.changeset/lucky-cooks-glow.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/packages/shopify-app-remix/CHANGELOG.md b/packages/shopify-app-remix/CHANGELOG.md index 51dd03c34e..33243d2eb7 100644 --- a/packages/shopify-app-remix/CHANGELOG.md +++ b/packages/shopify-app-remix/CHANGELOG.md @@ -6,6 +6,8 @@ - 2473c85: Add new embedded authorization strategy relying on Shopify managed install and OAuth token exchange + :exclamation: For more information on how to enable this feature, see ["New Embedded Authorization Strategy"](./README.md#new-embedded-authorization-strategy) + ### Patch Changes - 35b74dd: Fixes a bug that was causing external redirects to fail in remix actions diff --git a/packages/shopify-app-remix/README.md b/packages/shopify-app-remix/README.md index 6f0ae55fa7..9c1e412381 100644 --- a/packages/shopify-app-remix/README.md +++ b/packages/shopify-app-remix/README.md @@ -174,6 +174,50 @@ Here are some guides to help you set up your app: You can also authenticate requests from surfaces other than the admin. To see all supported methods, see [the `shopify.authenticate` object documentation](https://shopify.dev/docs/api/shopify-app-remix/latest/authenticate). +### New embedded app authorization strategy + +> [!TIP] +> If you are building an embedded app, we **strongly** recommend using [Shopify managed installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation) +> with [token exchange](https://shopify.dev/docs/apps/auth/get-access-tokens/token-exchange) instead of the legacy authorization code grant flow. + +We've introduced a new installation and authorization strategy for **embedded apps** that +eliminates the redirects that were previously necessary. +It replaces the existing [installation and authorization code grant flow](https://shopify.dev/docs/apps/auth/get-access-tokens/authorization-code-grant). + +This is achieved by using [Shopify managed installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation) +to handle automatic app installations and scope updates, while utilizing +[token exchange](https://shopify.dev/docs/apps/auth/get-access-tokens/token-exchange) to retrieve an access token for +authenticated API access. + +##### Enabling this new strategy in your app + +> [!NOTE] +> Newly created Remix apps from the template after February 1st 2024 has this feature enabled by default. + +1. Enable [Shopify managed installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation) + by configuring your scopes [through the Shopify CLI](https://shopify.dev/docs/apps/tools/cli/configuration). +2. Enable the future flag `unstable_newEmbeddedAuthStrategy` in your app's server configuration file. + +```ts +// my-app/app/shopify.server.ts +const shopify = shopifyApp({ + ... + isEmbeddedApp: true, + future: { + unstable_newEmbeddedAuthStrategy: true, + } +}) + +``` + +3. Enjoy a smoother and faster app installation process. + +###### Learn more about: + +- [How token exchange works](https://shopify.dev/docs/apps/auth/get-access-tokens/token-exchange) +- [Using Shopify managed installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation) +- [Configuring access scopes through the Shopify CLI](https://shopify.dev/docs/apps/tools/cli/configuration) + ## Gotchas / Troubleshooting If you're experiencing unexpected behaviors when using this package, check our [app template's documentation](https://github.com/Shopify/shopify-app-template-remix#gotchas--troubleshooting) for the solution to common issues. diff --git a/packages/shopify-app-remix/docs/generated/generated_docs_data.json b/packages/shopify-app-remix/docs/generated/generated_docs_data.json index 7d94cf2021..24e955ba97 100644 --- a/packages/shopify-app-remix/docs/generated/generated_docs_data.json +++ b/packages/shopify-app-remix/docs/generated/generated_docs_data.json @@ -713,6 +713,14 @@ } ] }, + "SearchParams": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "SearchParams", + "value": "Record", + "description": "", + "members": [] + }, "HeaderParams": { "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", "syntaxKind": "TypeAliasDeclaration", @@ -728,115 +736,48 @@ "value": "GetRequestParams & {\n data: Record | string;\n}", "description": "" }, - "GraphQLClient": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLClient", - "description": "", - "params": [ - { - "name": "query", - "description": "", - "value": "Operation extends keyof Operations", - "filePath": "src/server/clients/types.ts" - }, - { - "name": "options", - "description": "", - "value": "GraphQLQueryOptions", - "isOptional": true, - "filePath": "src/server/clients/types.ts" - } - ], - "returns": { - "filePath": "src/server/clients/types.ts", - "description": "", - "name": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}", - "value": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}" - }, - "value": "export type GraphQLClient = <\n Operation extends keyof Operations,\n>(\n query: Operation,\n options?: GraphQLQueryOptions,\n) => Promise<\n ResponseWithType>>\n>;" + "AdminOperations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "AdminOperations", + "value": "AdminQueries & AdminMutations", + "description": "" }, - "GraphQLQueryOptions": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLQueryOptions", + "AdminQueries": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "AdminQueries", "description": "", "members": [ { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "variables", - "value": "ApiClientRequestOptions[\"variables\"]", - "description": "", - "isOptional": true - }, - { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "apiVersion", - "value": "ApiVersion", - "description": "", - "isOptional": true - }, - { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "headers", - "value": "{ [key: string]: any; }", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "tries", - "value": "number", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: number | symbol]", + "value": "never" } ], - "value": "export interface GraphQLQueryOptions<\n Operation extends keyof Operations,\n Operations extends AllOperations,\n> {\n variables?: ApiClientRequestOptions['variables'];\n apiVersion?: ApiVersion;\n headers?: {[key: string]: any};\n tries?: number;\n}" + "value": "export interface AdminQueries {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" }, - "ApiVersion": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "syntaxKind": "EnumDeclaration", - "name": "ApiVersion", - "value": "export declare enum ApiVersion {\n October22 = \"2022-10\",\n January23 = \"2023-01\",\n April23 = \"2023-04\",\n July23 = \"2023-07\",\n October23 = \"2023-10\",\n January24 = \"2024-01\",\n Unstable = \"unstable\"\n}", + "AdminMutations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "AdminMutations", + "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "October22", - "value": "2022-10" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "January23", - "value": "2023-01" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "April23", - "value": "2023-04" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "July23", - "value": "2023-07" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "October23", - "value": "2023-10" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "January24", - "value": "2024-01" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "Unstable", - "value": "unstable" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: number | symbol]", + "value": "never" } - ] + ], + "value": "export interface AdminMutations {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" }, "BillingContext": { "filePath": "src/server/authenticate/admin/billing/types.ts", @@ -2715,6 +2656,14 @@ } ] }, + "SearchParams": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "SearchParams", + "value": "Record", + "description": "", + "members": [] + }, "HeaderParams": { "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", "syntaxKind": "TypeAliasDeclaration", @@ -2730,115 +2679,48 @@ "value": "GetRequestParams & {\n data: Record | string;\n}", "description": "" }, - "GraphQLClient": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLClient", - "description": "", - "params": [ - { - "name": "query", - "description": "", - "value": "Operation extends keyof Operations", - "filePath": "src/server/clients/types.ts" - }, - { - "name": "options", - "description": "", - "value": "GraphQLQueryOptions", - "isOptional": true, - "filePath": "src/server/clients/types.ts" - } - ], - "returns": { - "filePath": "src/server/clients/types.ts", - "description": "", - "name": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}", - "value": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}" - }, - "value": "export type GraphQLClient = <\n Operation extends keyof Operations,\n>(\n query: Operation,\n options?: GraphQLQueryOptions,\n) => Promise<\n ResponseWithType>>\n>;" + "AdminOperations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "AdminOperations", + "value": "AdminQueries & AdminMutations", + "description": "" }, - "GraphQLQueryOptions": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLQueryOptions", + "AdminQueries": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "AdminQueries", "description": "", "members": [ { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "variables", - "value": "ApiClientRequestOptions[\"variables\"]", - "description": "", - "isOptional": true - }, - { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "apiVersion", - "value": "ApiVersion", - "description": "", - "isOptional": true - }, - { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "headers", - "value": "{ [key: string]: any; }", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "tries", - "value": "number", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: number | symbol]", + "value": "never" } ], - "value": "export interface GraphQLQueryOptions<\n Operation extends keyof Operations,\n Operations extends AllOperations,\n> {\n variables?: ApiClientRequestOptions['variables'];\n apiVersion?: ApiVersion;\n headers?: {[key: string]: any};\n tries?: number;\n}" + "value": "export interface AdminQueries {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" }, - "ApiVersion": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "syntaxKind": "EnumDeclaration", - "name": "ApiVersion", - "value": "export declare enum ApiVersion {\n October22 = \"2022-10\",\n January23 = \"2023-01\",\n April23 = \"2023-04\",\n July23 = \"2023-07\",\n October23 = \"2023-10\",\n January24 = \"2024-01\",\n Unstable = \"unstable\"\n}", + "AdminMutations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "AdminMutations", + "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "October22", - "value": "2022-10" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "January23", - "value": "2023-01" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "April23", - "value": "2023-04" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "July23", - "value": "2023-07" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "October23", - "value": "2023-10" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "January24", - "value": "2024-01" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "Unstable", - "value": "unstable" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: number | symbol]", + "value": "never" } - ] + ], + "value": "export interface AdminMutations {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" }, "StorefrontContext": { "filePath": "src/server/clients/storefront/types.ts", @@ -2866,6 +2748,49 @@ } ], "value": "export interface StorefrontContext {\n /**\n * Method for interacting with the Shopify Storefront GraphQL API\n *\n * If you're getting incorrect type hints in the Shopify template, follow [these instructions](https://github.com/Shopify/shopify-app-template-remix/tree/main#incorrect-graphql-hints).\n *\n * {@link https://shopify.dev/docs/api/storefront}\n *\n * @example\n * Querying the GraphQL API.\n * Use `storefront.graphql` to make query / mutation requests.\n * ```ts\n * // app/routes/**\\/.ts\n * import { json } from \"@remix-run/node\";\n * import { authenticate } from \"../shopify.server\";\n *\n * export async function action({ request }: ActionFunctionArgs) {\n * const { storefront } = await authenticate.public.appProxy(request);\n *\n * const response = await storefront.graphql(`{blogs(first: 10) { edges { node { id } } } }`);\n *\n * return json(await response.json());\n * }\n * ```\n */\n graphql: GraphQLClient;\n}" + }, + "StorefrontOperations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "StorefrontOperations", + "value": "StorefrontQueries & StorefrontMutations", + "description": "" + }, + "StorefrontQueries": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "StorefrontQueries", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: number | symbol]", + "value": "never" + } + ], + "value": "interface StorefrontQueries {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" + }, + "StorefrontMutations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "StorefrontMutations", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: number | symbol]", + "value": "never" + } + ], + "value": "interface StorefrontMutations {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" } } } @@ -3600,14 +3525,14 @@ { "filePath": "src/server/types.ts", "syntaxKind": "MethodSignature", - "name": "__@iterator@1657", + "name": "__@iterator@483", "value": "() => IterableIterator", "description": "Iterator" }, { "filePath": "src/server/types.ts", "syntaxKind": "PropertySignature", - "name": "__@unscopables@1659", + "name": "__@unscopables@485", "value": "{ [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; at?: boolean; }", "description": "Is an object whose properties have the value 'true' when they will be absent when used in a 'with' statement." }, @@ -4003,7 +3928,7 @@ "filePath": "src/server/authenticate/webhooks/types.ts", "syntaxKind": "TypeAliasDeclaration", "name": "WebhookAdminContext", - "value": "FeatureEnabled extends true\n ? AdminApiContext\n : LegacyWebhookAdminApiContext", + "value": "FeatureEnabled extends true\n ? AdminApiContext\n : LegacyWebhookAdminApiContext", "description": "" }, "AdminContext": { @@ -4297,6 +4222,14 @@ } ] }, + "SearchParams": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "SearchParams", + "value": "Record", + "description": "", + "members": [] + }, "HeaderParams": { "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", "syntaxKind": "TypeAliasDeclaration", @@ -4312,120 +4245,53 @@ "value": "GetRequestParams & {\n data: Record | string;\n}", "description": "" }, - "GraphQLClient": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLClient", + "AdminOperations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "AdminOperations", + "value": "AdminQueries & AdminMutations", + "description": "" + }, + "AdminQueries": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "AdminQueries", "description": "", - "params": [ + "members": [ { - "name": "query", - "description": "", - "value": "Operation extends keyof Operations", - "filePath": "src/server/clients/types.ts" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "name": "options", - "description": "", - "value": "GraphQLQueryOptions", - "isOptional": true, - "filePath": "src/server/clients/types.ts" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: number | symbol]", + "value": "never" } ], - "returns": { - "filePath": "src/server/clients/types.ts", - "description": "", - "name": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}", - "value": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}" - }, - "value": "export type GraphQLClient = <\n Operation extends keyof Operations,\n>(\n query: Operation,\n options?: GraphQLQueryOptions,\n) => Promise<\n ResponseWithType>>\n>;" + "value": "export interface AdminQueries {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" }, - "GraphQLQueryOptions": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLQueryOptions", + "AdminMutations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "AdminMutations", "description": "", "members": [ { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "variables", - "value": "ApiClientRequestOptions[\"variables\"]", - "description": "", - "isOptional": true - }, - { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "apiVersion", - "value": "ApiVersion", - "description": "", - "isOptional": true - }, - { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "headers", - "value": "{ [key: string]: any; }", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "tries", - "value": "number", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: number | symbol]", + "value": "never" } ], - "value": "export interface GraphQLQueryOptions<\n Operation extends keyof Operations,\n Operations extends AllOperations,\n> {\n variables?: ApiClientRequestOptions['variables'];\n apiVersion?: ApiVersion;\n headers?: {[key: string]: any};\n tries?: number;\n}" + "value": "export interface AdminMutations {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" }, - "ApiVersion": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "syntaxKind": "EnumDeclaration", - "name": "ApiVersion", - "value": "export declare enum ApiVersion {\n October22 = \"2022-10\",\n January23 = \"2023-01\",\n April23 = \"2023-04\",\n July23 = \"2023-07\",\n October23 = \"2023-10\",\n January24 = \"2024-01\",\n Unstable = \"unstable\"\n}", - "members": [ - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "October22", - "value": "2022-10" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "January23", - "value": "2023-01" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "April23", - "value": "2023-04" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "July23", - "value": "2023-07" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "October23", - "value": "2023-10" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "January24", - "value": "2024-01" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "Unstable", - "value": "unstable" - } - ] - }, - "BillingContext": { - "filePath": "src/server/authenticate/admin/billing/types.ts", - "name": "BillingContext", - "description": "", + "BillingContext": { + "filePath": "src/server/authenticate/admin/billing/types.ts", + "name": "BillingContext", + "description": "", "members": [ { "filePath": "src/server/authenticate/admin/billing/types.ts", @@ -5034,225 +4900,494 @@ ], "value": "export declare class RestClient {\n static config: ConfigInterface;\n static formatPaths: boolean;\n static LINK_HEADER_REGEXP: RegExp;\n static DEFAULT_LIMIT: string;\n static RETRY_WAIT_TIME: number;\n static readonly DEPRECATION_ALERT_DELAY = 300000;\n loggedDeprecations: Record;\n readonly client: AdminRestApiClient;\n readonly session: Session;\n readonly apiVersion: ApiVersion;\n constructor({ session, apiVersion }: RestClientParams);\n /**\n * Performs a GET request on the given path.\n */\n get(params: GetRequestParams): Promise>;\n /**\n * Performs a POST request on the given path.\n */\n post(params: PostRequestParams): Promise>;\n /**\n * Performs a PUT request on the given path.\n */\n put(params: PutRequestParams): Promise>;\n /**\n * Performs a DELETE request on the given path.\n */\n delete(params: DeleteRequestParams): Promise>;\n protected request(params: RequestParams): Promise>;\n private restClass;\n private buildRequestParams;\n private logDeprecations;\n}" }, - "RestRequestReturn": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", - "name": "RestRequestReturn", + "AdminRestApiClient": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "name": "AdminRestApiClient", "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "body", - "value": "T", + "name": "get", + "value": "(path: string, options?: GetRequestOptions) => Promise", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "headers", - "value": "Headers", + "name": "put", + "value": "(path: string, options?: PutRequestOptions) => Promise", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "pageInfo", - "value": "PageInfo", - "description": "", - "isOptional": true + "name": "post", + "value": "(path: string, options?: PostRequestOptions) => Promise", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "delete", + "value": "(path: string, options?: DeleteRequestOptions) => Promise", + "description": "" } ], - "value": "export interface RestRequestReturn {\n body: T;\n headers: Headers;\n pageInfo?: PageInfo;\n}" - }, - "Headers": { - "filePath": "../../node_modules/@shopify/shopify-api/runtime/http/types.d.ts", - "syntaxKind": "TypeAliasDeclaration", - "name": "Headers", - "value": "Record", - "description": "", - "members": [] + "value": "export interface AdminRestApiClient {\n get: (path: string, options?: GetRequestOptions) => ReturnType;\n put: (path: string, options?: PutRequestOptions) => ReturnType;\n post: (path: string, options?: PostRequestOptions) => ReturnType;\n delete: (path: string, options?: DeleteRequestOptions) => ReturnType;\n}" }, - "PageInfo": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", - "name": "PageInfo", + "GetRequestOptions": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "name": "GetRequestOptions", "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "limit", - "value": "string", - "description": "" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "fields", - "value": "string[]", + "name": "headers", + "value": "HeaderOptions", "description": "", "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "previousPageUrl", - "value": "string", + "name": "data", + "value": "string | Record", "description": "", "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "nextPageUrl", - "value": "string", + "name": "searchParams", + "value": "SearchParams", "description": "", "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "prevPage", - "value": "PageInfoParams", + "name": "retries", + "value": "number", "description": "", "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "nextPage", - "value": "PageInfoParams", + "name": "apiVersion", + "value": "string", "description": "", "isOptional": true } ], - "value": "export interface PageInfo {\n limit: string;\n fields?: string[];\n previousPageUrl?: string;\n nextPageUrl?: string;\n prevPage?: PageInfoParams;\n nextPage?: PageInfoParams;\n}" + "value": "export interface GetRequestOptions {\n headers?: HeaderOptions;\n data?: Record | string;\n searchParams?: SearchParams;\n retries?: number;\n apiVersion?: string;\n}" }, - "PageInfoParams": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", - "name": "PageInfoParams", + "HeaderOptions": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "HeaderOptions", + "value": "Record", + "description": "", + "members": [] + }, + "PutRequestOptions": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "name": "PutRequestOptions", "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "path", - "value": "string", + "name": "data", + "value": "string | Record", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "query", + "name": "headers", + "value": "HeaderOptions", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "searchParams", "value": "SearchParams", - "description": "" + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "retries", + "value": "number", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "apiVersion", + "value": "string", + "description": "", + "isOptional": true } ], - "value": "export interface PageInfoParams {\n path: string;\n query: SearchParams;\n}" + "value": "export interface PutRequestOptions extends PostRequestOptions {\n}" }, - "Shopify": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", - "name": "Shopify", + "PostRequestOptions": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "name": "PostRequestOptions", "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "config", - "value": "ConfigInterface", + "name": "data", + "value": "string | Record", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "clients", - "value": "ShopifyClients", - "description": "" + "name": "headers", + "value": "HeaderOptions", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "auth", - "value": "ShopifyAuth", - "description": "" + "name": "searchParams", + "value": "SearchParams", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "session", - "value": "ShopifySession", - "description": "" + "name": "retries", + "value": "number", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "utils", - "value": "ShopifyUtils", - "description": "" + "name": "apiVersion", + "value": "string", + "description": "", + "isOptional": true + } + ], + "value": "export interface PostRequestOptions extends GetRequestOptions {\n data: Required[\"data\"];\n}" + }, + "DeleteRequestOptions": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "name": "DeleteRequestOptions", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "headers", + "value": "HeaderOptions", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "webhooks", - "value": "ShopifyWebhooks", - "description": "" + "name": "data", + "value": "string | Record", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "billing", - "value": "ShopifyBilling", - "description": "" + "name": "searchParams", + "value": "SearchParams", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "logger", - "value": "ShopifyLogger", - "description": "" + "name": "retries", + "value": "number", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "rest", - "value": "Resources", - "description": "" + "name": "apiVersion", + "value": "string", + "description": "", + "isOptional": true } ], - "value": "export interface Shopify {\n config: ConfigInterface;\n clients: ShopifyClients;\n auth: ShopifyAuth;\n session: ShopifySession;\n utils: ShopifyUtils;\n webhooks: ShopifyWebhooks;\n billing: ShopifyBilling;\n logger: ShopifyLogger;\n rest: Resources;\n}" - }, - "ConfigInterface": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/base-types.d.ts", - "syntaxKind": "TypeAliasDeclaration", - "name": "ConfigInterface", - "value": "Omit & {\n apiKey: string;\n hostScheme: 'http' | 'https';\n scopes: AuthScopes;\n isCustomStoreApp: boolean;\n billing?: BillingConfig;\n logger: {\n log: LogFunction;\n level: LogSeverity;\n httpRequests: boolean;\n timestamps: boolean;\n };\n future: FutureFlagOptions;\n}", - "description": "" + "value": "export interface DeleteRequestOptions extends GetRequestOptions {\n}" }, - "Key": { - "filePath": "../../node_modules/@shopify/polaris/build/ts/src/types.d.ts", + "ApiVersion": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", "syntaxKind": "EnumDeclaration", - "name": "Key", - "value": "export declare enum Key {\n Backspace = 8,\n Tab = 9,\n Enter = 13,\n Shift = 16,\n Ctrl = 17,\n Alt = 18,\n Pause = 19,\n CapsLock = 20,\n Escape = 27,\n Space = 32,\n PageUp = 33,\n PageDown = 34,\n End = 35,\n Home = 36,\n LeftArrow = 37,\n UpArrow = 38,\n RightArrow = 39,\n DownArrow = 40,\n Insert = 45,\n Delete = 46,\n Key0 = 48,\n Key1 = 49,\n Key2 = 50,\n Key3 = 51,\n Key4 = 52,\n Key5 = 53,\n Key6 = 54,\n Key7 = 55,\n Key8 = 56,\n Key9 = 57,\n KeyA = 65,\n KeyB = 66,\n KeyC = 67,\n KeyD = 68,\n KeyE = 69,\n KeyF = 70,\n KeyG = 71,\n KeyH = 72,\n KeyI = 73,\n KeyJ = 74,\n KeyK = 75,\n KeyL = 76,\n KeyM = 77,\n KeyN = 78,\n KeyO = 79,\n KeyP = 80,\n KeyQ = 81,\n KeyR = 82,\n KeyS = 83,\n KeyT = 84,\n KeyU = 85,\n KeyV = 86,\n KeyW = 87,\n KeyX = 88,\n KeyY = 89,\n KeyZ = 90,\n LeftMeta = 91,\n RightMeta = 92,\n Select = 93,\n Numpad0 = 96,\n Numpad1 = 97,\n Numpad2 = 98,\n Numpad3 = 99,\n Numpad4 = 100,\n Numpad5 = 101,\n Numpad6 = 102,\n Numpad7 = 103,\n Numpad8 = 104,\n Numpad9 = 105,\n Multiply = 106,\n Add = 107,\n Subtract = 109,\n Decimal = 110,\n Divide = 111,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n NumLock = 144,\n ScrollLock = 145,\n Semicolon = 186,\n Equals = 187,\n Comma = 188,\n Dash = 189,\n Period = 190,\n ForwardSlash = 191,\n GraveAccent = 192,\n OpenBracket = 219,\n BackSlash = 220,\n CloseBracket = 221,\n SingleQuote = 222\n}", + "name": "ApiVersion", + "value": "export declare enum ApiVersion {\n October22 = \"2022-10\",\n January23 = \"2023-01\",\n April23 = \"2023-04\",\n July23 = \"2023-07\",\n October23 = \"2023-10\",\n January24 = \"2024-01\",\n Unstable = \"unstable\"\n}", "members": [ { - "filePath": "../../node_modules/@shopify/polaris/build/ts/src/types.d.ts", - "name": "Backspace", - "value": 8 + "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", + "name": "October22", + "value": "2022-10" }, { - "filePath": "../../node_modules/@shopify/polaris/build/ts/src/types.d.ts", - "name": "Tab", - "value": 9 + "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", + "name": "January23", + "value": "2023-01" }, { - "filePath": "../../node_modules/@shopify/polaris/build/ts/src/types.d.ts", - "name": "Enter", - "value": 13 + "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", + "name": "April23", + "value": "2023-04" }, { - "filePath": "../../node_modules/@shopify/polaris/build/ts/src/types.d.ts", - "name": "Shift", - "value": 16 - }, + "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", + "name": "July23", + "value": "2023-07" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", + "name": "October23", + "value": "2023-10" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", + "name": "January24", + "value": "2024-01" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", + "name": "Unstable", + "value": "unstable" + } + ] + }, + "RestRequestReturn": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "name": "RestRequestReturn", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "body", + "value": "T", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "headers", + "value": "Headers", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "pageInfo", + "value": "PageInfo", + "description": "", + "isOptional": true + } + ], + "value": "export interface RestRequestReturn {\n body: T;\n headers: Headers;\n pageInfo?: PageInfo;\n}" + }, + "PageInfo": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "name": "PageInfo", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "limit", + "value": "string", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "fields", + "value": "string[]", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "previousPageUrl", + "value": "string", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "nextPageUrl", + "value": "string", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "prevPage", + "value": "PageInfoParams", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "nextPage", + "value": "PageInfoParams", + "description": "", + "isOptional": true + } + ], + "value": "export interface PageInfo {\n limit: string;\n fields?: string[];\n previousPageUrl?: string;\n nextPageUrl?: string;\n prevPage?: PageInfoParams;\n nextPage?: PageInfoParams;\n}" + }, + "PageInfoParams": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "name": "PageInfoParams", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "path", + "value": "string", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "query", + "value": "SearchParams", + "description": "" + } + ], + "value": "export interface PageInfoParams {\n path: string;\n query: SearchParams;\n}" + }, + "Shopify": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "name": "Shopify", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "config", + "value": "ConfigInterface", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "clients", + "value": "ShopifyClients", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "auth", + "value": "ShopifyAuth", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "session", + "value": "ShopifySession", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "utils", + "value": "ShopifyUtils", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "webhooks", + "value": "ShopifyWebhooks", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "billing", + "value": "ShopifyBilling", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "logger", + "value": "ShopifyLogger", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "rest", + "value": "Resources", + "description": "" + } + ], + "value": "export interface Shopify {\n config: ConfigInterface;\n clients: ShopifyClients;\n auth: ShopifyAuth;\n session: ShopifySession;\n utils: ShopifyUtils;\n webhooks: ShopifyWebhooks;\n billing: ShopifyBilling;\n logger: ShopifyLogger;\n rest: Resources;\n}" + }, + "ConfigInterface": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/base-types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "ConfigInterface", + "value": "Omit & {\n apiKey: string;\n hostScheme: 'http' | 'https';\n scopes: AuthScopes;\n isCustomStoreApp: boolean;\n billing?: BillingConfig;\n logger: {\n log: LogFunction;\n level: LogSeverity;\n httpRequests: boolean;\n timestamps: boolean;\n };\n future: FutureFlagOptions;\n}", + "description": "" + }, + "Key": { + "filePath": "../../node_modules/@shopify/polaris/build/ts/src/types.d.ts", + "syntaxKind": "EnumDeclaration", + "name": "Key", + "value": "export declare enum Key {\n Backspace = 8,\n Tab = 9,\n Enter = 13,\n Shift = 16,\n Ctrl = 17,\n Alt = 18,\n Pause = 19,\n CapsLock = 20,\n Escape = 27,\n Space = 32,\n PageUp = 33,\n PageDown = 34,\n End = 35,\n Home = 36,\n LeftArrow = 37,\n UpArrow = 38,\n RightArrow = 39,\n DownArrow = 40,\n Insert = 45,\n Delete = 46,\n Key0 = 48,\n Key1 = 49,\n Key2 = 50,\n Key3 = 51,\n Key4 = 52,\n Key5 = 53,\n Key6 = 54,\n Key7 = 55,\n Key8 = 56,\n Key9 = 57,\n KeyA = 65,\n KeyB = 66,\n KeyC = 67,\n KeyD = 68,\n KeyE = 69,\n KeyF = 70,\n KeyG = 71,\n KeyH = 72,\n KeyI = 73,\n KeyJ = 74,\n KeyK = 75,\n KeyL = 76,\n KeyM = 77,\n KeyN = 78,\n KeyO = 79,\n KeyP = 80,\n KeyQ = 81,\n KeyR = 82,\n KeyS = 83,\n KeyT = 84,\n KeyU = 85,\n KeyV = 86,\n KeyW = 87,\n KeyX = 88,\n KeyY = 89,\n KeyZ = 90,\n LeftMeta = 91,\n RightMeta = 92,\n Select = 93,\n Numpad0 = 96,\n Numpad1 = 97,\n Numpad2 = 98,\n Numpad3 = 99,\n Numpad4 = 100,\n Numpad5 = 101,\n Numpad6 = 102,\n Numpad7 = 103,\n Numpad8 = 104,\n Numpad9 = 105,\n Multiply = 106,\n Add = 107,\n Subtract = 109,\n Decimal = 110,\n Divide = 111,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n NumLock = 144,\n ScrollLock = 145,\n Semicolon = 186,\n Equals = 187,\n Comma = 188,\n Dash = 189,\n Period = 190,\n ForwardSlash = 191,\n GraveAccent = 192,\n OpenBracket = 219,\n BackSlash = 220,\n CloseBracket = 221,\n SingleQuote = 222\n}", + "members": [ + { + "filePath": "../../node_modules/@shopify/polaris/build/ts/src/types.d.ts", + "name": "Backspace", + "value": 8 + }, + { + "filePath": "../../node_modules/@shopify/polaris/build/ts/src/types.d.ts", + "name": "Tab", + "value": 9 + }, + { + "filePath": "../../node_modules/@shopify/polaris/build/ts/src/types.d.ts", + "name": "Enter", + "value": 13 + }, + { + "filePath": "../../node_modules/@shopify/polaris/build/ts/src/types.d.ts", + "name": "Shift", + "value": 16 + }, { "filePath": "../../node_modules/@shopify/polaris/build/ts/src/types.d.ts", "name": "Ctrl", @@ -5871,39 +6006,201 @@ ], "value": "export declare class GraphqlClient {\n static config: ConfigInterface;\n readonly session: Session;\n readonly client: AdminApiClient;\n readonly apiVersion?: ApiVersion;\n constructor(params: GraphqlClientParams);\n query(params: GraphqlParams): Promise>;\n request(operation: Operation, options?: GraphqlQueryOptions): Promise : T>>;\n private graphqlClass;\n}" }, - "GraphqlParams": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "AdminApiClient": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", "syntaxKind": "TypeAliasDeclaration", - "name": "GraphqlParams", - "value": "Omit", - "description": "", - "members": [] - }, - "RequestReturn": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", - "name": "RequestReturn", + "name": "AdminApiClient", + "value": "ApiClient", "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", "syntaxKind": "PropertySignature", - "name": "body", - "value": "T", + "name": "config", + "value": "Readonly", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", "syntaxKind": "PropertySignature", - "name": "headers", - "value": "Headers", + "name": "getHeaders", + "value": "(headers?: Headers) => Headers", "description": "" - } - ], - "value": "export interface RequestReturn {\n body: T;\n headers: Headers;\n}" - }, - "GraphqlQueryOptions": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", - "name": "GraphqlQueryOptions", + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "getApiUrl", + "value": "(apiVersion?: string) => string", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "fetch", + "value": "ApiClientFetch", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "request", + "value": "ApiClientRequest", + "description": "" + } + ] + }, + "Readonly": { + "filePath": "../../node_modules/@shopify/polaris/build/ts/src/components/TextField/TextField.d.ts", + "name": "Readonly", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/polaris/build/ts/src/components/TextField/TextField.d.ts", + "syntaxKind": "PropertySignature", + "name": "readonly", + "value": "true", + "description": "", + "isOptional": true + } + ], + "value": "interface Readonly {\n readonly?: true;\n}" + }, + "ApiClientFetch": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "name": "ApiClientFetch", + "description": "", + "params": [ + { + "name": "params", + "description": "", + "value": "ApiClientRequestParams", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts" + } + ], + "returns": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "description": "", + "name": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}", + "value": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}" + }, + "value": "type ApiClientFetch = (...params: ApiClientRequestParams) => Promise>>>;" + }, + "ApiClientRequestParams": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "ApiClientRequestParams", + "value": "[\n operation: Operation,\n options?: ApiClientRequestOptions\n]", + "description": "", + "members": [ + { + "name": "[0]", + "value": "operation: Operation", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts" + }, + { + "name": "[1]", + "value": "options?: ApiClientRequestOptions", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts" + } + ] + }, + "ApiClientRequestOptions": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "ApiClientRequestOptions", + "value": "{\n apiVersion?: string;\n headers?: Headers;\n retries?: number;\n} & (Operation extends keyof Operations ? OperationVariables : {\n variables?: Record;\n})", + "description": "" + }, + "Headers": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "Headers", + "value": "Record", + "description": "", + "members": [] + }, + "OperationVariables": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "OperationVariables", + "value": "Operations[Operation][\"variables\"] extends Record ? Record : {\n variables?: {\n [k in keyof Operations[Operation][\"variables\"]]: UnpackedInputMaybe;\n };\n}", + "description": "" + }, + "UnpackedInputMaybe": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "UnpackedInputMaybe", + "value": "InputType extends InputMaybe ? InputMaybe> : UnpackedInput", + "description": "" + }, + "InputMaybe": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "InputMaybe", + "value": "never", + "description": "" + }, + "UnpackedInput": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "UnpackedInput", + "value": "\"input\" extends keyof InputType ? InputType[\"input\"] : InputType", + "description": "" + }, + "ApiClientRequest": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "name": "ApiClientRequest", + "description": "", + "params": [ + { + "name": "params", + "description": "", + "value": "ApiClientRequestParams", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts" + } + ], + "returns": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "description": "", + "name": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}", + "value": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}" + }, + "value": "type ApiClientRequest = (...params: ApiClientRequestParams) => Promise : TData>>;" + }, + "GraphqlParams": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "GraphqlParams", + "value": "Omit", + "description": "", + "members": [] + }, + "RequestReturn": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "name": "RequestReturn", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "body", + "value": "T", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "headers", + "value": "Headers", + "description": "" + } + ], + "value": "export interface RequestReturn {\n body: T;\n headers: Headers;\n}" + }, + "GraphqlQueryOptions": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "name": "GraphqlQueryOptions", "description": "", "members": [ { @@ -5933,6 +6230,93 @@ ], "value": "export interface GraphqlQueryOptions {\n variables?: ApiClientRequestOptions['variables'];\n headers?: Record;\n retries?: number;\n}" }, + "ClientResponse": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "name": "ClientResponse", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "errors", + "value": "ResponseErrors", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "data", + "value": "TData", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "extensions", + "value": "GQLExtensions", + "description": "", + "isOptional": true + } + ], + "value": "interface ClientResponse extends FetchResponseBody {\n errors?: ResponseErrors;\n}" + }, + "ResponseErrors": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "name": "ResponseErrors", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "networkStatusCode", + "value": "number", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "message", + "value": "string", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "graphQLErrors", + "value": "any[]", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "response", + "value": "Response", + "description": "", + "isOptional": true + } + ], + "value": "interface ResponseErrors {\n networkStatusCode?: number;\n message?: string;\n graphQLErrors?: any[];\n response?: Response;\n}" + }, + "GQLExtensions": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "GQLExtensions", + "value": "Record", + "description": "", + "members": [] + }, + "ReturnData": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "ReturnData", + "value": "Operation extends keyof Operations ? Operations[Operation][\"return\"] : any", + "description": "" + }, "StorefrontClient": { "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/storefront/client.d.ts", "name": "StorefrontClient", @@ -5976,6 +6360,93 @@ ], "value": "export declare class StorefrontClient {\n static config: ConfigInterface;\n readonly session: Session;\n readonly client: StorefrontApiClient;\n readonly apiVersion?: ApiVersion;\n constructor(params: GraphqlClientParams);\n query(params: GraphqlParams): Promise>;\n request(operation: Operation, options?: GraphqlQueryOptions): Promise : T>>;\n private storefrontClass;\n}" }, + "StorefrontApiClient": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "StorefrontApiClient", + "value": "ApiClient", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "config", + "value": "Readonly", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "getHeaders", + "value": "(headers?: Headers) => Headers", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "getApiUrl", + "value": "(apiVersion?: string) => string", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "fetch", + "value": "ApiClientFetch", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "request", + "value": "ApiClientRequest", + "description": "" + } + ] + }, + "StorefrontOperations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "StorefrontOperations", + "value": "StorefrontQueries & StorefrontMutations", + "description": "" + }, + "StorefrontQueries": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "StorefrontQueries", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: number | symbol]", + "value": "never" + } + ], + "value": "interface StorefrontQueries {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" + }, + "StorefrontMutations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "StorefrontMutations", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: number | symbol]", + "value": "never" + } + ], + "value": "interface StorefrontMutations {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" + }, "GraphqlProxy": { "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/graphql_proxy/types.d.ts", "name": "GraphqlProxy", @@ -8205,6 +8676,14 @@ } ] }, + "SearchParams": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "SearchParams", + "value": "Record", + "description": "", + "members": [] + }, "HeaderParams": { "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", "syntaxKind": "TypeAliasDeclaration", @@ -8220,115 +8699,48 @@ "value": "GetRequestParams & {\n data: Record | string;\n}", "description": "" }, - "GraphQLClient": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLClient", + "AdminOperations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "AdminOperations", + "value": "AdminQueries & AdminMutations", + "description": "" + }, + "AdminQueries": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "AdminQueries", "description": "", - "params": [ + "members": [ { - "name": "query", - "description": "", - "value": "Operation extends keyof Operations", - "filePath": "src/server/clients/types.ts" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "name": "options", - "description": "", - "value": "GraphQLQueryOptions", - "isOptional": true, - "filePath": "src/server/clients/types.ts" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: number | symbol]", + "value": "never" } ], - "returns": { - "filePath": "src/server/clients/types.ts", - "description": "", - "name": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}", - "value": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}" - }, - "value": "export type GraphQLClient = <\n Operation extends keyof Operations,\n>(\n query: Operation,\n options?: GraphQLQueryOptions,\n) => Promise<\n ResponseWithType>>\n>;" + "value": "export interface AdminQueries {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" }, - "GraphQLQueryOptions": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLQueryOptions", + "AdminMutations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "AdminMutations", "description": "", "members": [ { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "variables", - "value": "ApiClientRequestOptions[\"variables\"]", - "description": "", - "isOptional": true - }, - { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "apiVersion", - "value": "ApiVersion", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "headers", - "value": "{ [key: string]: any; }", - "description": "", - "isOptional": true - }, - { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "tries", - "value": "number", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: number | symbol]", + "value": "never" } ], - "value": "export interface GraphQLQueryOptions<\n Operation extends keyof Operations,\n Operations extends AllOperations,\n> {\n variables?: ApiClientRequestOptions['variables'];\n apiVersion?: ApiVersion;\n headers?: {[key: string]: any};\n tries?: number;\n}" - }, - "ApiVersion": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "syntaxKind": "EnumDeclaration", - "name": "ApiVersion", - "value": "export declare enum ApiVersion {\n October22 = \"2022-10\",\n January23 = \"2023-01\",\n April23 = \"2023-04\",\n July23 = \"2023-07\",\n October23 = \"2023-10\",\n January24 = \"2024-01\",\n Unstable = \"unstable\"\n}", - "members": [ - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "October22", - "value": "2022-10" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "January23", - "value": "2023-01" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "April23", - "value": "2023-04" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "July23", - "value": "2023-07" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "October23", - "value": "2023-10" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "January24", - "value": "2024-01" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "Unstable", - "value": "unstable" - } - ] + "value": "export interface AdminMutations {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" } } } @@ -8470,115 +8882,48 @@ ], "value": "export interface StorefrontContext {\n /**\n * Method for interacting with the Shopify Storefront GraphQL API\n *\n * If you're getting incorrect type hints in the Shopify template, follow [these instructions](https://github.com/Shopify/shopify-app-template-remix/tree/main#incorrect-graphql-hints).\n *\n * {@link https://shopify.dev/docs/api/storefront}\n *\n * @example\n * Querying the GraphQL API.\n * Use `storefront.graphql` to make query / mutation requests.\n * ```ts\n * // app/routes/**\\/.ts\n * import { json } from \"@remix-run/node\";\n * import { authenticate } from \"../shopify.server\";\n *\n * export async function action({ request }: ActionFunctionArgs) {\n * const { storefront } = await authenticate.public.appProxy(request);\n *\n * const response = await storefront.graphql(`{blogs(first: 10) { edges { node { id } } } }`);\n *\n * return json(await response.json());\n * }\n * ```\n */\n graphql: GraphQLClient;\n}" }, - "GraphQLClient": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLClient", - "description": "", - "params": [ - { - "name": "query", - "description": "", - "value": "Operation extends keyof Operations", - "filePath": "src/server/clients/types.ts" - }, - { - "name": "options", - "description": "", - "value": "GraphQLQueryOptions", - "isOptional": true, - "filePath": "src/server/clients/types.ts" - } - ], - "returns": { - "filePath": "src/server/clients/types.ts", - "description": "", - "name": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}", - "value": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}" - }, - "value": "export type GraphQLClient = <\n Operation extends keyof Operations,\n>(\n query: Operation,\n options?: GraphQLQueryOptions,\n) => Promise<\n ResponseWithType>>\n>;" + "StorefrontOperations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "StorefrontOperations", + "value": "StorefrontQueries & StorefrontMutations", + "description": "" }, - "GraphQLQueryOptions": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLQueryOptions", + "StorefrontQueries": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "StorefrontQueries", "description": "", "members": [ { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "variables", - "value": "ApiClientRequestOptions[\"variables\"]", - "description": "", - "isOptional": true - }, - { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "apiVersion", - "value": "ApiVersion", - "description": "", - "isOptional": true - }, - { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "headers", - "value": "{ [key: string]: any; }", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "tries", - "value": "number", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: number | symbol]", + "value": "never" } ], - "value": "export interface GraphQLQueryOptions<\n Operation extends keyof Operations,\n Operations extends AllOperations,\n> {\n variables?: ApiClientRequestOptions['variables'];\n apiVersion?: ApiVersion;\n headers?: {[key: string]: any};\n tries?: number;\n}" + "value": "interface StorefrontQueries {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" }, - "ApiVersion": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "syntaxKind": "EnumDeclaration", - "name": "ApiVersion", - "value": "export declare enum ApiVersion {\n October22 = \"2022-10\",\n January23 = \"2023-01\",\n April23 = \"2023-04\",\n July23 = \"2023-07\",\n October23 = \"2023-10\",\n January24 = \"2024-01\",\n Unstable = \"unstable\"\n}", + "StorefrontMutations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "StorefrontMutations", + "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "October22", - "value": "2022-10" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "January23", - "value": "2023-01" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "April23", - "value": "2023-04" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "July23", - "value": "2023-07" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "October23", - "value": "2023-10" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "January24", - "value": "2024-01" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "Unstable", - "value": "unstable" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: number | symbol]", + "value": "never" } - ] + ], + "value": "interface StorefrontMutations {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" } } } @@ -8652,7 +8997,7 @@ "name": "ShopifyApp>", "value": "ShopifyApp>" }, - "value": "export function shopifyApp<\n Config extends AppConfigArg,\n Resources extends ShopifyRestResources,\n Storage extends SessionStorage,\n>(appConfig: Config): ShopifyApp {\n const api = deriveApi(appConfig);\n const config = deriveConfig(appConfig, api.config);\n const logger = overrideLogger(api.logger);\n\n if (appConfig.webhooks) {\n api.webhooks.addHandlers(appConfig.webhooks);\n }\n\n const params: BasicParams = {api, config, logger};\n const oauth = new AuthCodeFlowStrategy(params);\n const authStrategy = authStrategyFactory({\n ...params,\n strategy: oauth,\n });\n\n const shopify:\n | AdminApp\n | AppStoreApp\n | SingleMerchantApp = {\n sessionStorage: config.sessionStorage,\n addDocumentResponseHeaders: addDocumentResponseHeadersFactory(params),\n registerWebhooks: registerWebhooksFactory(params),\n authenticate: {\n admin: authStrategy,\n public: authenticatePublicFactory(params),\n webhook: authenticateWebhookFactory<\n Config['future'],\n Resources,\n keyof Config['webhooks'] | MandatoryTopics\n >(params),\n },\n unauthenticated: {\n admin: unauthenticatedAdminContextFactory(params),\n storefront: unauthenticatedStorefrontContextFactory(params),\n },\n };\n\n if (\n isAppStoreApp(shopify, appConfig) ||\n isSingleMerchantApp(shopify, appConfig)\n ) {\n shopify.login = loginFactory(params);\n }\n\n return shopify as ShopifyApp;\n}", + "value": "export function shopifyApp<\n Config extends AppConfigArg,\n Resources extends ShopifyRestResources,\n Storage extends SessionStorage,\n>(appConfig: Config): ShopifyApp {\n const api = deriveApi(appConfig);\n const config = deriveConfig(appConfig, api.config);\n const logger = overrideLogger(api.logger);\n\n if (appConfig.webhooks) {\n api.webhooks.addHandlers(appConfig.webhooks);\n }\n\n const params: BasicParams = {api, config, logger};\n const authStrategy = authStrategyFactory({\n ...params,\n strategy:\n config.future.unstable_newEmbeddedAuthStrategy && config.isEmbeddedApp\n ? new TokenExchangeStrategy(params)\n : new AuthCodeFlowStrategy(params),\n });\n\n const shopify:\n | AdminApp\n | AppStoreApp\n | SingleMerchantApp = {\n sessionStorage: config.sessionStorage,\n addDocumentResponseHeaders: addDocumentResponseHeadersFactory(params),\n registerWebhooks: registerWebhooksFactory(params),\n authenticate: {\n admin: authStrategy,\n public: authenticatePublicFactory(params),\n webhook: authenticateWebhookFactory<\n Config['future'],\n Resources,\n keyof Config['webhooks'] | MandatoryTopics\n >(params),\n },\n unauthenticated: {\n admin: unauthenticatedAdminContextFactory(params),\n storefront: unauthenticatedStorefrontContextFactory(params),\n },\n };\n\n if (\n isAppStoreApp(shopify, appConfig) ||\n isSingleMerchantApp(shopify, appConfig)\n ) {\n shopify.login = loginFactory(params);\n }\n\n return shopify as ShopifyApp;\n}", "examples": [ { "title": "The minimum viable configuration", @@ -8897,386 +9242,108 @@ }, "WebhookConfig": { "filePath": "src/server/config-types.ts", + "syntaxKind": "TypeAliasDeclaration", "name": "WebhookConfig", + "value": "Record", + "description": "", + "members": [] + }, + "HooksConfig": { + "filePath": "src/server/config-types.ts", + "name": "HooksConfig", "description": "", "members": [ { "filePath": "src/server/config-types.ts", - "name": "[key: string]", - "value": "WebhookHandler | WebhookHandler[]" + "syntaxKind": "PropertySignature", + "name": "afterAuth", + "value": "(options: AfterAuthOptions) => void | Promise", + "description": "A function to call after a merchant installs your app", + "isOptional": true, + "examples": [ + { + "title": "Registering webhooks and seeding data when a merchant installs your app", + "description": "", + "tabs": [ + { + "code": "import { DeliveryMethod, shopifyApp } from \"@shopify/shopify-app-remix/server\";\nimport { seedStoreData } from \"~/db/seeds\"\n\nconst shopify = shopifyApp({\n hooks: {\n afterAuth: async ({ session }) => {\n shopify.registerWebhooks({ session });\n seedStoreData({session})\n }\n },\n webhooks: {\n APP_UNINSTALLED: {\n deliveryMethod: DeliveryMethod.Http,\n callbackUrl: \"/webhooks\",\n },\n },\n // ...etc\n});", + "title": "Example" + } + ] + } + ] } ], - "value": "export interface WebhookConfig {\n [key: string]: WebhookHandler | WebhookHandler[];\n}" - }, - "WebhookHandler": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "TypeAliasDeclaration", - "name": "WebhookHandler", - "value": "HttpWebhookHandler | HttpWebhookHandlerWithCallback | EventBridgeWebhookHandler | PubSubWebhookHandler", - "description": "" + "value": "interface HooksConfig {\n /**\n * A function to call after a merchant installs your app\n *\n * @param context - An object with context about the request that triggered the hook.\n * @param context.session - The session of the merchant that installed your app. This is the output of sessionStorage.loadSession in case people want to load their own.\n * @param context.admin - An object with access to the Shopify Admin API's.\n *\n * @example\n * Registering webhooks and seeding data when a merchant installs your app.\n * ```ts\n * import { DeliveryMethod, shopifyApp } from \"@shopify/shopify-app-remix/server\";\n * import { seedStoreData } from \"~/db/seeds\"\n *\n * const shopify = shopifyApp({\n * hooks: {\n * afterAuth: async ({ session }) => {\n * shopify.registerWebhooks({ session });\n * seedStoreData({session})\n * }\n * },\n * webhooks: {\n * APP_UNINSTALLED: {\n * deliveryMethod: DeliveryMethod.Http,\n * callbackUrl: \"/webhooks\",\n * },\n * },\n * // ...etc\n * });\n * ```\n */\n afterAuth?: (options: AfterAuthOptions) => void | Promise;\n}" }, - "HttpWebhookHandler": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "name": "HttpWebhookHandler", + "AfterAuthOptions": { + "filePath": "src/server/config-types.ts", + "name": "AfterAuthOptions", "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "filePath": "src/server/config-types.ts", "syntaxKind": "PropertySignature", - "name": "deliveryMethod", - "value": "DeliveryMethod.Http", + "name": "session", + "value": "Session", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "filePath": "src/server/config-types.ts", "syntaxKind": "PropertySignature", - "name": "callbackUrl", + "name": "admin", + "value": "AdminApiContext", + "description": "" + } + ], + "value": "export interface AfterAuthOptions<\n R extends ShopifyRestResources = ShopifyRestResources,\n> {\n session: Session;\n admin: AdminApiContext;\n}" + }, + "Session": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/session.d.ts", + "name": "Session", + "description": "Stores App information from logged in merchants so they can make authenticated requests to the Admin API.", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/session.d.ts", + "syntaxKind": "PropertyDeclaration", + "name": "id", "value": "string", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "id", + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/session.d.ts", + "syntaxKind": "PropertyDeclaration", + "name": "shop", "value": "string", - "description": "", - "isOptional": true + "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "includeFields", - "value": "string[]", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/session.d.ts", + "syntaxKind": "PropertyDeclaration", + "name": "state", + "value": "string", + "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "metafieldNamespaces", - "value": "string[]", - "description": "", - "isOptional": true - } - ], - "value": "export interface HttpWebhookHandler extends BaseWebhookHandler {\n deliveryMethod: DeliveryMethod.Http;\n callbackUrl: string;\n}" - }, - "DeliveryMethod": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "EnumDeclaration", - "name": "DeliveryMethod", - "value": "export declare enum DeliveryMethod {\n Http = \"http\",\n EventBridge = \"eventbridge\",\n PubSub = \"pubsub\"\n}", - "members": [ + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/session.d.ts", + "syntaxKind": "PropertyDeclaration", + "name": "isOnline", + "value": "boolean", + "description": "" + }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "name": "Http", - "value": "http" + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/session.d.ts", + "syntaxKind": "PropertyDeclaration", + "name": "scope", + "value": "string", + "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "name": "EventBridge", - "value": "eventbridge" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "name": "PubSub", - "value": "pubsub" - } - ] - }, - "HttpWebhookHandlerWithCallback": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "name": "HttpWebhookHandlerWithCallback", - "description": "", - "members": [ - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "callback", - "value": "WebhookHandlerFunction", - "description": "" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "deliveryMethod", - "value": "DeliveryMethod.Http", - "description": "" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "callbackUrl", - "value": "string", - "description": "" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "id", - "value": "string", - "description": "", - "isOptional": true - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "includeFields", - "value": "string[]", - "description": "", - "isOptional": true - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "metafieldNamespaces", - "value": "string[]", - "description": "", - "isOptional": true - } - ], - "value": "export interface HttpWebhookHandlerWithCallback extends HttpWebhookHandler {\n callback: WebhookHandlerFunction;\n}" - }, - "WebhookHandlerFunction": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "name": "WebhookHandlerFunction", - "description": "", - "params": [ - { - "name": "topic", - "description": "", - "value": "string", - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts" - }, - { - "name": "shop_domain", - "description": "", - "value": "string", - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts" - }, - { - "name": "body", - "description": "", - "value": "string", - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts" - }, - { - "name": "webhookId", - "description": "", - "value": "string", - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts" - }, - { - "name": "apiVersion", - "description": "", - "value": "string", - "isOptional": true, - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts" - } - ], - "returns": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "description": "", - "name": "Promise", - "value": "Promise" - }, - "value": "export type WebhookHandlerFunction = (topic: string, shop_domain: string, body: string, webhookId: string, apiVersion?: string) => Promise;" - }, - "EventBridgeWebhookHandler": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "name": "EventBridgeWebhookHandler", - "description": "", - "members": [ - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "deliveryMethod", - "value": "DeliveryMethod.EventBridge", - "description": "" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "arn", - "value": "string", - "description": "" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "id", - "value": "string", - "description": "", - "isOptional": true - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "includeFields", - "value": "string[]", - "description": "", - "isOptional": true - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "metafieldNamespaces", - "value": "string[]", - "description": "", - "isOptional": true - } - ], - "value": "export interface EventBridgeWebhookHandler extends BaseWebhookHandler {\n deliveryMethod: DeliveryMethod.EventBridge;\n arn: string;\n}" - }, - "PubSubWebhookHandler": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "name": "PubSubWebhookHandler", - "description": "", - "members": [ - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "deliveryMethod", - "value": "DeliveryMethod.PubSub", - "description": "" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "pubSubProject", - "value": "string", - "description": "" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "pubSubTopic", - "value": "string", - "description": "" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "id", - "value": "string", - "description": "", - "isOptional": true - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "includeFields", - "value": "string[]", - "description": "", - "isOptional": true - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "PropertySignature", - "name": "metafieldNamespaces", - "value": "string[]", - "description": "", - "isOptional": true - } - ], - "value": "export interface PubSubWebhookHandler extends BaseWebhookHandler {\n deliveryMethod: DeliveryMethod.PubSub;\n pubSubProject: string;\n pubSubTopic: string;\n}" - }, - "HooksConfig": { - "filePath": "src/server/config-types.ts", - "name": "HooksConfig", - "description": "", - "members": [ - { - "filePath": "src/server/config-types.ts", - "syntaxKind": "PropertySignature", - "name": "afterAuth", - "value": "(options: AfterAuthOptions) => void | Promise", - "description": "A function to call after a merchant installs your app", - "isOptional": true, - "examples": [ - { - "title": "Registering webhooks and seeding data when a merchant installs your app", - "description": "", - "tabs": [ - { - "code": "import { DeliveryMethod, shopifyApp } from \"@shopify/shopify-app-remix/server\";\nimport { seedStoreData } from \"~/db/seeds\"\n\nconst shopify = shopifyApp({\n hooks: {\n afterAuth: async ({ session }) => {\n shopify.registerWebhooks({ session });\n seedStoreData({session})\n }\n },\n webhooks: {\n APP_UNINSTALLED: {\n deliveryMethod: DeliveryMethod.Http,\n callbackUrl: \"/webhooks\",\n },\n },\n // ...etc\n});", - "title": "Example" - } - ] - } - ] - } - ], - "value": "interface HooksConfig {\n /**\n * A function to call after a merchant installs your app\n *\n * @param context - An object with context about the request that triggered the hook.\n * @param context.session - The session of the merchant that installed your app. This is the output of sessionStorage.loadSession in case people want to load their own.\n * @param context.admin - An object with access to the Shopify Admin API's.\n *\n * @example\n * Registering webhooks and seeding data when a merchant installs your app.\n * ```ts\n * import { DeliveryMethod, shopifyApp } from \"@shopify/shopify-app-remix/server\";\n * import { seedStoreData } from \"~/db/seeds\"\n *\n * const shopify = shopifyApp({\n * hooks: {\n * afterAuth: async ({ session }) => {\n * shopify.registerWebhooks({ session });\n * seedStoreData({session})\n * }\n * },\n * webhooks: {\n * APP_UNINSTALLED: {\n * deliveryMethod: DeliveryMethod.Http,\n * callbackUrl: \"/webhooks\",\n * },\n * },\n * // ...etc\n * });\n * ```\n */\n afterAuth?: (options: AfterAuthOptions) => void | Promise;\n}" - }, - "AfterAuthOptions": { - "filePath": "src/server/config-types.ts", - "name": "AfterAuthOptions", - "description": "", - "members": [ - { - "filePath": "src/server/config-types.ts", - "syntaxKind": "PropertySignature", - "name": "session", - "value": "Session", - "description": "" - }, - { - "filePath": "src/server/config-types.ts", - "syntaxKind": "PropertySignature", - "name": "admin", - "value": "AdminApiContext", - "description": "" - } - ], - "value": "export interface AfterAuthOptions<\n R extends ShopifyRestResources = ShopifyRestResources,\n> {\n session: Session;\n admin: AdminApiContext;\n}" - }, - "Session": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/session.d.ts", - "name": "Session", - "description": "Stores App information from logged in merchants so they can make authenticated requests to the Admin API.", - "members": [ - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/session.d.ts", - "syntaxKind": "PropertyDeclaration", - "name": "id", - "value": "string", - "description": "" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/session.d.ts", - "syntaxKind": "PropertyDeclaration", - "name": "shop", - "value": "string", - "description": "" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/session.d.ts", - "syntaxKind": "PropertyDeclaration", - "name": "state", - "value": "string", - "description": "" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/session.d.ts", - "syntaxKind": "PropertyDeclaration", - "name": "isOnline", - "value": "boolean", - "description": "" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/session.d.ts", - "syntaxKind": "PropertyDeclaration", - "name": "scope", - "value": "string", - "description": "" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/session.d.ts", - "syntaxKind": "PropertyDeclaration", - "name": "expires", - "value": "Date", - "description": "" + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/session.d.ts", + "syntaxKind": "PropertyDeclaration", + "name": "expires", + "value": "Date", + "description": "" }, { "filePath": "../../node_modules/@shopify/shopify-api/lib/session/session.d.ts", @@ -9676,6 +9743,14 @@ } ] }, + "SearchParams": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "SearchParams", + "value": "Record", + "description": "", + "members": [] + }, "HeaderParams": { "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", "syntaxKind": "TypeAliasDeclaration", @@ -9691,72 +9766,79 @@ "value": "GetRequestParams & {\n data: Record | string;\n}", "description": "" }, - "GraphQLClient": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLClient", + "AdminOperations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "AdminOperations", + "value": "AdminQueries & AdminMutations", + "description": "" + }, + "AdminQueries": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "AdminQueries", "description": "", - "params": [ + "members": [ { - "name": "query", - "description": "", - "value": "Operation extends keyof Operations", - "filePath": "src/server/clients/types.ts" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "name": "options", - "description": "", - "value": "GraphQLQueryOptions", - "isOptional": true, - "filePath": "src/server/clients/types.ts" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: number | symbol]", + "value": "never" } ], - "returns": { - "filePath": "src/server/clients/types.ts", - "description": "", - "name": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}", - "value": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}" - }, - "value": "export type GraphQLClient = <\n Operation extends keyof Operations,\n>(\n query: Operation,\n options?: GraphQLQueryOptions,\n) => Promise<\n ResponseWithType>>\n>;" + "value": "export interface AdminQueries {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" }, - "GraphQLQueryOptions": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLQueryOptions", + "AdminMutations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "AdminMutations", "description": "", "members": [ { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "variables", - "value": "ApiClientRequestOptions[\"variables\"]", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "apiVersion", - "value": "ApiVersion", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: number | symbol]", + "value": "never" + } + ], + "value": "export interface AdminMutations {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" + }, + "ShopifyRestResources": { + "filePath": "../../node_modules/@shopify/shopify-api/rest/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "ShopifyRestResources", + "value": "Record", + "description": "", + "members": [] + }, + "AppDistribution": { + "filePath": "src/server/types.ts", + "syntaxKind": "EnumDeclaration", + "name": "AppDistribution", + "value": "export enum AppDistribution {\n AppStore = 'app_store',\n SingleMerchant = 'single_merchant',\n ShopifyAdmin = 'shopify_admin',\n}", + "members": [ + { + "filePath": "src/server/types.ts", + "name": "AppStore", + "value": "app_store" }, { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "headers", - "value": "{ [key: string]: any; }", - "description": "", - "isOptional": true + "filePath": "src/server/types.ts", + "name": "SingleMerchant", + "value": "single_merchant" }, { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "tries", - "value": "number", - "description": "", - "isOptional": true + "filePath": "src/server/types.ts", + "name": "ShopifyAdmin", + "value": "shopify_admin" } - ], - "value": "export interface GraphQLQueryOptions<\n Operation extends keyof Operations,\n Operations extends AllOperations,\n> {\n variables?: ApiClientRequestOptions['variables'];\n apiVersion?: ApiVersion;\n headers?: {[key: string]: any};\n tries?: number;\n}" + ] }, "ApiVersion": { "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", @@ -9801,37 +9883,6 @@ } ] }, - "ShopifyRestResources": { - "filePath": "../../node_modules/@shopify/shopify-api/rest/types.d.ts", - "syntaxKind": "TypeAliasDeclaration", - "name": "ShopifyRestResources", - "value": "Record", - "description": "", - "members": [] - }, - "AppDistribution": { - "filePath": "src/server/types.ts", - "syntaxKind": "EnumDeclaration", - "name": "AppDistribution", - "value": "export enum AppDistribution {\n AppStore = 'app_store',\n SingleMerchant = 'single_merchant',\n ShopifyAdmin = 'shopify_admin',\n}", - "members": [ - { - "filePath": "src/server/types.ts", - "name": "AppStore", - "value": "app_store" - }, - { - "filePath": "src/server/types.ts", - "name": "SingleMerchant", - "value": "single_merchant" - }, - { - "filePath": "src/server/types.ts", - "name": "ShopifyAdmin", - "value": "shopify_admin" - } - ] - }, "BillingConfig": { "filePath": "../../node_modules/@shopify/shopify-api/lib/billing/types.d.ts", "syntaxKind": "TypeAliasDeclaration", @@ -9898,7 +9949,7 @@ "filePath": "src/server/types.ts", "syntaxKind": "TypeAliasDeclaration", "name": "ShopifyApp", - "value": "Config['distribution'] extends AppDistribution.ShopifyAdmin\n ? AdminApp\n : Config['distribution'] extends AppDistribution.SingleMerchant\n ? SingleMerchantApp\n : Config['distribution'] extends AppDistribution.AppStore\n ? AppStoreApp\n : AppStoreApp", + "value": "Config['distribution'] extends AppDistribution.ShopifyAdmin\n ? AdminApp\n : Config['distribution'] extends AppDistribution.SingleMerchant\n ? SingleMerchantApp\n : Config['distribution'] extends AppDistribution.AppStore\n ? AppStoreApp\n : AppStoreApp", "description": "An object your app can use to interact with Shopify.\n\nBy default, the app's distribution is `AppStore`." }, "AdminApp": { @@ -10050,14 +10101,6 @@ }, "value": "type AddDocumentResponseHeaders = (request: Request, headers: Headers) => void;" }, - "Headers": { - "filePath": "../../node_modules/@shopify/shopify-api/runtime/http/types.d.ts", - "syntaxKind": "TypeAliasDeclaration", - "name": "Headers", - "value": "Record", - "description": "", - "members": [] - }, "RegisterWebhooks": { "filePath": "src/server/types.ts", "name": "RegisterWebhooks", @@ -10073,10 +10116,10 @@ "returns": { "filePath": "src/server/types.ts", "description": "", - "name": "Promise", - "value": "Promise" + "name": "Promise", + "value": "Promise" }, - "value": "type RegisterWebhooks = (\n options: RegisterWebhooksOptions,\n) => Promise;" + "value": "type RegisterWebhooks = (\n options: RegisterWebhooksOptions,\n) => Promise;" }, "RegisterWebhooksOptions": { "filePath": "src/server/authenticate/webhooks/types.ts", @@ -11176,6 +11219,49 @@ ], "value": "export interface StorefrontContext {\n /**\n * Method for interacting with the Shopify Storefront GraphQL API\n *\n * If you're getting incorrect type hints in the Shopify template, follow [these instructions](https://github.com/Shopify/shopify-app-template-remix/tree/main#incorrect-graphql-hints).\n *\n * {@link https://shopify.dev/docs/api/storefront}\n *\n * @example\n * Querying the GraphQL API.\n * Use `storefront.graphql` to make query / mutation requests.\n * ```ts\n * // app/routes/**\\/.ts\n * import { json } from \"@remix-run/node\";\n * import { authenticate } from \"../shopify.server\";\n *\n * export async function action({ request }: ActionFunctionArgs) {\n * const { storefront } = await authenticate.public.appProxy(request);\n *\n * const response = await storefront.graphql(`{blogs(first: 10) { edges { node { id } } } }`);\n *\n * return json(await response.json());\n * }\n * ```\n */\n graphql: GraphQLClient;\n}" }, + "StorefrontOperations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "StorefrontOperations", + "value": "StorefrontQueries & StorefrontMutations", + "description": "" + }, + "StorefrontQueries": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "StorefrontQueries", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: number | symbol]", + "value": "never" + } + ], + "value": "interface StorefrontQueries {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" + }, + "StorefrontMutations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "StorefrontMutations", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: number | symbol]", + "value": "never" + } + ], + "value": "interface StorefrontMutations {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" + }, "AuthenticatePublicLegacy": { "filePath": "src/server/authenticate/public/types.ts", "syntaxKind": "TypeAliasDeclaration", @@ -11579,14 +11665,14 @@ { "filePath": "src/server/types.ts", "syntaxKind": "MethodSignature", - "name": "__@iterator@1657", + "name": "__@iterator@483", "value": "() => IterableIterator", "description": "Iterator" }, { "filePath": "src/server/types.ts", "syntaxKind": "PropertySignature", - "name": "__@unscopables@1659", + "name": "__@unscopables@485", "value": "{ [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; at?: boolean; }", "description": "Is an object whose properties have the value 'true' when they will be absent when used in a 'with' statement." }, @@ -11743,7 +11829,7 @@ "filePath": "src/server/authenticate/webhooks/types.ts", "syntaxKind": "TypeAliasDeclaration", "name": "WebhookAdminContext", - "value": "FeatureEnabled extends true\n ? AdminApiContext\n : LegacyWebhookAdminApiContext", + "value": "FeatureEnabled extends true\n ? AdminApiContext\n : LegacyWebhookAdminApiContext", "description": "" }, "LegacyWebhookAdminApiContext": { @@ -11752,85 +11838,319 @@ "description": "", "members": [ { - "filePath": "src/server/authenticate/webhooks/types.ts", + "filePath": "src/server/authenticate/webhooks/types.ts", + "syntaxKind": "PropertySignature", + "name": "rest", + "value": "RestClient & Resources", + "description": "A REST client." + }, + { + "filePath": "src/server/authenticate/webhooks/types.ts", + "syntaxKind": "PropertySignature", + "name": "graphql", + "value": "InstanceType", + "description": "A GraphQL client." + } + ], + "value": "export interface LegacyWebhookAdminApiContext<\n Resources extends ShopifyRestResources,\n> {\n /** A REST client. */\n rest: InstanceType & Resources;\n /** A GraphQL client. */\n graphql: InstanceType;\n}" + }, + "RestClient": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", + "name": "RestClient", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", + "syntaxKind": "PropertyDeclaration", + "name": "loggedDeprecations", + "value": "Record", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", + "syntaxKind": "PropertyDeclaration", + "name": "client", + "value": "AdminRestApiClient", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", + "syntaxKind": "PropertyDeclaration", + "name": "session", + "value": "Session", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", + "syntaxKind": "PropertyDeclaration", + "name": "apiVersion", + "value": "ApiVersion", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", + "syntaxKind": "MethodDeclaration", + "name": "get", + "value": "(params: GetRequestParams) => Promise>", + "description": "Performs a GET request on the given path." + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", + "syntaxKind": "MethodDeclaration", + "name": "post", + "value": "(params: PostRequestParams) => Promise>", + "description": "Performs a POST request on the given path." + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", + "syntaxKind": "MethodDeclaration", + "name": "put", + "value": "(params: PostRequestParams) => Promise>", + "description": "Performs a PUT request on the given path." + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", + "syntaxKind": "MethodDeclaration", + "name": "delete", + "value": "(params: GetRequestParams) => Promise>", + "description": "Performs a DELETE request on the given path." + } + ], + "value": "export declare class RestClient {\n static config: ConfigInterface;\n static formatPaths: boolean;\n static LINK_HEADER_REGEXP: RegExp;\n static DEFAULT_LIMIT: string;\n static RETRY_WAIT_TIME: number;\n static readonly DEPRECATION_ALERT_DELAY = 300000;\n loggedDeprecations: Record;\n readonly client: AdminRestApiClient;\n readonly session: Session;\n readonly apiVersion: ApiVersion;\n constructor({ session, apiVersion }: RestClientParams);\n /**\n * Performs a GET request on the given path.\n */\n get(params: GetRequestParams): Promise>;\n /**\n * Performs a POST request on the given path.\n */\n post(params: PostRequestParams): Promise>;\n /**\n * Performs a PUT request on the given path.\n */\n put(params: PutRequestParams): Promise>;\n /**\n * Performs a DELETE request on the given path.\n */\n delete(params: DeleteRequestParams): Promise>;\n protected request(params: RequestParams): Promise>;\n private restClass;\n private buildRequestParams;\n private logDeprecations;\n}" + }, + "AdminRestApiClient": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "name": "AdminRestApiClient", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "get", + "value": "(path: string, options?: GetRequestOptions) => Promise", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "put", + "value": "(path: string, options?: PutRequestOptions) => Promise", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "post", + "value": "(path: string, options?: PostRequestOptions) => Promise", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "delete", + "value": "(path: string, options?: DeleteRequestOptions) => Promise", + "description": "" + } + ], + "value": "export interface AdminRestApiClient {\n get: (path: string, options?: GetRequestOptions) => ReturnType;\n put: (path: string, options?: PutRequestOptions) => ReturnType;\n post: (path: string, options?: PostRequestOptions) => ReturnType;\n delete: (path: string, options?: DeleteRequestOptions) => ReturnType;\n}" + }, + "GetRequestOptions": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "name": "GetRequestOptions", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "headers", + "value": "HeaderOptions", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "data", + "value": "string | Record", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "searchParams", + "value": "SearchParams", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "retries", + "value": "number", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "apiVersion", + "value": "string", + "description": "", + "isOptional": true + } + ], + "value": "export interface GetRequestOptions {\n headers?: HeaderOptions;\n data?: Record | string;\n searchParams?: SearchParams;\n retries?: number;\n apiVersion?: string;\n}" + }, + "HeaderOptions": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "HeaderOptions", + "value": "Record", + "description": "", + "members": [] + }, + "PutRequestOptions": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "name": "PutRequestOptions", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "data", + "value": "string | Record", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "headers", + "value": "HeaderOptions", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "searchParams", + "value": "SearchParams", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "rest", - "value": "RestClient & Resources", - "description": "A REST client." + "name": "retries", + "value": "number", + "description": "", + "isOptional": true }, { - "filePath": "src/server/authenticate/webhooks/types.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", "syntaxKind": "PropertySignature", - "name": "graphql", - "value": "InstanceType", - "description": "A GraphQL client." + "name": "apiVersion", + "value": "string", + "description": "", + "isOptional": true } ], - "value": "export interface LegacyWebhookAdminApiContext<\n Resources extends ShopifyRestResources,\n> {\n /** A REST client. */\n rest: InstanceType & Resources;\n /** A GraphQL client. */\n graphql: InstanceType;\n}" + "value": "export interface PutRequestOptions extends PostRequestOptions {\n}" }, - "RestClient": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", - "name": "RestClient", + "PostRequestOptions": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "name": "PostRequestOptions", "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", - "syntaxKind": "PropertyDeclaration", - "name": "loggedDeprecations", - "value": "Record", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "data", + "value": "string | Record", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", - "syntaxKind": "PropertyDeclaration", - "name": "client", - "value": "AdminRestApiClient", - "description": "" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "headers", + "value": "HeaderOptions", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", - "syntaxKind": "PropertyDeclaration", - "name": "session", - "value": "Session", - "description": "" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "searchParams", + "value": "SearchParams", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", - "syntaxKind": "PropertyDeclaration", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "retries", + "value": "number", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", "name": "apiVersion", - "value": "ApiVersion", - "description": "" + "value": "string", + "description": "", + "isOptional": true + } + ], + "value": "export interface PostRequestOptions extends GetRequestOptions {\n data: Required[\"data\"];\n}" + }, + "DeleteRequestOptions": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "name": "DeleteRequestOptions", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "headers", + "value": "HeaderOptions", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", - "syntaxKind": "MethodDeclaration", - "name": "get", - "value": "(params: GetRequestParams) => Promise>", - "description": "Performs a GET request on the given path." + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "data", + "value": "string | Record", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", - "syntaxKind": "MethodDeclaration", - "name": "post", - "value": "(params: PostRequestParams) => Promise>", - "description": "Performs a POST request on the given path." + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "searchParams", + "value": "SearchParams", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", - "syntaxKind": "MethodDeclaration", - "name": "put", - "value": "(params: PostRequestParams) => Promise>", - "description": "Performs a PUT request on the given path." + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "retries", + "value": "number", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/rest/client.d.ts", - "syntaxKind": "MethodDeclaration", - "name": "delete", - "value": "(params: GetRequestParams) => Promise>", - "description": "Performs a DELETE request on the given path." + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "apiVersion", + "value": "string", + "description": "", + "isOptional": true } ], - "value": "export declare class RestClient {\n static config: ConfigInterface;\n static formatPaths: boolean;\n static LINK_HEADER_REGEXP: RegExp;\n static DEFAULT_LIMIT: string;\n static RETRY_WAIT_TIME: number;\n static readonly DEPRECATION_ALERT_DELAY = 300000;\n loggedDeprecations: Record;\n readonly client: AdminRestApiClient;\n readonly session: Session;\n readonly apiVersion: ApiVersion;\n constructor({ session, apiVersion }: RestClientParams);\n /**\n * Performs a GET request on the given path.\n */\n get(params: GetRequestParams): Promise>;\n /**\n * Performs a POST request on the given path.\n */\n post(params: PostRequestParams): Promise>;\n /**\n * Performs a PUT request on the given path.\n */\n put(params: PutRequestParams): Promise>;\n /**\n * Performs a DELETE request on the given path.\n */\n delete(params: DeleteRequestParams): Promise>;\n protected request(params: RequestParams): Promise>;\n private restClass;\n private buildRequestParams;\n private logDeprecations;\n}" + "value": "export interface DeleteRequestOptions extends GetRequestOptions {\n}" }, "RestRequestReturn": { "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/admin/types.d.ts", @@ -12599,6 +12919,168 @@ ], "value": "export declare class GraphqlClient {\n static config: ConfigInterface;\n readonly session: Session;\n readonly client: AdminApiClient;\n readonly apiVersion?: ApiVersion;\n constructor(params: GraphqlClientParams);\n query(params: GraphqlParams): Promise>;\n request(operation: Operation, options?: GraphqlQueryOptions): Promise : T>>;\n private graphqlClass;\n}" }, + "AdminApiClient": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "AdminApiClient", + "value": "ApiClient", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "config", + "value": "Readonly", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "getHeaders", + "value": "(headers?: Headers) => Headers", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "getApiUrl", + "value": "(apiVersion?: string) => string", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "fetch", + "value": "ApiClientFetch", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "request", + "value": "ApiClientRequest", + "description": "" + } + ] + }, + "Readonly": { + "filePath": "../../node_modules/@shopify/polaris/build/ts/src/components/TextField/TextField.d.ts", + "name": "Readonly", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/polaris/build/ts/src/components/TextField/TextField.d.ts", + "syntaxKind": "PropertySignature", + "name": "readonly", + "value": "true", + "description": "", + "isOptional": true + } + ], + "value": "interface Readonly {\n readonly?: true;\n}" + }, + "ApiClientFetch": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "name": "ApiClientFetch", + "description": "", + "params": [ + { + "name": "params", + "description": "", + "value": "ApiClientRequestParams", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts" + } + ], + "returns": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "description": "", + "name": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}", + "value": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}" + }, + "value": "type ApiClientFetch = (...params: ApiClientRequestParams) => Promise>>>;" + }, + "ApiClientRequestParams": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "ApiClientRequestParams", + "value": "[\n operation: Operation,\n options?: ApiClientRequestOptions\n]", + "description": "", + "members": [ + { + "name": "[0]", + "value": "operation: Operation", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts" + }, + { + "name": "[1]", + "value": "options?: ApiClientRequestOptions", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts" + } + ] + }, + "ApiClientRequestOptions": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "ApiClientRequestOptions", + "value": "{\n apiVersion?: string;\n headers?: Headers;\n retries?: number;\n} & (Operation extends keyof Operations ? OperationVariables : {\n variables?: Record;\n})", + "description": "" + }, + "Headers": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "Headers", + "value": "Record", + "description": "", + "members": [] + }, + "OperationVariables": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "OperationVariables", + "value": "Operations[Operation][\"variables\"] extends Record ? Record : {\n variables?: {\n [k in keyof Operations[Operation][\"variables\"]]: UnpackedInputMaybe;\n };\n}", + "description": "" + }, + "UnpackedInputMaybe": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "UnpackedInputMaybe", + "value": "InputType extends InputMaybe ? InputMaybe> : UnpackedInput", + "description": "" + }, + "InputMaybe": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "InputMaybe", + "value": "never", + "description": "" + }, + "UnpackedInput": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "UnpackedInput", + "value": "\"input\" extends keyof InputType ? InputType[\"input\"] : InputType", + "description": "" + }, + "ApiClientRequest": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "name": "ApiClientRequest", + "description": "", + "params": [ + { + "name": "params", + "description": "", + "value": "ApiClientRequestParams", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts" + } + ], + "returns": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "description": "", + "name": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}", + "value": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}" + }, + "value": "type ApiClientRequest = (...params: ApiClientRequestParams) => Promise : TData>>;" + }, "GraphqlParams": { "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", "syntaxKind": "TypeAliasDeclaration", @@ -12620,46 +13102,133 @@ "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "headers", + "value": "Headers", + "description": "" + } + ], + "value": "export interface RequestReturn {\n body: T;\n headers: Headers;\n}" + }, + "GraphqlQueryOptions": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "name": "GraphqlQueryOptions", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "variables", + "value": "ApiClientRequestOptions[\"variables\"]", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "headers", + "value": "Record", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "retries", + "value": "number", + "description": "", + "isOptional": true + } + ], + "value": "export interface GraphqlQueryOptions {\n variables?: ApiClientRequestOptions['variables'];\n headers?: Record;\n retries?: number;\n}" + }, + "ClientResponse": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "name": "ClientResponse", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "errors", + "value": "ResponseErrors", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "data", + "value": "TData", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", "syntaxKind": "PropertySignature", - "name": "headers", - "value": "Headers", - "description": "" + "name": "extensions", + "value": "GQLExtensions", + "description": "", + "isOptional": true } ], - "value": "export interface RequestReturn {\n body: T;\n headers: Headers;\n}" + "value": "interface ClientResponse extends FetchResponseBody {\n errors?: ResponseErrors;\n}" }, - "GraphqlQueryOptions": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", - "name": "GraphqlQueryOptions", + "ResponseErrors": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "name": "ResponseErrors", "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", "syntaxKind": "PropertySignature", - "name": "variables", - "value": "ApiClientRequestOptions[\"variables\"]", + "name": "networkStatusCode", + "value": "number", "description": "", "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", "syntaxKind": "PropertySignature", - "name": "headers", - "value": "Record", + "name": "message", + "value": "string", "description": "", "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", "syntaxKind": "PropertySignature", - "name": "retries", - "value": "number", + "name": "graphQLErrors", + "value": "any[]", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "response", + "value": "Response", "description": "", "isOptional": true } ], - "value": "export interface GraphqlQueryOptions {\n variables?: ApiClientRequestOptions['variables'];\n headers?: Record;\n retries?: number;\n}" + "value": "interface ResponseErrors {\n networkStatusCode?: number;\n message?: string;\n graphQLErrors?: any[];\n response?: Response;\n}" + }, + "GQLExtensions": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "GQLExtensions", + "value": "Record", + "description": "", + "members": [] + }, + "ReturnData": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/graphql-client/dist/graphql-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "ReturnData", + "value": "Operation extends keyof Operations ? Operations[Operation][\"return\"] : any", + "description": "" }, "StorefrontClient": { "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/storefront/client.d.ts", @@ -12704,6 +13273,50 @@ ], "value": "export declare class StorefrontClient {\n static config: ConfigInterface;\n readonly session: Session;\n readonly client: StorefrontApiClient;\n readonly apiVersion?: ApiVersion;\n constructor(params: GraphqlClientParams);\n query(params: GraphqlParams): Promise>;\n request(operation: Operation, options?: GraphqlQueryOptions): Promise : T>>;\n private storefrontClass;\n}" }, + "StorefrontApiClient": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "StorefrontApiClient", + "value": "ApiClient", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "config", + "value": "Readonly", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "getHeaders", + "value": "(headers?: Headers) => Headers", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "getApiUrl", + "value": "(apiVersion?: string) => string", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "fetch", + "value": "ApiClientFetch", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "PropertySignature", + "name": "request", + "value": "ApiClientRequest", + "description": "" + } + ] + }, "GraphqlProxy": { "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/graphql_proxy/types.d.ts", "name": "GraphqlProxy", @@ -13058,233 +13671,506 @@ "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "getCurrentId", + "value": "({ isOnline, ...adapterArgs }: GetCurrentSessionIdParams) => Promise", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "getOfflineId", + "value": "(shop: string) => string", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "getJwtSessionId", + "value": "(shop: string, userId: string) => string", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "decodeSessionToken", + "value": "(token: string, { checkAudience }?: DecodeSessionTokenOptions) => Promise", + "description": "" + } + ] + }, + "GetCurrentSessionIdParams": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/types.d.ts", + "name": "GetCurrentSessionIdParams", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "isOnline", + "value": "boolean", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "rawRequest", + "value": "AdapterRequest", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "rawResponse", + "value": "AdapterResponse", + "description": "", + "isOptional": true + } + ], + "value": "export interface GetCurrentSessionIdParams extends AdapterArgs {\n isOnline: boolean;\n}" + }, + "DecodeSessionTokenOptions": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/decode-session-token.d.ts", + "name": "DecodeSessionTokenOptions", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/session/decode-session-token.d.ts", + "syntaxKind": "PropertySignature", + "name": "checkAudience", + "value": "boolean", + "description": "", + "isOptional": true + } + ], + "value": "export interface DecodeSessionTokenOptions {\n checkAudience?: boolean;\n}" + }, + "ShopifyUtils": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "ShopifyUtils", + "value": "ReturnType", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "sanitizeShop", + "value": "(shop: string, throwOnInvalid?: boolean) => string", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "sanitizeHost", + "value": "(host: string, throwOnInvalid?: boolean) => string", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "validateHmac", + "value": "(query: AuthQuery, { signator }?: { signator: HMACSignator; }) => Promise", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "versionCompatible", + "value": "(referenceVersion: ApiVersion, currentVersion?: ApiVersion) => boolean", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "versionPriorTo", + "value": "(referenceVersion: ApiVersion, currentVersion?: ApiVersion) => boolean", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "shopAdminUrlToLegacyUrl", + "value": "(shopAdminUrl: string) => string", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "legacyUrlToShopAdminUrl", + "value": "(legacyAdminUrl: string) => string", + "description": "" + } + ] + }, + "AuthQuery": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/auth/oauth/types.d.ts", + "name": "AuthQuery", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/auth/oauth/types.d.ts", + "name": "[key: string]", + "value": "string | undefined" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/auth/oauth/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "hmac", + "value": "string", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/auth/oauth/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "signature", + "value": "string", + "description": "", + "isOptional": true + } + ], + "value": "export interface AuthQuery {\n [key: string]: string | undefined;\n hmac?: string;\n signature?: string;\n}" + }, + "HMACSignator": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/hmac-validator.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "HMACSignator", + "value": "'admin' | 'appProxy'", + "description": "" + }, + "ShopifyWebhooks": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/index.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "ShopifyWebhooks", + "value": "ReturnType", + "description": "", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "addHandlers", + "value": "(handlersToAdd: AddHandlersParams) => void", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/index.d.ts", + "syntaxKind": "PropertySignature", + "name": "getTopicsAdded", + "value": "() => string[]", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/index.d.ts", "syntaxKind": "PropertySignature", - "name": "getCurrentId", - "value": "({ isOnline, ...adapterArgs }: GetCurrentSessionIdParams) => Promise", + "name": "getHandlers", + "value": "(topic: string) => WebhookHandler[]", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/index.d.ts", "syntaxKind": "PropertySignature", - "name": "getOfflineId", - "value": "(shop: string) => string", + "name": "register", + "value": "({ session, }: RegisterParams) => Promise", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/index.d.ts", "syntaxKind": "PropertySignature", - "name": "getJwtSessionId", - "value": "(shop: string, userId: string) => string", + "name": "process", + "value": "({ rawBody, ...adapterArgs }: WebhookProcessParams) => Promise", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/index.d.ts", "syntaxKind": "PropertySignature", - "name": "decodeSessionToken", - "value": "(token: string, { checkAudience }?: DecodeSessionTokenOptions) => Promise", + "name": "validate", + "value": "({ rawBody, ...adapterArgs }: WebhookValidateParams) => Promise", "description": "" } ] }, - "GetCurrentSessionIdParams": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/types.d.ts", - "name": "GetCurrentSessionIdParams", + "AddHandlersParams": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "AddHandlersParams", + "value": "Record", + "description": "", + "members": [] + }, + "WebhookHandler": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "WebhookHandler", + "value": "HttpWebhookHandler | HttpWebhookHandlerWithCallback | EventBridgeWebhookHandler | PubSubWebhookHandler", + "description": "" + }, + "HttpWebhookHandler": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "name": "HttpWebhookHandler", "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "isOnline", - "value": "boolean", + "name": "deliveryMethod", + "value": "DeliveryMethod.Http", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "rawRequest", - "value": "AdapterRequest", + "name": "callbackUrl", + "value": "string", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "rawResponse", - "value": "AdapterResponse", + "name": "id", + "value": "string", "description": "", "isOptional": true - } - ], - "value": "export interface GetCurrentSessionIdParams extends AdapterArgs {\n isOnline: boolean;\n}" - }, - "DecodeSessionTokenOptions": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/decode-session-token.d.ts", - "name": "DecodeSessionTokenOptions", - "description": "", - "members": [ + }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/session/decode-session-token.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "checkAudience", - "value": "boolean", + "name": "includeFields", + "value": "string[]", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "metafieldNamespaces", + "value": "string[]", "description": "", "isOptional": true } ], - "value": "export interface DecodeSessionTokenOptions {\n checkAudience?: boolean;\n}" + "value": "export interface HttpWebhookHandler extends BaseWebhookHandler {\n deliveryMethod: DeliveryMethod.Http;\n callbackUrl: string;\n}" }, - "ShopifyUtils": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", - "syntaxKind": "TypeAliasDeclaration", - "name": "ShopifyUtils", - "value": "ReturnType", + "DeliveryMethod": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "syntaxKind": "EnumDeclaration", + "name": "DeliveryMethod", + "value": "export declare enum DeliveryMethod {\n Http = \"http\",\n EventBridge = \"eventbridge\",\n PubSub = \"pubsub\"\n}", + "members": [ + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "name": "Http", + "value": "http" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "name": "EventBridge", + "value": "eventbridge" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "name": "PubSub", + "value": "pubsub" + } + ] + }, + "HttpWebhookHandlerWithCallback": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "name": "HttpWebhookHandlerWithCallback", "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "sanitizeShop", - "value": "(shop: string, throwOnInvalid?: boolean) => string", + "name": "callback", + "value": "WebhookHandlerFunction", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "sanitizeHost", - "value": "(host: string, throwOnInvalid?: boolean) => string", + "name": "deliveryMethod", + "value": "DeliveryMethod.Http", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "validateHmac", - "value": "(query: AuthQuery, { signator }?: { signator: HMACSignator; }) => Promise", + "name": "callbackUrl", + "value": "string", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "versionCompatible", - "value": "(referenceVersion: ApiVersion, currentVersion?: ApiVersion) => boolean", - "description": "" + "name": "id", + "value": "string", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "versionPriorTo", - "value": "(referenceVersion: ApiVersion, currentVersion?: ApiVersion) => boolean", - "description": "" + "name": "includeFields", + "value": "string[]", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "shopAdminUrlToLegacyUrl", - "value": "(shopAdminUrl: string) => string", - "description": "" + "name": "metafieldNamespaces", + "value": "string[]", + "description": "", + "isOptional": true + } + ], + "value": "export interface HttpWebhookHandlerWithCallback extends HttpWebhookHandler {\n callback: WebhookHandlerFunction;\n}" + }, + "WebhookHandlerFunction": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "name": "WebhookHandlerFunction", + "description": "", + "params": [ + { + "name": "topic", + "description": "", + "value": "string", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/index.d.ts", - "syntaxKind": "PropertySignature", - "name": "legacyUrlToShopAdminUrl", - "value": "(legacyAdminUrl: string) => string", - "description": "" + "name": "shop_domain", + "description": "", + "value": "string", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts" + }, + { + "name": "body", + "description": "", + "value": "string", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts" + }, + { + "name": "webhookId", + "description": "", + "value": "string", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts" + }, + { + "name": "apiVersion", + "description": "", + "value": "string", + "isOptional": true, + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts" } - ] + ], + "returns": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "description": "", + "name": "Promise", + "value": "Promise" + }, + "value": "export type WebhookHandlerFunction = (topic: string, shop_domain: string, body: string, webhookId: string, apiVersion?: string) => Promise;" }, - "AuthQuery": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/auth/oauth/types.d.ts", - "name": "AuthQuery", + "EventBridgeWebhookHandler": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "name": "EventBridgeWebhookHandler", "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/auth/oauth/types.d.ts", - "name": "[key: string]", - "value": "string | undefined" + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "deliveryMethod", + "value": "DeliveryMethod.EventBridge", + "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/auth/oauth/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "hmac", + "name": "arn", + "value": "string", + "description": "" + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "id", "value": "string", "description": "", "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/auth/oauth/types.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "signature", - "value": "string", + "name": "includeFields", + "value": "string[]", + "description": "", + "isOptional": true + }, + { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "syntaxKind": "PropertySignature", + "name": "metafieldNamespaces", + "value": "string[]", "description": "", "isOptional": true } ], - "value": "export interface AuthQuery {\n [key: string]: string | undefined;\n hmac?: string;\n signature?: string;\n}" - }, - "HMACSignator": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/utils/hmac-validator.d.ts", - "syntaxKind": "TypeAliasDeclaration", - "name": "HMACSignator", - "value": "'admin' | 'appProxy'", - "description": "" + "value": "export interface EventBridgeWebhookHandler extends BaseWebhookHandler {\n deliveryMethod: DeliveryMethod.EventBridge;\n arn: string;\n}" }, - "ShopifyWebhooks": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/index.d.ts", - "syntaxKind": "TypeAliasDeclaration", - "name": "ShopifyWebhooks", - "value": "ReturnType", + "PubSubWebhookHandler": { + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", + "name": "PubSubWebhookHandler", "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "addHandlers", - "value": "(handlersToAdd: AddHandlersParams) => void", + "name": "deliveryMethod", + "value": "DeliveryMethod.PubSub", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "getTopicsAdded", - "value": "() => string[]", + "name": "pubSubProject", + "value": "string", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "getHandlers", - "value": "(topic: string) => WebhookHandler[]", + "name": "pubSubTopic", + "value": "string", "description": "" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "register", - "value": "({ session, }: RegisterParams) => Promise", - "description": "" + "name": "id", + "value": "string", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "process", - "value": "({ rawBody, ...adapterArgs }: WebhookProcessParams) => Promise", - "description": "" + "name": "includeFields", + "value": "string[]", + "description": "", + "isOptional": true }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/index.d.ts", + "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", "syntaxKind": "PropertySignature", - "name": "validate", - "value": "({ rawBody, ...adapterArgs }: WebhookValidateParams) => Promise", - "description": "" + "name": "metafieldNamespaces", + "value": "string[]", + "description": "", + "isOptional": true } - ] - }, - "AddHandlersParams": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", - "syntaxKind": "TypeAliasDeclaration", - "name": "AddHandlersParams", - "value": "Record", - "description": "", - "members": [] + ], + "value": "export interface PubSubWebhookHandler extends BaseWebhookHandler {\n deliveryMethod: DeliveryMethod.PubSub;\n pubSubProject: string;\n pubSubTopic: string;\n}" }, "RegisterParams": { "filePath": "../../node_modules/@shopify/shopify-api/lib/webhooks/types.d.ts", @@ -14442,28 +15328,39 @@ "type": "FutureFlags", "typeDefinitions": { "FutureFlags": { - "filePath": "../../node_modules/@shopify/shopify-api/future/flags.d.ts", + "filePath": "src/server/future/flags.ts", "name": "FutureFlags", "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/future/flags.d.ts", + "filePath": "src/server/future/flags.ts", "syntaxKind": "PropertySignature", - "name": "unstable_tokenExchange", + "name": "v3_webhookAdminContext", "value": "boolean", - "description": "", - "isOptional": true + "description": "When enabled, returns the same `admin` context (`AdminApiContext`) from `authenticate.webhook` that is returned from `authenticate.admin`.", + "isOptional": true, + "defaultValue": "false" }, { - "filePath": "../../node_modules/@shopify/shopify-api/future/flags.d.ts", + "filePath": "src/server/future/flags.ts", "syntaxKind": "PropertySignature", - "name": "unstable_lineItemBilling", + "name": "v3_authenticatePublic", "value": "boolean", - "description": "", - "isOptional": true + "description": "When enabled authenticate.public() will not work. Use authenticate.public.checkout() instead.", + "isOptional": true, + "defaultValue": "false" + }, + { + "filePath": "src/server/future/flags.ts", + "syntaxKind": "PropertySignature", + "name": "unstable_newEmbeddedAuthStrategy", + "value": "boolean", + "description": "When enabled, embedded apps will fetch access tokens via [token exchange](https://shopify.dev/docs/apps/auth/get-access-tokens/token-exchange/overview). This assumes the app has scopes declared for [Shopify managing installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation).\n\nLearn more about this [new embedded app auth strategy](https://shopify.dev/docs/api/shopify-app-remix#embedded-auth-strategy).", + "isOptional": true, + "defaultValue": "false" } ], - "value": "export interface FutureFlags {\n unstable_tokenExchange?: boolean;\n unstable_lineItemBilling?: boolean;\n}" + "value": "export interface FutureFlags {\n /**\n * When enabled, returns the same `admin` context (`AdminApiContext`) from `authenticate.webhook` that is returned from `authenticate.admin`.\n *\n * @default false\n */\n v3_webhookAdminContext?: boolean;\n\n /**\n * When enabled authenticate.public() will not work. Use authenticate.public.checkout() instead.\n *\n * @default false\n */\n v3_authenticatePublic?: boolean;\n\n /**\n * When enabled, embedded apps will fetch access tokens via [token exchange](https://shopify.dev/docs/apps/auth/get-access-tokens/token-exchange/overview).\n * This assumes the app has scopes declared for [Shopify managing installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation).\n *\n * Learn more about this [new embedded app auth strategy](https://shopify.dev/docs/api/shopify-app-remix#embedded-auth-strategy).\n *\n * @default false\n */\n unstable_newEmbeddedAuthStrategy?: boolean;\n}" } } } @@ -15143,6 +16040,14 @@ } ] }, + "SearchParams": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/rest/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "SearchParams", + "value": "Record", + "description": "", + "members": [] + }, "HeaderParams": { "filePath": "../../node_modules/@shopify/shopify-api/lib/clients/types.d.ts", "syntaxKind": "TypeAliasDeclaration", @@ -15158,115 +16063,48 @@ "value": "GetRequestParams & {\n data: Record | string;\n}", "description": "" }, - "GraphQLClient": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLClient", - "description": "", - "params": [ - { - "name": "query", - "description": "", - "value": "Operation extends keyof Operations", - "filePath": "src/server/clients/types.ts" - }, - { - "name": "options", - "description": "", - "value": "GraphQLQueryOptions", - "isOptional": true, - "filePath": "src/server/clients/types.ts" - } - ], - "returns": { - "filePath": "src/server/clients/types.ts", - "description": "", - "name": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}", - "value": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}" - }, - "value": "export type GraphQLClient = <\n Operation extends keyof Operations,\n>(\n query: Operation,\n options?: GraphQLQueryOptions,\n) => Promise<\n ResponseWithType>>\n>;" + "AdminOperations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "AdminOperations", + "value": "AdminQueries & AdminMutations", + "description": "" }, - "GraphQLQueryOptions": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLQueryOptions", + "AdminQueries": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "AdminQueries", "description": "", "members": [ { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "variables", - "value": "ApiClientRequestOptions[\"variables\"]", - "description": "", - "isOptional": true - }, - { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "apiVersion", - "value": "ApiVersion", - "description": "", - "isOptional": true - }, - { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "headers", - "value": "{ [key: string]: any; }", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "tries", - "value": "number", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: number | symbol]", + "value": "never" } ], - "value": "export interface GraphQLQueryOptions<\n Operation extends keyof Operations,\n Operations extends AllOperations,\n> {\n variables?: ApiClientRequestOptions['variables'];\n apiVersion?: ApiVersion;\n headers?: {[key: string]: any};\n tries?: number;\n}" + "value": "export interface AdminQueries {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" }, - "ApiVersion": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "syntaxKind": "EnumDeclaration", - "name": "ApiVersion", - "value": "export declare enum ApiVersion {\n October22 = \"2022-10\",\n January23 = \"2023-01\",\n April23 = \"2023-04\",\n July23 = \"2023-07\",\n October23 = \"2023-10\",\n January24 = \"2024-01\",\n Unstable = \"unstable\"\n}", + "AdminMutations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "AdminMutations", + "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "October22", - "value": "2022-10" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "January23", - "value": "2023-01" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "April23", - "value": "2023-04" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "July23", - "value": "2023-07" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "October23", - "value": "2023-10" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "January24", - "value": "2024-01" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "Unstable", - "value": "unstable" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/admin-api-client/dist/ts/graphql/types.d.ts", + "name": "[key: number | symbol]", + "value": "never" } - ] + ], + "value": "export interface AdminMutations {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" } } } @@ -15715,115 +16553,48 @@ ], "value": "export interface StorefrontContext {\n /**\n * Method for interacting with the Shopify Storefront GraphQL API\n *\n * If you're getting incorrect type hints in the Shopify template, follow [these instructions](https://github.com/Shopify/shopify-app-template-remix/tree/main#incorrect-graphql-hints).\n *\n * {@link https://shopify.dev/docs/api/storefront}\n *\n * @example\n * Querying the GraphQL API.\n * Use `storefront.graphql` to make query / mutation requests.\n * ```ts\n * // app/routes/**\\/.ts\n * import { json } from \"@remix-run/node\";\n * import { authenticate } from \"../shopify.server\";\n *\n * export async function action({ request }: ActionFunctionArgs) {\n * const { storefront } = await authenticate.public.appProxy(request);\n *\n * const response = await storefront.graphql(`{blogs(first: 10) { edges { node { id } } } }`);\n *\n * return json(await response.json());\n * }\n * ```\n */\n graphql: GraphQLClient;\n}" }, - "GraphQLClient": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLClient", - "description": "", - "params": [ - { - "name": "query", - "description": "", - "value": "Operation extends keyof Operations", - "filePath": "src/server/clients/types.ts" - }, - { - "name": "options", - "description": "", - "value": "GraphQLQueryOptions", - "isOptional": true, - "filePath": "src/server/clients/types.ts" - } - ], - "returns": { - "filePath": "src/server/clients/types.ts", - "description": "", - "name": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}", - "value": "interface Promise {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise;\n\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise;\n}, interface Promise {}, Promise: PromiseConstructor, interface Promise {\n readonly [Symbol.toStringTag]: string;\n}, interface Promise {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise;\n}" - }, - "value": "export type GraphQLClient = <\n Operation extends keyof Operations,\n>(\n query: Operation,\n options?: GraphQLQueryOptions,\n) => Promise<\n ResponseWithType>>\n>;" + "StorefrontOperations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "syntaxKind": "TypeAliasDeclaration", + "name": "StorefrontOperations", + "value": "StorefrontQueries & StorefrontMutations", + "description": "" }, - "GraphQLQueryOptions": { - "filePath": "src/server/clients/types.ts", - "name": "GraphQLQueryOptions", + "StorefrontQueries": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "StorefrontQueries", "description": "", "members": [ { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "variables", - "value": "ApiClientRequestOptions[\"variables\"]", - "description": "", - "isOptional": true - }, - { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "apiVersion", - "value": "ApiVersion", - "description": "", - "isOptional": true - }, - { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "headers", - "value": "{ [key: string]: any; }", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "filePath": "src/server/clients/types.ts", - "syntaxKind": "PropertySignature", - "name": "tries", - "value": "number", - "description": "", - "isOptional": true + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: number | symbol]", + "value": "never" } ], - "value": "export interface GraphQLQueryOptions<\n Operation extends keyof Operations,\n Operations extends AllOperations,\n> {\n variables?: ApiClientRequestOptions['variables'];\n apiVersion?: ApiVersion;\n headers?: {[key: string]: any};\n tries?: number;\n}" + "value": "interface StorefrontQueries {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" }, - "ApiVersion": { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "syntaxKind": "EnumDeclaration", - "name": "ApiVersion", - "value": "export declare enum ApiVersion {\n October22 = \"2022-10\",\n January23 = \"2023-01\",\n April23 = \"2023-04\",\n July23 = \"2023-07\",\n October23 = \"2023-10\",\n January24 = \"2024-01\",\n Unstable = \"unstable\"\n}", + "StorefrontMutations": { + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "StorefrontMutations", + "description": "", "members": [ { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "October22", - "value": "2022-10" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "January23", - "value": "2023-01" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "April23", - "value": "2023-04" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "July23", - "value": "2023-07" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "October23", - "value": "2023-10" - }, - { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "January24", - "value": "2024-01" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: string]", + "value": "{\n variables: any;\n return: any;\n }" }, { - "filePath": "../../node_modules/@shopify/shopify-api/lib/types.d.ts", - "name": "Unstable", - "value": "unstable" + "filePath": "../../node_modules/@shopify/shopify-api/node_modules/@shopify/storefront-api-client/dist/storefront-api-client.d.ts", + "name": "[key: number | symbol]", + "value": "never" } - ] + ], + "value": "interface StorefrontMutations {\n [key: string]: {\n variables: any;\n return: any;\n };\n [key: number | symbol]: never;\n}" } } } diff --git a/packages/shopify-app-remix/docs/generated/generated_static_pages.json b/packages/shopify-app-remix/docs/generated/generated_static_pages.json index 820614e730..31436aa471 100644 --- a/packages/shopify-app-remix/docs/generated/generated_static_pages.json +++ b/packages/shopify-app-remix/docs/generated/generated_static_pages.json @@ -163,6 +163,12 @@ "value": "", "description": "Returns the same `admin` context (`AdminApiContext`) from `authenticate.webhook` that is returned from `authenticate.admin`.\n\nSee [authenticate.webhook](/docs/api/shopify-app-remix/authenticate/webhook#example-admin) for more details.", "isOptional": true + }, + { + "name": "unstable_newEmbeddedAuthStrategy", + "value": "", + "description": "Embedded apps will fetch access tokens via token exchange. This assumes the app has declared scopes for Shopify managed installations.\n\nLearn more about this [new embedded app auth strategy](https://shopify.dev/docs/api/shopify-app-remix#embedded-auth-strategy).", + "isOptional": true } ] } @@ -416,7 +422,7 @@ "type": "Generic", "anchorLink": "auth-route", "title": "OAuth route", - "sectionContent": "To install an app or refresh tokens, you'll need to set up an [OAuth](docs/apps/auth/oauth) route. To do that, set up a [splat route](https://remix.run/docs/en/main/guides/routing#splats) that calls `authenticate.admin`.\n\nWhen that function is called, the package will start the OAuth process, and handle the callback from Shopify after it completes.\n\nThe default route is `/app/routes/auth/$.tsx`, but you can configure this route using the `authPathPrefix` option.", + "sectionContent": "> Tip: This is only applicable to non-embedded apps or legacy embedded apps that are **not** using the [new embedded app authorization strategy](#embedded-auth-strategy) for OAuth and installation flow. If you're building an embedded app, we **strongly** recommend using the [new embedded app authorization strategy](#embedded-auth-strategy)\n\nTo install an app or refresh tokens, you'll need to set up an [OAuth](docs/apps/auth/oauth) route. To do that, set up a [splat route](https://remix.run/docs/en/main/guides/routing#splats) that calls `authenticate.admin`.\n\nWhen that function is called, the package will start the OAuth process, and handle the callback from Shopify after it completes.\n\nThe default route is `/app/routes/auth/$.tsx`, but you can configure this route using the `authPathPrefix` option.", "codeblock": { "title": "Add OAuth route", "tabs": [ @@ -428,6 +434,22 @@ ] } }, + { + "type": "Generic", + "anchorLink": "embedded-auth-strategy", + "title": "New embedded app authorization strategy", + "sectionContent": "> Tip: This is available for embedded apps that are using [Shopify managed installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation).\n> If you're building an embedded app, we **strongly** recommend using this feature that utilizes Shopify managed install with [token exchange](https://shopify.dev/docs/apps/auth/get-access-tokens/token-exchange).\n\n We have introduced a new authorization and installation strategy for **embedded apps** that eliminates the redirects that were previously necessary. It replaces the legacy [authorization Code install and grant flow](https://shopify.dev/docs/apps/auth/get-access-tokens/authorization-code-grant).\n\nIt takes advantage of [Shopify managed installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation) to handle automatic app installations and scope updates, while using [token exchange](https://shopify.dev/docs/apps/auth/get-access-tokens/token-exchange) to get an access token for the logged-in user.\n\n > Note: Newly created Remix apps from the template after February 1st 2024 has this feature enabled by default.\n\n1. Enable [Shopify managed installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation) by configuring your scopes [through the Shopify CLI](https://shopify.dev/docs/apps/tools/cli/configuration).\n2. Enable the future flag `unstable_newEmbeddedAuthStrategy` in your app's server configuration file.\n3. Enjoy no-redirect OAuth flow, and app installation process.", + "codeblock": { + "title": "Enabling the new embedded auth strategy", + "tabs": [ + { + "title": "/app/shopify.server.ts", + "language": "ts", + "code": "// ... imports\nconst shopify = shopifyApp({\n // .. and the rest of the config\n isEmbeddedApp: true,\n future: {\n unstable_newEmbeddedAuthStrategy: true,\n },\n)};\n\n// ... exports\n" + } + ] + } + }, { "type": "Generic", "anchorLink": "app-provider", @@ -515,4 +537,4 @@ } ] } -] \ No newline at end of file +] diff --git a/packages/shopify-app-remix/docs/staticPages/examples/index/embedded-app-auth-strategy-config.example.ts b/packages/shopify-app-remix/docs/staticPages/examples/index/embedded-app-auth-strategy-config.example.ts new file mode 100644 index 0000000000..4c3d2a9a61 --- /dev/null +++ b/packages/shopify-app-remix/docs/staticPages/examples/index/embedded-app-auth-strategy-config.example.ts @@ -0,0 +1,10 @@ +// ... imports +const shopify = shopifyApp({ + // .. and the rest of the config + isEmbeddedApp: true, + future: { + unstable_newEmbeddedAuthStrategy: true, + }, +)}; + +// ... exports diff --git a/packages/shopify-app-remix/docs/staticPages/future-flags.doc.ts b/packages/shopify-app-remix/docs/staticPages/future-flags.doc.ts index 26b1e56155..93a1fbbb5c 100644 --- a/packages/shopify-app-remix/docs/staticPages/future-flags.doc.ts +++ b/packages/shopify-app-remix/docs/staticPages/future-flags.doc.ts @@ -70,6 +70,14 @@ const data: LandingTemplateSchema = { '\n\nSee [authenticate.webhook](/docs/api/shopify-app-remix/authenticate/webhook#example-admin) for more details.', isOptional: true, }, + { + name: 'unstable_newEmbeddedAuthStrategy', + value: '', + description: + 'Embedded apps will fetch access tokens via token exchange. This assumes the app has declared scopes for Shopify managed installations.' + + '\n\nLearn more about this [new embedded app auth strategy](https://shopify.dev/docs/api/shopify-app-remix#embedded-auth-strategy).', + isOptional: true, + }, ], }, ], diff --git a/packages/shopify-app-remix/docs/staticPages/index.doc.ts b/packages/shopify-app-remix/docs/staticPages/index.doc.ts index 4a0dd634bd..6652f75b25 100644 --- a/packages/shopify-app-remix/docs/staticPages/index.doc.ts +++ b/packages/shopify-app-remix/docs/staticPages/index.doc.ts @@ -138,7 +138,9 @@ const data: LandingTemplateSchema = { anchorLink: 'auth-route', title: 'OAuth route', sectionContent: - "To install an app or refresh tokens, you'll need to set up an [OAuth](docs/apps/auth/oauth) route. To do that, set up a [splat route](https://remix.run/docs/en/main/guides/routing#splats) that calls `authenticate.admin`." + + "> Tip: This is only applicable to non-embedded apps or legacy embedded apps that are **not** using the [new embedded app authorization strategy](#embedded-auth-strategy) for OAuth and installation flow. If you're building an embedded app, we **strongly** recommend using the" + + " [new embedded app authorization strategy](#embedded-auth-strategy)" + + "\n\nTo install an app or refresh tokens, you'll need to set up an [OAuth](docs/apps/auth/oauth) route. To do that, set up a [splat route](https://remix.run/docs/en/main/guides/routing#splats) that calls `authenticate.admin`." + '\n\nWhen that function is called, the package will start the OAuth process, and handle the callback from Shopify after it completes.' + '\n\nThe default route is `/app/routes/auth/$.tsx`, but you can configure this route using the `authPathPrefix` option.', codeblock: { @@ -152,6 +154,35 @@ const data: LandingTemplateSchema = { ], }, }, + { + type: 'Generic', + anchorLink: 'embedded-auth-strategy', + title: 'New embedded app authorization strategy', + sectionContent: + "> Tip: This is available for embedded apps that are using [Shopify managed installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation)." + + "\n> If you're building an embedded app, we **strongly** recommend using this feature that utilizes Shopify managed install with [token exchange](https://shopify.dev/docs/apps/auth/get-access-tokens/token-exchange)." + + "\n\n We have introduced a new authorization and installation strategy for **embedded apps** that eliminates the redirects that were previously necessary." + + " It replaces the legacy [authorization Code install and grant flow](https://shopify.dev/docs/apps/auth/get-access-tokens/authorization-code-grant)." + + "\n\nIt takes advantage of [Shopify managed installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation)" + + " to handle automatic app installations and scope updates, while using" + + " [token exchange](https://shopify.dev/docs/apps/auth/get-access-tokens/token-exchange) to get an access token for the logged-in user." + + "\n\n > Note: Newly created Remix apps from the template after February 1st 2024 has this feature enabled by default." + + "\n\n1. Enable [Shopify managed installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation)" + + " by configuring your scopes [through the Shopify CLI](https://shopify.dev/docs/apps/tools/cli/configuration)." + + "\n2. Enable the future flag `unstable_newEmbeddedAuthStrategy` in your app's server configuration file." + + "\n3. Enjoy no-redirect OAuth flow, and app installation process.", + codeblock: { + title: 'Enabling the new embedded auth strategy', + tabs: [ + { + title: '/app/shopify.server.ts', + language: 'ts', + code: './examples/index/embedded-app-auth-strategy-config.example.ts', + + } + ], + } + }, { type: 'Generic', anchorLink: 'app-provider', diff --git a/packages/shopify-app-remix/src/server/future/flags.ts b/packages/shopify-app-remix/src/server/future/flags.ts index e8d75841ea..894c876e85 100644 --- a/packages/shopify-app-remix/src/server/future/flags.ts +++ b/packages/shopify-app-remix/src/server/future/flags.ts @@ -16,7 +16,10 @@ export interface FutureFlags { v3_authenticatePublic?: boolean; /** - * When enabled, embedded apps will fetch access tokens via token exchange. This assumes app are using declarative scopes with Shopify managing installs. + * When enabled, embedded apps will fetch access tokens via [token exchange](https://shopify.dev/docs/apps/auth/get-access-tokens/token-exchange). + * This assumes the app has scopes declared for [Shopify managing installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation). + * + * Learn more about this [new embedded app auth strategy](https://shopify.dev/docs/api/shopify-app-remix#embedded-auth-strategy). * * @default false */ diff --git a/packages/shopify-app-remix/src/server/shopify-app.doc.ts b/packages/shopify-app-remix/src/server/shopify-app.doc.ts index eb8f1594d6..fc87d8ab7c 100644 --- a/packages/shopify-app-remix/src/server/shopify-app.doc.ts +++ b/packages/shopify-app-remix/src/server/shopify-app.doc.ts @@ -20,6 +20,7 @@ const data: ReferenceEntityTemplateSchema = { 'Set future flags using the `future` configuration field to opt in to upcoming breaking changes.' + '\n\nWith this feature, you can prepare for major releases ahead of time, as well as try out new features before they are released.', type: 'FutureFlags', + filePath: 'src/server/future/flags.ts', }, ], jsDocTypeExamples: [