@ehrenkind/shopify-lib 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/index.cjs +86 -31
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +709 -161
  4. package/dist/index.d.ts +18816 -3
  5. package/dist/index.mjs +84 -30
  6. package/dist/index.mjs.map +1 -1
  7. package/package.json +4 -4
  8. package/dist/generated-api-types/2025-04/admin.generated.d.ts +0 -181
  9. package/dist/generated-api-types/2025-04/admin.generated.d.ts.map +0 -1
  10. package/dist/generated-api-types/2025-04/admin.generated.js +0 -5
  11. package/dist/generated-api-types/2025-04/admin.generated.js.map +0 -1
  12. package/dist/generated-api-types/2025-04/admin.types.d.ts +0 -57664
  13. package/dist/generated-api-types/2025-04/admin.types.d.ts.map +0 -1
  14. package/dist/generated-api-types/2025-04/admin.types.js +0 -11356
  15. package/dist/generated-api-types/2025-04/admin.types.js.map +0 -1
  16. package/dist/index.d.ts.map +0 -1
  17. package/dist/index.js +0 -3
  18. package/dist/index.js.map +0 -1
  19. package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.d.ts +0 -4
  20. package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.d.ts.map +0 -1
  21. package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.js +0 -56
  22. package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.js.map +0 -1
  23. package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.mock.d.ts +0 -3
  24. package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.mock.d.ts.map +0 -1
  25. package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.mock.js +0 -11
  26. package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.mock.js.map +0 -1
  27. package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.test.d.ts +0 -2
  28. package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.test.d.ts.map +0 -1
  29. package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.test.js +0 -11
  30. package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.test.js.map +0 -1
  31. package/dist/queries/orders/getOrderByName.d.ts +0 -26
  32. package/dist/queries/orders/getOrderByName.d.ts.map +0 -1
  33. package/dist/queries/orders/getOrderByName.js +0 -117
  34. package/dist/queries/orders/getOrderByName.js.map +0 -1
  35. package/dist/queries/orders/getOrderByName.mock.d.ts +0 -21
  36. package/dist/queries/orders/getOrderByName.mock.d.ts.map +0 -1
  37. package/dist/queries/orders/getOrderByName.mock.js +0 -55
  38. package/dist/queries/orders/getOrderByName.mock.js.map +0 -1
  39. package/dist/queries/orders/getOrderByName.queries.d.ts +0 -3
  40. package/dist/queries/orders/getOrderByName.queries.d.ts.map +0 -1
  41. package/dist/queries/orders/getOrderByName.queries.js +0 -335
  42. package/dist/queries/orders/getOrderByName.queries.js.map +0 -1
  43. package/dist/queries/orders/getOrderByName.test.d.ts +0 -2
  44. package/dist/queries/orders/getOrderByName.test.d.ts.map +0 -1
  45. package/dist/queries/orders/getOrderByName.test.js +0 -28
  46. package/dist/queries/orders/getOrderByName.test.js.map +0 -1
  47. package/dist/queries/productVariants/getLeanProductVariants.d.ts +0 -21
  48. package/dist/queries/productVariants/getLeanProductVariants.d.ts.map +0 -1
  49. package/dist/queries/productVariants/getLeanProductVariants.js +0 -81
  50. package/dist/queries/productVariants/getLeanProductVariants.js.map +0 -1
  51. package/dist/queries/productVariants/getLeanProductVariants.mock.d.ts +0 -3
  52. package/dist/queries/productVariants/getLeanProductVariants.mock.d.ts.map +0 -1
  53. package/dist/queries/productVariants/getLeanProductVariants.mock.js +0 -33
  54. package/dist/queries/productVariants/getLeanProductVariants.mock.js.map +0 -1
  55. package/dist/queries/productVariants/getLeanProductVariants.test.d.ts +0 -2
  56. package/dist/queries/productVariants/getLeanProductVariants.test.d.ts.map +0 -1
  57. package/dist/queries/productVariants/getLeanProductVariants.test.js +0 -38
  58. package/dist/queries/productVariants/getLeanProductVariants.test.js.map +0 -1
  59. package/dist/utils/logger.d.ts +0 -11
  60. package/dist/utils/logger.d.ts.map +0 -1
  61. package/dist/utils/logger.js +0 -50
  62. package/dist/utils/logger.js.map +0 -1
  63. package/dist/utils/mswHandlers.d.ts +0 -2
  64. package/dist/utils/mswHandlers.d.ts.map +0 -1
  65. package/dist/utils/mswHandlers.js +0 -32
  66. package/dist/utils/mswHandlers.js.map +0 -1
  67. package/dist/utils/shopifyClient.d.ts +0 -6
  68. package/dist/utils/shopifyClient.d.ts.map +0 -1
  69. package/dist/utils/shopifyClient.js +0 -82
  70. package/dist/utils/shopifyClient.js.map +0 -1
  71. package/dist/utils/shopifyClient.mock.d.ts +0 -3
  72. package/dist/utils/shopifyClient.mock.d.ts.map +0 -1
  73. package/dist/utils/shopifyClient.mock.js +0 -19
  74. package/dist/utils/shopifyClient.mock.js.map +0 -1
  75. package/dist/utils/shopifyClient.test.d.ts +0 -2
  76. package/dist/utils/shopifyClient.test.d.ts.map +0 -1
  77. package/dist/utils/shopifyClient.test.js +0 -27
  78. package/dist/utils/shopifyClient.test.js.map +0 -1
  79. package/dist/utils/shopifyFetch.d.ts +0 -19
  80. package/dist/utils/shopifyFetch.d.ts.map +0 -1
  81. package/dist/utils/shopifyFetch.js +0 -60
  82. package/dist/utils/shopifyFetch.js.map +0 -1
  83. package/dist/utils/shopifyFetch.test.d.ts +0 -2
  84. package/dist/utils/shopifyFetch.test.d.ts.map +0 -1
  85. package/dist/utils/shopifyFetch.test.js +0 -17
  86. package/dist/utils/shopifyFetch.test.js.map +0 -1
  87. package/dist/utils/test-setup.d.ts +0 -2
  88. package/dist/utils/test-setup.d.ts.map +0 -1
  89. package/dist/utils/test-setup.js +0 -13
  90. package/dist/utils/test-setup.js.map +0 -1
  91. package/dist/utils/zod.d.ts +0 -3
  92. package/dist/utils/zod.d.ts.map +0 -1
  93. package/dist/utils/zod.js +0 -19
  94. package/dist/utils/zod.js.map +0 -1
package/dist/index.mjs CHANGED
@@ -62,16 +62,16 @@ var SHOPIFY_API_VERSION = ApiVersion.April25;
62
62
  dotenv.config();
63
63
  var envSchema = z.object({
64
64
  SHOPIFY_API_KEY: z.string({
65
- error: () => ({ message: "SHOPIFY_API_KEY is required" })
65
+ required_error: "SHOPIFY_API_KEY is required"
66
66
  }),
67
67
  SHOPIFY_API_SECRET: z.string({
68
- error: () => ({ message: "SHOPIFY_API_SECRET is required" })
68
+ required_error: "SHOPIFY_API_SECRET is required"
69
69
  }),
70
70
  SHOPIFY_API_HOSTNAME: z.string({
71
- error: () => ({ message: "SHOPIFY_API_HOSTNAME is required" })
71
+ required_error: "SHOPIFY_API_HOSTNAME is required"
72
72
  }),
73
73
  SHOPIFY_ACCESS_TOKEN: z.string({
74
- error: () => ({ message: "SHOPIFY_ACCESS_TOKEN is required" })
74
+ required_error: "SHOPIFY_ACCESS_TOKEN is required"
75
75
  }),
76
76
  NODE_ENV: z.enum(["development", "production", "test"]).default("development")
77
77
  });
