@ehrenkind/shopify-lib 0.1.0 → 0.2.1

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 (57) hide show
  1. package/dist/generated-api-types/2025-04/admin.generated.d.ts +74 -0
  2. package/dist/generated-api-types/2025-04/admin.generated.d.ts.map +1 -1
  3. package/dist/generated-api-types/2025-04/admin.types.d.ts +4 -4
  4. package/dist/generated-api-types/2025-04/admin.types.d.ts.map +1 -1
  5. package/dist/generated-api-types/2025-04/admin.types.js +4 -4
  6. package/dist/generated-api-types/2025-04/admin.types.js.map +1 -1
  7. package/dist/index.cjs +365 -39
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.d.cts +256 -10
  10. package/dist/index.d.ts +3 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +3 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/index.mjs +361 -38
  15. package/dist/index.mjs.map +1 -1
  16. package/dist/queries/orders/getOrderById.d.ts +136 -0
  17. package/dist/queries/orders/getOrderById.d.ts.map +1 -0
  18. package/dist/queries/orders/getOrderById.js +126 -0
  19. package/dist/queries/orders/getOrderById.js.map +1 -0
  20. package/dist/queries/orders/getOrderById.mock.d.ts +82 -0
  21. package/dist/queries/orders/getOrderById.mock.d.ts.map +1 -0
  22. package/dist/queries/orders/getOrderById.mock.js +204 -0
  23. package/dist/queries/orders/getOrderById.mock.js.map +1 -0
  24. package/dist/queries/orders/getOrderById.queries.d.ts +3 -0
  25. package/dist/queries/orders/getOrderById.queries.d.ts.map +1 -0
  26. package/dist/queries/orders/getOrderById.queries.js +174 -0
  27. package/dist/queries/orders/getOrderById.queries.js.map +1 -0
  28. package/dist/queries/orders/getOrderById.test.d.ts +2 -0
  29. package/dist/queries/orders/getOrderById.test.d.ts.map +1 -0
  30. package/dist/queries/orders/getOrderById.test.js +46 -0
  31. package/dist/queries/orders/getOrderById.test.js.map +1 -0
  32. package/dist/queries/orders/getOrderByName.d.ts +5 -5
  33. package/dist/queries/orders/getOrderByName.d.ts.map +1 -1
  34. package/dist/queries/orders/getOrderByName.js +1 -1
  35. package/dist/queries/orders/getOrderByName.js.map +1 -1
  36. package/dist/queries/orders/getOrderByName.test.js +6 -4
  37. package/dist/queries/orders/getOrderByName.test.js.map +1 -1
  38. package/dist/queries/orders/getOrderPaymentDetails.mock.d.ts +12 -0
  39. package/dist/queries/orders/getOrderPaymentDetails.mock.d.ts.map +1 -0
  40. package/dist/queries/orders/getOrderPaymentDetails.mock.js +24 -0
  41. package/dist/queries/orders/getOrderPaymentDetails.mock.js.map +1 -0
  42. package/dist/queries/orders/getOrderPaymentDetails.test.d.ts +2 -0
  43. package/dist/queries/orders/getOrderPaymentDetails.test.d.ts.map +1 -0
  44. package/dist/queries/orders/getOrderPaymentDetails.test.js +19 -0
  45. package/dist/queries/orders/getOrderPaymentDetails.test.js.map +1 -0
  46. package/dist/utils/mswHandlers.d.ts.map +1 -1
  47. package/dist/utils/mswHandlers.js +5 -0
  48. package/dist/utils/mswHandlers.js.map +1 -1
  49. package/dist/utils/parseGid.d.ts +9 -0
  50. package/dist/utils/parseGid.d.ts.map +1 -0
  51. package/dist/utils/parseGid.js +12 -0
  52. package/dist/utils/parseGid.js.map +1 -0
  53. package/dist/utils/parseGid.test.d.ts +2 -0
  54. package/dist/utils/parseGid.test.d.ts.map +1 -0
  55. package/dist/utils/parseGid.test.js +26 -0
  56. package/dist/utils/parseGid.test.js.map +1 -0
  57. package/package.json +6 -4
