@ehrenkind/shopify-lib 0.2.2 → 0.4.0

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 (144) hide show
  1. package/dist/generated-api-types/2025-04/admin.generated.d.ts +137 -0
  2. package/dist/generated-api-types/2025-04/admin.generated.d.ts.map +1 -1
  3. package/dist/index.cjs +59 -3
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.cts +81 -1
  6. package/dist/index.d.ts +9 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +9 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/index.mjs +57 -3
  11. package/dist/index.mjs.map +1 -1
  12. package/dist/mutations/customers/deleteCustomerById.d.ts +1 -3
  13. package/dist/mutations/customers/deleteCustomerById.d.ts.map +1 -1
  14. package/dist/mutations/customers/deleteCustomerById.js +1 -4
  15. package/dist/mutations/customers/deleteCustomerById.js.map +1 -1
  16. package/dist/mutations/orders/cancelOrderById.d.ts +23 -0
  17. package/dist/mutations/orders/cancelOrderById.d.ts.map +1 -0
  18. package/dist/mutations/orders/cancelOrderById.js +63 -0
  19. package/dist/mutations/orders/cancelOrderById.js.map +1 -0
  20. package/dist/mutations/orders/cancelOrderById.mock.d.ts +15 -0
  21. package/dist/mutations/orders/cancelOrderById.mock.d.ts.map +1 -0
  22. package/dist/mutations/orders/cancelOrderById.mock.js +17 -0
  23. package/dist/mutations/orders/cancelOrderById.mock.js.map +1 -0
  24. package/dist/mutations/orders/cancelOrderById.test.d.ts +2 -0
  25. package/dist/mutations/orders/cancelOrderById.test.d.ts.map +1 -0
  26. package/dist/mutations/orders/cancelOrderById.test.js +42 -0
  27. package/dist/mutations/orders/cancelOrderById.test.js.map +1 -0
  28. package/dist/queries/customers/getCustomersByEmail.d.ts +13 -0
  29. package/dist/queries/customers/getCustomersByEmail.d.ts.map +1 -0
  30. package/dist/queries/customers/getCustomersByEmail.js +26 -0
  31. package/dist/queries/customers/getCustomersByEmail.js.map +1 -0
  32. package/dist/queries/customers/getCustomersByEmail.mock.d.ts +8 -0
  33. package/dist/queries/customers/getCustomersByEmail.mock.d.ts.map +1 -0
  34. package/dist/queries/customers/getCustomersByEmail.mock.js +54 -0
  35. package/dist/queries/customers/getCustomersByEmail.mock.js.map +1 -0
  36. package/dist/queries/customers/getCustomersByEmail.queries.d.ts +2 -0
  37. package/dist/queries/customers/getCustomersByEmail.queries.d.ts.map +1 -0
  38. package/dist/queries/customers/getCustomersByEmail.queries.js +41 -0
  39. package/dist/queries/customers/getCustomersByEmail.queries.js.map +1 -0
  40. package/dist/queries/customers/getCustomersByEmail.test.d.ts +2 -0
  41. package/dist/queries/customers/getCustomersByEmail.test.d.ts.map +1 -0
  42. package/dist/queries/customers/getCustomersByEmail.test.js +29 -0
  43. package/dist/queries/customers/getCustomersByEmail.test.js.map +1 -0
  44. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.d.ts +14 -0
  45. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.d.ts.map +1 -0
  46. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.js +27 -0
  47. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.js.map +1 -0
  48. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.mock.d.ts +12 -0
  49. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.mock.d.ts.map +1 -0
  50. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.mock.js +41 -0
  51. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.mock.js.map +1 -0
  52. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.queries.d.ts +2 -0
  53. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.queries.d.ts.map +1 -0
  54. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.queries.js +28 -0
  55. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.queries.js.map +1 -0
  56. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.test.d.ts +2 -0
  57. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.test.d.ts.map +1 -0
  58. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.test.js +19 -0
  59. package/dist/queries/fulfillmentOrders/getFulfillmentOrdersByOrderId.test.js.map +1 -0
  60. package/dist/queries/fulfillments/getFulfillmentById.d.ts +12 -0
  61. package/dist/queries/fulfillments/getFulfillmentById.d.ts.map +1 -0
  62. package/dist/queries/fulfillments/getFulfillmentById.js +27 -0
  63. package/dist/queries/fulfillments/getFulfillmentById.js.map +1 -0
  64. package/dist/queries/fulfillments/getFulfillmentById.mock.d.ts +21 -0
  65. package/dist/queries/fulfillments/getFulfillmentById.mock.d.ts.map +1 -0
  66. package/dist/queries/fulfillments/getFulfillmentById.mock.js +83 -0
  67. package/dist/queries/fulfillments/getFulfillmentById.mock.js.map +1 -0
  68. package/dist/queries/fulfillments/getFulfillmentById.queries.d.ts +2 -0
  69. package/dist/queries/fulfillments/getFulfillmentById.queries.d.ts.map +1 -0
  70. package/dist/queries/fulfillments/getFulfillmentById.queries.js +60 -0
  71. package/dist/queries/fulfillments/getFulfillmentById.queries.js.map +1 -0
  72. package/dist/queries/fulfillments/getFulfillmentById.test.d.ts +2 -0
  73. package/dist/queries/fulfillments/getFulfillmentById.test.d.ts.map +1 -0
  74. package/dist/queries/fulfillments/getFulfillmentById.test.js +37 -0
  75. package/dist/queries/fulfillments/getFulfillmentById.test.js.map +1 -0
  76. package/dist/queries/fulfillments/getFulfillmentTrackingIds.d.ts +14 -0
  77. package/dist/queries/fulfillments/getFulfillmentTrackingIds.d.ts.map +1 -0
  78. package/dist/queries/fulfillments/getFulfillmentTrackingIds.js +36 -0
  79. package/dist/queries/fulfillments/getFulfillmentTrackingIds.js.map +1 -0
  80. package/dist/queries/fulfillments/getFulfillmentTrackingIds.mock.d.ts +5 -0
  81. package/dist/queries/fulfillments/getFulfillmentTrackingIds.mock.d.ts.map +1 -0
  82. package/dist/queries/fulfillments/getFulfillmentTrackingIds.mock.js +20 -0
  83. package/dist/queries/fulfillments/getFulfillmentTrackingIds.mock.js.map +1 -0
  84. package/dist/queries/fulfillments/getFulfillmentTrackingIds.queries.d.ts +2 -0
  85. package/dist/queries/fulfillments/getFulfillmentTrackingIds.queries.d.ts.map +1 -0
  86. package/dist/queries/fulfillments/getFulfillmentTrackingIds.queries.js +13 -0
  87. package/dist/queries/fulfillments/getFulfillmentTrackingIds.queries.js.map +1 -0
  88. package/dist/queries/fulfillments/getFulfillmentTrackingIds.test.d.ts +2 -0
  89. package/dist/queries/fulfillments/getFulfillmentTrackingIds.test.d.ts.map +1 -0
  90. package/dist/queries/fulfillments/getFulfillmentTrackingIds.test.js +61 -0
  91. package/dist/queries/fulfillments/getFulfillmentTrackingIds.test.js.map +1 -0
  92. package/dist/queries/orders/getOrderById.d.ts +14 -14
  93. package/dist/queries/orders/getOrderById.mock.d.ts.map +1 -1
  94. package/dist/queries/orders/getOrderByName.d.ts +6 -6
  95. package/dist/queries/orders/getOrderCancellationInfo.d.ts +12 -0
  96. package/dist/queries/orders/getOrderCancellationInfo.d.ts.map +1 -0
  97. package/dist/queries/orders/getOrderCancellationInfo.js +35 -0
  98. package/dist/queries/orders/getOrderCancellationInfo.js.map +1 -0
  99. package/dist/queries/orders/getOrderCancellationInfo.mock.d.ts +6 -0
  100. package/dist/queries/orders/getOrderCancellationInfo.mock.d.ts.map +1 -0
  101. package/dist/queries/orders/getOrderCancellationInfo.mock.js +29 -0
  102. package/dist/queries/orders/getOrderCancellationInfo.mock.js.map +1 -0
  103. package/dist/queries/orders/getOrderCancellationInfo.queries.d.ts +2 -0
  104. package/dist/queries/orders/getOrderCancellationInfo.queries.d.ts.map +1 -0
  105. package/dist/queries/orders/getOrderCancellationInfo.queries.js +15 -0
  106. package/dist/queries/orders/getOrderCancellationInfo.queries.js.map +1 -0
  107. package/dist/queries/orders/getOrderCancellationInfo.test.d.ts +2 -0
  108. package/dist/queries/orders/getOrderCancellationInfo.test.d.ts.map +1 -0
  109. package/dist/queries/orders/getOrderCancellationInfo.test.js +34 -0
  110. package/dist/queries/orders/getOrderCancellationInfo.test.js.map +1 -0
  111. package/dist/queries/orders/getOrderPaymentDetails.d.ts +5 -123
  112. package/dist/queries/orders/getOrderPaymentDetails.d.ts.map +1 -1
  113. package/dist/queries/orders/getOrderPaymentDetails.js +3 -22
  114. package/dist/queries/orders/getOrderPaymentDetails.js.map +1 -1
  115. package/dist/queries/orders/getOrderPaymentDetails.mock.d.ts +7 -9
  116. package/dist/queries/orders/getOrderPaymentDetails.mock.d.ts.map +1 -1
  117. package/dist/queries/orders/getOrderPaymentDetails.mock.js +1 -3
  118. package/dist/queries/orders/getOrderPaymentDetails.mock.js.map +1 -1
  119. package/dist/queries/orders/getOrdersByCustomerId.d.ts +15 -0
  120. package/dist/queries/orders/getOrdersByCustomerId.d.ts.map +1 -0
  121. package/dist/queries/orders/getOrdersByCustomerId.js +32 -0
  122. package/dist/queries/orders/getOrdersByCustomerId.js.map +1 -0
  123. package/dist/queries/orders/getOrdersByCustomerId.mock.d.ts +15 -0
  124. package/dist/queries/orders/getOrdersByCustomerId.mock.d.ts.map +1 -0
  125. package/dist/queries/orders/getOrdersByCustomerId.mock.js +76 -0
  126. package/dist/queries/orders/getOrdersByCustomerId.mock.js.map +1 -0
  127. package/dist/queries/orders/getOrdersByCustomerId.queries.d.ts +2 -0
  128. package/dist/queries/orders/getOrdersByCustomerId.queries.d.ts.map +1 -0
  129. package/dist/queries/orders/getOrdersByCustomerId.queries.js +41 -0
  130. package/dist/queries/orders/getOrdersByCustomerId.queries.js.map +1 -0
  131. package/dist/queries/orders/getOrdersByCustomerId.test.d.ts +2 -0
  132. package/dist/queries/orders/getOrdersByCustomerId.test.d.ts.map +1 -0
  133. package/dist/queries/orders/getOrdersByCustomerId.test.js +33 -0
  134. package/dist/queries/orders/getOrdersByCustomerId.test.js.map +1 -0
  135. package/dist/queries/productVariants/getLeanProductVariants.d.ts +2 -2
  136. package/dist/utils/mswHandlers.d.ts +6 -0
  137. package/dist/utils/mswHandlers.d.ts.map +1 -1
  138. package/dist/utils/mswHandlers.js +23 -2
  139. package/dist/utils/mswHandlers.js.map +1 -1
  140. package/dist/utils/shopifyFetch.d.ts +25 -4
  141. package/dist/utils/shopifyFetch.d.ts.map +1 -1
  142. package/dist/utils/shopifyFetch.js +23 -1
  143. package/dist/utils/shopifyFetch.js.map +1 -1
  144. package/package.json +1 -1
