@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.mjs CHANGED
@@ -244,9 +244,287 @@ async function deleteCustomerById(customerId) {
244
244
  );
245
245
  }
246
246
 
247
- // src/queries/orders/getOrderByName.ts
247
+ // src/queries/orders/getOrderById.ts
248
248
  import z4 from "zod";
249
249
 
250
+ // src/queries/orders/getOrderById.queries.ts
251
+ var queryOrderById = gql`#graphql
252
+ query orderById($id: ID!) {
253
+ order(id: $id) {
254
+ id
255
+ name
256
+ createdAt
257
+ updatedAt
258
+ cancelledAt
259
+ cancelReason
260
+ totalPriceSet {
261
+ shopMoney {
262
+ amount
263
+ currencyCode
264
+ }
265
+ }
266
+ customer {
267
+ id
268
+ lastName
269
+ defaultEmailAddress {
270
+ emailAddress
271
+ }
272
+ displayName
273
+ firstName
274
+ }
275
+ displayFinancialStatus
276
+ displayFulfillmentStatus
277
+ shippingAddress {
278
+ firstName
279
+ lastName
280
+ address1
281
+ address2
282
+ city
283
+ province
284
+ country
285
+ zip
286
+ }
287
+ }
288
+ }
289
+ `;
290
+ var queryOrderByIdFull = gql`#graphql
291
+ query orderByIdFull($id: ID!) {
292
+ order(id: $id) {
293
+ id
294
+ name
295
+ createdAt
296
+ updatedAt
297
+ processedAt
298
+ closedAt
299
+ cancelledAt
300
+ cancelReason
301
+ totalPriceSet {
302
+ shopMoney {
303
+ amount
304
+ currencyCode
305
+ }
306
+ }
307
+ customer {
308
+ id
309
+ firstName
310
+ lastName
311
+ email
312
+ phone
313
+ }
314
+ displayFinancialStatus
315
+ displayFulfillmentStatus
316
+ shippingAddress {
317
+ firstName
318
+ lastName
319
+ address1
320
+ address2
321
+ city
322
+ province
323
+ country
324
+ zip
325
+ }
326
+ billingAddress {
327
+ firstName
328
+ lastName
329
+ address1
330
+ address2
331
+ city
332
+ province
333
+ country
334
+ zip
335
+ }
336
+ lineItems(first: 100) {
337
+ edges {
338
+ node {
339
+ id
340
+ sku
341
+ title
342
+ variantTitle
343
+ quantity
344
+ customAttributes {
345
+ key
346
+ value
347
+ }
348
+ originalUnitPriceSet {
349
+ shopMoney {
350
+ amount
351
+ currencyCode
352
+ }
353
+ }
354
+ vendor
355
+ image {
356
+ url
357
+ width
358
+ height
359
+ altText
360
+ }
361
+ }
362
+ }
363
+ }
364
+ fulfillments {
365
+ id
366
+ name
367
+ totalQuantity
368
+ status
369
+ createdAt
370
+ estimatedDeliveryAt
371
+ deliveredAt
372
+ trackingInfo {
373
+ company
374
+ number
375
+ url
376
+ }
377
+ fulfillmentLineItems(first: 100) {
378
+ edges {
379
+ node {
380
+ id
381
+ quantity
382
+ lineItem {
383
+ id
384
+ }
385
+ }
386
+ }
387
+ }
388
+ }
389
+ shippingLine {
390
+ originalPriceSet {
391
+ shopMoney {
392
+ amount
393
+ currencyCode
394
+ }
395
+ }
396
+ }
397
+ taxLines {
398
+ priceSet {
399
+ shopMoney {
400
+ amount
401
+ currencyCode
402
+ }
403
+ }
404
+ }
405
+ totalDiscountsSet {
406
+ shopMoney {
407
+ amount
408
+ currencyCode
409
+ }
410
+ }
411
+ discountCodes
412
+ refunds {
413
+ totalRefundedSet {
414
+ shopMoney {
415
+ amount
416
+ currencyCode
417
+ }
418
+ }
419
+ }
420
+ }
421
+ }
422
+ `;
423
+
424
+ // src/queries/orders/getOrderById.ts
425
+ var AddressSchema = z4.object({
426
+ firstName: z4.string().nullable(),
427
+ lastName: z4.string().nullable(),
428
+ address1: z4.string().nullable(),
429
+ address2: z4.string().nullable(),
430
+ city: z4.string().nullable(),
431
+ province: z4.string().nullable(),
432
+ country: z4.string().nullable(),
433
+ zip: z4.string().nullable()
434
+ }).nullable();
435
+ var GetLeanOrderByIdReturn = z4.object({
436
+ id: z4.string(),
437
+ name: z4.string(),
438
+ createdAt: z4.string(),
439
+ updatedAt: z4.string(),
440
+ cancelledAt: z4.string().nullable(),
441
+ cancelReason: z4.string().nullable(),
442
+ totalPrice: z4.object({
443
+ amount: z4.string(),
444
+ currencyCode: z4.string()
445
+ }),
446
+ customer: z4.object({
447
+ id: z4.string(),
448
+ displayName: z4.string(),
449
+ firstName: z4.string().nullable(),
450
+ lastName: z4.string().nullable(),
451
+ emailAddress: z4.string().nullable()
452
+ }).nullable(),
453
+ financialStatus: z4.string().nullable(),
454
+ fulfillmentStatus: z4.string().nullable(),
455
+ shippingAddress: AddressSchema
456
+ }).nullable();
457
+ async function getOrderById(id, detailLevel = "lean") {
458
+ const bigIntId = typeof id === "number" ? BigInt(id) : id;
459
+ if (detailLevel === "lean") {
460
+ return getLeanOrderById(bigIntId);
461
+ }
462
+ return getFullOrderById(bigIntId);
463
+ }
464
+ async function getLeanOrderById(id) {
465
+ const variables = {
466
+ id: convertIdIntoGid(id, "Order")
467
+ };
468
+ const response = await fetchShopifyGraphql({
469
+ query: queryOrderById,
470
+ variables
471
+ });
472
+ if (!response.order) {
473
+ logger.debug(`No order found with ID: ${id}`);
474
+ return null;
475
+ }
476
+ const order = response.order;
477
+ const leanOrder = {
478
+ id: order.id,
479
+ name: order.name,
480
+ createdAt: order.createdAt,
481
+ updatedAt: order.updatedAt,
482
+ cancelledAt: order.cancelledAt ?? null,
483
+ cancelReason: order.cancelReason ?? null,
484
+ totalPrice: {
485
+ amount: order.totalPriceSet?.shopMoney?.amount ?? "",
486
+ currencyCode: order.totalPriceSet?.shopMoney?.currencyCode ?? ""
487
+ },
488
+ customer: order.customer ? {
489
+ id: order.customer.id,
490
+ displayName: order.customer.displayName,
491
+ firstName: order.customer.firstName ?? null,
492
+ lastName: order.customer.lastName ?? null,
493
+ emailAddress: order.customer.defaultEmailAddress?.emailAddress ?? null
494
+ } : null,
495
+ financialStatus: order.displayFinancialStatus ?? null,
496
+ fulfillmentStatus: order.displayFulfillmentStatus ?? null,
497
+ shippingAddress: order.shippingAddress ? {
498
+ firstName: order.shippingAddress.firstName ?? null,
499
+ lastName: order.shippingAddress.lastName ?? null,
500
+ address1: order.shippingAddress.address1 ?? null,
501
+ address2: order.shippingAddress.address2 ?? null,
502
+ city: order.shippingAddress.city ?? null,
503
+ province: order.shippingAddress.province ?? null,
504
+ country: order.shippingAddress.country ?? null,
505
+ zip: order.shippingAddress.zip ?? null
506
+ } : null
507
+ };
508
+ return await returnOutputParsed(leanOrder, GetLeanOrderByIdReturn);
509
+ }
510
+ async function getFullOrderById(id) {
511
+ const variables = {
512
+ id: convertIdIntoGid(id, "Order")
513
+ };
514
+ const response = await fetchShopifyGraphql({
515
+ query: queryOrderByIdFull,
516
+ variables
517
+ });
518
+ if (!response.order) {
519
+ logger.debug(`No order found with ID: ${id}`);
520
+ return null;
521
+ }
522
+ return response.order;
523
+ }
524
+
525
+ // src/queries/orders/getOrderByName.ts
526
+ import z5 from "zod";
527
+
250
528
  // src/queries/orders/getOrderByName.queries.ts