package/dist/index.cjs CHANGED
@@ -32,8 +32,11 @@ var index_exports = {};
32
32
  __export(index_exports, {
33
33
  deleteCustomerById: () => deleteCustomerById,
34
34
  getLeanProductVariants: () => getLeanProductVariants,
35
+ getOrderById: () => getOrderById,
35
36
  getOrderByName: () => getOrderByName,
36
- getOrderPaymentDetailsById: () => getOrderPaymentDetailsById
37
+ getOrderPaymentDetailsById: () => getOrderPaymentDetailsById,
38
+ parseGid: () => parseGid,
39
+ toRestFormat: () => toRestFormat
37
40
  });
38
41
  module.exports = __toCommonJS(index_exports);
39
42
 
@@ -278,9 +281,287 @@ async function deleteCustomerById(customerId) {
278
281
  );
279
282
  }
280
283
 
281
- // src/queries/orders/getOrderByName.ts
284
+ // src/queries/orders/getOrderById.ts
282
285
  var import_zod5 = __toESM(require("zod"), 1);
283
286
 
287
+ // src/queries/orders/getOrderById.queries.ts
288
+ var queryOrderById = gql`#graphql
289
+ query orderById($id: ID!) {
290
+ order(id: $id) {
291
+ id
292
+ name
293
+ createdAt
294
+ updatedAt
295
+ cancelledAt
296
+ cancelReason
297
+ totalPriceSet {
298
+ shopMoney {
299
+ amount
300
+ currencyCode
301
+ }
302
+ }
303
+ customer {
304
+ id
305
+ lastName
306
+ defaultEmailAddress {
307
+ emailAddress
308
+ }
309
+ displayName
310
+ firstName
311
+ }
312
+ displayFinancialStatus
313
+ displayFulfillmentStatus
314
+ shippingAddress {
315
+ firstName
316
+ lastName
317
+ address1
318
+ address2
319
+ city
320
+ province
321
+ country
322
+ zip
323
+ }
324
+ }
325
+ }
326
+ `;
327
+ var queryOrderByIdFull = gql`#graphql
328
+ query orderByIdFull($id: ID!) {
329
+ order(id: $id) {
330
+ id
331
+ name
332
+ createdAt
333
+ updatedAt
334
+ processedAt
335
+ closedAt
336
+ cancelledAt
337
+ cancelReason
338
+ totalPriceSet {
339
+ shopMoney {
340
+ amount
341
+ currencyCode
342
+ }
343
+ }
344
+ customer {
345
+ id
346
+ firstName
347
+ lastName
348
+ email
349
+ phone
350
+ }
351
+ displayFinancialStatus
352
+ displayFulfillmentStatus
353
+ shippingAddress {
354
+ firstName
355
+ lastName
356
+ address1
357
+ address2
358
+ city
359
+ province
360
+ country
361
+ zip
362
+ }
363
+ billingAddress {
364
+ firstName
365
+ lastName
366
+ address1
367
+ address2
368
+ city
369
+ province
370
+ country
371
+ zip
372
+ }
373
+ lineItems(first: 100) {
374
+ edges {
375
+ node {
376
+ id
377
+ sku
378
+ title
379
+ variantTitle
380
+ quantity
381
+ customAttributes {
382
+ key
383
+ value
384
+ }
385
+ originalUnitPriceSet {
386
+ shopMoney {
387
+ amount
388
+ currencyCode
389
+ }
390
+ }
391
+ vendor
392
+ image {
393
+ url
394
+ width
395
+ height
396
+ altText
397
+ }
398
+ }
399
+ }
400
+ }
401
+ fulfillments {
402
+ id
403
+ name
404
+ totalQuantity
405
+ status
406
+ createdAt
407
+ estimatedDeliveryAt
408
+ deliveredAt
409
+ trackingInfo {
410
+ company
411
+ number
412
+ url
413
+ }
414
+ fulfillmentLineItems(first: 100) {
415
+ edges {
416
+ node {
417
+ id
418
+ quantity
419
+ lineItem {
420
+ id
421
+ }
422
+ }
423
+ }
424
+ }
425
+ }
426
+ shippingLine {
427
+ originalPriceSet {
428
+ shopMoney {
429
+ amount
430
+ currencyCode
431
+ }
432
+ }
433
+ }
434
+ taxLines {
435
+ priceSet {
436
+ shopMoney {
437
+ amount
438
+ currencyCode
439
+ }
440
+ }
441
+ }
442
+ totalDiscountsSet {
443
+ shopMoney {
444
+ amount
445
+ currencyCode
446
+ }
447
+ }
448
+ discountCodes
449
+ refunds {
450
+ totalRefundedSet {
451
+ shopMoney {
452
+ amount
453
+ currencyCode
454
+ }
455
+ }
456
+ }
457
+ }
458
+ }
459
+ `;
460
+
461
+ // src/queries/orders/getOrderById.ts
462
+ var AddressSchema = import_zod5.default.object({
463
+ firstName: import_zod5.default.string().nullable(),
464
+ lastName: import_zod5.default.string().nullable(),
465
+ address1: import_zod5.default.string().nullable(),
466
+ address2: import_zod5.default.string().nullable(),
467
+ city: import_zod5.default.string().nullable(),
468
+ province: import_zod5.default.string().nullable(),
469
+ country: import_zod5.default.string().nullable(),
470
+ zip: import_zod5.default.string().nullable()
471
+ }).nullable();
472
+ var GetLeanOrderByIdReturn = import_zod5.default.object({
473
+ id: import_zod5.default.string(),
474
+ name: import_zod5.default.string(),
475
+ createdAt: import_zod5.default.string(),
476
+ updatedAt: import_zod5.default.string(),
477
+ cancelledAt: import_zod5.default.string().nullable(),
478
+ cancelReason: import_zod5.default.string().nullable(),
479
+ totalPrice: import_zod5.default.object({
480
+ amount: import_zod5.default.string(),
481
+ currencyCode: import_zod5.default.string()
482
+ }),
483
+ customer: import_zod5.default.object({
484
+ id: import_zod5.default.string(),
485
+ displayName: import_zod5.default.string(),
486
+ firstName: import_zod5.default.string().nullable(),
487
+ lastName: import_zod5.default.string().nullable(),
488
+ emailAddress: import_zod5.default.string().nullable()
489
+ }).nullable(),
490
+ financialStatus: import_zod5.default.string().nullable(),
491
+ fulfillmentStatus: import_zod5.default.string().nullable(),
492
+ shippingAddress: AddressSchema
493
+ }).nullable();
494
+ async function getOrderById(id, detailLevel = "lean") {
495
+ const bigIntId = typeof id === "number" ? BigInt(id) : id;
496
+ if (detailLevel === "lean") {
497
+ return getLeanOrderById(bigIntId);
498
+ }
499
+ return getFullOrderById(bigIntId);
500
+ }
501
+ async function getLeanOrderById(id) {
502
+ const variables = {
503
+ id: convertIdIntoGid(id, "Order")
504
+ };
505
+ const response = await fetchShopifyGraphql({
506
+ query: queryOrderById,
507
+ variables
508
+ });
509
+ if (!response.order) {
510
+ logger.debug(`No order found with ID: ${id}`);
511
+ return null;
512
+ }
513
+ const order = response.order;
514
+ const leanOrder = {
515
+ id: order.id,
516
+ name: order.name,
517
+ createdAt: order.createdAt,
518
+ updatedAt: order.updatedAt,
519
+ cancelledAt: order.cancelledAt ?? null,
520
+ cancelReason: order.cancelReason ?? null,
521
+ totalPrice: {
522
+ amount: order.totalPriceSet?.shopMoney?.amount ?? "",
523
+ currencyCode: order.totalPriceSet?.shopMoney?.currencyCode ?? ""
524
+ },
525
+ customer: order.customer ? {
526
+ id: order.customer.id,
527
+ displayName: order.customer.displayName,
528
+ firstName: order.customer.firstName ?? null,
529
+ lastName: order.customer.lastName ?? null,
530
+ emailAddress: order.customer.defaultEmailAddress?.emailAddress ?? null
531
+ } : null,
532
+ financialStatus: order.displayFinancialStatus ?? null,
533
+ fulfillmentStatus: order.displayFulfillmentStatus ?? null,
534
+ shippingAddress: order.shippingAddress ? {
535
+ firstName: order.shippingAddress.firstName ?? null,
536
+ lastName: order.shippingAddress.lastName ?? null,
537
+ address1: order.shippingAddress.address1 ?? null,
538
+ address2: order.shippingAddress.address2 ?? null,
539
+ city: order.shippingAddress.city ?? null,
540
+ province: order.shippingAddress.province ?? null,
541
+ country: order.shippingAddress.country ?? null,
542
+ zip: order.shippingAddress.zip ?? null
543
+ } : null
544
+ };
545
+ return await returnOutputParsed(leanOrder, GetLeanOrderByIdReturn);
546
+ }
547
+ async function getFullOrderById(id) {
548
+ const variables = {
549
+ id: convertIdIntoGid(id, "Order")
550
+ };
551
+ const response = await fetchShopifyGraphql({
552
+ query: queryOrderByIdFull,
553
+ variables
554
+ });
555
+ if (!response.order) {
556
+ logger.debug(`No order found with ID: ${id}`);
557
+ return null;
558
+ }
559
+ return response.order;
560
+ }
561
+
562
+ // src/queries/orders/getOrderByName.ts
563
+ var import_zod7 = __toESM(require("zod"), 1);
564
+
284
565
  // src/queries/orders/getOrderByName.queries.ts
