@ehrenkind/shopify-lib 0.0.2
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.
- package/README.md +172 -0
- package/dist/generated-api-types/2025-04/admin.generated.d.ts +181 -0
- package/dist/generated-api-types/2025-04/admin.generated.d.ts.map +1 -0
- package/dist/generated-api-types/2025-04/admin.generated.js +5 -0
- package/dist/generated-api-types/2025-04/admin.generated.js.map +1 -0
- package/dist/generated-api-types/2025-04/admin.types.d.ts +57664 -0
- package/dist/generated-api-types/2025-04/admin.types.d.ts.map +1 -0
- package/dist/generated-api-types/2025-04/admin.types.js +11356 -0
- package/dist/generated-api-types/2025-04/admin.types.js.map +1 -0
- package/dist/index.cjs +752 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +18290 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +719 -0
- package/dist/index.mjs.map +1 -0
- package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.d.ts +4 -0
- package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.d.ts.map +1 -0
- package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.js +56 -0
- package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.js.map +1 -0
- package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.mock.d.ts +3 -0
- package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.mock.d.ts.map +1 -0
- package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.mock.js +11 -0
- package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.mock.js.map +1 -0
- package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.test.d.ts +2 -0
- package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.test.d.ts.map +1 -0
- package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.test.js +11 -0
- package/dist/mutations/productVariantsBulkUpdate/connectMetaObjectToProductVariant.test.js.map +1 -0
- package/dist/queries/orders/getOrderByName.d.ts +26 -0
- package/dist/queries/orders/getOrderByName.d.ts.map +1 -0
- package/dist/queries/orders/getOrderByName.js +117 -0
- package/dist/queries/orders/getOrderByName.js.map +1 -0
- package/dist/queries/orders/getOrderByName.mock.d.ts +21 -0
- package/dist/queries/orders/getOrderByName.mock.d.ts.map +1 -0
- package/dist/queries/orders/getOrderByName.mock.js +55 -0
- package/dist/queries/orders/getOrderByName.mock.js.map +1 -0
- package/dist/queries/orders/getOrderByName.queries.d.ts +3 -0
- package/dist/queries/orders/getOrderByName.queries.d.ts.map +1 -0
- package/dist/queries/orders/getOrderByName.queries.js +335 -0
- package/dist/queries/orders/getOrderByName.queries.js.map +1 -0
- package/dist/queries/orders/getOrderByName.test.d.ts +2 -0
- package/dist/queries/orders/getOrderByName.test.d.ts.map +1 -0
- package/dist/queries/orders/getOrderByName.test.js +28 -0
- package/dist/queries/orders/getOrderByName.test.js.map +1 -0
- package/dist/queries/productVariants/getLeanProductVariants.d.ts +21 -0
- package/dist/queries/productVariants/getLeanProductVariants.d.ts.map +1 -0
- package/dist/queries/productVariants/getLeanProductVariants.js +81 -0
- package/dist/queries/productVariants/getLeanProductVariants.js.map +1 -0
- package/dist/queries/productVariants/getLeanProductVariants.mock.d.ts +3 -0
- package/dist/queries/productVariants/getLeanProductVariants.mock.d.ts.map +1 -0
- package/dist/queries/productVariants/getLeanProductVariants.mock.js +33 -0
- package/dist/queries/productVariants/getLeanProductVariants.mock.js.map +1 -0
- package/dist/queries/productVariants/getLeanProductVariants.test.d.ts +2 -0
- package/dist/queries/productVariants/getLeanProductVariants.test.d.ts.map +1 -0
- package/dist/queries/productVariants/getLeanProductVariants.test.js +38 -0
- package/dist/queries/productVariants/getLeanProductVariants.test.js.map +1 -0
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +50 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/mswHandlers.d.ts +2 -0
- package/dist/utils/mswHandlers.d.ts.map +1 -0
- package/dist/utils/mswHandlers.js +32 -0
- package/dist/utils/mswHandlers.js.map +1 -0
- package/dist/utils/shopifyClient.d.ts +6 -0
- package/dist/utils/shopifyClient.d.ts.map +1 -0
- package/dist/utils/shopifyClient.js +82 -0
- package/dist/utils/shopifyClient.js.map +1 -0
- package/dist/utils/shopifyClient.mock.d.ts +3 -0
- package/dist/utils/shopifyClient.mock.d.ts.map +1 -0
- package/dist/utils/shopifyClient.mock.js +19 -0
- package/dist/utils/shopifyClient.mock.js.map +1 -0
- package/dist/utils/shopifyClient.test.d.ts +2 -0
- package/dist/utils/shopifyClient.test.d.ts.map +1 -0
- package/dist/utils/shopifyClient.test.js +27 -0
- package/dist/utils/shopifyClient.test.js.map +1 -0
- package/dist/utils/shopifyFetch.d.ts +19 -0
- package/dist/utils/shopifyFetch.d.ts.map +1 -0
- package/dist/utils/shopifyFetch.js +60 -0
- package/dist/utils/shopifyFetch.js.map +1 -0
- package/dist/utils/shopifyFetch.test.d.ts +2 -0
- package/dist/utils/shopifyFetch.test.d.ts.map +1 -0
- package/dist/utils/shopifyFetch.test.js +17 -0
- package/dist/utils/shopifyFetch.test.js.map +1 -0
- package/dist/utils/test-setup.d.ts +2 -0
- package/dist/utils/test-setup.d.ts.map +1 -0
- package/dist/utils/test-setup.js +13 -0
- package/dist/utils/test-setup.js.map +1 -0
- package/dist/utils/zod.d.ts +3 -0
- package/dist/utils/zod.d.ts.map +1 -0
- package/dist/utils/zod.js +19 -0
- package/dist/utils/zod.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,32 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shopifyClient.js","sourceRoot":"","sources":["../../src/utils/shopifyClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shopifyClient.test.d.ts","sourceRoot":"","sources":["../../src/utils/shopifyClient.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shopifyFetch.js","sourceRoot":"","sources":["../../src/utils/shopifyFetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shopifyFetch.test.d.ts","sourceRoot":"","sources":["../../src/utils/shopifyFetch.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-setup.d.ts","sourceRoot":"","sources":["../../src/utils/test-setup.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../../src/utils/zod.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AAGnB,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAepB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { logger } from './logger.js';
|
|
3
|
+
export async function returnOutputParsed(data, Model) {
|
|
4
|
+
const parsed = await Model.safeParseAsync(data);
|
|
5
|
+
if (!parsed.success) {
|
|
6
|
+
if (parsed.error instanceof z.ZodError) {
|
|
7
|
+
const msg = z.prettifyError(parsed.error);
|
|
8
|
+
logger.error(msg);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
logger.error('Failed to parse:', parsed.error);
|
|
12
|
+
}
|
|
13
|
+
// throw parsedVariants.error
|
|
14
|
+
throw new Error('Failed to parse product variants');
|
|
15
|
+
}
|
|
16
|
+
logger.info('Parsed data successfully');
|
|
17
|
+
return parsed.data;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=zod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.js","sourceRoot":"","sources":["../../src/utils/zod.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAa,EACb,KAAmB;IAEnB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;IAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,MAAM,CAAC,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QAChD,CAAC;QACD,6BAA6B;QAC7B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACrD,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;IACvC,OAAO,MAAM,CAAC,IAAI,CAAA;AACpB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ehrenkind/shopify-lib",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"main": "dist/index.cjs",
|
|
5
|
+
"module": "dist/index.mjs",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"import": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.mjs"
|
|
12
|
+
},
|
|
13
|
+
"require": {
|
|
14
|
+
"types": "./dist/index.d.cts",
|
|
15
|
+
"default": "./dist/index.cjs"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/formbench/shopify-lib.git"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [],
|
|
24
|
+
"author": "",
|
|
25
|
+
"license": "ISC",
|
|
26
|
+
"bugs": {
|
|
27
|
+
"url": "https://github.com/formbench/shopify-lib/issues"
|
|
28
|
+
},
|
|
29
|
+
"homepage": "https://github.com/formbench/shopify-lib#readme",
|
|
30
|
+
"description": "",
|
|
31
|
+
"files": [
|
|
32
|
+
"dist"
|
|
33
|
+
],
|
|
34
|
+
"type": "module",
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@arethetypeswrong/cli": "^0.17.4",
|
|
37
|
+
"@biomejs/biome": "^1.9.4",
|
|
38
|
+
"@changesets/cli": "^2.28.1",
|
|
39
|
+
"@parcel/watcher": "2.5.1",
|
|
40
|
+
"@total-typescript/ts-reset": "^0.6.1",
|
|
41
|
+
"@types/node": "22.15.17",
|
|
42
|
+
"knip": "5.55.1",
|
|
43
|
+
"lefthook": "1.11.12",
|
|
44
|
+
"msw": "2.10.2",
|
|
45
|
+
"tsup": "8.5.0",
|
|
46
|
+
"typescript": "^5.8.2",
|
|
47
|
+
"vitest": "^3.1.1"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"@graphql-codegen/cli": "5.0.6",
|
|
51
|
+
"@shopify/admin-api-client": "1.1.1",
|
|
52
|
+
"@shopify/api-codegen-preset": "1.1.8",
|
|
53
|
+
"@shopify/shopify-api": "^11.11.1",
|
|
54
|
+
"dotenv": "^16.4.7",
|
|
55
|
+
"zod": "4.0.0-beta.20250505T195954"
|
|
56
|
+
},
|
|
57
|
+
"scripts": {
|
|
58
|
+
"build": "tsup",
|
|
59
|
+
"watch": "pnpm graphql-codegen-esm --watch",
|
|
60
|
+
"ci": "pnpm format:check && pnpm knip && pnpm check-exports && pnpm test",
|
|
61
|
+
"ci-light": "pnpm format:check",
|
|
62
|
+
"format:check": "biome check .",
|
|
63
|
+
"format:fix": "biome check --fix .",
|
|
64
|
+
"check-exports": "attw --pack . --ignore-rules=cjs-resolves-to-esm",
|
|
65
|
+
"test": "vitest run --test-name-pattern '^((?!Live).)*$'",
|
|
66
|
+
"test:watch": "vitest --test-name-pattern '^((?!Live).)*$'",
|
|
67
|
+
"test-all-including-live": "vitest run",
|
|
68
|
+
"local-release": "changeset version && changeset publish",
|
|
69
|
+
"typecheck": "tsc",
|
|
70
|
+
"knip": "knip --max-issues 10",
|
|
71
|
+
"knip:fix": "knip --fix",
|
|
72
|
+
"postinstall": "lefthook install",
|
|
73
|
+
"codegen": "graphql-codegen-esm"
|
|
74
|
+
}
|
|
75
|
+
}
|