251
529
  var queryOrdersByName = gql`#graphql
252
530
  query ordersByName($first: Int!, $queryFilter: String!) {
@@ -583,22 +861,22 @@ var queryOrdersByNameFull = gql`#graphql
583
861
  `;
584
862
 
585
863
  // src/queries/orders/getOrderByName.ts
586
- var GetLeanOrderByNameReturn = z4.object({
587
- id: z4.string(),
588
- name: z4.string(),
589
- createdAt: z4.string(),
590
- updatedAt: z4.string(),
591
- totalPrice: z4.object({
592
- amount: z4.string(),
593
- currencyCode: z4.string()
864
+ var GetLeanOrderByNameReturn = z5.object({
865
+ id: z5.string(),
866
+ name: z5.string(),
867
+ createdAt: z5.string(),
868
+ updatedAt: z5.string(),
869
+ totalPrice: z5.object({
870
+ amount: z5.string(),
871
+ currencyCode: z5.string()
594
872
  }),
595
- customer: z4.object({
596
- id: z4.string(),
597
- displayName: z4.string(),
598
- emailAddress: z4.string().nullable()
873
+ customer: z5.object({
874
+ id: z5.string(),
875
+ displayName: z5.string(),
876
+ emailAddress: z5.string().nullable()
599
877
  }).nullable(),
600
- financialStatus: z4.string().nullable(),
601
- fulfillmentStatus: z4.string().nullable()
878
+ financialStatus: z5.string().nullable(),
879
+ fulfillmentStatus: z5.string().nullable()
602
880
  }).nullable();
603
881
  async function getOrderByName(orderName, detailLevel = "lean") {
604
882
  if (detailLevel === "lean") {
@@ -689,14 +967,14 @@ async function getFullOrderByName(orderName) {
689
967
  }
690
968
 
691
969
  // src/queries/productVariants/getLeanProductVariants.ts
692
- import z5 from "zod";
693
- var GetLeanProductVariantsReturn = z5.array(
694
- z5.object({
695
- productId: z5.string(),
696
- productTitle: z5.string(),
697
- variantId: z5.string(),
698
- variantTitle: z5.string(),
699
- sku: z5.string()
970
+ import z6 from "zod";
971
+ var GetLeanProductVariantsReturn = z6.array(
972
+ z6.object({
973
+ productId: z6.string(),
974
+ productTitle: z6.string(),
975
+ variantId: z6.string(),
976
+ variantTitle: z6.string(),
977
+ sku: z6.string()
700
978
  })
701
979
  );
702
980
  async function getLeanProductVariants(skus) {
@@ -765,7 +1043,7 @@ async function getLeanProductVariants(skus) {
765
1043
  }
766
1044
 
767
1045
  // src/queries/orders/getOrderPaymentDetails.ts
768
- import z6 from "zod";
1046
+ import z7 from "zod";
769
1047
 
770
1048
  // src/queries/orders/getOrderPaymentDetails.queries.ts
771
1049
  var queryOrderPaymentDetails = gql`#graphql