285
566
  var queryOrdersByName = gql`#graphql
286
567
  query ordersByName($first: Int!, $queryFilter: String!) {
@@ -617,22 +898,22 @@ var queryOrdersByNameFull = gql`#graphql
617
898
  `;
618
899
 
619
900
  // src/queries/orders/getOrderByName.ts
620
- var GetLeanOrderByNameReturn = import_zod5.default.object({
621
- id: import_zod5.default.string(),
622
- name: import_zod5.default.string(),
623
- createdAt: import_zod5.default.string(),
624
- updatedAt: import_zod5.default.string(),
625
- totalPrice: import_zod5.default.object({
626
- amount: import_zod5.default.string(),
627
- currencyCode: import_zod5.default.string()
901
+ var GetLeanOrderByNameReturn = import_zod7.default.object({
902
+ id: import_zod7.default.string(),
903
+ name: import_zod7.default.string(),
904
+ createdAt: import_zod7.default.string(),
905
+ updatedAt: import_zod7.default.string(),
906
+ totalPrice: import_zod7.default.object({
907
+ amount: import_zod7.default.string(),
908
+ currencyCode: import_zod7.default.string()
628
909
  }),
629
- customer: import_zod5.default.object({
630
- id: import_zod5.default.string(),
631
- displayName: import_zod5.default.string(),
632
- emailAddress: import_zod5.default.string().nullable()
910
+ customer: import_zod7.default.object({
911
+ id: import_zod7.default.string(),
912
+ displayName: import_zod7.default.string(),
913
+ emailAddress: import_zod7.default.string().nullable()
633
914
  }).nullable(),
634
- financialStatus: import_zod5.default.string().nullable(),
635
- fulfillmentStatus: import_zod5.default.string().nullable()
915
+ financialStatus: import_zod7.default.string().nullable(),
916
+ fulfillmentStatus: import_zod7.default.string().nullable()
636
917
  }).nullable();
637
918
  async function getOrderByName(orderName, detailLevel = "lean") {
638
919
  if (detailLevel === "lean") {
@@ -723,14 +1004,14 @@ async function getFullOrderByName(orderName) {
723
1004
  }
724
1005
 
725
1006
  // src/queries/productVariants/getLeanProductVariants.ts
726
- var import_zod7 = __toESM(require("zod"), 1);
727
- var GetLeanProductVariantsReturn = import_zod7.default.array(
728
- import_zod7.default.object({
729
- productId: import_zod7.default.string(),
730
- productTitle: import_zod7.default.string(),
731
- variantId: import_zod7.default.string(),
732
- variantTitle: import_zod7.default.string(),
733
- sku: import_zod7.default.string()
1007
+ var import_zod9 = __toESM(require("zod"), 1);
1008
+ var GetLeanProductVariantsReturn = import_zod9.default.array(
1009
+ import_zod9.default.object({
1010
+ productId: import_zod9.default.string(),
1011
+ productTitle: import_zod9.default.string(),
1012
+ variantId: import_zod9.default.string(),
1013
+ variantTitle: import_zod9.default.string(),
1014
+ sku: import_zod9.default.string()
734
1015
  })
735
1016
  );
736
1017
  async function getLeanProductVariants(skus) {
@@ -799,7 +1080,7 @@ async function getLeanProductVariants(skus) {
799
1080
  }
800
1081
 
801
1082
  // src/queries/orders/getOrderPaymentDetails.ts
802
- var import_zod9 = __toESM(require("zod"), 1);
1083
+ var import_zod11 = __toESM(require("zod"), 1);
803
1084
 
804
1085
  // src/queries/orders/getOrderPaymentDetails.queries.ts
805
1086
  var queryOrderPaymentDetails = gql`#graphql
