diff --git a/framework/shopify/codegen.json b/framework/shopify/codegen.json new file mode 100644 index 000000000..f0a757142 --- /dev/null +++ b/framework/shopify/codegen.json @@ -0,0 +1,32 @@ +{ + "schema": { + "https://${NEXT_PUBLIC_SHOPIFY_STORE_DOMAIN}/api/2021-01/graphql.json": { + "headers": { + "X-Shopify-Storefront-Access-Token": "${NEXT_PUBLIC_SHOPIFY_STOREFRONT_ACCESS_TOKEN}" + } + } + }, + "documents": [ + { + "./framework/shopify/**/*.{ts,tsx}": { + "noRequire": true + } + } + ], + "generates": { + "./framework/shopify/schema.d.ts": { + "plugins": ["typescript", "typescript-operations"], + "config": { + "scalars": { + "ID": "string" + } + } + }, + "./framework/shopify/schema.graphql": { + "plugins": ["schema-ast"] + } + }, + "hooks": { + "afterAllFileWrite": ["prettier --write"] + } +} diff --git a/framework/shopify/schema.d.ts b/framework/shopify/schema.d.ts index b1b23a3e5..12fa96d1c 100644 --- a/framework/shopify/schema.d.ts +++ b/framework/shopify/schema.d.ts @@ -306,17 +306,17 @@ export enum BlogSortKeys { /** Card brand, such as Visa or Mastercard, which can be used for payments. */ export enum CardBrand { - /** Visa */ + /** Visa. */ Visa = 'VISA', - /** Mastercard */ + /** Mastercard. */ Mastercard = 'MASTERCARD', - /** Discover */ + /** Discover. */ Discover = 'DISCOVER', - /** American Express */ + /** American Express. */ AmericanExpress = 'AMERICAN_EXPRESS', - /** Diners Club */ + /** Diners Club. */ DinersClub = 'DINERS_CLUB', - /** JCB */ + /** JCB. */ Jcb = 'JCB', } @@ -1195,6 +1195,8 @@ export enum CountryCode { Am = 'AM', /** Aruba. */ Aw = 'AW', + /** Ascension Island. */ + Ac = 'AC', /** Australia. */ Au = 'AU', /** Austria. */ @@ -1613,6 +1615,8 @@ export enum CountryCode { To = 'TO', /** Trinidad & Tobago. */ Tt = 'TT', + /** Tristan da Cunha. */ + Ta = 'TA', /** Tunisia. */ Tn = 'TN', /** Turkey. */ @@ -1687,7 +1691,7 @@ export type CreditCard = { export type CreditCardPaymentInput = { /** The amount of the payment. */ amount: Scalars['Money'] - /** A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. */ + /** A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. For more information, refer to [Idempotent requests](https://shopify.dev/concepts/about-apis/idempotent-requests). */ idempotencyKey: Scalars['String'] /** The billing address for the payment. */ billingAddress: MailingAddressInput @@ -1704,7 +1708,7 @@ export type CreditCardPaymentInput = { export type CreditCardPaymentInputV2 = { /** The amount and currency of the payment. */ paymentAmount: MoneyInput - /** A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. */ + /** A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. For more information, refer to [Idempotent requests](https://shopify.dev/concepts/about-apis/idempotent-requests). */ idempotencyKey: Scalars['String'] /** The billing address for the payment. */ billingAddress: MailingAddressInput @@ -1766,10 +1770,6 @@ export enum CurrencyCode { Bhd = 'BHD', /** Burundian Franc (BIF). */ Bif = 'BIF', - /** Belarusian Ruble (BYN). */ - Byn = 'BYN', - /** Belarusian Ruble (BYR). */ - Byr = 'BYR', /** Belize Dollar (BZD). */ Bzd = 'BZD', /** Bermudian Dollar (BMD). */ @@ -1816,26 +1816,18 @@ export enum CurrencyCode { Czk = 'CZK', /** Danish Kroner (DKK). */ Dkk = 'DKK', - /** Djiboutian Franc (DJF). */ - Djf = 'DJF', /** Dominican Peso (DOP). */ Dop = 'DOP', /** East Caribbean Dollar (XCD). */ Xcd = 'XCD', /** Egyptian Pound (EGP). */ Egp = 'EGP', - /** Eritrean Nakfa (ERN). */ - Ern = 'ERN', /** Ethiopian Birr (ETB). */ Etb = 'ETB', - /** Falkland Islands Pounds (FKP). */ - Fkp = 'FKP', /** CFP Franc (XPF). */ Xpf = 'XPF', /** Fijian Dollars (FJD). */ Fjd = 'FJD', - /** Gibraltar Pounds (GIP). */ - Gip = 'GIP', /** Gambian Dalasi (GMD). */ Gmd = 'GMD', /** Ghanaian Cedi (GHS). */ @@ -1846,8 +1838,6 @@ export enum CurrencyCode { Gyd = 'GYD', /** Georgian Lari (GEL). */ Gel = 'GEL', - /** Guinean Franc (GNF). */ - Gnf = 'GNF', /** Haitian Gourde (HTG). */ Htg = 'HTG', /** Honduran Lempira (HNL). */ @@ -1864,8 +1854,6 @@ export enum CurrencyCode { Idr = 'IDR', /** Israeli New Shekel (NIS). */ Ils = 'ILS', - /** Iranian Rial (IRR). */ - Irr = 'IRR', /** Iraqi Dinar (IQD). */ Iqd = 'IQD', /** Jamaican Dollars (JMD). */ @@ -1880,8 +1868,6 @@ export enum CurrencyCode { Kzt = 'KZT', /** Kenyan Shilling (KES). */ Kes = 'KES', - /** Kiribati Dollar (KID). */ - Kid = 'KID', /** Kuwaiti Dinar (KWD). */ Kwd = 'KWD', /** Kyrgyzstani Som (KGS). */ @@ -1896,8 +1882,6 @@ export enum CurrencyCode { Lsl = 'LSL', /** Liberian Dollar (LRD). */ Lrd = 'LRD', - /** Libyan Dinar (LYD). */ - Lyd = 'LYD', /** Lithuanian Litai (LTL). */ Ltl = 'LTL', /** Malagasy Ariary (MGA). */ @@ -1910,8 +1894,6 @@ export enum CurrencyCode { Mwk = 'MWK', /** Maldivian Rufiyaa (MVR). */ Mvr = 'MVR', - /** Mauritanian Ouguiya (MRU). */ - Mru = 'MRU', /** Mexican Pesos (MXN). */ Mxn = 'MXN', /** Malaysian Ringgits (MYR). */ @@ -1966,8 +1948,6 @@ export enum CurrencyCode { Rwf = 'RWF', /** Samoan Tala (WST). */ Wst = 'WST', - /** Saint Helena Pounds (SHP). */ - Shp = 'SHP', /** Saudi Riyal (SAR). */ Sar = 'SAR', /** Sao Tome And Principe Dobra (STD). */ @@ -1976,14 +1956,10 @@ export enum CurrencyCode { Rsd = 'RSD', /** Seychellois Rupee (SCR). */ Scr = 'SCR', - /** Sierra Leonean Leone (SLL). */ - Sll = 'SLL', /** Singapore Dollars (SGD). */ Sgd = 'SGD', /** Sudanese Pound (SDG). */ Sdg = 'SDG', - /** Somali Shilling (SOS). */ - Sos = 'SOS', /** Syrian Pound (SYP). */ Syp = 'SYP', /** South African Rand (ZAR). */ @@ -2008,12 +1984,8 @@ export enum CurrencyCode { Twd = 'TWD', /** Thai baht (THB). */ Thb = 'THB', - /** Tajikistani Somoni (TJS). */ - Tjs = 'TJS', /** Tanzanian Shilling (TZS). */ Tzs = 'TZS', - /** Tongan Pa'anga (TOP). */ - Top = 'TOP', /** Trinidad and Tobago Dollars (TTD). */ Ttd = 'TTD', /** Tunisian Dinar (TND). */ @@ -2034,10 +2006,6 @@ export enum CurrencyCode { Uzs = 'UZS', /** Vanuatu Vatu (VUV). */ Vuv = 'VUV', - /** Venezuelan Bolivares (VEF). */ - Vef = 'VEF', - /** Venezuelan Bolivares (VES). */ - Ves = 'VES', /** Vietnamese đồng (VND). */ Vnd = 'VND', /** West African CFA franc (XOF). */ @@ -2046,6 +2014,42 @@ export enum CurrencyCode { Yer = 'YER', /** Zambian Kwacha (ZMW). */ Zmw = 'ZMW', + /** Belarusian Ruble (BYN). */ + Byn = 'BYN', + /** Belarusian Ruble (BYR). */ + Byr = 'BYR', + /** Djiboutian Franc (DJF). */ + Djf = 'DJF', + /** Eritrean Nakfa (ERN). */ + Ern = 'ERN', + /** Falkland Islands Pounds (FKP). */ + Fkp = 'FKP', + /** Gibraltar Pounds (GIP). */ + Gip = 'GIP', + /** Guinean Franc (GNF). */ + Gnf = 'GNF', + /** Iranian Rial (IRR). */ + Irr = 'IRR', + /** Kiribati Dollar (KID). */ + Kid = 'KID', + /** Libyan Dinar (LYD). */ + Lyd = 'LYD', + /** Mauritanian Ouguiya (MRU). */ + Mru = 'MRU', + /** Sierra Leonean Leone (SLL). */ + Sll = 'SLL', + /** Saint Helena Pounds (SHP). */ + Shp = 'SHP', + /** Somali Shilling (SOS). */ + Sos = 'SOS', + /** Tajikistani Somoni (TJS). */ + Tjs = 'TJS', + /** Tongan Pa'anga (TOP). */ + Top = 'TOP', + /** Venezuelan Bolivares (VEF). */ + Vef = 'VEF', + /** Venezuelan Bolivares (VES). */ + Ves = 'VES', } /** A customer represents a customer account with the shop. Customer accounts store contact information for the customer, saving logged-in customers the trouble of having to provide it at every checkout. */ @@ -3817,7 +3821,11 @@ export type Payment = Node & { errorMessage?: Maybe /** Globally unique identifier. */ id: Scalars['ID'] - /** A client-side generated token to identify a payment and perform idempotent operations. */ + /** + * A client-side generated token to identify a payment and perform idempotent operations. + * For more information, refer to + * [Idempotent requests](https://shopify.dev/concepts/about-apis/idempotent-requests). + */ idempotencyKey?: Maybe /** The URL where the customer needs to be redirected so they can complete the 3D Secure payment flow. */ nextActionUrl?: Maybe @@ -4386,7 +4394,9 @@ export type QueryRoot = { collections: CollectionConnection /** Find a customer by its access token. */ customer?: Maybe + /** Returns a specific node by ID. */ node?: Maybe + /** Returns the list of nodes with the given IDs. */ nodes: Array> /** Find a page by its handle. */ pageByHandle?: Maybe @@ -4768,7 +4778,7 @@ export type StringEdge = { export type TokenizedPaymentInput = { /** The amount of the payment. */ amount: Scalars['Money'] - /** A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. */ + /** A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. For more information, refer to [Idempotent requests](https://shopify.dev/concepts/about-apis/idempotent-requests). */ idempotencyKey: Scalars['String'] /** The billing address for the payment. */ billingAddress: MailingAddressInput @@ -4789,7 +4799,7 @@ export type TokenizedPaymentInput = { export type TokenizedPaymentInputV2 = { /** The amount and currency of the payment. */ paymentAmount: MoneyInput - /** A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. */ + /** A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. For more information, refer to [Idempotent requests](https://shopify.dev/concepts/about-apis/idempotent-requests). */ idempotencyKey: Scalars['String'] /** The billing address for the payment. */ billingAddress: MailingAddressInput @@ -4810,7 +4820,7 @@ export type TokenizedPaymentInputV2 = { export type TokenizedPaymentInputV3 = { /** The amount and currency of the payment. */ paymentAmount: MoneyInput - /** A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. */ + /** A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. For more information, refer to [Idempotent requests](https://shopify.dev/concepts/about-apis/idempotent-requests). */ idempotencyKey: Scalars['String'] /** The billing address for the payment. */ billingAddress: MailingAddressInput @@ -4847,18 +4857,32 @@ export type Transaction = { test: Scalars['Boolean'] } +/** The different kinds of order transactions. */ export enum TransactionKind { + /** An authorization and capture performed together in a single step. */ Sale = 'SALE', + /** A transfer of the money that was reserved during the authorization stage. */ Capture = 'CAPTURE', + /** + * An amount reserved against the cardholder's funding source. + * Money does not change hands until the authorization is captured. + */ Authorization = 'AUTHORIZATION', + /** An authorization for a payment taken with an EMV credit card reader. */ EmvAuthorization = 'EMV_AUTHORIZATION', + /** Money returned to the customer when they have paid too much. */ Change = 'CHANGE', } +/** Transaction statuses describe the status of a transaction. */ export enum TransactionStatus { + /** The transaction is pending. */ Pending = 'PENDING', + /** The transaction succeeded. */ Success = 'SUCCESS', + /** The transaction failed. */ Failure = 'FAILURE', + /** There was an error while processing the transaction. */ Error = 'ERROR', } @@ -4967,19 +4991,587 @@ export enum WeightUnit { Ounces = 'OUNCES', } -export type Unnamed_1_QueryVariables = Exact<{ +export type AssociateCustomerWithCheckoutMutationVariables = Exact<{ + checkoutId: Scalars['ID'] + customerAccessToken: Scalars['String'] +}> + +export type AssociateCustomerWithCheckoutMutation = { + __typename?: 'Mutation' +} & { + checkoutCustomerAssociateV2?: Maybe< + { __typename?: 'CheckoutCustomerAssociateV2Payload' } & { + checkout?: Maybe<{ __typename?: 'Checkout' } & Pick> + checkoutUserErrors: Array< + { __typename?: 'CheckoutUserError' } & Pick< + CheckoutUserError, + 'code' | 'field' | 'message' + > + > + customer?: Maybe<{ __typename?: 'Customer' } & Pick> + } + > +} + +export type Unnamed_1_MutationVariables = Exact<{ [key: string]: never }> + +export type Unnamed_1_Mutation = { __typename?: 'Mutation' } & { + checkoutCreate?: Maybe< + { __typename?: 'CheckoutCreatePayload' } & { + checkoutUserErrors: Array< + { __typename?: 'CheckoutUserError' } & Pick< + CheckoutUserError, + 'code' | 'field' | 'message' + > + > + } + > +} + +export type Unnamed_2_MutationVariables = Exact<{ + checkoutId: Scalars['ID'] + lineItems: Array | CheckoutLineItemInput +}> + +export type Unnamed_2_Mutation = { __typename?: 'Mutation' } & { + checkoutLineItemsAdd?: Maybe< + { __typename?: 'CheckoutLineItemsAddPayload' } & { + checkoutUserErrors: Array< + { __typename?: 'CheckoutUserError' } & Pick< + CheckoutUserError, + 'code' | 'field' | 'message' + > + > + checkout?: Maybe<{ __typename?: 'Checkout' } & CheckoutDetailsFragment> + } + > +} + +export type Unnamed_3_MutationVariables = Exact<{ + checkoutId: Scalars['ID'] + lineItemIds: Array | Scalars['ID'] +}> + +export type Unnamed_3_Mutation = { __typename?: 'Mutation' } & { + checkoutLineItemsRemove?: Maybe< + { __typename?: 'CheckoutLineItemsRemovePayload' } & { + checkoutUserErrors: Array< + { __typename?: 'CheckoutUserError' } & Pick< + CheckoutUserError, + 'code' | 'field' | 'message' + > + > + checkout?: Maybe<{ __typename?: 'Checkout' } & CheckoutDetailsFragment> + } + > +} + +export type Unnamed_4_MutationVariables = Exact<{ + checkoutId: Scalars['ID'] + lineItems: Array | CheckoutLineItemUpdateInput +}> + +export type Unnamed_4_Mutation = { __typename?: 'Mutation' } & { + checkoutLineItemsUpdate?: Maybe< + { __typename?: 'CheckoutLineItemsUpdatePayload' } & { + checkoutUserErrors: Array< + { __typename?: 'CheckoutUserError' } & Pick< + CheckoutUserError, + 'code' | 'field' | 'message' + > + > + checkout?: Maybe<{ __typename?: 'Checkout' } & CheckoutDetailsFragment> + } + > +} + +export type CustomerAccessTokenCreateMutationVariables = Exact<{ + input: CustomerAccessTokenCreateInput +}> + +export type CustomerAccessTokenCreateMutation = { __typename?: 'Mutation' } & { + customerAccessTokenCreate?: Maybe< + { __typename?: 'CustomerAccessTokenCreatePayload' } & { + customerAccessToken?: Maybe< + { __typename?: 'CustomerAccessToken' } & Pick< + CustomerAccessToken, + 'accessToken' | 'expiresAt' + > + > + customerUserErrors: Array< + { __typename?: 'CustomerUserError' } & Pick< + CustomerUserError, + 'code' | 'field' | 'message' + > + > + } + > +} + +export type CustomerAccessTokenDeleteMutationVariables = Exact<{ + customerAccessToken: Scalars['String'] +}> + +export type CustomerAccessTokenDeleteMutation = { __typename?: 'Mutation' } & { + customerAccessTokenDelete?: Maybe< + { __typename?: 'CustomerAccessTokenDeletePayload' } & Pick< + CustomerAccessTokenDeletePayload, + 'deletedAccessToken' | 'deletedCustomerAccessTokenId' + > & { + userErrors: Array< + { __typename?: 'UserError' } & Pick + > + } + > +} + +export type CustomerActivateByUrlMutationVariables = Exact<{ + activationUrl: Scalars['URL'] + password: Scalars['String'] +}> + +export type CustomerActivateByUrlMutation = { __typename?: 'Mutation' } & { + customerActivateByUrl?: Maybe< + { __typename?: 'CustomerActivateByUrlPayload' } & { + customer?: Maybe<{ __typename?: 'Customer' } & Pick> + customerAccessToken?: Maybe< + { __typename?: 'CustomerAccessToken' } & Pick< + CustomerAccessToken, + 'accessToken' | 'expiresAt' + > + > + customerUserErrors: Array< + { __typename?: 'CustomerUserError' } & Pick< + CustomerUserError, + 'code' | 'field' | 'message' + > + > + } + > +} + +export type CustomerActivateMutationVariables = Exact<{ + id: Scalars['ID'] + input: CustomerActivateInput +}> + +export type CustomerActivateMutation = { __typename?: 'Mutation' } & { + customerActivate?: Maybe< + { __typename?: 'CustomerActivatePayload' } & { + customer?: Maybe<{ __typename?: 'Customer' } & Pick> + customerAccessToken?: Maybe< + { __typename?: 'CustomerAccessToken' } & Pick< + CustomerAccessToken, + 'accessToken' | 'expiresAt' + > + > + customerUserErrors: Array< + { __typename?: 'CustomerUserError' } & Pick< + CustomerUserError, + 'code' | 'field' | 'message' + > + > + } + > +} + +export type CustomerCreateMutationVariables = Exact<{ + input: CustomerCreateInput +}> + +export type CustomerCreateMutation = { __typename?: 'Mutation' } & { + customerCreate?: Maybe< + { __typename?: 'CustomerCreatePayload' } & { + customerUserErrors: Array< + { __typename?: 'CustomerUserError' } & Pick< + CustomerUserError, + 'code' | 'field' | 'message' + > + > + customer?: Maybe<{ __typename?: 'Customer' } & Pick> + } + > +} + +export type GetSiteCollectionsQueryVariables = Exact<{ first: Scalars['Int'] }> -export type Unnamed_1_Query = { __typename?: 'QueryRoot' } & { - pages: { __typename?: 'PageConnection' } & { +export type GetSiteCollectionsQuery = { __typename?: 'QueryRoot' } & { + collections: { __typename?: 'CollectionConnection' } & { edges: Array< - { __typename?: 'PageEdge' } & { - node: { __typename?: 'Page' } & Pick< - Page, - 'id' | 'title' | 'handle' | 'body' | 'bodySummary' | 'url' + { __typename?: 'CollectionEdge' } & { + node: { __typename?: 'Collection' } & Pick< + Collection, + 'id' | 'title' | 'handle' > } > } } + +export type GetAllPagesQueryVariables = Exact<{ + first?: Maybe +}> + +export type GetAllPagesQuery = { __typename?: 'QueryRoot' } & { + pages: { __typename?: 'PageConnection' } & { + edges: Array< + { __typename?: 'PageEdge' } & { + node: { __typename?: 'Page' } & Pick + } + > + } +} + +export type GetAllProductVendorsQueryVariables = Exact<{ + first?: Maybe + cursor?: Maybe +}> + +export type GetAllProductVendorsQuery = { __typename?: 'QueryRoot' } & { + products: { __typename?: 'ProductConnection' } & { + pageInfo: { __typename?: 'PageInfo' } & Pick< + PageInfo, + 'hasNextPage' | 'hasPreviousPage' + > + edges: Array< + { __typename?: 'ProductEdge' } & Pick & { + node: { __typename?: 'Product' } & Pick + } + > + } +} + +export type GetAllProductPathsQueryVariables = Exact<{ + first?: Maybe + cursor?: Maybe +}> + +export type GetAllProductPathsQuery = { __typename?: 'QueryRoot' } & { + products: { __typename?: 'ProductConnection' } & { + pageInfo: { __typename?: 'PageInfo' } & Pick< + PageInfo, + 'hasNextPage' | 'hasPreviousPage' + > + edges: Array< + { __typename?: 'ProductEdge' } & Pick & { + node: { __typename?: 'Product' } & Pick + } + > + } +} + +export type ProductConnectionFragment = { __typename?: 'ProductConnection' } & { + pageInfo: { __typename?: 'PageInfo' } & Pick< + PageInfo, + 'hasNextPage' | 'hasPreviousPage' + > + edges: Array< + { __typename?: 'ProductEdge' } & { + node: { __typename?: 'Product' } & Pick< + Product, + 'id' | 'title' | 'vendor' | 'handle' + > & { + priceRange: { __typename?: 'ProductPriceRange' } & { + minVariantPrice: { __typename?: 'MoneyV2' } & Pick< + MoneyV2, + 'amount' | 'currencyCode' + > + } + images: { __typename?: 'ImageConnection' } & { + pageInfo: { __typename?: 'PageInfo' } & Pick< + PageInfo, + 'hasNextPage' | 'hasPreviousPage' + > + edges: Array< + { __typename?: 'ImageEdge' } & { + node: { __typename?: 'Image' } & Pick< + Image, + 'originalSrc' | 'altText' | 'width' | 'height' + > + } + > + } + } + } + > +} + +export type GetAllProductsQueryVariables = Exact<{ + first?: Maybe + query?: Maybe + sortKey?: Maybe + reverse?: Maybe +}> + +export type GetAllProductsQuery = { __typename?: 'QueryRoot' } & { + products: { __typename?: 'ProductConnection' } & ProductConnectionFragment +} + +export type CheckoutDetailsFragment = { __typename?: 'Checkout' } & Pick< + Checkout, + 'id' | 'webUrl' | 'completedAt' | 'createdAt' | 'taxesIncluded' +> & { + subtotalPriceV2: { __typename?: 'MoneyV2' } & Pick< + MoneyV2, + 'amount' | 'currencyCode' + > + totalTaxV2: { __typename?: 'MoneyV2' } & Pick< + MoneyV2, + 'amount' | 'currencyCode' + > + totalPriceV2: { __typename?: 'MoneyV2' } & Pick< + MoneyV2, + 'amount' | 'currencyCode' + > + lineItems: { __typename?: 'CheckoutLineItemConnection' } & { + pageInfo: { __typename?: 'PageInfo' } & Pick< + PageInfo, + 'hasNextPage' | 'hasPreviousPage' + > + edges: Array< + { __typename?: 'CheckoutLineItemEdge' } & { + node: { __typename?: 'CheckoutLineItem' } & Pick< + CheckoutLineItem, + 'id' | 'title' | 'quantity' + > & { + variant?: Maybe< + { __typename?: 'ProductVariant' } & Pick< + ProductVariant, + 'id' | 'sku' | 'title' + > & { + image?: Maybe< + { __typename?: 'Image' } & Pick< + Image, + 'originalSrc' | 'altText' | 'width' | 'height' + > + > + priceV2: { __typename?: 'MoneyV2' } & Pick< + MoneyV2, + 'amount' | 'currencyCode' + > + compareAtPriceV2?: Maybe< + { __typename?: 'MoneyV2' } & Pick< + MoneyV2, + 'amount' | 'currencyCode' + > + > + product: { __typename?: 'Product' } & Pick< + Product, + 'handle' + > + } + > + } + } + > + } + } + +export type Unnamed_5_QueryVariables = Exact<{ + checkoutId: Scalars['ID'] +}> + +export type Unnamed_5_Query = { __typename?: 'QueryRoot' } & { + node?: Maybe< + | { __typename?: 'AppliedGiftCard' } + | { __typename?: 'Article' } + | { __typename?: 'Blog' } + | ({ __typename?: 'Checkout' } & CheckoutDetailsFragment) + | { __typename?: 'CheckoutLineItem' } + | { __typename?: 'Collection' } + | { __typename?: 'Comment' } + | { __typename?: 'ExternalVideo' } + | { __typename?: 'MailingAddress' } + | { __typename?: 'MediaImage' } + | { __typename?: 'Metafield' } + | { __typename?: 'Model3d' } + | { __typename?: 'Order' } + | { __typename?: 'Page' } + | { __typename?: 'Payment' } + | { __typename?: 'Product' } + | { __typename?: 'ProductOption' } + | { __typename?: 'ProductVariant' } + | { __typename?: 'ShopPolicy' } + | { __typename?: 'Video' } + > +} + +export type GetProductsFromCollectionQueryVariables = Exact<{ + categoryId: Scalars['ID'] + first?: Maybe + sortKey?: Maybe + reverse?: Maybe +}> + +export type GetProductsFromCollectionQuery = { __typename?: 'QueryRoot' } & { + node?: Maybe< + | ({ __typename?: 'AppliedGiftCard' } & Pick) + | ({ __typename?: 'Article' } & Pick) + | ({ __typename?: 'Blog' } & Pick) + | ({ __typename?: 'Checkout' } & Pick) + | ({ __typename?: 'CheckoutLineItem' } & Pick) + | ({ __typename?: 'Collection' } & Pick & { + products: { + __typename?: 'ProductConnection' + } & ProductConnectionFragment + }) + | ({ __typename?: 'Comment' } & Pick) + | ({ __typename?: 'ExternalVideo' } & Pick) + | ({ __typename?: 'MailingAddress' } & Pick) + | ({ __typename?: 'MediaImage' } & Pick) + | ({ __typename?: 'Metafield' } & Pick) + | ({ __typename?: 'Model3d' } & Pick) + | ({ __typename?: 'Order' } & Pick) + | ({ __typename?: 'Page' } & Pick) + | ({ __typename?: 'Payment' } & Pick) + | ({ __typename?: 'Product' } & Pick) + | ({ __typename?: 'ProductOption' } & Pick) + | ({ __typename?: 'ProductVariant' } & Pick) + | ({ __typename?: 'ShopPolicy' } & Pick) + | ({ __typename?: 'Video' } & Pick) + > +} + +export type GetCustomerIdQueryVariables = Exact<{ + customerAccessToken: Scalars['String'] +}> + +export type GetCustomerIdQuery = { __typename?: 'QueryRoot' } & { + customer?: Maybe<{ __typename?: 'Customer' } & Pick> +} + +export type GetCustomerQueryVariables = Exact<{ + customerAccessToken: Scalars['String'] +}> + +export type GetCustomerQuery = { __typename?: 'QueryRoot' } & { + customer?: Maybe< + { __typename?: 'Customer' } & Pick< + Customer, + | 'id' + | 'firstName' + | 'lastName' + | 'displayName' + | 'email' + | 'phone' + | 'tags' + | 'acceptsMarketing' + | 'createdAt' + > + > +} + +export type Unnamed_6_QueryVariables = Exact<{ + id: Scalars['ID'] +}> + +export type Unnamed_6_Query = { __typename?: 'QueryRoot' } & { + node?: Maybe< + | ({ __typename?: 'AppliedGiftCard' } & Pick) + | ({ __typename?: 'Article' } & Pick) + | ({ __typename?: 'Blog' } & Pick) + | ({ __typename?: 'Checkout' } & Pick) + | ({ __typename?: 'CheckoutLineItem' } & Pick) + | ({ __typename?: 'Collection' } & Pick) + | ({ __typename?: 'Comment' } & Pick) + | ({ __typename?: 'ExternalVideo' } & Pick) + | ({ __typename?: 'MailingAddress' } & Pick) + | ({ __typename?: 'MediaImage' } & Pick) + | ({ __typename?: 'Metafield' } & Pick) + | ({ __typename?: 'Model3d' } & Pick) + | ({ __typename?: 'Order' } & Pick) + | ({ __typename?: 'Page' } & Pick< + Page, + 'title' | 'handle' | 'body' | 'bodySummary' | 'id' + >) + | ({ __typename?: 'Payment' } & Pick) + | ({ __typename?: 'Product' } & Pick) + | ({ __typename?: 'ProductOption' } & Pick) + | ({ __typename?: 'ProductVariant' } & Pick) + | ({ __typename?: 'ShopPolicy' } & Pick) + | ({ __typename?: 'Video' } & Pick) + > +} + +export type GetProductBySlugQueryVariables = Exact<{ + slug: Scalars['String'] +}> + +export type GetProductBySlugQuery = { __typename?: 'QueryRoot' } & { + productByHandle?: Maybe< + { __typename?: 'Product' } & Pick< + Product, + | 'id' + | 'handle' + | 'title' + | 'productType' + | 'vendor' + | 'description' + | 'descriptionHtml' + > & { + options: Array< + { __typename?: 'ProductOption' } & Pick< + ProductOption, + 'id' | 'name' | 'values' + > + > + priceRange: { __typename?: 'ProductPriceRange' } & { + maxVariantPrice: { __typename?: 'MoneyV2' } & Pick< + MoneyV2, + 'amount' | 'currencyCode' + > + minVariantPrice: { __typename?: 'MoneyV2' } & Pick< + MoneyV2, + 'amount' | 'currencyCode' + > + } + variants: { __typename?: 'ProductVariantConnection' } & { + pageInfo: { __typename?: 'PageInfo' } & Pick< + PageInfo, + 'hasNextPage' | 'hasPreviousPage' + > + edges: Array< + { __typename?: 'ProductVariantEdge' } & { + node: { __typename?: 'ProductVariant' } & Pick< + ProductVariant, + 'id' | 'title' | 'sku' + > & { + selectedOptions: Array< + { __typename?: 'SelectedOption' } & Pick< + SelectedOption, + 'name' | 'value' + > + > + priceV2: { __typename?: 'MoneyV2' } & Pick< + MoneyV2, + 'amount' | 'currencyCode' + > + compareAtPriceV2?: Maybe< + { __typename?: 'MoneyV2' } & Pick< + MoneyV2, + 'amount' | 'currencyCode' + > + > + } + } + > + } + images: { __typename?: 'ImageConnection' } & { + pageInfo: { __typename?: 'PageInfo' } & Pick< + PageInfo, + 'hasNextPage' | 'hasPreviousPage' + > + edges: Array< + { __typename?: 'ImageEdge' } & { + node: { __typename?: 'Image' } & Pick< + Image, + 'originalSrc' | 'altText' | 'width' | 'height' + > + } + > + } + } + > +} diff --git a/framework/shopify/schema.graphql b/framework/shopify/schema.graphql index 822e6007e..fa7c9c93e 100644 --- a/framework/shopify/schema.graphql +++ b/framework/shopify/schema.graphql @@ -547,32 +547,32 @@ Card brand, such as Visa or Mastercard, which can be used for payments. """ enum CardBrand { """ - Visa + Visa. """ VISA """ - Mastercard + Mastercard. """ MASTERCARD """ - Discover + Discover. """ DISCOVER """ - American Express + American Express. """ AMERICAN_EXPRESS """ - Diners Club + Diners Club. """ DINERS_CLUB """ - JCB + JCB. """ JCB } @@ -2142,6 +2142,11 @@ enum CountryCode { """ AW + """ + Ascension Island. + """ + AC + """ Australia. """ @@ -3187,6 +3192,11 @@ enum CountryCode { """ TT + """ + Tristan da Cunha. + """ + TA + """ Tunisia. """ @@ -3354,7 +3364,7 @@ input CreditCardPaymentInput { amount: Money! """ - A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. + A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. For more information, refer to [Idempotent requests](https://shopify.dev/concepts/about-apis/idempotent-requests). """ idempotencyKey: String! @@ -3385,7 +3395,7 @@ input CreditCardPaymentInputV2 { paymentAmount: MoneyInput! """ - A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. + A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. For more information, refer to [Idempotent requests](https://shopify.dev/concepts/about-apis/idempotent-requests). """ idempotencyKey: String! @@ -3529,16 +3539,6 @@ enum CurrencyCode { """ BIF - """ - Belarusian Ruble (BYN). - """ - BYN - - """ - Belarusian Ruble (BYR). - """ - BYR - """ Belize Dollar (BZD). """ @@ -3654,11 +3654,6 @@ enum CurrencyCode { """ DKK - """ - Djiboutian Franc (DJF). - """ - DJF - """ Dominican Peso (DOP). """ @@ -3674,21 +3669,11 @@ enum CurrencyCode { """ EGP - """ - Eritrean Nakfa (ERN). - """ - ERN - """ Ethiopian Birr (ETB). """ ETB - """ - Falkland Islands Pounds (FKP). - """ - FKP - """ CFP Franc (XPF). """ @@ -3699,11 +3684,6 @@ enum CurrencyCode { """ FJD - """ - Gibraltar Pounds (GIP). - """ - GIP - """ Gambian Dalasi (GMD). """ @@ -3729,11 +3709,6 @@ enum CurrencyCode { """ GEL - """ - Guinean Franc (GNF). - """ - GNF - """ Haitian Gourde (HTG). """ @@ -3774,11 +3749,6 @@ enum CurrencyCode { """ ILS - """ - Iranian Rial (IRR). - """ - IRR - """ Iraqi Dinar (IQD). """ @@ -3814,11 +3784,6 @@ enum CurrencyCode { """ KES - """ - Kiribati Dollar (KID). - """ - KID - """ Kuwaiti Dinar (KWD). """ @@ -3854,11 +3819,6 @@ enum CurrencyCode { """ LRD - """ - Libyan Dinar (LYD). - """ - LYD - """ Lithuanian Litai (LTL). """ @@ -3889,11 +3849,6 @@ enum CurrencyCode { """ MVR - """ - Mauritanian Ouguiya (MRU). - """ - MRU - """ Mexican Pesos (MXN). """ @@ -4029,11 +3984,6 @@ enum CurrencyCode { """ WST - """ - Saint Helena Pounds (SHP). - """ - SHP - """ Saudi Riyal (SAR). """ @@ -4054,11 +4004,6 @@ enum CurrencyCode { """ SCR - """ - Sierra Leonean Leone (SLL). - """ - SLL - """ Singapore Dollars (SGD). """ @@ -4069,11 +4014,6 @@ enum CurrencyCode { """ SDG - """ - Somali Shilling (SOS). - """ - SOS - """ Syrian Pound (SYP). """ @@ -4134,21 +4074,11 @@ enum CurrencyCode { """ THB - """ - Tajikistani Somoni (TJS). - """ - TJS - """ Tanzanian Shilling (TZS). """ TZS - """ - Tongan Pa'anga (TOP). - """ - TOP - """ Trinidad and Tobago Dollars (TTD). """ @@ -4199,16 +4129,6 @@ enum CurrencyCode { """ VUV - """ - Venezuelan Bolivares (VEF). - """ - VEF - - """ - Venezuelan Bolivares (VES). - """ - VES - """ Vietnamese đồng (VND). """ @@ -4228,6 +4148,96 @@ enum CurrencyCode { Zambian Kwacha (ZMW). """ ZMW + + """ + Belarusian Ruble (BYN). + """ + BYN + + """ + Belarusian Ruble (BYR). + """ + BYR + + """ + Djiboutian Franc (DJF). + """ + DJF + + """ + Eritrean Nakfa (ERN). + """ + ERN + + """ + Falkland Islands Pounds (FKP). + """ + FKP + + """ + Gibraltar Pounds (GIP). + """ + GIP + + """ + Guinean Franc (GNF). + """ + GNF + + """ + Iranian Rial (IRR). + """ + IRR + + """ + Kiribati Dollar (KID). + """ + KID + + """ + Libyan Dinar (LYD). + """ + LYD + + """ + Mauritanian Ouguiya (MRU). + """ + MRU + + """ + Sierra Leonean Leone (SLL). + """ + SLL + + """ + Saint Helena Pounds (SHP). + """ + SHP + + """ + Somali Shilling (SOS). + """ + SOS + + """ + Tajikistani Somoni (TJS). + """ + TJS + + """ + Tongan Pa'anga (TOP). + """ + TOP + + """ + Venezuelan Bolivares (VEF). + """ + VEF + + """ + Venezuelan Bolivares (VES). + """ + VES } """ @@ -7355,6 +7365,8 @@ type Payment implements Node { """ A client-side generated token to identify a payment and perform idempotent operations. + For more information, refer to + [Idempotent requests](https://shopify.dev/concepts/about-apis/idempotent-requests). """ idempotencyKey: String @@ -8589,12 +8601,20 @@ type QueryRoot { """ customerAccessToken: String! ): Customer + + """ + Returns a specific node by ID. + """ node( """ The ID of the Node to return. """ id: ID! ): Node + + """ + Returns the list of nodes with the given IDs. + """ nodes( """ The IDs of the Nodes to return. @@ -9246,7 +9266,7 @@ input TokenizedPaymentInput { amount: Money! """ - A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. + A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. For more information, refer to [Idempotent requests](https://shopify.dev/concepts/about-apis/idempotent-requests). """ idempotencyKey: String! @@ -9287,7 +9307,7 @@ input TokenizedPaymentInputV2 { paymentAmount: MoneyInput! """ - A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. + A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. For more information, refer to [Idempotent requests](https://shopify.dev/concepts/about-apis/idempotent-requests). """ idempotencyKey: String! @@ -9328,7 +9348,7 @@ input TokenizedPaymentInputV3 { paymentAmount: MoneyInput! """ - A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. + A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. For more information, refer to [Idempotent requests](https://shopify.dev/concepts/about-apis/idempotent-requests). """ idempotencyKey: String! @@ -9393,18 +9413,59 @@ type Transaction { test: Boolean! } +""" +The different kinds of order transactions. +""" enum TransactionKind { + """ + An authorization and capture performed together in a single step. + """ SALE + + """ + A transfer of the money that was reserved during the authorization stage. + """ CAPTURE + + """ + An amount reserved against the cardholder's funding source. + Money does not change hands until the authorization is captured. + """ AUTHORIZATION + + """ + An authorization for a payment taken with an EMV credit card reader. + """ EMV_AUTHORIZATION + + """ + Money returned to the customer when they have paid too much. + """ CHANGE } +""" +Transaction statuses describe the status of a transaction. +""" enum TransactionStatus { + """ + The transaction is pending. + """ PENDING + + """ + The transaction succeeded. + """ SUCCESS + + """ + The transaction failed. + """ FAILURE + + """ + There was an error while processing the transaction. + """ ERROR } diff --git a/framework/shopify/utils/mutations/checkout-create.ts b/framework/shopify/utils/mutations/checkout-create.ts index ffbd555c7..9c8ad165c 100644 --- a/framework/shopify/utils/mutations/checkout-create.ts +++ b/framework/shopify/utils/mutations/checkout-create.ts @@ -8,9 +8,7 @@ const checkoutCreateMutation = /* GraphQL */ ` field message } - checkout { - ${checkoutDetailsFragment} - } + ${checkoutDetailsFragment} } } ` diff --git a/framework/shopify/utils/mutations/checkout-line-item-add.ts b/framework/shopify/utils/mutations/checkout-line-item-add.ts index 2282c4e26..5171e7f4a 100644 --- a/framework/shopify/utils/mutations/checkout-line-item-add.ts +++ b/framework/shopify/utils/mutations/checkout-line-item-add.ts @@ -9,9 +9,11 @@ const checkoutLineItemAddMutation = /* GraphQL */ ` message } checkout { - ${checkoutDetailsFragment} + ...checkoutDetails } } } + + ${checkoutDetailsFragment} ` export default checkoutLineItemAddMutation diff --git a/framework/shopify/utils/mutations/checkout-line-item-remove.ts b/framework/shopify/utils/mutations/checkout-line-item-remove.ts index 8dea4ce08..26ebfca2e 100644 --- a/framework/shopify/utils/mutations/checkout-line-item-remove.ts +++ b/framework/shopify/utils/mutations/checkout-line-item-remove.ts @@ -12,9 +12,10 @@ const checkoutLineItemRemoveMutation = /* GraphQL */ ` message } checkout { - ${checkoutDetailsFragment} + ...checkoutDetails } } } + ${checkoutDetailsFragment} ` export default checkoutLineItemRemoveMutation diff --git a/framework/shopify/utils/mutations/checkout-line-item-update.ts b/framework/shopify/utils/mutations/checkout-line-item-update.ts index 76254341e..644882360 100644 --- a/framework/shopify/utils/mutations/checkout-line-item-update.ts +++ b/framework/shopify/utils/mutations/checkout-line-item-update.ts @@ -9,9 +9,11 @@ const checkoutLineItemUpdateMutation = /* GraphQL */ ` message } checkout { - ${checkoutDetailsFragment} + ...checkoutDetails } } } + + ${checkoutDetailsFragment} ` export default checkoutLineItemUpdateMutation diff --git a/framework/shopify/utils/queries/get-all-products-query.ts b/framework/shopify/utils/queries/get-all-products-query.ts index f48140d31..179cf9812 100644 --- a/framework/shopify/utils/queries/get-all-products-query.ts +++ b/framework/shopify/utils/queries/get-all-products-query.ts @@ -1,46 +1,38 @@ -export const productConnection = ` -pageInfo { - hasNextPage - hasPreviousPage -} -edges { - node { - id - title - vendor - handle - priceRange { - minVariantPrice { - amount - currencyCode - } +export const productConnectionFragment = /* GraphQL */ ` + fragment productConnection on ProductConnection { + pageInfo { + hasNextPage + hasPreviousPage } - images(first: 1) { - pageInfo { - hasNextPage - hasPreviousPage - } - edges { - node { - originalSrc - altText - width - height + edges { + node { + id + title + vendor + handle + priceRange { + minVariantPrice { + amount + currencyCode + } + } + images(first: 1) { + pageInfo { + hasNextPage + hasPreviousPage + } + edges { + node { + originalSrc + altText + width + height + } + } } } } } -}` - -export const productsFragment = ` -products( - first: $first - sortKey: $sortKey - reverse: $reverse - query: $query -) { - ${productConnection} -} ` const getAllProductsQuery = /* GraphQL */ ` @@ -50,7 +42,16 @@ const getAllProductsQuery = /* GraphQL */ ` $sortKey: ProductSortKeys = RELEVANCE $reverse: Boolean = false ) { - ${productsFragment} + products( + first: $first + sortKey: $sortKey + reverse: $reverse + query: $query + ) { + ...productConnection + } } + + ${productConnectionFragment} ` export default getAllProductsQuery diff --git a/framework/shopify/utils/queries/get-checkout-query.ts b/framework/shopify/utils/queries/get-checkout-query.ts index d8758e321..e755c0a9d 100644 --- a/framework/shopify/utils/queries/get-checkout-query.ts +++ b/framework/shopify/utils/queries/get-checkout-query.ts @@ -1,53 +1,55 @@ -export const checkoutDetailsFragment = ` - id - webUrl - subtotalPriceV2{ - amount - currencyCode - } - totalTaxV2 { - amount - currencyCode - } - totalPriceV2 { - amount - currencyCode - } - completedAt - createdAt - taxesIncluded - lineItems(first: 250) { - pageInfo { - hasNextPage - hasPreviousPage +export const checkoutDetailsFragment = /* GraphQL */ ` + fragment checkoutDetails on Checkout { + id + webUrl + subtotalPriceV2 { + amount + currencyCode } - edges { - node { - id - title - variant { + totalTaxV2 { + amount + currencyCode + } + totalPriceV2 { + amount + currencyCode + } + completedAt + createdAt + taxesIncluded + lineItems(first: 250) { + pageInfo { + hasNextPage + hasPreviousPage + } + edges { + node { id - sku title - image { - originalSrc - altText - width - height - } - priceV2{ - amount - currencyCode - } - compareAtPriceV2{ - amount - currencyCode - } - product { - handle + variant { + id + sku + title + image { + originalSrc + altText + width + height + } + priceV2 { + amount + currencyCode + } + compareAtPriceV2 { + amount + currencyCode + } + product { + handle + } } + quantity } - quantity } } } @@ -56,10 +58,9 @@ export const checkoutDetailsFragment = ` const getCheckoutQuery = /* GraphQL */ ` query($checkoutId: ID!) { node(id: $checkoutId) { - ... on Checkout { - ${checkoutDetailsFragment} - } + ...checkoutDetails } } + ${checkoutDetailsFragment} ` export default getCheckoutQuery diff --git a/framework/shopify/utils/queries/get-collection-products-query.ts b/framework/shopify/utils/queries/get-collection-products-query.ts index 04766caa4..b773a7e65 100644 --- a/framework/shopify/utils/queries/get-collection-products-query.ts +++ b/framework/shopify/utils/queries/get-collection-products-query.ts @@ -1,4 +1,4 @@ -import { productConnection } from './get-all-products-query' +import { productConnectionFragment } from './get-all-products-query' const getCollectionProductsQuery = /* GraphQL */ ` query getProductsFromCollection( @@ -10,15 +10,12 @@ const getCollectionProductsQuery = /* GraphQL */ ` node(id: $categoryId) { id ... on Collection { - products( - first: $first - sortKey: $sortKey - reverse: $reverse - ) { - ${productConnection} + products(first: $first, sortKey: $sortKey, reverse: $reverse) { + ...productConnection } } } } + ${productConnectionFragment} ` export default getCollectionProductsQuery diff --git a/package.json b/package.json index 85810ca91..93b4c5572 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "prettier-fix": "prettier --write .", "find:unused": "next-unused", "generate": "graphql-codegen", - "generate:definitions": "node framework/bigcommerce/scripts/generate-definitions.js" + "generate:definitions": "node framework/bigcommerce/scripts/generate-definitions.js", + "generate:shopify": "DOTENV_CONFIG_PATH=./.env.local graphql-codegen -r dotenv/config --config framework/shopify/codegen.json" }, "sideEffects": false, "license": "MIT",