@@ -0,0 +1,37 @@
1
+ import { graphql, passthrough } from 'msw';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { server } from '../../utils/mswHandlers';
4
+ import { getFulfillmentById } from './getFulfillmentById';
5
+ import { expectedFulfillmentById } from './getFulfillmentById.mock';
6
+ describe('getFulfillmentById', () => {
7
+ it('should return fulfillment when found with GID string', async () => {
8
+ const result = await getFulfillmentById('gid://shopify/Fulfillment/5765989589285');
9
+ expect(result).toEqual(expectedFulfillmentById);
10
+ });
11
+ it('should return fulfillment when found with numeric ID', async () => {
12
+ const result = await getFulfillmentById(5765989589285n);
13
+ expect(result).toEqual(expectedFulfillmentById);
14
+ });
15
+ it('should return fulfillment when found with number', async () => {
16
+ const result = await getFulfillmentById(5765989589285);
17
+ expect(result).toEqual(expectedFulfillmentById);
18
+ });
19
+ it('should include fulfillmentLineItems', async () => {
20
+ const result = await getFulfillmentById('gid://shopify/Fulfillment/5765989589285');
21
+ expect(result?.fulfillmentLineItems.edges).toHaveLength(2);
22
+ expect(result?.fulfillmentLineItems.edges[0]?.node.lineItem.sku).toBe('MATTRESS-001');
23
+ });
24
+ it('should include tracking info', async () => {
25
+ const result = await getFulfillmentById('gid://shopify/Fulfillment/5765989589285');
26
+ expect(result?.trackingInfo).toHaveLength(1);
27
+ expect(result?.trackingInfo[0]?.company).toBe('DHL');
28
+ });
29
+ describe('Live', () => {
30
+ it('should return null when fulfillment not found', async () => {
31
+ server.use(graphql.query('fulfillmentById', () => passthrough()));
32
+ const result = await getFulfillmentById('gid://shopify/Fulfillment/99999999999');
33
+ expect(result).toBeNull();
34
+ });
35
+ });
36
+ });
37
+ //# sourceMappingURL=getFulfillmentById.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFulfillmentById.test.js","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentById.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAEnE,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,yCAAyC,CAC1C,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,cAAc,CAAC,CAAA;QACvD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,aAAa,CAAC,CAAA;QACtD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,yCAAyC,CAC1C,CAAA;QACD,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC1D,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CACnE,cAAc,CACf,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,yCAAyC,CAC1C,CAAA;QACD,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC5C,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;YACjE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,uCAAuC,CACxC,CAAA;YACD,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;QAC3B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ export type FulfillmentTrackingIds = {
2
+ trackingNumbers: string[];
3
+ trackingCompany: string | null;
4
+ };
5
+ /**
6
+ * Retrieves tracking information for a fulfillment by its ID.
7
+ * Returns the tracking numbers and the tracking company.
8
+ *
9
+ * @param {string | number | bigint} id - The Shopify fulfillment ID. Can be a GID string (e.g., "gid://shopify/Fulfillment/123456789") or a numeric ID (e.g., 123456789 or 123456789n).
10
+ * @returns {Promise<FulfillmentTrackingIds | null>} A promise that resolves to the tracking info or null if fulfillment not found.
11
+ * @throws {Error} If the GraphQL query fails.
12
+ */
13
+ export declare function getFulfillmentTrackingIds(id: string | number | bigint): Promise<FulfillmentTrackingIds | null>;
14
+ //# sourceMappingURL=getFulfillmentTrackingIds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFulfillmentTrackingIds.d.ts","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,sBAAsB,GAAG;IACnC,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B,CAAA;AAED;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAC3B,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAgCxC"}
@@ -0,0 +1,36 @@
1
+ import { logger } from '../../utils/logger.js';
2
+ import { convertIdIntoGid, fetchShopifyGraphql, } from '../../utils/shopifyFetch.js';
3
+ import { queryFulfillmentTrackingIds } from './getFulfillmentTrackingIds.queries.js';
4
+ /**
5
+ * Retrieves tracking information for a fulfillment by its ID.
6
+ * Returns the tracking numbers and the tracking company.
7
+ *
8
+ * @param {string | number | bigint} id - The Shopify fulfillment ID. Can be a GID string (e.g., "gid://shopify/Fulfillment/123456789") or a numeric ID (e.g., 123456789 or 123456789n).
9
+ * @returns {Promise<FulfillmentTrackingIds | null>} A promise that resolves to the tracking info or null if fulfillment not found.
10
+ * @throws {Error} If the GraphQL query fails.
11
+ */
12
+ export async function getFulfillmentTrackingIds(id) {
13
+ const gid = typeof id === 'string'
14
+ ? id
15
+ : convertIdIntoGid(typeof id === 'number' ? BigInt(id) : id, 'Fulfillment');
16
+ const variables = { id: gid };
17
+ const response = await fetchShopifyGraphql({
18
+ query: queryFulfillmentTrackingIds,
19
+ variables,
20
+ });
21
+ if (!response.fulfillment) {
22
+ logger.debug(`No fulfillment found with ID: ${id}`);
23
+ return null;
24
+ }
25
+ const trackingInfo = response.fulfillment.trackingInfo;
26
+ const trackingNumbers = trackingInfo
27
+ .map((info) => info.number)
28
+ .filter((num) => num != null);
29
+ // Use the first company found (typically all tracking numbers share the same company)
30
+ const trackingCompany = trackingInfo[0]?.company ?? null;
31
+ return {
32
+ trackingNumbers,
33
+ trackingCompany,
34
+ };
35
+ }
36
+ //# sourceMappingURL=getFulfillmentTrackingIds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFulfillmentTrackingIds.js","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAA;AAOpF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,EAA4B;IAE5B,MAAM,GAAG,GACP,OAAO,EAAE,KAAK,QAAQ;QACpB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,gBAAgB,CACd,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EACxC,aAAa,CACd,CAAA;IAEP,MAAM,SAAS,GAAyC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAA;IAEnE,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAA8B;QACtE,KAAK,EAAE,2BAA2B;QAClC,SAAS;KACV,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,CAAC,CAAA;QACnD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAA;IACtD,MAAM,eAAe,GAAG,YAAY;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;SAC1B,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,CAAA;IAC9C,sFAAsF;IACtF,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,IAAI,CAAA;IAExD,OAAO;QACL,eAAe;QACf,eAAe;KAChB,CAAA;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { FulfillmentTrackingIdsQuery } from '../../generated-api-types/2025-04/admin.generated';
2
+ import type { FulfillmentTrackingIds } from './getFulfillmentTrackingIds';
3
+ export declare const fulfillmentTrackingIdsMock: FulfillmentTrackingIdsQuery;
4
+ export declare const expectedFulfillmentTrackingIds: FulfillmentTrackingIds;
5
+ //# sourceMappingURL=getFulfillmentTrackingIds.mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFulfillmentTrackingIds.mock.d.ts","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAA;AACpG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEzE,eAAO,MAAM,0BAA0B,EAAE,2BAcxC,CAAA;AAED,eAAO,MAAM,8BAA8B,EAAE,sBAG5C,CAAA"}
@@ -0,0 +1,20 @@
1
+ export const fulfillmentTrackingIdsMock = {
2
+ fulfillment: {
3
+ id: 'gid://shopify/Fulfillment/5765989589285',
4
+ trackingInfo: [
5
+ {
6
+ company: 'DHL',
7
+ number: '123456789012',
8
+ },
9
+ {
10
+ company: 'DHL',
11
+ number: '987654321098',
12
+ },
13
+ ],
14
+ },
15
+ };
16
+ export const expectedFulfillmentTrackingIds = {
17
+ trackingNumbers: ['123456789012', '987654321098'],
18
+ trackingCompany: 'DHL',
19
+ };
20
+ //# sourceMappingURL=getFulfillmentTrackingIds.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFulfillmentTrackingIds.mock.js","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.mock.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,0BAA0B,GAAgC;IACrE,WAAW,EAAE;QACX,EAAE,EAAE,yCAAyC;QAC7C,YAAY,EAAE;YACZ;gBACE,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,cAAc;aACvB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,cAAc;aACvB;SACF;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,8BAA8B,GAA2B;IACpE,eAAe,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;IACjD,eAAe,EAAE,KAAK;CACvB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const queryFulfillmentTrackingIds: string;
2
+ //# sourceMappingURL=getFulfillmentTrackingIds.queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFulfillmentTrackingIds.queries.d.ts","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.queries.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,2BAA2B,QAUvC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { gql } from '../../utils/logger';
2
+ export const queryFulfillmentTrackingIds = gql `#graphql
3
+ query fulfillmentTrackingIds($id: ID!) {
4
+ fulfillment(id: $id) {
5
+ id
6
+ trackingInfo(first: 50) {
7
+ company
8
+ number
9
+ }
10
+ }
11
+ }
12
+ `;
13
+ //# sourceMappingURL=getFulfillmentTrackingIds.queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFulfillmentTrackingIds.queries.js","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAExC,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAA;;;;;;;;;;CAU7C,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=getFulfillmentTrackingIds.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFulfillmentTrackingIds.test.d.ts","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ import { HttpResponse, graphql, passthrough } from 'msw';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { server } from '../../utils/mswHandlers';
4
+ import { getFulfillmentTrackingIds } from './getFulfillmentTrackingIds';
5
+ import { expectedFulfillmentTrackingIds } from './getFulfillmentTrackingIds.mock';
6
+ describe('getFulfillmentTrackingIds', () => {
7
+ it('should return tracking info when found with GID string', async () => {
8
+ const result = await getFulfillmentTrackingIds('gid://shopify/Fulfillment/5765989589285');
9
+ expect(result).toEqual(expectedFulfillmentTrackingIds);
10
+ });
11
+ it('should return tracking info when found with numeric ID', async () => {
12
+ const result = await getFulfillmentTrackingIds(5765989589285n);
13
+ expect(result).toEqual(expectedFulfillmentTrackingIds);
14
+ });
15
+ it('should return tracking info when found with number', async () => {
16
+ const result = await getFulfillmentTrackingIds(5765989589285);
17
+ expect(result).toEqual(expectedFulfillmentTrackingIds);
18
+ });
19
+ it('should return empty tracking when fulfillment has no tracking info', async () => {
20
+ server.use(graphql.query('fulfillmentTrackingIds', () => HttpResponse.json({
21
+ data: {
22
+ fulfillment: {
23
+ id: 'gid://shopify/Fulfillment/5765989589285',
24
+ trackingInfo: [],
25
+ },
26
+ },
27
+ })));
28
+ const result = await getFulfillmentTrackingIds(5765989589285);
29
+ expect(result).toEqual({
30
+ trackingNumbers: [],
31
+ trackingCompany: null,
32
+ });
33
+ });
34
+ it('should filter out null tracking numbers', async () => {
35
+ server.use(graphql.query('fulfillmentTrackingIds', () => HttpResponse.json({
36
+ data: {
37
+ fulfillment: {
38
+ id: 'gid://shopify/Fulfillment/5765989589285',
39
+ trackingInfo: [
40
+ { number: '123456789', company: 'DHL' },
41
+ { number: null, company: 'DHL' },
42
+ { number: '987654321', company: 'DHL' },
43
+ ],
44
+ },
45
+ },
46
+ })));
47
+ const result = await getFulfillmentTrackingIds(5765989589285);
48
+ expect(result).toEqual({
49
+ trackingNumbers: ['123456789', '987654321'],
50
+ trackingCompany: 'DHL',
51
+ });
52
+ });
53
+ describe('Live', () => {
54
+ it('should return null when fulfillment not found', async () => {
55
+ server.use(graphql.query('fulfillmentTrackingIds', () => passthrough()));
56
+ const result = await getFulfillmentTrackingIds('gid://shopify/Fulfillment/99999999999');
57
+ expect(result).toBeNull();
58
+ });
59
+ });
60
+ });
61
+ //# sourceMappingURL=getFulfillmentTrackingIds.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFulfillmentTrackingIds.test.js","sourceRoot":"","sources":["../../../src/queries/fulfillments/getFulfillmentTrackingIds.test.ts"],"names":[],"mappings":"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"}
@@ -11,11 +11,11 @@ declare const GetLeanOrderByIdReturn: z.ZodNullable<z.ZodObject<{
11
11
  amount: z.ZodString;
12
12
  currencyCode: z.ZodString;
13
13
  }, "strip", z.ZodTypeAny, {
14
- currencyCode: string;
15
14
  amount: string;
16
- }, {
17
15
  currencyCode: string;
16
+ }, {
18
17
  amount: string;
18
+ currencyCode: string;
19
19
  }>;