@@ -823,21 +1104,21 @@ var queryOrderPaymentDetails = gql`#graphql
823
1104
  `;
824
1105
 
825
1106
  // src/queries/orders/getOrderPaymentDetails.ts
826
- var GetOrderPaymentDetailsByIdReturn = import_zod9.default.object({
827
- order: import_zod9.default.object({
828
- transactions: import_zod9.default.array(
829
- import_zod9.default.object({
830
- amountSet: import_zod9.default.object({
831
- shopMoney: import_zod9.default.object({
832
- amount: import_zod9.default.string(),
833
- currencyCode: import_zod9.default.string()
1107
+ var GetOrderPaymentDetailsByIdReturn = import_zod11.default.object({
1108
+ order: import_zod11.default.object({
1109
+ transactions: import_zod11.default.array(
1110
+ import_zod11.default.object({
1111
+ amountSet: import_zod11.default.object({
1112
+ shopMoney: import_zod11.default.object({
1113
+ amount: import_zod11.default.string(),
1114
+ currencyCode: import_zod11.default.string()
834
1115
  })
835
1116
  }),
836
- createdAt: import_zod9.default.string(),
837
- gateway: import_zod9.default.string(),
838
- formattedGateway: import_zod9.default.string(),
839
- kind: import_zod9.default.string(),
840
- paymentId: import_zod9.default.string()
1117
+ createdAt: import_zod11.default.string(),
1118
+ gateway: import_zod11.default.string(),
1119
+ formattedGateway: import_zod11.default.string(),
1120
+ kind: import_zod11.default.string(),
1121
+ paymentId: import_zod11.default.string()
841
1122
  })
842
1123
  )
843
1124
  })
@@ -856,11 +1137,56 @@ async function getOrderPaymentDetailsById(id) {
856
1137
  }
857
1138
  return await returnOutputParsed(response, GetOrderPaymentDetailsByIdReturn);
858
1139
  }
1140
+
1141
+ // src/utils/toRestFormat.ts
1142
+ function camelToSnake(str) {
1143
+ return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
1144
+ }
1145
+ function extractNumericId(gid) {
1146
+ const match = gid.match(/\d+$/);
1147
+ return match ? parseInt(match[0], 10) : 0;
1148
+ }
1149
+ function toRestFormat(obj) {
1150
+ if (obj === null || obj === void 0) {
1151
+ return obj;
1152
+ }
1153
+ if (Array.isArray(obj)) {
1154
+ return obj.map(toRestFormat);
1155
+ }
1156
+ if (typeof obj === "object") {
1157
+ const record = obj;
1158
+ const result = {};
1159
+ for (const [key, value] of Object.entries(record)) {
1160
+ if (key === "edges" && Array.isArray(value) && value.every(
1161
+ (item) => typeof item === "object" && item !== null && "node" in item
1162
+ )) {
1163
+ return value.map((edge) => toRestFormat(edge.node));
1164
+ }
1165
+ if (key === "id" && typeof value === "string" && value.startsWith("gid://")) {
1166
+ result[key] = extractNumericId(value);
1167
+ continue;
1168
+ }
1169
+ const snakeKey = camelToSnake(key);
1170
+ result[snakeKey] = toRestFormat(value);
1171
+ }
1172
+ return result;
1173
+ }
1174
+ return obj;
1175
+ }
1176
+
1177
+ // src/utils/parseGid.ts
1178
+ function parseGid(gid) {
1179
+ const match = gid.match(/\d+$/);
1180
+ return match ? parseInt(match[0], 10) : 0;
1181
+ }
859
1182
  // Annotate the CommonJS export names for ESM import in node:
860
1183
  0 && (module.exports = {
861
1184
  deleteCustomerById,
862
1185
  getLeanProductVariants,
1186
+ getOrderById,
863
1187
  getOrderByName,
864
- getOrderPaymentDetailsById
1188
+ getOrderPaymentDetailsById,
1189
+ parseGid,
1190
+ toRestFormat
865
1191
  });
866
1192
  //# sourceMappingURL=index.cjs.map