@@ -120,7 +120,7 @@ try {
120
120
  logger.info("Shopify API client initialized successfully.");
121
121
  } catch (error) {
122
122
  if (error instanceof z.ZodError) {
123
- const msg = z.prettifyError(error);
123
+ const msg = JSON.stringify(error.format(), null, 2);
124
124
  logger.error(msg);
125
125
  } else {
126
126
  logger.error("Failed to initialize Shopify API client:", error);
@@ -129,6 +129,9 @@ try {
129
129
  }
130
130
 
131
131
  // src/utils/shopifyFetch.ts
132
+ function convertIdIntoGid(id, type) {
133
+ return `gid://shopify/${type}/${id}`;
134
+ }
132
135
  async function fetchShopifyGraphql(params) {
133
136
  const {
134
137
  query,
@@ -136,32 +139,15 @@ async function fetchShopifyGraphql(params) {
136
139
  dataExtractor,
137
140
  fetchAllPages = false
138
141
  } = params;
139
- const allNodes = [];
140
142
  let currentVariables = { ...initialVariables };
143
+ if (!dataExtractor) {
144
+ return makeRequest(query, currentVariables);
145
+ }
146
+ const allNodes = [];
141
147
  let hasNextLoop = true;
142
148
  do {
143
- const response = await shopifyGraphqlClient.request(query, {
144
- variables: currentVariables
145
- });
146
- if (response.errors) {
147
- let errorMessages = "GraphQL query failed.";
148
- const errors = response.errors;
149
- if (Array.isArray(errors)) {
150
- errorMessages = errors.map((e) => e.message || JSON.stringify(e)).join("\n");
151
- } else if (typeof errors === "object" && errors !== null && "message" in errors) {
152
- errorMessages = errors.message || JSON.stringify(errors);
153
- } else if (typeof errors === "string") {
154
- errorMessages = errors;
155
- } else {
156
- errorMessages = JSON.stringify(errors);
157
- }
158
- logger.error("GraphQL query failed:", errorMessages);
159
- throw new Error(`GraphQL errors: ${errorMessages}`);
160
- }
161
- if (!response.data) {
162
- throw new Error("No data in Shopify API response");
163
- }
164
- const { nodes, pageInfo, userErrors } = dataExtractor(response.data);
149
+ const response = await makeRequest(query, currentVariables);
150
+ const { nodes, pageInfo, userErrors } = dataExtractor(response);
165
151
  if (Array.isArray(userErrors) && userErrors.length > 0) {
166
152
  const errorMessages = userErrors.map((e) => e.message || JSON.stringify(e)).join("\n");
167
153
  logger.error("Shopify mutation userErrors:", errorMessages);
@@ -178,6 +164,30 @@ async function fetchShopifyGraphql(params) {
178
164
  } while (hasNextLoop);
179
165
  return allNodes;
180
166
  }
167
+ async function makeRequest(query, variables) {
168
+ const response = await shopifyGraphqlClient.request(query, {
169
+ variables
170
+ });
171
+ if (response.errors) {
172
+ let errorMessages = "GraphQL query failed.";
173
+ const errors = response.errors;
174
+ if (Array.isArray(errors)) {
175
+ errorMessages = errors.map((e) => e.message || JSON.stringify(e)).join("\n");
176
+ } else if (typeof errors === "object" && errors !== null && "message" in errors) {
177
+ errorMessages = errors.message || JSON.stringify(errors);
178
+ } else if (typeof errors === "string") {
179
+ errorMessages = errors;
180
+ } else {
181
+ errorMessages = JSON.stringify(errors);
182
+ }
183
+ logger.error("GraphQL query failed:", errorMessages);
184
+ throw new Error(`GraphQL errors: ${errorMessages}`);
185
+ }
186
+ if (!response.data) {
187
+ throw new Error("No data in Shopify API response");
188
+ }
189
+ return response.data;
190
+ }
181
191
 
182
192
  // src/utils/zod.ts
183
193
  import z2 from "zod";
@@ -185,7 +195,7 @@ async function returnOutputParsed(data, Model) {
185
195
  const parsed = await Model.safeParseAsync(data);
186
196
  if (!parsed.success) {
187
197
  if (parsed.error instanceof z2.ZodError) {
188
- const msg = z2.prettifyError(parsed.error);
198
+ const msg = JSON.stringify(parsed.error.format(), null, 2);
189
199
  logger.error(msg);
190
200
  } else {
191
201
  logger.error("Failed to parse:", parsed.error);
@@ -712,8 +722,52 @@ async function getLeanProductVariants(skus) {
712
722
  });
713
723
  return await returnOutputParsed(allVariants, GetLeanProductVariantsReturn);
714
724
  }
725
+
726
+ // src/queries/order/getOrderPaymentDetails.ts
727
+ import z5 from "zod";
728
+
729
+ // src/queries/order/getOrderPaymentDetails.queries.ts
730
+ var queryOrderPaymentDetails = gql`#graphql
731
+ query orderPaymentDetailsById($id: ID!) {
732
+ order(id: $id) {
733
+ transactions {
734
+ createdAt
735
+ gateway
736
+ formattedGateway
737
+ kind
738
+ paymentId
739
+ }
740
+ }
741
+ }
742
+ `;
743
+
744
+ // src/queries/order/getOrderPaymentDetails.ts
745
+ var GetOrderPaymentDetailsByNameReturn = z5.object({
746
+ order: z5.object({
747
+ transactions: z5.array(
748
+ z5.object({
749
+ createdAt: z5.string(),
750
+ gateway: z5.string(),
751
+ formattedGateway: z5.string(),
752
+ kind: z5.string(),
753
+ paymentId: z5.string()
754
+ })
755
+ )
756
+ })
757
+ });
758
+ async function getOrderPaymentDetailsById(id) {
759
+ const variables = {
760
+ id: convertIdIntoGid(id, "Order")
761
+ };
762
+ const response = await fetchShopifyGraphql({
763
+ query: queryOrderPaymentDetails,
764
+ variables
765
+ });
766
+ return await returnOutputParsed(response, GetOrderPaymentDetailsByNameReturn);
767
+ }
715
768
  export {
716
769
  getLeanProductVariants,
717
- getOrderByName
770
+ getOrderByName,
771
+ getOrderPaymentDetailsById
718
772
  };
719
773
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/queries/orders/getOrderByName.ts","../src/utils/logger.ts","../src/utils/shopifyClient.ts","../src/utils/shopifyFetch.ts","../src/utils/zod.ts","../src/queries/orders/getOrderByName.queries.ts","../src/queries/productVariants/getLeanProductVariants.ts"],"sourcesContent":["import z from 'zod'\nimport type {\n OrdersByNameFullQuery,\n OrdersByNameQuery,\n OrdersByNameQueryVariables,\n} from '../../generated-api-types/2025-04/admin.generated.js'\nimport { logger } from '../../utils/logger.js'\nimport { fetchShopifyGraphql } from '../../utils/shopifyFetch.js'\nimport { returnOutputParsed } from '../../utils/zod.js'\nimport {\n queryOrdersByName,\n queryOrdersByNameFull,\n} from './getOrderByName.queries.js'\n\nconst GetLeanOrderByNameReturn = z\n .object({\n id: z.string(),\n name: z.string(),\n createdAt: z.string(),\n updatedAt: z.string(),\n totalPrice: z.object({\n amount: z.string(),\n currencyCode: z.string(),\n }),\n customer: z\n .object({\n id: z.string(),\n displayName: z.string(),\n emailAddress: z.string().nullable(),\n })\n .nullable(),\n financialStatus: z.string().nullable(),\n fulfillmentStatus: z.string().nullable(),\n })\n .nullable()\n\ntype GetLeanOrderByNameReturnType = z.infer<typeof GetLeanOrderByNameReturn>\n\ntype GetFullOrderByNameReturnType = NonNullable<\n NonNullable<OrdersByNameFullQuery['orders']>['edges'][number]['node']\n> | null\n\ntype OrderDetailLevel = 'lean' | 'full'\n\n// Function overloads\nexport function getOrderByName(\n orderName: string,\n detailLevel: 'lean',\n): Promise<GetLeanOrderByNameReturnType>\nexport function getOrderByName(\n orderName: string,\n detailLevel: 'full',\n): Promise<GetFullOrderByNameReturnType>\nexport function getOrderByName(\n orderName: string,\n): Promise<GetLeanOrderByNameReturnType>\n\n/**\n * Retrieves a single order from Shopify by its order name (e.g., \"B12345\").\n * Returns null if no order is found with the specified name.\n *\n * @param {string} orderName - The order name to search for (e.g., \"B12345\").\n * @param {OrderDetailLevel} detailLevel - The level of detail to return ('lean' or 'full'). Defaults to 'lean'.\n * @returns {Promise<GetLeanOrderByNameReturnType | GetFullOrderByNameReturnType>} A promise that resolves to the order data or null if not found.\n * @throws {Error} If the GraphQL query fails or if the response structure is invalid.\n */\nexport async function getOrderByName(\n orderName: string,\n detailLevel: OrderDetailLevel = 'lean',\n): Promise<GetLeanOrderByNameReturnType | GetFullOrderByNameReturnType> {\n if (detailLevel === 'lean') {\n return getLeanOrderByName(orderName)\n }\n return getFullOrderByName(orderName)\n}\n\nasync function getLeanOrderByName(\n orderName: string,\n): Promise<GetLeanOrderByNameReturnType> {\n const variables: OrdersByNameQueryVariables = {\n first: 1,\n queryFilter: `name:${orderName}`,\n }\n\n type SingleNode = NonNullable<\n NonNullable<OrdersByNameQuery['orders']>['edges'][number]['node']\n >\n\n const extractedNodes = await fetchShopifyGraphql<\n SingleNode,\n OrdersByNameQuery\n >({\n query: queryOrdersByName,\n variables,\n dataExtractor: (pageData: OrdersByNameQuery) => {\n if (!pageData.orders) {\n throw new Error(\n \"GraphQL response for orders is missing the 'orders' field.\",\n )\n }\n const nodes: SingleNode[] = pageData.orders.edges.map(\n (edge: { node: SingleNode }) => edge.node,\n )\n return {\n nodes,\n }\n },\n fetchAllPages: false,\n })\n\n const order = extractedNodes[0]\n if (!order) {\n logger.debug(`No order found with name: ${orderName}`)\n return null\n }\n\n const leanOrder = {\n id: order.id,\n name: order.name,\n createdAt: order.createdAt,\n updatedAt: order.updatedAt,\n totalPrice: {\n amount: order.totalPriceSet?.shopMoney?.amount ?? '',\n currencyCode: order.totalPriceSet?.shopMoney?.currencyCode ?? '',\n },\n customer: order.customer\n ? {\n id: order.customer.id,\n displayName: order.customer.displayName,\n emailAddress:\n order.customer.defaultEmailAddress?.emailAddress ?? null,\n }\n : null,\n financialStatus: order.displayFinancialStatus ?? null,\n fulfillmentStatus: order.displayFulfillmentStatus ?? null,\n }\n\n return await returnOutputParsed(leanOrder, GetLeanOrderByNameReturn)\n}\n\nasync function getFullOrderByName(\n orderName: string,\n): Promise<GetFullOrderByNameReturnType> {\n const variables: OrdersByNameQueryVariables = {\n first: 1,\n queryFilter: `name:${orderName}`,\n }\n\n type SingleNode = NonNullable<\n NonNullable<OrdersByNameFullQuery['orders']>['edges'][number]['node']\n >\n\n const extractedNodes = await fetchShopifyGraphql<\n SingleNode,\n OrdersByNameFullQuery\n >({\n query: queryOrdersByNameFull,\n variables,\n dataExtractor: (pageData: OrdersByNameFullQuery) => {\n if (!pageData.orders) {\n throw new Error(\n \"GraphQL response for orders is missing the 'orders' field.\",\n )\n }\n const nodes: SingleNode[] = pageData.orders.edges.map(\n (edge: { node: SingleNode }) => edge.node,\n )\n return {\n nodes,\n }\n },\n fetchAllPages: false,\n })\n\n if (extractedNodes.length === 0) {\n logger.debug(`No order found with name: ${orderName}`)\n return null\n }\n\n const order = extractedNodes[0]\n if (!order) {\n logger.debug(`No order found with name: ${orderName}`)\n return null\n }\n\n return order\n}\n","const { env } = process\n\nexport const gql = String.raw\n\nconst logLevels = {\n silent: 0,\n error: 1,\n warn: 2,\n info: 3,\n debug: 4,\n} as const\n\ntype LogLevelName = keyof typeof logLevels\n\nfunction getLogLevel(\n nodeEnv: string | undefined,\n logLevelEnv: string | undefined,\n): LogLevelName {\n if (logLevelEnv && logLevelEnv in logLevels) {\n return logLevelEnv as LogLevelName\n }\n\n if (nodeEnv === 'test') {\n return 'silent'\n }\n\n if (nodeEnv === 'production') {\n return 'info'\n }\n return 'debug'\n}\n\nexport const activeLogLevelName = getLogLevel(env.NODE_ENV, env.LOG_LEVEL)\nconst activeLogLevelValue = logLevels[activeLogLevelName]\n\nexport const logger = {\n debug: (...args: unknown[]) => {\n if (logLevels.debug <= activeLogLevelValue) {\n // biome-ignore lint/suspicious/noConsole: <explanation>\n console.debug(...args)\n }\n },\n info: (...args: unknown[]) => {\n if (logLevels.info <= activeLogLevelValue) {\n // biome-ignore lint/suspicious/noConsole: <explanation>\n console.info(...args)\n }\n },\n warn: (...args: unknown[]) => {\n if (logLevels.warn <= activeLogLevelValue) {\n // biome-ignore lint/suspicious/noConsole: <explanation>\n console.warn(...args)\n }\n },\n error: (...args: unknown[]) => {\n if (logLevels.error <= activeLogLevelValue) {\n // biome-ignore lint/suspicious/noConsole: <explanation>\n console.error(...args)\n }\n },\n}\n","import {\n ApiVersion,\n type GraphqlClient,\n LogSeverity,\n Session,\n shopifyApi,\n} from '@shopify/shopify-api'\nimport '@shopify/shopify-api/adapters/node'\nimport dotenv from 'dotenv'\nimport { z } from 'zod'\nimport { activeLogLevelName, logger } from './logger.js'\n\n// https://shopify.dev/docs/api/admin-graphql/2025-04/\nexport const SHOPIFY_API_VERSION = ApiVersion.April25\n\ndotenv.config()\n\nconst envSchema = z.object({\n SHOPIFY_API_KEY: z.string({\n error: () => ({ message: 'SHOPIFY_API_KEY is required' }),\n }),\n SHOPIFY_API_SECRET: z.string({\n error: () => ({ message: 'SHOPIFY_API_SECRET is required' }),\n }),\n SHOPIFY_API_HOSTNAME: z.string({\n error: () => ({ message: 'SHOPIFY_API_HOSTNAME is required' }),\n }),\n SHOPIFY_ACCESS_TOKEN: z.string({\n error: () => ({ message: 'SHOPIFY_ACCESS_TOKEN is required' }),\n }),\n NODE_ENV: z\n .enum(['development', 'production', 'test'])\n .default('development'),\n})\n\nconst mapLogLevelToShopifySeverity = (level: string): LogSeverity => {\n switch (level) {\n case 'silent':\n return LogSeverity.Error\n case 'debug':\n return LogSeverity.Debug\n case 'info':\n return LogSeverity.Info\n case 'warn':\n return LogSeverity.Warning\n case 'error':\n return LogSeverity.Error\n default:\n return LogSeverity.Info\n }\n}\n\nlet shopifyGraphqlClient: GraphqlClient\n\ntry {\n // biome-ignore lint/nursery/noProcessEnv: <explanation>\n const env = envSchema.parse(process.env)\n\n const shopify = shopifyApi({\n apiKey: env.SHOPIFY_API_KEY,\n apiSecretKey: env.SHOPIFY_API_SECRET,\n hostName: env.SHOPIFY_API_HOSTNAME,\n apiVersion: SHOPIFY_API_VERSION,\n isEmbeddedApp: false,\n logger: { level: mapLogLevelToShopifySeverity(activeLogLevelName) },\n future: {\n customerAddressDefaultFix: true,\n lineItemBilling: true,\n unstable_managedPricingSupport: false,\n },\n })\n\n const shopifySession = new Session({\n id: `custom-session-${env.SHOPIFY_API_HOSTNAME}`,\n shop: env.SHOPIFY_API_HOSTNAME,\n state: 'authenticated',\n isOnline: true,\n accessToken: env.SHOPIFY_ACCESS_TOKEN,\n })\n\n shopifyGraphqlClient = new shopify.clients.Graphql({\n session: shopifySession,\n })\n\n logger.info('Shopify API client initialized successfully.')\n} catch (error) {\n if (error instanceof z.ZodError) {\n const msg = z.prettifyError(error)\n logger.error(msg)\n } else {\n logger.error('Failed to initialize Shopify API client:', error)\n }\n throw error\n}\n\nexport { shopifyGraphqlClient as shopifyClient }\n","import { logger } from './logger.js'\nimport { shopifyClient } from './shopifyClient.js'\n\nexport function convertIdIntoGid(\n id: bigint,\n type: 'Order' | 'Customer',\n): string {\n return `gid://shopify/${type}/${id}`\n}\n\ninterface PageInfo {\n hasNextPage: boolean\n endCursor?: string | null | undefined\n}\n\ninterface ShopifyErrorWithMessage {\n message?: string\n [key: string]: unknown\n}\n\nexport async function fetchShopifyGraphql<TResultNode, TPageData>(params: {\n query: string\n variables: Record<string, unknown>\n dataExtractor: (pageData: TPageData) => {\n nodes: TResultNode[]\n pageInfo?: PageInfo\n userErrors?: { message?: string }[]\n }\n fetchAllPages?: boolean\n}): Promise<TResultNode[]> {\n const {\n query,\n variables: initialVariables,\n dataExtractor,\n fetchAllPages = false,\n } = params\n\n const allNodes: TResultNode[] = []\n let currentVariables = { ...initialVariables }\n let hasNextLoop = true\n\n type ShopifyRequestErrorType = {\n errors?: ShopifyErrorWithMessage | ShopifyErrorWithMessage[]\n }\n\n do {\n const response = (await shopifyClient.request<TPageData>(query, {\n variables: currentVariables,\n })) as { data?: TPageData } & ShopifyRequestErrorType\n\n if (response.errors) {\n let errorMessages = 'GraphQL query failed.'\n const errors = response.errors\n if (Array.isArray(errors)) {\n errorMessages = errors\n .map((e: ShopifyErrorWithMessage) => e.message || JSON.stringify(e))\n .join('\\n')\n } else if (\n typeof errors === 'object' &&\n errors !== null &&\n 'message' in errors\n ) {\n errorMessages = errors.message || JSON.stringify(errors)\n } else if (typeof errors === 'string') {\n errorMessages = errors\n } else {\n errorMessages = JSON.stringify(errors)\n }\n logger.error('GraphQL query failed:', errorMessages)\n throw new Error(`GraphQL errors: ${errorMessages}`)\n }\n\n if (!response.data) {\n throw new Error('No data in Shopify API response')\n }\n\n const { nodes, pageInfo, userErrors } = dataExtractor(response.data)\n\n // Handle Shopify mutation userErrors pattern\n if (Array.isArray(userErrors) && userErrors.length > 0) {\n const errorMessages = userErrors\n .map((e) => e.message || JSON.stringify(e))\n .join('\\n')\n logger.error('Shopify mutation userErrors:', errorMessages)\n throw new Error(`Shopify mutation userErrors: ${errorMessages}`)\n }\n\n allNodes.push(...nodes)\n\n hasNextLoop = fetchAllPages ? !!pageInfo?.hasNextPage : false\n if (hasNextLoop && pageInfo?.endCursor) {\n currentVariables = {\n ...currentVariables,\n after: pageInfo.endCursor,\n }\n }\n } while (hasNextLoop)\n\n return allNodes\n}\n","import z from 'zod'\nimport { logger } from './logger.js'\n\nexport async function returnOutputParsed<T>(\n data: unknown,\n Model: z.ZodType<T>,\n) {\n const parsed = await Model.safeParseAsync(data)\n if (!parsed.success) {\n if (parsed.error instanceof z.ZodError) {\n const msg = z.prettifyError(parsed.error)\n logger.error(msg)\n } else {\n logger.error('Failed to parse:', parsed.error)\n }\n // throw parsedVariants.error\n throw new Error('Failed to parse product variants')\n }\n logger.info('Parsed data successfully')\n return parsed.data\n}\n","import { gql } from '../../utils/logger'\n\nexport const queryOrdersByName = gql`#graphql\n query ordersByName($first: Int!, $queryFilter: String!) {\n orders(first: $first, query: $queryFilter) {\n edges {\n node {\n id\n name\n createdAt\n updatedAt\n totalPriceSet {\n shopMoney {\n amount\n currencyCode\n }\n }\n customer {\n id\n lastName\n defaultEmailAddress {\n emailAddress\n }\n displayName\n firstName\n }\n displayFinancialStatus\n displayFulfillmentStatus\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n`\n\nexport const queryOrdersByNameFull = gql`#graphql\n query ordersByNameFull($first: Int!, $queryFilter: String!) {\n orders(first: $first, query: $queryFilter) {\n edges {\n node {\n billingAddress {\n address1\n address2\n city\n company\n country\n countryCodeV2\n firstName\n formattedArea\n id\n lastName\n name\n phone\n province\n provinceCode\n timeZone\n zip\n }\n billingAddressMatchesShippingAddress\n cancelReason\n cancellation {\n staffNote\n }\n cancelledAt\n capturable\n clientIp\n closed\n closedAt\n confirmed\n createdAt\n currencyCode\n currentCartDiscountAmountSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentShippingPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentSubtotalLineItemsQuantity\n currentSubtotalPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTaxLines {\n channelLiable\n rate\n ratePercentage\n source\n title\n priceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n }\n currentTotalAdditionalFeesSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTotalDiscountsSet {\n presentmentMoney {\n amount\n currencyCode\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTotalDutiesSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTotalPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTotalTaxSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTotalWeight\n customer {\n id\n lastName\n defaultEmailAddress {\n emailAddress\n }\n displayName\n firstName\n }\n customerAcceptsMarketing\n discountCodes\n discountCode\n displayAddress {\n address1\n address2\n city\n company\n country\n countryCodeV2\n firstName\n formattedArea\n id\n lastName\n name\n phone\n province\n provinceCode\n timeZone\n zip\n }\n displayFinancialStatus\n displayFulfillmentStatus\n dutiesIncluded\n edited\n email\n estimatedTaxes\n fulfillable\n fulfillments(first: 20) {\n createdAt\n deliveredAt\n displayStatus\n estimatedDeliveryAt\n updatedAt\n trackingInfo(first: 10) {\n company\n url\n }\n totalQuantity\n status\n name\n id\n }\n fullyPaid\n id\n lineItems(first: 50) {\n edges {\n node {\n id\n name\n originalUnitPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n quantity\n requiresShipping\n sku\n title\n variantTitle\n }\n }\n }\n name\n note\n processedAt\n shippingAddress {\n address1\n address2\n city\n company\n country\n countryCodeV2\n firstName\n formattedArea\n id\n lastName\n name\n phone\n province\n provinceCode\n timeZone\n zip\n }\n statusPageUrl\n tags\n totalPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n totalReceivedSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n totalRefundedSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n totalShippingPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n totalTaxSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n totalWeight\n unpaid\n updatedAt\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n`\n","import z from 'zod'\nimport type {\n LeanProductVariantsQuery,\n LeanProductVariantsQueryVariables,\n} from '../../generated-api-types/2025-04/admin.generated.js'\nimport { gql, logger } from '../../utils/logger.js'\nimport { fetchShopifyGraphql } from '../../utils/shopifyFetch.js'\nimport { returnOutputParsed } from '../../utils/zod.js'\n\nconst GetLeanProductVariantsReturn = z.array(\n z.object({\n productId: z.string(),\n productTitle: z.string(),\n variantId: z.string(),\n variantTitle: z.string(),\n sku: z.string(),\n }),\n)\n\ntype GetLeanProductVariantsReturnType = z.infer<\n typeof GetLeanProductVariantsReturn\n>\n\n/**\n * Retrieves a lean list of product variants from Shopify, optionally filtered by SKUs.\n * Product variants are mapped to a simpler output structure.\n * Variants missing essential properties (e.g., SKU) will be filtered out and logged.\n *\n * @param {string[]} [skus] - An optional array of SKUs to filter by. If provided, only variants matching these SKUs will be fetched.\n * @returns {Promise<GetLeanProductVariantsReturnType>} A promise that resolves to an array of lean product variant data.\n * @throws {Error} If the GraphQL query fails, returns no data, or if the `productVariants` field is missing in the response.\n */\nexport async function getLeanProductVariants(\n skus?: string[],\n): Promise<GetLeanProductVariantsReturnType> {\n const queryGql = gql`#graphql\n query leanProductVariants($first: Int!, $after: String, $queryFilter: String) {\n productVariants(first: $first, after: $after, query: $queryFilter) {\n edges {\n node { \n id\n title\n sku\n product {\n id\n title\n }\n }\n }\n pageInfo { \n hasNextPage\n endCursor\n }\n }\n }\n `\n\n const initialVariables: LeanProductVariantsQueryVariables = { first: 250 }\n if (skus && skus.length > 0) {\n initialVariables.queryFilter = skus\n .map((sku: string) => `sku:${sku}`)\n .join(' OR ')\n }\n\n // Type for a single node from the productVariants query\n type SingleNode = NonNullable<\n NonNullable<\n LeanProductVariantsQuery['productVariants']\n >['edges'][number]['node']\n >\n\n const extractedNodes = await fetchShopifyGraphql<\n SingleNode,\n LeanProductVariantsQuery\n >({\n query: queryGql,\n variables: initialVariables,\n dataExtractor: (pageData: LeanProductVariantsQuery) => {\n if (!pageData.productVariants) {\n throw new Error(\n \"GraphQL response for product variants is missing the 'productVariants' field.\",\n )\n }\n const nodes: SingleNode[] = pageData.productVariants.edges.map(\n (edge: { node: SingleNode }) => edge.node,\n )\n return {\n nodes,\n pageInfo: pageData.productVariants.pageInfo,\n }\n },\n fetchAllPages: true,\n })\n\n const allVariants = extractedNodes.flatMap<\n GetLeanProductVariantsReturnType[number]\n >((v) => {\n if (v.sku) {\n return [\n {\n productId: v.product.id,\n productTitle: v.product.title,\n variantId: v.id,\n variantTitle: v.title,\n sku: v.sku,\n },\n ]\n }\n logger.debug(\n `Product ${v.product.title} (ID: ${v.product.id}) has a variant (ID: ${v.id}) with no SKU. Filtering out.`,\n )\n return []\n })\n\n return await returnOutputParsed(allVariants, GetLeanProductVariantsReturn)\n}\n"],"mappings":"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","names":["z","env","z","z","z","z","z"]}
1
+ {"version":3,"sources":["../src/queries/orders/getOrderByName.ts","../src/utils/logger.ts","../src/utils/shopifyClient.ts","../src/utils/shopifyFetch.ts","../src/utils/zod.ts","../src/queries/orders/getOrderByName.queries.ts","../src/queries/productVariants/getLeanProductVariants.ts","../src/queries/order/getOrderPaymentDetails.ts","../src/queries/order/getOrderPaymentDetails.queries.ts"],"sourcesContent":["import z from 'zod'\nimport type {\n OrdersByNameFullQuery,\n OrdersByNameQuery,\n OrdersByNameQueryVariables,\n} from '../../generated-api-types/2025-04/admin.generated.js'\nimport { logger } from '../../utils/logger.js'\nimport { fetchShopifyGraphql } from '../../utils/shopifyFetch.js'\nimport { returnOutputParsed } from '../../utils/zod.js'\nimport {\n queryOrdersByName,\n queryOrdersByNameFull,\n} from './getOrderByName.queries.js'\n\nconst GetLeanOrderByNameReturn = z\n .object({\n id: z.string(),\n name: z.string(),\n createdAt: z.string(),\n updatedAt: z.string(),\n totalPrice: z.object({\n amount: z.string(),\n currencyCode: z.string(),\n }),\n customer: z\n .object({\n id: z.string(),\n displayName: z.string(),\n emailAddress: z.string().nullable(),\n })\n .nullable(),\n financialStatus: z.string().nullable(),\n fulfillmentStatus: z.string().nullable(),\n })\n .nullable()\n\ntype GetLeanOrderByNameReturnType = z.infer<typeof GetLeanOrderByNameReturn>\n\ntype GetFullOrderByNameReturnType = NonNullable<\n NonNullable<OrdersByNameFullQuery['orders']>['edges'][number]['node']\n> | null\n\ntype OrderDetailLevel = 'lean' | 'full'\n\n// Function overloads\nexport function getOrderByName(\n orderName: string,\n detailLevel: 'lean',\n): Promise<GetLeanOrderByNameReturnType>\nexport function getOrderByName(\n orderName: string,\n detailLevel: 'full',\n): Promise<GetFullOrderByNameReturnType>\nexport function getOrderByName(\n orderName: string,\n): Promise<GetLeanOrderByNameReturnType>\n\n/**\n * Retrieves a single order from Shopify by its order name (e.g., \"B12345\").\n * Returns null if no order is found with the specified name.\n *\n * @param {string} orderName - The order name to search for (e.g., \"B12345\").\n * @param {OrderDetailLevel} detailLevel - The level of detail to return ('lean' or 'full'). Defaults to 'lean'.\n * @returns {Promise<GetLeanOrderByNameReturnType | GetFullOrderByNameReturnType>} A promise that resolves to the order data or null if not found.\n * @throws {Error} If the GraphQL query fails or if the response structure is invalid.\n */\nexport async function getOrderByName(\n orderName: string,\n detailLevel: OrderDetailLevel = 'lean',\n): Promise<GetLeanOrderByNameReturnType | GetFullOrderByNameReturnType> {\n if (detailLevel === 'lean') {\n return getLeanOrderByName(orderName)\n }\n return getFullOrderByName(orderName)\n}\n\nasync function getLeanOrderByName(\n orderName: string,\n): Promise<GetLeanOrderByNameReturnType> {\n const variables: OrdersByNameQueryVariables = {\n first: 1,\n queryFilter: `name:${orderName}`,\n }\n\n type SingleNode = NonNullable<\n NonNullable<OrdersByNameQuery['orders']>['edges'][number]['node']\n >\n\n const extractedNodes = await fetchShopifyGraphql<\n SingleNode,\n OrdersByNameQuery\n >({\n query: queryOrdersByName,\n variables,\n dataExtractor: (pageData: OrdersByNameQuery) => {\n if (!pageData.orders) {\n throw new Error(\n \"GraphQL response for orders is missing the 'orders' field.\",\n )\n }\n const nodes: SingleNode[] = pageData.orders.edges.map(\n (edge: { node: SingleNode }) => edge.node,\n )\n return {\n nodes,\n }\n },\n fetchAllPages: false,\n })\n\n const order = extractedNodes[0]\n if (!order) {\n logger.debug(`No order found with name: ${orderName}`)\n return null\n }\n\n const leanOrder = {\n id: order.id,\n name: order.name,\n createdAt: order.createdAt,\n updatedAt: order.updatedAt,\n totalPrice: {\n amount: order.totalPriceSet?.shopMoney?.amount ?? '',\n currencyCode: order.totalPriceSet?.shopMoney?.currencyCode ?? '',\n },\n customer: order.customer\n ? {\n id: order.customer.id,\n displayName: order.customer.displayName,\n emailAddress:\n order.customer.defaultEmailAddress?.emailAddress ?? null,\n }\n : null,\n financialStatus: order.displayFinancialStatus ?? null,\n fulfillmentStatus: order.displayFulfillmentStatus ?? null,\n }\n\n return await returnOutputParsed(leanOrder, GetLeanOrderByNameReturn)\n}\n\nasync function getFullOrderByName(\n orderName: string,\n): Promise<GetFullOrderByNameReturnType> {\n const variables: OrdersByNameQueryVariables = {\n first: 1,\n queryFilter: `name:${orderName}`,\n }\n\n type SingleNode = NonNullable<\n NonNullable<OrdersByNameFullQuery['orders']>['edges'][number]['node']\n >\n\n const extractedNodes = await fetchShopifyGraphql<\n SingleNode,\n OrdersByNameFullQuery\n >({\n query: queryOrdersByNameFull,\n variables,\n dataExtractor: (pageData: OrdersByNameFullQuery) => {\n if (!pageData.orders) {\n throw new Error(\n \"GraphQL response for orders is missing the 'orders' field.\",\n )\n }\n const nodes: SingleNode[] = pageData.orders.edges.map(\n (edge: { node: SingleNode }) => edge.node,\n )\n return {\n nodes,\n }\n },\n fetchAllPages: false,\n })\n\n if (extractedNodes.length === 0) {\n logger.debug(`No order found with name: ${orderName}`)\n return null\n }\n\n const order = extractedNodes[0]\n if (!order) {\n logger.debug(`No order found with name: ${orderName}`)\n return null\n }\n\n return order\n}\n","const { env } = process\n\nexport const gql = String.raw\n\nconst logLevels = {\n silent: 0,\n error: 1,\n warn: 2,\n info: 3,\n debug: 4,\n} as const\n\ntype LogLevelName = keyof typeof logLevels\n\nfunction getLogLevel(\n nodeEnv: string | undefined,\n logLevelEnv: string | undefined,\n): LogLevelName {\n if (logLevelEnv && logLevelEnv in logLevels) {\n return logLevelEnv as LogLevelName\n }\n\n if (nodeEnv === 'test') {\n return 'silent'\n }\n\n if (nodeEnv === 'production') {\n return 'info'\n }\n return 'debug'\n}\n\nexport const activeLogLevelName = getLogLevel(env.NODE_ENV, env.LOG_LEVEL)\nconst activeLogLevelValue = logLevels[activeLogLevelName]\n\nexport const logger = {\n debug: (...args: unknown[]) => {\n if (logLevels.debug <= activeLogLevelValue) {\n // biome-ignore lint/suspicious/noConsole: <explanation>\n console.debug(...args)\n }\n },\n info: (...args: unknown[]) => {\n if (logLevels.info <= activeLogLevelValue) {\n // biome-ignore lint/suspicious/noConsole: <explanation>\n console.info(...args)\n }\n },\n warn: (...args: unknown[]) => {\n if (logLevels.warn <= activeLogLevelValue) {\n // biome-ignore lint/suspicious/noConsole: <explanation>\n console.warn(...args)\n }\n },\n error: (...args: unknown[]) => {\n if (logLevels.error <= activeLogLevelValue) {\n // biome-ignore lint/suspicious/noConsole: <explanation>\n console.error(...args)\n }\n },\n}\n","import {\n ApiVersion,\n type GraphqlClient,\n LogSeverity,\n Session,\n shopifyApi,\n} from '@shopify/shopify-api'\nimport '@shopify/shopify-api/adapters/node'\nimport dotenv from 'dotenv'\nimport { z } from 'zod'\nimport { activeLogLevelName, logger } from './logger.js'\n\n// https://shopify.dev/docs/api/admin-graphql/2025-04/\nexport const SHOPIFY_API_VERSION = ApiVersion.April25\n\ndotenv.config()\n\nconst envSchema = z.object({\n SHOPIFY_API_KEY: z.string({\n required_error: 'SHOPIFY_API_KEY is required',\n }),\n SHOPIFY_API_SECRET: z.string({\n required_error: 'SHOPIFY_API_SECRET is required',\n }),\n SHOPIFY_API_HOSTNAME: z.string({\n required_error: 'SHOPIFY_API_HOSTNAME is required',\n }),\n SHOPIFY_ACCESS_TOKEN: z.string({\n required_error: 'SHOPIFY_ACCESS_TOKEN is required',\n }),\n NODE_ENV: z\n .enum(['development', 'production', 'test'])\n .default('development'),\n})\n\nconst mapLogLevelToShopifySeverity = (level: string): LogSeverity => {\n switch (level) {\n case 'silent':\n return LogSeverity.Error\n case 'debug':\n return LogSeverity.Debug\n case 'info':\n return LogSeverity.Info\n case 'warn':\n return LogSeverity.Warning\n case 'error':\n return LogSeverity.Error\n default:\n return LogSeverity.Info\n }\n}\n\nlet shopifyGraphqlClient: GraphqlClient\n\ntry {\n // biome-ignore lint/nursery/noProcessEnv: <explanation>\n const env = envSchema.parse(process.env)\n\n const shopify = shopifyApi({\n apiKey: env.SHOPIFY_API_KEY,\n apiSecretKey: env.SHOPIFY_API_SECRET,\n hostName: env.SHOPIFY_API_HOSTNAME,\n apiVersion: SHOPIFY_API_VERSION,\n isEmbeddedApp: false,\n logger: { level: mapLogLevelToShopifySeverity(activeLogLevelName) },\n future: {\n customerAddressDefaultFix: true,\n lineItemBilling: true,\n unstable_managedPricingSupport: false,\n },\n })\n\n const shopifySession = new Session({\n id: `custom-session-${env.SHOPIFY_API_HOSTNAME}`,\n shop: env.SHOPIFY_API_HOSTNAME,\n state: 'authenticated',\n isOnline: true,\n accessToken: env.SHOPIFY_ACCESS_TOKEN,\n })\n\n shopifyGraphqlClient = new shopify.clients.Graphql({\n session: shopifySession,\n })\n\n logger.info('Shopify API client initialized successfully.')\n} catch (error) {\n if (error instanceof z.ZodError) {\n const msg = JSON.stringify(error.format(), null, 2)\n logger.error(msg)\n } else {\n logger.error('Failed to initialize Shopify API client:', error)\n }\n throw error\n}\n\nexport { shopifyGraphqlClient as shopifyClient }\n","import { logger } from './logger.js'\nimport { shopifyClient } from './shopifyClient.js'\n\nexport function convertIdIntoGid(\n id: bigint,\n type: 'Order' | 'Customer',\n): string {\n return `gid://shopify/${type}/${id}`\n}\n\ninterface PageInfo {\n hasNextPage: boolean\n endCursor?: string | null | undefined\n}\n\ninterface ShopifyErrorWithMessage {\n message?: string\n [key: string]: unknown\n}\n\ntype TExtractorFunctionType<TResultNode, TPageData> = (pageData: TPageData) => {\n nodes: TResultNode[]\n pageInfo?: PageInfo\n userErrors?: { message?: string }[]\n}\n\nexport async function fetchShopifyGraphql<TResultNode, TPageData>(params: {\n query: string\n variables: Record<string, unknown>\n dataExtractor?: TExtractorFunctionType<TResultNode, TPageData>\n fetchAllPages?: boolean\n}): Promise<TResultNode[]>\nexport async function fetchShopifyGraphql<TReturnType>(params: {\n query: string\n variables: Record<string, unknown>\n}): Promise<TReturnType>\nexport async function fetchShopifyGraphql<\n TResultNode,\n TPageData,\n TReturnType,\n>(params: {\n query: string\n variables: Record<string, unknown>\n dataExtractor?: TExtractorFunctionType<TResultNode, TPageData>\n fetchAllPages?: boolean\n}): Promise<TResultNode[] | TReturnType> {\n const {\n query,\n variables: initialVariables,\n dataExtractor,\n fetchAllPages = false,\n } = params\n\n let currentVariables = { ...initialVariables }\n\n if (!dataExtractor) {\n return makeRequest<NonNullable<TReturnType>>(query, currentVariables)\n }\n\n const allNodes: TResultNode[] = []\n let hasNextLoop = true\n\n do {\n const response = await makeRequest<TPageData>(query, currentVariables)\n const { nodes, pageInfo, userErrors } = dataExtractor(response)\n\n // Handle Shopify mutation userErrors pattern\n if (Array.isArray(userErrors) && userErrors.length > 0) {\n const errorMessages = userErrors\n .map((e) => e.message || JSON.stringify(e))\n .join('\\n')\n logger.error('Shopify mutation userErrors:', errorMessages)\n throw new Error(`Shopify mutation userErrors: ${errorMessages}`)\n }\n\n allNodes.push(...nodes)\n\n hasNextLoop = fetchAllPages ? !!pageInfo?.hasNextPage : false\n if (hasNextLoop && pageInfo?.endCursor) {\n currentVariables = {\n ...currentVariables,\n after: pageInfo.endCursor,\n }\n }\n } while (hasNextLoop)\n\n return allNodes\n}\n\nasync function makeRequest<TReturnDataType>(\n query: string,\n variables: Record<string, unknown>,\n): Promise<NonNullable<TReturnDataType>> {\n type ShopifyRequestErrorType = {\n errors?: ShopifyErrorWithMessage | ShopifyErrorWithMessage[]\n }\n\n const response = (await shopifyClient.request<TReturnDataType>(query, {\n variables,\n })) as { data?: TReturnDataType } & ShopifyRequestErrorType\n\n if (response.errors) {\n let errorMessages = 'GraphQL query failed.'\n const errors = response.errors\n if (Array.isArray(errors)) {\n errorMessages = errors\n .map((e: ShopifyErrorWithMessage) => e.message || JSON.stringify(e))\n .join('\\n')\n } else if (\n typeof errors === 'object' &&\n errors !== null &&\n 'message' in errors\n ) {\n errorMessages = errors.message || JSON.stringify(errors)\n } else if (typeof errors === 'string') {\n errorMessages = errors\n } else {\n errorMessages = JSON.stringify(errors)\n }\n logger.error('GraphQL query failed:', errorMessages)\n throw new Error(`GraphQL errors: ${errorMessages}`)\n }\n\n if (!response.data) {\n throw new Error('No data in Shopify API response')\n }\n\n return response.data\n}\n","import z from 'zod'\nimport { logger } from './logger.js'\n\nexport async function returnOutputParsed<T>(\n data: unknown,\n Model: z.ZodType<T>,\n) {\n const parsed = await Model.safeParseAsync(data)\n if (!parsed.success) {\n if (parsed.error instanceof z.ZodError) {\n const msg = JSON.stringify(parsed.error.format(), null, 2)\n logger.error(msg)\n } else {\n logger.error('Failed to parse:', parsed.error)\n }\n // throw parsedVariants.error\n throw new Error('Failed to parse product variants')\n }\n logger.info('Parsed data successfully')\n return parsed.data\n}\n","import { gql } from '../../utils/logger'\n\nexport const queryOrdersByName = gql`#graphql\n query ordersByName($first: Int!, $queryFilter: String!) {\n orders(first: $first, query: $queryFilter) {\n edges {\n node {\n id\n name\n createdAt\n updatedAt\n totalPriceSet {\n shopMoney {\n amount\n currencyCode\n }\n }\n customer {\n id\n lastName\n defaultEmailAddress {\n emailAddress\n }\n displayName\n firstName\n }\n displayFinancialStatus\n displayFulfillmentStatus\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n`\n\nexport const queryOrdersByNameFull = gql`#graphql\n query ordersByNameFull($first: Int!, $queryFilter: String!) {\n orders(first: $first, query: $queryFilter) {\n edges {\n node {\n billingAddress {\n address1\n address2\n city\n company\n country\n countryCodeV2\n firstName\n formattedArea\n id\n lastName\n name\n phone\n province\n provinceCode\n timeZone\n zip\n }\n billingAddressMatchesShippingAddress\n cancelReason\n cancellation {\n staffNote\n }\n cancelledAt\n capturable\n clientIp\n closed\n closedAt\n confirmed\n createdAt\n currencyCode\n currentCartDiscountAmountSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentShippingPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentSubtotalLineItemsQuantity\n currentSubtotalPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTaxLines {\n channelLiable\n rate\n ratePercentage\n source\n title\n priceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n }\n currentTotalAdditionalFeesSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTotalDiscountsSet {\n presentmentMoney {\n amount\n currencyCode\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTotalDutiesSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTotalPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTotalTaxSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTotalWeight\n customer {\n id\n lastName\n defaultEmailAddress {\n emailAddress\n }\n displayName\n firstName\n }\n customerAcceptsMarketing\n discountCodes\n discountCode\n displayAddress {\n address1\n address2\n city\n company\n country\n countryCodeV2\n firstName\n formattedArea\n id\n lastName\n name\n phone\n province\n provinceCode\n timeZone\n zip\n }\n displayFinancialStatus\n displayFulfillmentStatus\n dutiesIncluded\n edited\n email\n estimatedTaxes\n fulfillable\n fulfillments(first: 20) {\n createdAt\n deliveredAt\n displayStatus\n estimatedDeliveryAt\n updatedAt\n trackingInfo(first: 10) {\n company\n url\n }\n totalQuantity\n status\n name\n id\n }\n fullyPaid\n id\n lineItems(first: 50) {\n edges {\n node {\n id\n name\n originalUnitPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n quantity\n requiresShipping\n sku\n title\n variantTitle\n }\n }\n }\n name\n note\n processedAt\n shippingAddress {\n address1\n address2\n city\n company\n country\n countryCodeV2\n firstName\n formattedArea\n id\n lastName\n name\n phone\n province\n provinceCode\n timeZone\n zip\n }\n statusPageUrl\n tags\n totalPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n totalReceivedSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n totalRefundedSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n totalShippingPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n totalTaxSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n totalWeight\n unpaid\n updatedAt\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n`\n","import z from 'zod'\nimport type {\n LeanProductVariantsQuery,\n LeanProductVariantsQueryVariables,\n} from '../../generated-api-types/2025-04/admin.generated.js'\nimport { gql, logger } from '../../utils/logger.js'\nimport { fetchShopifyGraphql } from '../../utils/shopifyFetch.js'\nimport { returnOutputParsed } from '../../utils/zod.js'\n\nconst GetLeanProductVariantsReturn = z.array(\n z.object({\n productId: z.string(),\n productTitle: z.string(),\n variantId: z.string(),\n variantTitle: z.string(),\n sku: z.string(),\n }),\n)\n\ntype GetLeanProductVariantsReturnType = z.infer<\n typeof GetLeanProductVariantsReturn\n>\n\n/**\n * Retrieves a lean list of product variants from Shopify, optionally filtered by SKUs.\n * Product variants are mapped to a simpler output structure.\n * Variants missing essential properties (e.g., SKU) will be filtered out and logged.\n *\n * @param {string[]} [skus] - An optional array of SKUs to filter by. If provided, only variants matching these SKUs will be fetched.\n * @returns {Promise<GetLeanProductVariantsReturnType>} A promise that resolves to an array of lean product variant data.\n * @throws {Error} If the GraphQL query fails, returns no data, or if the `productVariants` field is missing in the response.\n */\nexport async function getLeanProductVariants(\n skus?: string[],\n): Promise<GetLeanProductVariantsReturnType> {\n const queryGql = gql`#graphql\n query leanProductVariants($first: Int!, $after: String, $queryFilter: String) {\n productVariants(first: $first, after: $after, query: $queryFilter) {\n edges {\n node { \n id\n title\n sku\n product {\n id\n title\n }\n }\n }\n pageInfo { \n hasNextPage\n endCursor\n }\n }\n }\n `\n\n const initialVariables: LeanProductVariantsQueryVariables = { first: 250 }\n if (skus && skus.length > 0) {\n initialVariables.queryFilter = skus\n .map((sku: string) => `sku:${sku}`)\n .join(' OR ')\n }\n\n // Type for a single node from the productVariants query\n type SingleNode = NonNullable<\n NonNullable<\n LeanProductVariantsQuery['productVariants']\n >['edges'][number]['node']\n >\n\n const extractedNodes = await fetchShopifyGraphql<\n SingleNode,\n LeanProductVariantsQuery\n >({\n query: queryGql,\n variables: initialVariables,\n dataExtractor: (pageData: LeanProductVariantsQuery) => {\n if (!pageData.productVariants) {\n throw new Error(\n \"GraphQL response for product variants is missing the 'productVariants' field.\",\n )\n }\n const nodes: SingleNode[] = pageData.productVariants.edges.map(\n (edge: { node: SingleNode }) => edge.node,\n )\n return {\n nodes,\n pageInfo: pageData.productVariants.pageInfo,\n }\n },\n fetchAllPages: true,\n })\n\n const allVariants = extractedNodes.flatMap<\n GetLeanProductVariantsReturnType[number]\n >((v) => {\n if (v.sku) {\n return [\n {\n productId: v.product.id,\n productTitle: v.product.title,\n variantId: v.id,\n variantTitle: v.title,\n sku: v.sku,\n },\n ]\n }\n logger.debug(\n `Product ${v.product.title} (ID: ${v.product.id}) has a variant (ID: ${v.id}) with no SKU. Filtering out.`,\n )\n return []\n })\n\n return await returnOutputParsed(allVariants, GetLeanProductVariantsReturn)\n}\n","import z from 'zod'\nimport type {\n OrderPaymentDetailsByIdQuery,\n OrderPaymentDetailsByIdQueryVariables,\n} from '../../generated-api-types/2025-04/admin.generated.js'\nimport {\n convertIdIntoGid,\n fetchShopifyGraphql,\n} from '../../utils/shopifyFetch.js'\nimport { returnOutputParsed } from '../../utils/zod.js'\nimport { queryOrderPaymentDetails } from './getOrderPaymentDetails.queries.js'\n\nconst GetOrderPaymentDetailsByNameReturn = z.object({\n order: z.object({\n transactions: z.array(\n z.object({\n createdAt: z.string(),\n gateway: z.string(),\n formattedGateway: z.string(),\n kind: z.string(),\n paymentId: z.string(),\n }),\n ),\n }),\n})\n\ntype GetOrderPaymentDetailsByNameReturnType = z.infer<\n typeof GetOrderPaymentDetailsByNameReturn\n>\n\n/**\n * Retrieves a single order from Shopify by its order name (e.g., \"B12345\").\n * Returns null if no order is found with the specified name.\n *\n * @param {bigint} id - The numerical Shopify order id for (e.g., \"12345678\").\n * @returns {Promise<GetOrderPaymentDetailsByNameReturnType>} A promise that resolves to the order data or null if not found.\n * @throws {Error} If the GraphQL query fails or if the response structure is invalid.\n */\nexport async function getOrderPaymentDetailsById(\n id: bigint,\n): Promise<GetOrderPaymentDetailsByNameReturnType> {\n const variables: OrderPaymentDetailsByIdQueryVariables = {\n id: convertIdIntoGid(id, 'Order'),\n }\n\n const response = await fetchShopifyGraphql<OrderPaymentDetailsByIdQuery>({\n query: queryOrderPaymentDetails,\n variables,\n })\n\n return await returnOutputParsed(response, GetOrderPaymentDetailsByNameReturn)\n}\n","import { gql } from '../../utils/logger.js'\n\nexport const queryOrderPaymentDetails = gql`#graphql\n query orderPaymentDetailsById($id: ID!) {\n order(id: $id) {\n transactions {\n createdAt\n gateway\n formattedGateway\n kind\n paymentId\n }\n }\n }\n`\n"],"mappings":"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","names":["z","env","z","z","z","z","z","z","z"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ehrenkind/shopify-lib",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "main": "dist/index.cjs",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.ts",
@@ -39,7 +39,7 @@
39
39
  "@parcel/watcher": "2.5.1",
40
40
  "@total-typescript/ts-reset": "^0.6.1",
41
41
  "@types/node": "22.15.17",
42
- "knip": "5.55.1",
42
+ "knip": "^5.70.2",
43
43
  "lefthook": "1.11.12",
44
44
  "msw": "2.10.2",
45
45
  "tsup": "8.5.0",
@@ -52,12 +52,12 @@
52
52
  "@shopify/api-codegen-preset": "1.1.8",
53
53
  "@shopify/shopify-api": "^11.11.1",
54
54
  "dotenv": "^16.4.7",
55
- "zod": "4.0.0-beta.20250505T195954"
55
+ "zod": "3.25.76"
56
56
  },
57
57
  "scripts": {
58
58
  "build": "tsup",
59
59
  "watch": "pnpm graphql-codegen-esm --watch",
60
- "ci": "pnpm format:check && pnpm knip && pnpm check-exports && pnpm test",
60
+ "ci": "pnpm install && pnpm format:check && pnpm knip && pnpm check-exports && pnpm test",
61
61
  "ci-light": "pnpm format:check",
62
62
  "format:check": "biome check .",
63
63
  "format:fix": "biome check --fix .",
@@ -1,181 +0,0 @@
1
- import * as AdminTypes from './admin.types.js';
2
- export type ConnectMetaObjectToProductVariantMutationVariables = AdminTypes.Exact<{
3
- productId: AdminTypes.Scalars['ID']['input'];
4
- variantId: AdminTypes.Scalars['ID']['input'];
5
- metaObjectId: AdminTypes.Scalars['String']['input'];
6
- metaObjectKey: AdminTypes.Scalars['String']['input'];
7
- }>;
8
- export type ConnectMetaObjectToProductVariantMutation = {
9
- productVariantsBulkUpdate?: AdminTypes.Maybe<{
10
- productVariants?: AdminTypes.Maybe<Array<Pick<AdminTypes.ProductVariant, 'id'>>>;
11
- userErrors: Array<Pick<AdminTypes.ProductVariantsBulkUpdateUserError, 'field' | 'message'>>;
12
- }>;
13
- };
14
- export type OrdersByNameQueryVariables = AdminTypes.Exact<{
15
- first: AdminTypes.Scalars['Int']['input'];
16
- queryFilter: AdminTypes.Scalars['String']['input'];
17
- }>;
18
- export type OrdersByNameQuery = {
19
- orders: {
20
- edges: Array<{
21
- node: (Pick<AdminTypes.Order, 'id' | 'name' | 'createdAt' | 'updatedAt' | 'displayFinancialStatus' | 'displayFulfillmentStatus'> & {
22
- totalPriceSet: {
23
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
24
- };
25
- customer?: AdminTypes.Maybe<(Pick<AdminTypes.Customer, 'id' | 'lastName' | 'displayName' | 'firstName'> & {
26
- defaultEmailAddress?: AdminTypes.Maybe<Pick<AdminTypes.CustomerEmailAddress, 'emailAddress'>>;
27
- })>;
28
- });
29
- }>;
30
- pageInfo: Pick<AdminTypes.PageInfo, 'hasNextPage' | 'endCursor'>;
31
- };
32
- };
33
- export type OrdersByNameFullQueryVariables = AdminTypes.Exact<{
34
- first: AdminTypes.Scalars['Int']['input'];
35
- queryFilter: AdminTypes.Scalars['String']['input'];
36
- }>;
37
- export type OrdersByNameFullQuery = {
38
- orders: {
39
- edges: Array<{
40
- node: (Pick<AdminTypes.Order, 'billingAddressMatchesShippingAddress' | 'cancelReason' | 'cancelledAt' | 'capturable' | 'clientIp' | 'closed' | 'closedAt' | 'confirmed' | 'createdAt' | 'currencyCode' | 'currentSubtotalLineItemsQuantity' | 'currentTotalWeight' | 'customerAcceptsMarketing' | 'discountCodes' | 'discountCode' | 'displayFinancialStatus' | 'displayFulfillmentStatus' | 'dutiesIncluded' | 'edited' | 'email' | 'estimatedTaxes' | 'fulfillable' | 'fullyPaid' | 'id' | 'name' | 'note' | 'processedAt' | 'statusPageUrl' | 'tags' | 'totalWeight' | 'unpaid' | 'updatedAt'> & {
41
- billingAddress?: AdminTypes.Maybe<Pick<AdminTypes.MailingAddress, 'address1' | 'address2' | 'city' | 'company' | 'country' | 'countryCodeV2' | 'firstName' | 'formattedArea' | 'id' | 'lastName' | 'name' | 'phone' | 'province' | 'provinceCode' | 'timeZone' | 'zip'>>;
42
- cancellation?: AdminTypes.Maybe<Pick<AdminTypes.OrderCancellation, 'staffNote'>>;
43
- currentCartDiscountAmountSet: {
44
- presentmentMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
45
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
46
- };
47
- currentShippingPriceSet: {
48
- presentmentMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
49
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
50
- };
51
- currentSubtotalPriceSet: {
52
- presentmentMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
53
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
54
- };
55
- currentTaxLines: Array<(Pick<AdminTypes.TaxLine, 'channelLiable' | 'rate' | 'ratePercentage' | 'source' | 'title'> & {
56
- priceSet: {
57
- presentmentMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
58
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
59
- };
60
- })>;
61
- currentTotalAdditionalFeesSet?: AdminTypes.Maybe<{
62
- presentmentMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
63
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
64
- }>;
65
- currentTotalDiscountsSet: {
66
- presentmentMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
67
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
68
- };
69
- currentTotalDutiesSet?: AdminTypes.Maybe<{
70
- presentmentMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
71
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
72
- }>;
73
- currentTotalPriceSet: {
74
- presentmentMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
75
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
76
- };
77
- currentTotalTaxSet: {
78
- presentmentMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
79
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
80
- };
81
- customer?: AdminTypes.Maybe<(Pick<AdminTypes.Customer, 'id' | 'lastName' | 'displayName' | 'firstName'> & {
82
- defaultEmailAddress?: AdminTypes.Maybe<Pick<AdminTypes.CustomerEmailAddress, 'emailAddress'>>;
83
- })>;
84
- displayAddress?: AdminTypes.Maybe<Pick<AdminTypes.MailingAddress, 'address1' | 'address2' | 'city' | 'company' | 'country' | 'countryCodeV2' | 'firstName' | 'formattedArea' | 'id' | 'lastName' | 'name' | 'phone' | 'province' | 'provinceCode' | 'timeZone' | 'zip'>>;
85
- fulfillments: Array<(Pick<AdminTypes.Fulfillment, 'createdAt' | 'deliveredAt' | 'displayStatus' | 'estimatedDeliveryAt' | 'updatedAt' | 'totalQuantity' | 'status' | 'name' | 'id'> & {
86
- trackingInfo: Array<Pick<AdminTypes.FulfillmentTrackingInfo, 'company' | 'url'>>;
87
- })>;
88
- lineItems: {
89
- edges: Array<{
90
- node: (Pick<AdminTypes.LineItem, 'id' | 'name' | 'quantity' | 'requiresShipping' | 'sku' | 'title' | 'variantTitle'> & {
91
- originalUnitPriceSet: {
92
- presentmentMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
93
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
94
- };
95
- });
96
- }>;
97
- };
98
- shippingAddress?: AdminTypes.Maybe<Pick<AdminTypes.MailingAddress, 'address1' | 'address2' | 'city' | 'company' | 'country' | 'countryCodeV2' | 'firstName' | 'formattedArea' | 'id' | 'lastName' | 'name' | 'phone' | 'province' | 'provinceCode' | 'timeZone' | 'zip'>>;
99
- totalPriceSet: {
100
- presentmentMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
101
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
102
- };
103
- totalReceivedSet: {
104
- presentmentMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
105
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
106
- };
107
- totalRefundedSet: {
108
- presentmentMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
109
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
110
- };
111
- totalShippingPriceSet: {
112
- presentmentMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
113
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
114
- };
115
- totalTaxSet?: AdminTypes.Maybe<{
116
- presentmentMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
117
- shopMoney: Pick<AdminTypes.MoneyV2, 'amount' | 'currencyCode'>;
118
- }>;
119
- });
120
- }>;
121
- pageInfo: Pick<AdminTypes.PageInfo, 'hasNextPage' | 'endCursor'>;
122
- };
123
- };
124
- export type LeanProductVariantsQueryVariables = AdminTypes.Exact<{
125
- first: AdminTypes.Scalars['Int']['input'];
126
- after?: AdminTypes.InputMaybe<AdminTypes.Scalars['String']['input']>;
127
- queryFilter?: AdminTypes.InputMaybe<AdminTypes.Scalars['String']['input']>;
128
- }>;
129
- export type LeanProductVariantsQuery = {
130
- productVariants: {
131
- edges: Array<{
132
- node: (Pick<AdminTypes.ProductVariant, 'id' | 'title' | 'sku'> & {
133
- product: Pick<AdminTypes.Product, 'id' | 'title'>;
134
- });
135
- }>;
136
- pageInfo: Pick<AdminTypes.PageInfo, 'hasNextPage' | 'endCursor'>;
137
- };
138
- };
139
- export type ProductHandlesQueryVariables = AdminTypes.Exact<{
140
- first: AdminTypes.Scalars['Int']['input'];
141
- }>;
142
- export type ProductHandlesQuery = {
143
- products: {
144
- edges: Array<{
145
- node: Pick<AdminTypes.Product, 'handle' | 'title'>;
146
- }>;
147
- };
148
- };
149
- interface GeneratedQueryTypes {
150
- "#graphql\n query ordersByName($first: Int!, $queryFilter: String!) {\n orders(first: $first, query: $queryFilter) {\n edges {\n node {\n id\n name\n createdAt\n updatedAt\n totalPriceSet {\n shopMoney {\n amount\n currencyCode\n }\n }\n customer {\n id\n lastName\n defaultEmailAddress {\n emailAddress\n }\n displayName\n firstName\n }\n displayFinancialStatus\n displayFulfillmentStatus\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n": {
151
- return: OrdersByNameQuery;
152
- variables: OrdersByNameQueryVariables;
153
- };
154
- "#graphql\n query ordersByNameFull($first: Int!, $queryFilter: String!) {\n orders(first: $first, query: $queryFilter) {\n edges {\n node {\n billingAddress {\n address1\n address2\n city\n company\n country\n countryCodeV2\n firstName\n formattedArea\n id\n lastName\n name\n phone\n province\n provinceCode\n timeZone\n zip\n }\n billingAddressMatchesShippingAddress\n cancelReason\n cancellation {\n staffNote\n }\n cancelledAt\n capturable\n clientIp\n closed\n closedAt\n confirmed\n createdAt\n currencyCode\n currentCartDiscountAmountSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentShippingPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentSubtotalLineItemsQuantity\n currentSubtotalPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTaxLines {\n channelLiable\n rate\n ratePercentage\n source\n title\n priceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n }\n currentTotalAdditionalFeesSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTotalDiscountsSet {\n presentmentMoney {\n amount\n currencyCode\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTotalDutiesSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTotalPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTotalTaxSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n currentTotalWeight\n customer {\n id\n lastName\n defaultEmailAddress {\n emailAddress\n }\n displayName\n firstName\n }\n customerAcceptsMarketing\n discountCodes\n discountCode\n displayAddress {\n address1\n address2\n city\n company\n country\n countryCodeV2\n firstName\n formattedArea\n id\n lastName\n name\n phone\n province\n provinceCode\n timeZone\n zip\n }\n displayFinancialStatus\n displayFulfillmentStatus\n dutiesIncluded\n edited\n email\n estimatedTaxes\n fulfillable\n fulfillments(first: 20) {\n createdAt\n deliveredAt\n displayStatus\n estimatedDeliveryAt\n updatedAt\n trackingInfo(first: 10) {\n company\n url\n }\n totalQuantity\n status\n name\n id\n }\n fullyPaid\n id\n lineItems(first: 50) {\n edges {\n node {\n id\n name\n originalUnitPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n quantity\n requiresShipping\n sku\n title\n variantTitle\n }\n }\n }\n name\n note\n processedAt\n shippingAddress {\n address1\n address2\n city\n company\n country\n countryCodeV2\n firstName\n formattedArea\n id\n lastName\n name\n phone\n province\n provinceCode\n timeZone\n zip\n }\n statusPageUrl\n tags\n totalPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n totalReceivedSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n totalRefundedSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n totalShippingPriceSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n totalTaxSet {\n presentmentMoney {\n amount\n currencyCode\n }\n shopMoney {\n amount\n currencyCode\n }\n }\n totalWeight\n unpaid\n updatedAt\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n": {
155
- return: OrdersByNameFullQuery;
156
- variables: OrdersByNameFullQueryVariables;
157
- };
158
- "#graphql\n query leanProductVariants($first: Int!, $after: String, $queryFilter: String) {\n productVariants(first: $first, after: $after, query: $queryFilter) {\n edges {\n node { \n id\n title\n sku\n product {\n id\n title\n }\n }\n }\n pageInfo { \n hasNextPage\n endCursor\n }\n }\n }\n ": {
159
- return: LeanProductVariantsQuery;
160
- variables: LeanProductVariantsQueryVariables;
161
- };
162
- "#graphql\n query productHandles($first: Int!) {\n products(first: $first) {\n edges {\n node {\n handle\n title\n }\n }\n }\n }": {
163
- return: ProductHandlesQuery;
164
- variables: ProductHandlesQueryVariables;
165
- };
166
- }
167
- interface GeneratedMutationTypes {
168
- "#graphql\n mutation connectMetaObjectToProductVariant($productId: ID!, $variantId: ID!, $metaObjectId: String!, $metaObjectKey: String!) {\n productVariantsBulkUpdate(\n productId: $productId\n variants: [\n {\n id: $variantId\n metafields: [\n {\n namespace: \"custom\"\n key: $metaObjectKey\n value: $metaObjectId\n type: \"metaobject_reference\"\n }\n ]\n }\n ] \n ) {\n productVariants { \n id\n }\n userErrors {\n field\n message\n }\n }\n }\n ": {
169
- return: ConnectMetaObjectToProductVariantMutation;
170
- variables: ConnectMetaObjectToProductVariantMutationVariables;
171
- };
172
- }
173
- declare module '@shopify/admin-api-client' {
174
- type InputMaybe<T> = AdminTypes.InputMaybe<T>;
175
- interface AdminQueries extends GeneratedQueryTypes {
176
- }
177
- interface AdminMutations extends GeneratedMutationTypes {
178
- }
179
- }
180
- export {};
181
- //# sourceMappingURL=admin.generated.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin.generated.d.ts","sourceRoot":"","sources":["../../../src/generated-api-types/2025-04/admin.generated.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /* eslint-disable eslint-comments/disable-enable-pair */
2
- /* eslint-disable eslint-comments/no-unlimited-disable */
3
- /* eslint-disable */
4
- import * as AdminTypes from './admin.types.js';
5
- //# sourceMappingURL=admin.generated.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin.generated.js","sourceRoot":"","sources":["../../../src/generated-api-types/2025-04/admin.generated.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yDAAyD;AACzD,oBAAoB;AACpB,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC"}