@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
@@ -1,81 +0,0 @@
1
- import z from 'zod';
2
- import { gql, logger } from '../../utils/logger.js';
3
- import { fetchShopifyGraphql } from '../../utils/shopifyFetch.js';
4
- import { returnOutputParsed } from '../../utils/zod.js';
5
- const GetLeanProductVariantsReturn = z.array(z.object({
6
- productId: z.string(),
7
- productTitle: z.string(),
8
- variantId: z.string(),
9
- variantTitle: z.string(),
10
- sku: z.string(),
11
- }));
12
- /**
13
- * Retrieves a lean list of product variants from Shopify, optionally filtered by SKUs.
14
- * Product variants are mapped to a simpler output structure.
15
- * Variants missing essential properties (e.g., SKU) will be filtered out and logged.
16
- *
17
- * @param {string[]} [skus] - An optional array of SKUs to filter by. If provided, only variants matching these SKUs will be fetched.
18
- * @returns {Promise<GetLeanProductVariantsReturnType>} A promise that resolves to an array of lean product variant data.
19
- * @throws {Error} If the GraphQL query fails, returns no data, or if the `productVariants` field is missing in the response.
20
- */
21
- export async function getLeanProductVariants(skus) {
22
- const queryGql = gql `#graphql
23
- query leanProductVariants($first: Int!, $after: String, $queryFilter: String) {
24
- productVariants(first: $first, after: $after, query: $queryFilter) {
25
- edges {
26
- node {
27
- id
28
- title
29
- sku
30
- product {
31
- id
32
- title
33
- }
34
- }
35
- }
36
- pageInfo {
37
- hasNextPage
38
- endCursor
39
- }
40
- }
41
- }
42
- `;
43
- const initialVariables = { first: 250 };
44
- if (skus && skus.length > 0) {
45
- initialVariables.queryFilter = skus
46
- .map((sku) => `sku:${sku}`)
47
- .join(' OR ');
48
- }
49
- const extractedNodes = await fetchShopifyGraphql({
50
- query: queryGql,
51
- variables: initialVariables,
52
- dataExtractor: (pageData) => {
53
- if (!pageData.productVariants) {
54
- throw new Error("GraphQL response for product variants is missing the 'productVariants' field.");
55
- }
56
- const nodes = pageData.productVariants.edges.map((edge) => edge.node);
57
- return {
58
- nodes,
59
- pageInfo: pageData.productVariants.pageInfo,
60
- };
61
- },
62
- fetchAllPages: true,
63
- });
64
- const allVariants = extractedNodes.flatMap((v) => {
65
- if (v.sku) {
66
- return [
67
- {
68
- productId: v.product.id,
69
- productTitle: v.product.title,
70
- variantId: v.id,
71
- variantTitle: v.title,
72
- sku: v.sku,
73
- },
74
- ];
75
- }
76
- logger.debug(`Product ${v.product.title} (ID: ${v.product.id}) has a variant (ID: ${v.id}) with no SKU. Filtering out.`);
77
- return [];
78
- });
79
- return await returnOutputParsed(allVariants, GetLeanProductVariantsReturn);
80
- }
81
- //# sourceMappingURL=getLeanProductVariants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getLeanProductVariants.js","sourceRoot":"","sources":["../../../src/queries/productVariants/getLeanProductVariants.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AAKnB,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAC1C,CAAC,CAAC,MAAM,CAAC;IACP,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CACH,CAAA;AAMD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAe;IAEf,MAAM,QAAQ,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;GAoBnB,CAAA;IAED,MAAM,gBAAgB,GAAsC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IAC1E,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,gBAAgB,CAAC,WAAW,GAAG,IAAI;aAChC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC;aAClC,IAAI,CAAC,MAAM,CAAC,CAAA;IACjB,CAAC;IASD,MAAM,cAAc,GAAG,MAAM,mBAAmB,CAG9C;QACA,KAAK,EAAE,QAAQ;QACf,SAAS,EAAE,gBAAgB;QAC3B,aAAa,EAAE,CAAC,QAAkC,EAAE,EAAE;YACpD,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAA;YACH,CAAC;YACD,MAAM,KAAK,GAAiB,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAC5D,CAAC,IAA0B,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAC1C,CAAA;YACD,OAAO;gBACL,KAAK;gBACL,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,QAAQ;aAC5C,CAAA;QACH,CAAC;QACD,aAAa,EAAE,IAAI;KACpB,CAAC,CAAA;IAEF,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAExC,CAAC,CAAC,EAAE,EAAE;QACN,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;gBACL;oBACE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;oBACvB,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK;oBAC7B,SAAS,EAAE,CAAC,CAAC,EAAE;oBACf,YAAY,EAAE,CAAC,CAAC,KAAK;oBACrB,GAAG,EAAE,CAAC,CAAC,GAAG;iBACX;aACF,CAAA;QACH,CAAC;QACD,MAAM,CAAC,KAAK,CACV,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAE,+BAA+B,CAC3G,CAAA;QACD,OAAO,EAAE,CAAA;IACX,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,kBAAkB,CAAC,WAAW,EAAE,4BAA4B,CAAC,CAAA;AAC5E,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { LeanProductVariantsQuery } from '../../generated-api-types/2025-04/admin.generated';
2
- export declare const leanProductVariantsMock: LeanProductVariantsQuery;
3
- //# sourceMappingURL=getLeanProductVariants.mock.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getLeanProductVariants.mock.d.ts","sourceRoot":"","sources":["../../../src/queries/productVariants/getLeanProductVariants.mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mDAAmD,CAAA;AAEjG,eAAO,MAAM,uBAAuB,EAAE,wBA+BrC,CAAA"}
@@ -1,33 +0,0 @@
1
- export const leanProductVariantsMock = {
2
- productVariants: {
3
- edges: [
4
- {
5
- node: {
6
- id: 'gid://shopify/ProductVariant/1',
7
- title: 'Default Title',
8
- sku: 'SKU123',
9
- product: {
10
- id: 'gid://shopify/Product/1',
11
- title: 'Test Product 1',
12
- },
13
- },
14
- },
15
- {
16
- node: {
17
- id: 'gid://shopify/ProductVariant/2',
18
- title: 'Another Variant',
19
- sku: 'SKU456',
20
- product: {
21
- id: 'gid://shopify/Product/2',
22
- title: 'Test Product 2',
23
- },
24
- },
25
- },
26
- ],
27
- pageInfo: {
28
- hasNextPage: false,
29
- endCursor: 'eyJsYXN0X2lkIjoxfQ==',
30
- },
31
- },
32
- };
33
- //# sourceMappingURL=getLeanProductVariants.mock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getLeanProductVariants.mock.js","sourceRoot":"","sources":["../../../src/queries/productVariants/getLeanProductVariants.mock.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,uBAAuB,GAA6B;IAC/D,eAAe,EAAE;QACf,KAAK,EAAE;YACL;gBACE,IAAI,EAAE;oBACJ,EAAE,EAAE,gCAAgC;oBACpC,KAAK,EAAE,eAAe;oBACtB,GAAG,EAAE,QAAQ;oBACb,OAAO,EAAE;wBACP,EAAE,EAAE,yBAAyB;wBAC7B,KAAK,EAAE,gBAAgB;qBACxB;iBACF;aACF;YACD;gBACE,IAAI,EAAE;oBACJ,EAAE,EAAE,gCAAgC;oBACpC,KAAK,EAAE,iBAAiB;oBACxB,GAAG,EAAE,QAAQ;oBACb,OAAO,EAAE;wBACP,EAAE,EAAE,yBAAyB;wBAC7B,KAAK,EAAE,gBAAgB;qBACxB;iBACF;aACF;SACF;QACD,QAAQ,EAAE;YACR,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,sBAAsB;SAClC;KACF;CACF,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=getLeanProductVariants.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getLeanProductVariants.test.d.ts","sourceRoot":"","sources":["../../../src/queries/productVariants/getLeanProductVariants.test.ts"],"names":[],"mappings":""}
@@ -1,38 +0,0 @@
1
- import { graphql, passthrough } from 'msw';
2
- import { describe, expect, it } from 'vitest';
3
- import { server } from '../../utils/mswHandlers';
4
- import { getLeanProductVariants } from './getLeanProductVariants';
5
- import { leanProductVariantsMock } from './getLeanProductVariants.mock';
6
- describe('getLeanProductVariants', () => {
7
- describe('Mocked', () => {
8
- const skus = ['SKU123', 'SKU456'];
9
- const variants = leanProductVariantsMock.productVariants.edges.map((edge) => edge.node);
10
- const reformattedVariants = variants.map((variant) => ({
11
- productId: variant.product.id,
12
- productTitle: variant.product.title,
13
- variantId: variant.id,
14
- variantTitle: variant.title,
15
- sku: variant.sku,
16
- }));
17
- it('should work with multiple SKUs', async () => {
18
- const result = await getLeanProductVariants(skus);
19
- expect(result).toEqual(reformattedVariants);
20
- });
21
- });
22
- describe('Live', () => {
23
- it('should return an empty array for non-existent SKUs', async () => {
24
- server.use(graphql.query('leanProductVariants', () => passthrough()));
25
- const result = await getLeanProductVariants(['not-a-sku']);
26
- expect(result).toEqual([]);
27
- });
28
- it('should work without SKUs and fetch more than is on one page (250)', {
29
- timeout: 20000,
30
- skip: false,
31
- }, async () => {
32
- server.use(graphql.query('leanProductVariants', () => passthrough()));
33
- const result = await getLeanProductVariants();
34
- expect(result.length).toBeGreaterThan(251);
35
- });
36
- });
37
- });
38
- //# sourceMappingURL=getLeanProductVariants.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getLeanProductVariants.test.js","sourceRoot":"","sources":["../../../src/queries/productVariants/getLeanProductVariants.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,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAEvE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACjC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAChE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CACpB,CAAA;QACD,MAAM,mBAAmB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACrD,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;YAC7B,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;YACnC,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,YAAY,EAAE,OAAO,CAAC,KAAK;YAC3B,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC,CAAA;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAA;YACjD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;YACrE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;YAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC5B,CAAC,CAAC,CAAA;QAEF,EAAE,CACA,mEAAmE,EACnE;YACE,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,KAAK;SACZ,EACD,KAAK,IAAI,EAAE;YACT,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;YAErE,MAAM,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAA;YAC7C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;QAC5C,CAAC,CACF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,11 +0,0 @@
1
- export declare const gql: (template: {
2
- raw: readonly string[] | ArrayLike<string>;
3
- }, ...substitutions: any[]) => string;
4
- export declare const activeLogLevelName: "silent" | "error" | "warn" | "info" | "debug";
5
- export declare const logger: {
6
- debug: (...args: unknown[]) => void;
7
- info: (...args: unknown[]) => void;
8
- warn: (...args: unknown[]) => void;
9
- error: (...args: unknown[]) => void;
10
- };
11
- //# sourceMappingURL=logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,GAAG;;qCAAa,CAAA;AA8B7B,eAAO,MAAM,kBAAkB,gDAA2C,CAAA;AAG1E,eAAO,MAAM,MAAM;qBACA,OAAO,EAAE;oBAMV,OAAO,EAAE;oBAMT,OAAO,EAAE;qBAMR,OAAO,EAAE;CAM3B,CAAA"}
@@ -1,50 +0,0 @@
1
- const { env } = process;
2
- export const gql = String.raw;
3
- const logLevels = {
4
- silent: 0,
5
- error: 1,
6
- warn: 2,
7
- info: 3,
8
- debug: 4,
9
- };
10
- function getLogLevel(nodeEnv, logLevelEnv) {
11
- if (logLevelEnv && logLevelEnv in logLevels) {
12
- return logLevelEnv;
13
- }
14
- if (nodeEnv === 'test') {
15
- return 'silent';
16
- }
17
- if (nodeEnv === 'production') {
18
- return 'info';
19
- }
20
- return 'debug';
21
- }
22
- export const activeLogLevelName = getLogLevel(env.NODE_ENV, env.LOG_LEVEL);
23
- const activeLogLevelValue = logLevels[activeLogLevelName];
24
- export const logger = {
25
- debug: (...args) => {
26
- if (logLevels.debug <= activeLogLevelValue) {
27
- // biome-ignore lint/suspicious/noConsole: <explanation>
28
- console.debug(...args);
29
- }
30
- },
31
- info: (...args) => {
32
- if (logLevels.info <= activeLogLevelValue) {
33
- // biome-ignore lint/suspicious/noConsole: <explanation>
34
- console.info(...args);
35
- }
36
- },
37
- warn: (...args) => {
38
- if (logLevels.warn <= activeLogLevelValue) {
39
- // biome-ignore lint/suspicious/noConsole: <explanation>
40
- console.warn(...args);
41
- }
42
- },
43
- error: (...args) => {
44
- if (logLevels.error <= activeLogLevelValue) {
45
- // biome-ignore lint/suspicious/noConsole: <explanation>
46
- console.error(...args);
47
- }
48
- },
49
- };
50
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;AAEvB,MAAM,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;AAE7B,MAAM,SAAS,GAAG;IAChB,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACA,CAAA;AAIV,SAAS,WAAW,CAClB,OAA2B,EAC3B,WAA+B;IAE/B,IAAI,WAAW,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;QAC5C,OAAO,WAA2B,CAAA;IACpC,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAA;IACf,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;AAC1E,MAAM,mBAAmB,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAA;AAEzD,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC5B,IAAI,SAAS,CAAC,KAAK,IAAI,mBAAmB,EAAE,CAAC;YAC3C,wDAAwD;YACxD,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC3B,IAAI,SAAS,CAAC,IAAI,IAAI,mBAAmB,EAAE,CAAC;YAC1C,wDAAwD;YACxD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC3B,IAAI,SAAS,CAAC,IAAI,IAAI,mBAAmB,EAAE,CAAC;YAC1C,wDAAwD;YACxD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC5B,IAAI,SAAS,CAAC,KAAK,IAAI,mBAAmB,EAAE,CAAC;YAC3C,wDAAwD;YACxD,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -1,2 +0,0 @@
1
- export declare const server: import("msw/node").SetupServerApi;
2
- //# sourceMappingURL=mswHandlers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mswHandlers.d.ts","sourceRoot":"","sources":["../../src/utils/mswHandlers.ts"],"names":[],"mappings":"AAgDA,eAAO,MAAM,MAAM,mCAA2B,CAAA"}
@@ -1,32 +0,0 @@
1
- import { graphql } from 'msw';
2
- import { setupServer } from 'msw/node';
3
- import { connectMetaObjectToProductVariantMock } from '../mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.mock';
4
- import { ordersByNameMock } from '../queries/orders/getOrderByName.mock';
5
- import { leanProductVariantsMock } from '../queries/productVariants/getLeanProductVariants.mock';
6
- import { logger } from './logger';
7
- import { productHandlesMock } from './shopifyClient.mock';
8
- const orders = [
9
- graphql.query('ordersByName', createGqlResponse(ordersByNameMock)),
10
- graphql.query('ordersByNameFull', createGqlResponse(ordersByNameMock)),
11
- ];
12
- const productVariants = [
13
- graphql.query('productHandles', createGqlResponse(productHandlesMock)),
14
- graphql.query('leanProductVariants', createGqlResponse(leanProductVariantsMock)),
15
- ];
16
- const productVariantsBulkUpdate = [
17
- graphql.mutation('connectMetaObjectToProductVariant', createGqlResponse(connectMetaObjectToProductVariantMock)),
18
- ];
19
- const handlers = [...orders, ...productVariants, ...productVariantsBulkUpdate];
20
- function createGqlResponse(mockData) {
21
- return ({ operationName, query, }) => {
22
- logger.debug(`[MSW] Mocking GraphQL query: ${operationName}`);
23
- logger.debug(query);
24
- return new Response(JSON.stringify({ data: mockData }), {
25
- headers: {
26
- 'Content-Type': 'application/json',
27
- },
28
- });
29
- };
30
- }
31
- export const server = setupServer(...handlers);
32
- //# sourceMappingURL=mswHandlers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mswHandlers.js","sourceRoot":"","sources":["../../src/utils/mswHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,qCAAqC,EAAE,MAAM,+EAA+E,CAAA;AACrI,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wDAAwD,CAAA;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD,MAAM,MAAM,GAAG;IACb,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAClE,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;CACvE,CAAA;AAED,MAAM,eAAe,GAAG;IACtB,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IACtE,OAAO,CAAC,KAAK,CACX,qBAAqB,EACrB,iBAAiB,CAAC,uBAAuB,CAAC,CAC3C;CACF,CAAA;AAED,MAAM,yBAAyB,GAAG;IAChC,OAAO,CAAC,QAAQ,CACd,mCAAmC,EACnC,iBAAiB,CAAC,qCAAqC,CAAC,CACzD;CACF,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,eAAe,EAAE,GAAG,yBAAyB,CAAC,CAAA;AAE9E,SAAS,iBAAiB,CAAI,QAAW;IACvC,OAAO,CAAC,EACN,aAAa,EACb,KAAK,GAIN,EAAE,EAAE;QACH,MAAM,CAAC,KAAK,CAAC,gCAAgC,aAAa,EAAE,CAAC,CAAA;QAC7D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACnB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE;YACtD,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAA"}
@@ -1,6 +0,0 @@
1
- import { ApiVersion, type GraphqlClient } from '@shopify/shopify-api';
2
- import '@shopify/shopify-api/adapters/node';
3
- export declare const SHOPIFY_API_VERSION = ApiVersion.April25;
4
- declare let shopifyGraphqlClient: GraphqlClient;
5
- export { shopifyGraphqlClient as shopifyClient };
6
- //# sourceMappingURL=shopifyClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shopifyClient.d.ts","sourceRoot":"","sources":["../../src/utils/shopifyClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,aAAa,EAInB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,oCAAoC,CAAA;AAM3C,eAAO,MAAM,mBAAmB,qBAAqB,CAAA;AAuCrD,QAAA,IAAI,oBAAoB,EAAE,aAAa,CAAA;AA2CvC,OAAO,EAAE,oBAAoB,IAAI,aAAa,EAAE,CAAA"}
@@ -1,82 +0,0 @@
1
- import { ApiVersion, LogSeverity, Session, shopifyApi, } from '@shopify/shopify-api';
2
- import '@shopify/shopify-api/adapters/node';
3
- import dotenv from 'dotenv';
4
- import { z } from 'zod';
5
- import { activeLogLevelName, logger } from './logger.js';
6
- // https://shopify.dev/docs/api/admin-graphql/2025-04/
7
- export const SHOPIFY_API_VERSION = ApiVersion.April25;
8
- dotenv.config();
9
- const envSchema = z.object({
10
- SHOPIFY_API_KEY: z.string({
11
- error: () => ({ message: 'SHOPIFY_API_KEY is required' }),
12
- }),
13
- SHOPIFY_API_SECRET: z.string({
14
- error: () => ({ message: 'SHOPIFY_API_SECRET is required' }),
15
- }),
16
- SHOPIFY_API_HOSTNAME: z.string({
17
- error: () => ({ message: 'SHOPIFY_API_HOSTNAME is required' }),
18
- }),
19
- SHOPIFY_ACCESS_TOKEN: z.string({
20
- error: () => ({ message: 'SHOPIFY_ACCESS_TOKEN is required' }),
21
- }),
22
- NODE_ENV: z
23
- .enum(['development', 'production', 'test'])
24
- .default('development'),
25
- });
26
- const mapLogLevelToShopifySeverity = (level) => {
27
- switch (level) {
28
- case 'silent':
29
- return LogSeverity.Error;
30
- case 'debug':
31
- return LogSeverity.Debug;
32
- case 'info':
33
- return LogSeverity.Info;
34
- case 'warn':
35
- return LogSeverity.Warning;
36
- case 'error':
37
- return LogSeverity.Error;
38
- default:
39
- return LogSeverity.Info;
40
- }
41
- };
42
- let shopifyGraphqlClient;
43
- try {
44
- // biome-ignore lint/nursery/noProcessEnv: <explanation>
45
- const env = envSchema.parse(process.env);
46
- const shopify = shopifyApi({
47
- apiKey: env.SHOPIFY_API_KEY,
48
- apiSecretKey: env.SHOPIFY_API_SECRET,
49
- hostName: env.SHOPIFY_API_HOSTNAME,
50
- apiVersion: SHOPIFY_API_VERSION,
51
- isEmbeddedApp: false,
52
- logger: { level: mapLogLevelToShopifySeverity(activeLogLevelName) },
53
- future: {
54
- customerAddressDefaultFix: true,
55
- lineItemBilling: true,
56
- unstable_managedPricingSupport: false,
57
- },
58
- });
59
- const shopifySession = new Session({
60
- id: `custom-session-${env.SHOPIFY_API_HOSTNAME}`,
61
- shop: env.SHOPIFY_API_HOSTNAME,
62
- state: 'authenticated',
63
- isOnline: true,
64
- accessToken: env.SHOPIFY_ACCESS_TOKEN,
65
- });
66
- shopifyGraphqlClient = new shopify.clients.Graphql({
67
- session: shopifySession,
68
- });
69
- logger.info('Shopify API client initialized successfully.');
70
- }
71
- catch (error) {
72
- if (error instanceof z.ZodError) {
73
- const msg = z.prettifyError(error);
74
- logger.error(msg);
75
- }
76
- else {
77
- logger.error('Failed to initialize Shopify API client:', error);
78
- }
79
- throw error;
80
- }
81
- export { shopifyGraphqlClient as shopifyClient };
82
- //# sourceMappingURL=shopifyClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shopifyClient.js","sourceRoot":"","sources":["../../src/utils/shopifyClient.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { ProductHandlesQuery } from '../generated-api-types/2025-04/admin.generated';
2
- export declare const productHandlesMock: ProductHandlesQuery;
3
- //# sourceMappingURL=shopifyClient.mock.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shopifyClient.mock.d.ts","sourceRoot":"","sources":["../../src/utils/shopifyClient.mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAA;AAEzF,eAAO,MAAM,kBAAkB,EAAE,mBAiBhC,CAAA"}
@@ -1,19 +0,0 @@
1
- export const productHandlesMock = {
2
- products: {
3
- edges: [
4
- {
5
- node: {
6
- handle: 'product-1',
7
- title: 'Product 1',
8
- },
9
- },
10
- {
11
- node: {
12
- handle: 'product-2',
13
- title: 'Product 2',
14
- },
15
- },
16
- ],
17
- },
18
- };
19
- //# sourceMappingURL=shopifyClient.mock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shopifyClient.mock.js","sourceRoot":"","sources":["../../src/utils/shopifyClient.mock.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,QAAQ,EAAE;QACR,KAAK,EAAE;YACL;gBACE,IAAI,EAAE;oBACJ,MAAM,EAAE,WAAW;oBACnB,KAAK,EAAE,WAAW;iBACnB;aACF;YACD;gBACE,IAAI,EAAE;oBACJ,MAAM,EAAE,WAAW;oBACnB,KAAK,EAAE,WAAW;iBACnB;aACF;SACF;KACF;CACF,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=shopifyClient.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shopifyClient.test.d.ts","sourceRoot":"","sources":["../../src/utils/shopifyClient.test.ts"],"names":[],"mappings":""}
@@ -1,27 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { shopifyClient } from './shopifyClient';
3
- describe('Shopify GraphQL Client', () => {
4
- it('should be initialized', () => {
5
- expect(shopifyClient).toBeDefined();
6
- });
7
- it('should fetch product handles using the request method', async () => {
8
- const query = `#graphql
9
- query productHandles($first: Int!) {
10
- products(first: $first) {
11
- edges {
12
- node {
13
- handle
14
- title
15
- }
16
- }
17
- }
18
- }`;
19
- const variables = {
20
- first: 10,
21
- };
22
- const response = await shopifyClient.request(query, { variables });
23
- expect(response.data).toBeDefined();
24
- expect(response.data?.products).toBeDefined();
25
- });
26
- });
27
- //# sourceMappingURL=shopifyClient.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shopifyClient.test.js","sourceRoot":"","sources":["../../src/utils/shopifyClient.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,KAAK,GAAG;;;;;;;;;;QAUV,CAAA;QAEJ,MAAM,SAAS,GAAG;YAChB,KAAK,EAAE,EAAE;SACV,CAAA;QAED,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;QAElE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;QACnC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;IAC/C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,19 +0,0 @@
1
- export declare function convertIdIntoGid(id: bigint, type: 'Order' | 'Customer'): string;
2
- interface PageInfo {
3
- hasNextPage: boolean;
4
- endCursor?: string | null | undefined;
5
- }
6
- export declare function fetchShopifyGraphql<TResultNode, TPageData>(params: {
7
- query: string;
8
- variables: Record<string, unknown>;
9
- dataExtractor: (pageData: TPageData) => {
10
- nodes: TResultNode[];
11
- pageInfo?: PageInfo;
12
- userErrors?: {
13
- message?: string;
14
- }[];
15
- };
16
- fetchAllPages?: boolean;
17
- }): Promise<TResultNode[]>;
18
- export {};
19
- //# sourceMappingURL=shopifyFetch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shopifyFetch.d.ts","sourceRoot":"","sources":["../../src/utils/shopifyFetch.ts"],"names":[],"mappings":"AAGA,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,OAAO,GAAG,UAAU,GACzB,MAAM,CAER;AAED,UAAU,QAAQ;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CACtC;AAOD,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE;IACxE,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,aAAa,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK;QACtC,KAAK,EAAE,WAAW,EAAE,CAAA;QACpB,QAAQ,CAAC,EAAE,QAAQ,CAAA;QACnB,UAAU,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KACpC,CAAA;IACD,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAsEzB"}
@@ -1,60 +0,0 @@
1
- import { logger } from './logger.js';
2
- import { shopifyClient } from './shopifyClient.js';
3
- export function convertIdIntoGid(id, type) {
4
- return `gid://shopify/${type}/${id}`;
5
- }
6
- export async function fetchShopifyGraphql(params) {
7
- const { query, variables: initialVariables, dataExtractor, fetchAllPages = false, } = params;
8
- const allNodes = [];
9
- let currentVariables = { ...initialVariables };
10
- let hasNextLoop = true;
11
- do {
12
- const response = (await shopifyClient.request(query, {
13
- variables: currentVariables,
14
- }));
15
- if (response.errors) {
16
- let errorMessages = 'GraphQL query failed.';
17
- const errors = response.errors;
18
- if (Array.isArray(errors)) {
19
- errorMessages = errors
20
- .map((e) => e.message || JSON.stringify(e))
21
- .join('\n');
22
- }
23
- else if (typeof errors === 'object' &&
24
- errors !== null &&
25
- 'message' in errors) {
26
- errorMessages = errors.message || JSON.stringify(errors);
27
- }
28
- else if (typeof errors === 'string') {
29
- errorMessages = errors;
30
- }
31
- else {
32
- errorMessages = JSON.stringify(errors);
33
- }
34
- logger.error('GraphQL query failed:', errorMessages);
35
- throw new Error(`GraphQL errors: ${errorMessages}`);
36
- }
37
- if (!response.data) {
38
- throw new Error('No data in Shopify API response');
39
- }
40
- const { nodes, pageInfo, userErrors } = dataExtractor(response.data);
41
- // Handle Shopify mutation userErrors pattern
42
- if (Array.isArray(userErrors) && userErrors.length > 0) {
43
- const errorMessages = userErrors
44
- .map((e) => e.message || JSON.stringify(e))
45
- .join('\n');
46
- logger.error('Shopify mutation userErrors:', errorMessages);
47
- throw new Error(`Shopify mutation userErrors: ${errorMessages}`);
48
- }
49
- allNodes.push(...nodes);
50
- hasNextLoop = fetchAllPages ? !!pageInfo?.hasNextPage : false;
51
- if (hasNextLoop && pageInfo?.endCursor) {
52
- currentVariables = {
53
- ...currentVariables,
54
- after: pageInfo.endCursor,
55
- };
56
- }
57
- } while (hasNextLoop);
58
- return allNodes;
59
- }
60
- //# sourceMappingURL=shopifyFetch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shopifyFetch.js","sourceRoot":"","sources":["../../src/utils/shopifyFetch.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=shopifyFetch.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shopifyFetch.test.d.ts","sourceRoot":"","sources":["../../src/utils/shopifyFetch.test.ts"],"names":[],"mappings":""}
@@ -1,17 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { convertIdIntoGid } from './shopifyFetch';
3
- describe('convertIdIntoGid', () => {
4
- it('should convert an Order ID to a GID', () => {
5
- const id = 12345n;
6
- const type = 'Order';
7
- const expectedGid = 'gid://shopify/Order/12345';
8
- expect(convertIdIntoGid(id, type)).toBe(expectedGid);
9
- });
10
- it('should convert a Customer ID to a GID', () => {
11
- const id = 67890n;
12
- const type = 'Customer';
13
- const expectedGid = 'gid://shopify/Customer/67890';
14
- expect(convertIdIntoGid(id, type)).toBe(expectedGid);
15
- });
16
- });
17
- //# sourceMappingURL=shopifyFetch.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shopifyFetch.test.js","sourceRoot":"","sources":["../../src/utils/shopifyFetch.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,EAAE,GAAG,MAAM,CAAA;QACjB,MAAM,IAAI,GAAG,OAAO,CAAA;QACpB,MAAM,WAAW,GAAG,2BAA2B,CAAA;QAC/C,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,GAAG,MAAM,CAAA;QACjB,MAAM,IAAI,GAAG,UAAU,CAAA;QACvB,MAAM,WAAW,GAAG,8BAA8B,CAAA;QAClD,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=test-setup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-setup.d.ts","sourceRoot":"","sources":["../../src/utils/test-setup.ts"],"names":[],"mappings":""}
@@ -1,13 +0,0 @@
1
- import { afterAll, afterEach, beforeAll, vi } from 'vitest';
2
- import { server } from './mswHandlers';
3
- beforeAll(() => {
4
- server.listen();
5
- });
6
- afterEach(() => {
7
- server.resetHandlers();
8
- vi.clearAllMocks();
9
- });
10
- afterAll(() => {
11
- server.close();
12
- });
13
- //# sourceMappingURL=test-setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-setup.js","sourceRoot":"","sources":["../../src/utils/test-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,SAAS,CAAC,GAAG,EAAE;IACb,MAAM,CAAC,MAAM,EAAE,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,SAAS,CAAC,GAAG,EAAE;IACb,MAAM,CAAC,aAAa,EAAE,CAAA;IACtB,EAAE,CAAC,aAAa,EAAE,CAAA;AACpB,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,GAAG,EAAE;IACZ,MAAM,CAAC,KAAK,EAAE,CAAA;AAChB,CAAC,CAAC,CAAA"}