20
20
  customer: z.ZodNullable<z.ZodObject<{
21
21
  id: z.ZodString;
@@ -26,14 +26,14 @@ declare const GetLeanOrderByIdReturn: z.ZodNullable<z.ZodObject<{
26
26
  }, "strip", z.ZodTypeAny, {
27
27
  id: string;
28
28
  displayName: string;
29
- lastName: string | null;
30
29
  firstName: string | null;
30
+ lastName: string | null;
31
31
  emailAddress: string | null;
32
32
  }, {
33
33
  id: string;
34
34
  displayName: string;
35
- lastName: string | null;
36
35
  firstName: string | null;
36
+ lastName: string | null;
37
37
  emailAddress: string | null;
38
38
  }>>;
39
39
  financialStatus: z.ZodNullable<z.ZodString>;
@@ -48,8 +48,8 @@ declare const GetLeanOrderByIdReturn: z.ZodNullable<z.ZodObject<{
48
48
  country: z.ZodNullable<z.ZodString>;
49
49
  zip: z.ZodNullable<z.ZodString>;
50
50
  }, "strip", z.ZodTypeAny, {
51
- lastName: string | null;
52
51
  firstName: string | null;
52
+ lastName: string | null;
53
53
  address1: string | null;
54
54
  address2: string | null;
55
55
  city: string | null;
@@ -57,8 +57,8 @@ declare const GetLeanOrderByIdReturn: z.ZodNullable<z.ZodObject<{
57
57
  country: string | null;
58
58
  zip: string | null;
59
59
  }, {
60
- lastName: string | null;
61
60
  firstName: string | null;
61
+ lastName: string | null;
62
62
  address1: string | null;
63
63
  address2: string | null;
64
64
  city: string | null;
@@ -71,18 +71,19 @@ declare const GetLeanOrderByIdReturn: z.ZodNullable<z.ZodObject<{
71
71
  createdAt: string;
72
72
  updatedAt: string;
73
73
  name: string;
74
+ fulfillmentStatus: string | null;
74
75
  cancelledAt: string | null;
75
76
  cancelReason: string | null;
76
77
  customer: {
77
78
  id: string;
78
79
  displayName: string;
79
- lastName: string | null;
80
80
  firstName: string | null;
81
+ lastName: string | null;
81
82
  emailAddress: string | null;
82
83
  } | null;
83
84
  shippingAddress: {
84
- lastName: string | null;
85
85
  firstName: string | null;
86
+ lastName: string | null;
86
87
  address1: string | null;
87
88
  address2: string | null;
88
89
  city: string | null;
@@ -91,28 +92,28 @@ declare const GetLeanOrderByIdReturn: z.ZodNullable<z.ZodObject<{
91
92
  zip: string | null;
92
93
  } | null;
93
94
  totalPrice: {
94
- currencyCode: string;
95
95
  amount: string;
96
+ currencyCode: string;
96
97
  };
97
- fulfillmentStatus: string | null;
98
98
  financialStatus: string | null;
99
99
  }, {
100
100
  id: string;
101
101
  createdAt: string;
102
102
  updatedAt: string;
103
103
  name: string;
104
+ fulfillmentStatus: string | null;
104
105
  cancelledAt: string | null;
105
106
  cancelReason: string | null;
106
107
  customer: {
107
108
  id: string;
108
109
  displayName: string;
109
- lastName: string | null;
110
110
  firstName: string | null;
111
+ lastName: string | null;
111
112
  emailAddress: string | null;
112
113
  } | null;
113
114
  shippingAddress: {
114
- lastName: string | null;
115
115
  firstName: string | null;
116
+ lastName: string | null;
116
117
  address1: string | null;
117
118
  address2: string | null;
118
119
  city: string | null;
@@ -121,10 +122,9 @@ declare const GetLeanOrderByIdReturn: z.ZodNullable<z.ZodObject<{
121
122
  zip: string | null;
122
123
  } | null;
123
124
  totalPrice: {
124
- currencyCode: string;
125
125
  amount: string;
126
+ currencyCode: string;
126
127
  };
127
- fulfillmentStatus: string | null;
128
128
  financialStatus: string | null;
129
129
  }>>;
130
130
  export type LeanOrder = z.infer<typeof GetLeanOrderByIdReturn>;
@@ -1 +1 @@
1
- {"version":3,"file":"getOrderById.mock.d.ts","sourceRoot":"","sources":["../../../src/queries/orders/getOrderById.mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACf,MAAM,mDAAmD,CAAA;AAS1D,eAAO,MAAM,aAAa,EAAE,cAoC3B,CAAA;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BjC,CAAA;AAGD,eAAO,MAAM,iBAAiB,EAAE,kBAmI/B,CAAA;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;qBA/F5B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+FsD,CAAA"}
1
+ {"version":3,"file":"getOrderById.mock.d.ts","sourceRoot":"","sources":["../../../src/queries/orders/getOrderById.mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACf,MAAM,mDAAmD,CAAA;AAS1D,eAAO,MAAM,aAAa,EAAE,cAoC3B,CAAA;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BjC,CAAA;AAGD,eAAO,MAAM,iBAAiB,EAAE,kBAmI/B,CAAA;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;qBAC4oB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cADnnB,CAAA"}
@@ -9,11 +9,11 @@ declare const GetLeanOrderByNameReturn: z.ZodNullable<z.ZodObject<{
9
9
  amount: z.ZodString;
10
10
  currencyCode: z.ZodString;
11
11
  }, "strip", z.ZodTypeAny, {
12
- currencyCode: string;
13
12
  amount: string;
14
- }, {
15
13
  currencyCode: string;
14
+ }, {
16
15
  amount: string;
16
+ currencyCode: string;
17
17
  }>;
18
18
  customer: z.ZodNullable<z.ZodObject<{
19
19
  id: z.ZodString;
@@ -35,32 +35,32 @@ declare const GetLeanOrderByNameReturn: z.ZodNullable<z.ZodObject<{
35
35
  createdAt: string;
36
36
  updatedAt: string;
37
37
  name: string;
38
+ fulfillmentStatus: string | null;
38
39
  customer: {
39
40
  id: string;
40
41
  displayName: string;
41
42
  emailAddress: string | null;
42
43
  } | null;
43
44
  totalPrice: {
44
- currencyCode: string;
45
45
  amount: string;
46
+ currencyCode: string;
46
47
  };
47
- fulfillmentStatus: string | null;
48
48
  financialStatus: string | null;
49
49
  }, {
50
50
  id: string;
51
51
  createdAt: string;
52
52
  updatedAt: string;
53
53
  name: string;
54
+ fulfillmentStatus: string | null;
54
55
  customer: {
55
56
  id: string;
56
57
  displayName: string;
57
58
  emailAddress: string | null;
58
59
  } | null;
59
60
  totalPrice: {
60
- currencyCode: string;
61
61
  amount: string;
62
+ currencyCode: string;
62
63
  };
63
- fulfillmentStatus: string | null;
64
64
  financialStatus: string | null;
65
65
  }>>;
66
66
  export type LeanOrderByName = z.infer<typeof GetLeanOrderByNameReturn>;
@@ -0,0 +1,12 @@
1
+ import type { OrderCancellationInfoByNameQuery } from '../../generated-api-types/2025-04/admin.generated.js';
2
+ export type OrderCancellationInfo = NonNullable<OrderCancellationInfoByNameQuery['orders']['edges'][number]['node']>;
3
+ /**
4
+ * Retrieves cancellation information for an order by its name (e.g., "B12345").
5
+ * Returns null if no order is found with the specified name.
6
+ *
7
+ * @param {string} orderName - The order name to search for (e.g., "B12345").
8
+ * @returns {Promise<OrderCancellationInfo | null>} A promise that resolves to the order cancellation info or null if not found.
9
+ * @throws {Error} If the GraphQL query fails or if the response structure is invalid.
10
+ */
11
+ export declare function getOrderCancellationInfoByName(orderName: string): Promise<OrderCancellationInfo | null>;
12
+ //# sourceMappingURL=getOrderCancellationInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOrderCancellationInfo.d.ts","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gCAAgC,EAEjC,MAAM,sDAAsD,CAAA;AAM7D,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAC7C,gCAAgC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CACpE,CAAA;AAED;;;;;;;GAOG;AACH,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAgCvC"}
@@ -0,0 +1,35 @@
1
+ import { logger } from '../../utils/logger.js';
2
+ import { fetchShopifyGraphql } from '../../utils/shopifyFetch.js';
3
+ import { queryOrderCancellationInfoByName } from './getOrderCancellationInfo.queries.js';
4
+ /**
5
+ * Retrieves cancellation information for an order by its name (e.g., "B12345").
6
+ * Returns null if no order is found with the specified name.
7
+ *
8
+ * @param {string} orderName - The order name to search for (e.g., "B12345").
9
+ * @returns {Promise<OrderCancellationInfo | null>} A promise that resolves to the order cancellation info or null if not found.
10
+ * @throws {Error} If the GraphQL query fails or if the response structure is invalid.
11
+ */
12
+ export async function getOrderCancellationInfoByName(orderName) {
13
+ const variables = {
14
+ first: 1,
15
+ queryFilter: `name:${orderName}`,
16
+ };
17
+ const response = await fetchShopifyGraphql({
18
+ query: queryOrderCancellationInfoByName,
19
+ variables,
20
+ });
21
+ if (!response.orders) {
22
+ throw new Error("Invalid GraphQL response for getOrderCancellationInfoByName: 'orders' field is missing.");
23
+ }
24
+ if (!Array.isArray(response.orders.edges)) {
25
+ throw new Error("Invalid GraphQL response for getOrderCancellationInfoByName: 'orders.edges' is not an array.");
26
+ }
27
+ const firstEdge = response.orders.edges[0];
28
+ const order = firstEdge?.node;
29
+ if (!order) {
30
+ logger.debug(`No order found with name: ${orderName}`);
31
+ return null;
32
+ }
33
+ return order;
34
+ }
35
+ //# sourceMappingURL=getOrderCancellationInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOrderCancellationInfo.js","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAA;AAOxF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,SAAiB;IAEjB,MAAM,SAAS,GAA8C;QAC3D,KAAK,EAAE,CAAC;QACR,WAAW,EAAE,QAAQ,SAAS,EAAE;KACjC,CAAA;IAED,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAmC;QAC3E,KAAK,EAAE,gCAAgC;QACvC,SAAS;KACV,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAA;IACH,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,8FAA8F,CAC/F,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1C,MAAM,KAAK,GAAG,SAAS,EAAE,IAAI,CAAA;IAE7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAA;QACtD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { OrderCancellationInfoByNameQuery } from '../../generated-api-types/2025-04/admin.generated';
2
+ export declare const orderCancellationInfoMock: OrderCancellationInfoByNameQuery;
3
+ export declare const expectedOrderCancellationInfo: Pick<import("../../generated-api-types/2025-04/admin.types").Order, "id" | "name" | "cancelledAt"> | undefined;
4
+ export declare const orderCancellationInfoNotCancelledMock: OrderCancellationInfoByNameQuery;
5
+ export declare const expectedOrderCancellationInfoNotCancelled: Pick<import("../../generated-api-types/2025-04/admin.types").Order, "id" | "name" | "cancelledAt"> | undefined;
6
+ //# sourceMappingURL=getOrderCancellationInfo.mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOrderCancellationInfo.mock.d.ts","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mDAAmD,CAAA;AAEzG,eAAO,MAAM,yBAAyB,EAAE,gCAYvC,CAAA;AAED,eAAO,MAAM,6BAA6B,gHACO,CAAA;AAEjD,eAAO,MAAM,qCAAqC,EAAE,gCAajD,CAAA;AAEH,eAAO,MAAM,yCAAyC,gHACO,CAAA"}
@@ -0,0 +1,29 @@
1
+ export const orderCancellationInfoMock = {
2
+ orders: {
3
+ edges: [
4
+ {
5
+ node: {
6
+ id: 'gid://shopify/Order/5765989589285',
7
+ name: 'B12345',
8
+ cancelledAt: '2024-01-15T10:30:00Z',
9
+ },
10
+ },
11
+ ],
12
+ },
13
+ };
14
+ export const expectedOrderCancellationInfo = orderCancellationInfoMock.orders.edges[0]?.node;
15
+ export const orderCancellationInfoNotCancelledMock = {
16
+ orders: {
17
+ edges: [
18
+ {
19
+ node: {
20
+ id: 'gid://shopify/Order/5765989589286',
21
+ name: 'B12346',
22
+ cancelledAt: null,
23
+ },
24
+ },
25
+ ],
26
+ },
27
+ };
28
+ export const expectedOrderCancellationInfoNotCancelled = orderCancellationInfoNotCancelledMock.orders.edges[0]?.node;
29
+ //# sourceMappingURL=getOrderCancellationInfo.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOrderCancellationInfo.mock.js","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.mock.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,yBAAyB,GAAqC;IACzE,MAAM,EAAE;QACN,KAAK,EAAE;YACL;gBACE,IAAI,EAAE;oBACJ,EAAE,EAAE,mCAAmC;oBACvC,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sBAAsB;iBACpC;aACF;SACF;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GACxC,yBAAyB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;AAEjD,MAAM,CAAC,MAAM,qCAAqC,GAChD;IACE,MAAM,EAAE;QACN,KAAK,EAAE;YACL;gBACE,IAAI,EAAE;oBACJ,EAAE,EAAE,mCAAmC;oBACvC,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,IAAI;iBAClB;aACF;SACF;KACF;CACF,CAAA;AAEH,MAAM,CAAC,MAAM,yCAAyC,GACpD,qCAAqC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const queryOrderCancellationInfoByName: string;
2
+ //# sourceMappingURL=getOrderCancellationInfo.queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOrderCancellationInfo.queries.d.ts","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.queries.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gCAAgC,QAY5C,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { gql } from '../../utils/logger';
2
+ export const queryOrderCancellationInfoByName = gql `#graphql
3
+ query orderCancellationInfoByName($first: Int!, $queryFilter: String!) {
4
+ orders(first: $first, query: $queryFilter) {
5
+ edges {
6
+ node {
7
+ id
8
+ name
9
+ cancelledAt
10
+ }
11
+ }
12
+ }
13
+ }
14
+ `;
15
+ //# sourceMappingURL=getOrderCancellationInfo.queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOrderCancellationInfo.queries.js","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAExC,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,CAAA;;;;;;;;;;;;CAYlD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=getOrderCancellationInfo.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOrderCancellationInfo.test.d.ts","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ import { graphql, passthrough } from 'msw';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { server } from '../../utils/mswHandlers';
4
+ import { createGqlResponse } from '../../utils/mswHandlers';
5
+ import { getOrderCancellationInfoByName } from './getOrderCancellationInfo';
6
+ import { expectedOrderCancellationInfo, expectedOrderCancellationInfoNotCancelled, orderCancellationInfoNotCancelledMock, } from './getOrderCancellationInfo.mock';
7
+ describe('getOrderCancellationInfoByName', () => {
8
+ it('should return cancellation info when order is found and cancelled', async () => {
9
+ const result = await getOrderCancellationInfoByName('B12345');
10
+ expect(result).toEqual(expectedOrderCancellationInfo);
11
+ });
12
+ it('should return order with cancelledAt as null when order is not cancelled', async () => {
13
+ server.use(graphql.query('orderCancellationInfoByName', createGqlResponse(orderCancellationInfoNotCancelledMock)));
14
+ const result = await getOrderCancellationInfoByName('B12346');
15
+ expect(result).toEqual(expectedOrderCancellationInfoNotCancelled);
16
+ expect(result?.cancelledAt).toBeNull();
17
+ });
18
+ it('should return the order id as GID', async () => {
19
+ const result = await getOrderCancellationInfoByName('B12345');
20
+ expect(result?.id).toBe('gid://shopify/Order/5765989589285');
21
+ });
22
+ it('should return the order name', async () => {
23
+ const result = await getOrderCancellationInfoByName('B12345');
24
+ expect(result?.name).toBe('B12345');
25
+ });
26
+ describe('Live', () => {
27
+ it('should return null when order not found', async () => {
28
+ server.use(graphql.query('orderCancellationInfoByName', () => passthrough()));
29
+ const result = await getOrderCancellationInfoByName('NONEXISTENT_ORDER_12345');
30
+ expect(result).toBeNull();
31
+ });
32
+ });
33
+ });
34
+ //# sourceMappingURL=getOrderCancellationInfo.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOrderCancellationInfo.test.js","sourceRoot":"","sources":["../../../src/queries/orders/getOrderCancellationInfo.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAA;AAC3E,OAAO,EACL,6BAA6B,EAC7B,yCAAyC,EACzC,qCAAqC,GACtC,MAAM,iCAAiC,CAAA;AAExC,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,QAAQ,CAAC,CAAA;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,CAAC,GAAG,CACR,OAAO,CAAC,KAAK,CACX,6BAA6B,EAC7B,iBAAiB,CAAC,qCAAqC,CAAC,CACzD,CACF,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,QAAQ,CAAC,CAAA;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAA;QACjE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,QAAQ,CAAC,CAAA;QAC7D,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,QAAQ,CAAC,CAAA;QAC7D,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,CAAC,GAAG,CACR,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAClE,CAAA;YACD,MAAM,MAAM,GAAG,MAAM,8BAA8B,CACjD,yBAAyB,CAC1B,CAAA;YACD,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;QAC3B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}