@@ -789,21 +1067,21 @@ var queryOrderPaymentDetails = gql`#graphql
789
1067
  `;
790
1068
 
791
1069
  // src/queries/orders/getOrderPaymentDetails.ts
792
- var GetOrderPaymentDetailsByIdReturn = z6.object({
793
- order: z6.object({
794
- transactions: z6.array(
795
- z6.object({
796
- amountSet: z6.object({
797
- shopMoney: z6.object({
798
- amount: z6.string(),
799
- currencyCode: z6.string()
1070
+ var GetOrderPaymentDetailsByIdReturn = z7.object({
1071
+ order: z7.object({
1072
+ transactions: z7.array(
1073
+ z7.object({
1074
+ amountSet: z7.object({
1075
+ shopMoney: z7.object({
1076
+ amount: z7.string(),
1077
+ currencyCode: z7.string()
800
1078
  })
801
1079
  }),
802
- createdAt: z6.string(),
803
- gateway: z6.string(),
804
- formattedGateway: z6.string(),
805
- kind: z6.string(),
806
- paymentId: z6.string()
1080
+ createdAt: z7.string(),
1081
+ gateway: z7.string(),
1082
+ formattedGateway: z7.string(),
1083
+ kind: z7.string(),
1084
+ paymentId: z7.string()
807
1085
  })
808
1086
  )
809
1087
  })
@@ -822,10 +1100,55 @@ async function getOrderPaymentDetailsById(id) {
822
1100
  }
823
1101
  return await returnOutputParsed(response, GetOrderPaymentDetailsByIdReturn);
824
1102
  }
1103
+
1104
+ // src/utils/toRestFormat.ts
1105
+ function camelToSnake(str) {
1106
+ return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
1107
+ }
1108
+ function extractNumericId(gid) {
1109
+ const match = gid.match(/\d+$/);
1110
+ return match ? parseInt(match[0], 10) : 0;
1111
+ }
1112
+ function toRestFormat(obj) {
1113
+ if (obj === null || obj === void 0) {
1114
+ return obj;
1115
+ }
1116
+ if (Array.isArray(obj)) {
1117
+ return obj.map(toRestFormat);
1118
+ }
1119
+ if (typeof obj === "object") {
1120
+ const record = obj;
1121
+ const result = {};
1122
+ for (const [key, value] of Object.entries(record)) {
1123
+ if (key === "edges" && Array.isArray(value) && value.every(
1124
+ (item) => typeof item === "object" && item !== null && "node" in item
1125
+ )) {
1126
+ return value.map((edge) => toRestFormat(edge.node));
1127
+ }
1128
+ if (key === "id" && typeof value === "string" && value.startsWith("gid://")) {
1129
+ result[key] = extractNumericId(value);
1130
+ continue;
1131
+ }
1132
+ const snakeKey = camelToSnake(key);
1133
+ result[snakeKey] = toRestFormat(value);
1134
+ }
1135
+ return result;
1136
+ }
1137
+ return obj;
1138
+ }
1139
+
1140
+ // src/utils/parseGid.ts
1141
+ function parseGid(gid) {
1142
+ const match = gid.match(/\d+$/);
1143
+ return match ? parseInt(match[0], 10) : 0;
1144
+ }
825
1145
  export {
826
1146
  deleteCustomerById,
827
1147
  getLeanProductVariants,
1148
+ getOrderById,
828
1149
  getOrderByName,
829
- getOrderPaymentDetailsById
1150
+ getOrderPaymentDetailsById,
1151
+ parseGid,
1152
+ toRestFormat
830
1153
  };
831
1154
  //# sourceMappingURL=index.mjs.map