@zoxllc/shopify-checkout-extensions 0.0.7 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/CLAUDE.md +136 -0
  2. package/EXAMPLES.md +384 -0
  3. package/INTEGRATION.md +482 -0
  4. package/README.md +5 -1
  5. package/dist/common/AndSelector.d.ts +11 -0
  6. package/dist/common/AndSelector.d.ts.map +1 -0
  7. package/dist/common/AndSelector.js +30 -0
  8. package/dist/common/Campaign.d.ts +24 -0
  9. package/dist/common/Campaign.d.ts.map +1 -0
  10. package/dist/common/Campaign.js +41 -0
  11. package/dist/common/CampaignConfiguration.d.ts +10 -0
  12. package/dist/common/CampaignConfiguration.d.ts.map +1 -0
  13. package/dist/common/CampaignConfiguration.js +7 -0
  14. package/dist/common/CampaignFactory.d.ts +22 -0
  15. package/dist/common/CampaignFactory.d.ts.map +1 -0
  16. package/dist/common/CampaignFactory.js +95 -0
  17. package/dist/common/CartAmountQualifier.d.ts +22 -0
  18. package/dist/common/CartAmountQualifier.d.ts.map +1 -0
  19. package/dist/common/CartAmountQualifier.js +46 -0
  20. package/dist/common/CartHasItemQualifier.d.ts +21 -0
  21. package/dist/common/CartHasItemQualifier.d.ts.map +1 -0
  22. package/dist/common/CartHasItemQualifier.js +54 -0
  23. package/dist/common/CartQuantityQualifier.d.ts +22 -0
  24. package/dist/common/CartQuantityQualifier.d.ts.map +1 -0
  25. package/dist/common/CartQuantityQualifier.js +62 -0
  26. package/dist/common/ConfigSchema.d.ts +71 -0
  27. package/dist/common/ConfigSchema.d.ts.map +1 -0
  28. package/dist/common/ConfigSchema.js +69 -0
  29. package/dist/common/ConfigValidator.d.ts +29 -0
  30. package/dist/common/ConfigValidator.d.ts.map +1 -0
  31. package/dist/common/ConfigValidator.js +84 -0
  32. package/dist/common/CountryCodeQualifier.d.ts +15 -0
  33. package/dist/common/CountryCodeQualifier.d.ts.map +1 -0
  34. package/dist/common/CountryCodeQualifier.js +30 -0
  35. package/dist/common/CustomerEmailQualifier.d.ts +16 -0
  36. package/dist/common/CustomerEmailQualifier.d.ts.map +1 -0
  37. package/dist/common/CustomerEmailQualifier.js +52 -0
  38. package/dist/common/CustomerSubscriberQualifier.d.ts +18 -0
  39. package/dist/common/CustomerSubscriberQualifier.d.ts.map +1 -0
  40. package/dist/common/CustomerSubscriberQualifier.js +28 -0
  41. package/dist/common/CustomerTagQualifier.d.ts +16 -0
  42. package/dist/common/CustomerTagQualifier.d.ts.map +1 -0
  43. package/dist/common/CustomerTagQualifier.js +45 -0
  44. package/dist/common/DiscountCart.d.ts +23 -0
  45. package/dist/common/DiscountCart.d.ts.map +1 -0
  46. package/dist/common/DiscountCart.js +103 -0
  47. package/dist/common/DiscountInterface.d.ts +17 -0
  48. package/dist/common/DiscountInterface.d.ts.map +1 -0
  49. package/dist/common/DiscountInterface.js +2 -0
  50. package/dist/common/OrSelector.d.ts +11 -0
  51. package/dist/common/OrSelector.d.ts.map +1 -0
  52. package/dist/common/OrSelector.js +30 -0
  53. package/dist/common/PostCartAmountQualifier.d.ts +9 -0
  54. package/dist/common/PostCartAmountQualifier.d.ts.map +1 -0
  55. package/dist/common/PostCartAmountQualifier.js +17 -0
  56. package/dist/common/ProductHandleSelector.d.ts +8 -0
  57. package/dist/common/ProductHandleSelector.d.ts.map +1 -0
  58. package/dist/common/ProductHandleSelector.js +22 -0
  59. package/dist/common/ProductIdSelector.d.ts +8 -0
  60. package/dist/common/ProductIdSelector.d.ts.map +1 -0
  61. package/dist/common/ProductIdSelector.js +22 -0
  62. package/dist/common/ProductTagSelector.d.ts +10 -0
  63. package/dist/common/ProductTagSelector.d.ts.map +1 -0
  64. package/dist/common/ProductTagSelector.js +39 -0
  65. package/dist/common/ProductTypeSelector.d.ts +8 -0
  66. package/dist/common/ProductTypeSelector.d.ts.map +1 -0
  67. package/dist/common/ProductTypeSelector.js +25 -0
  68. package/dist/common/Qualifier.d.ts +30 -0
  69. package/dist/common/Qualifier.d.ts.map +1 -0
  70. package/dist/common/Qualifier.js +61 -0
  71. package/dist/common/SaleItemSelector.d.ts +11 -0
  72. package/dist/common/SaleItemSelector.d.ts.map +1 -0
  73. package/dist/common/SaleItemSelector.js +30 -0
  74. package/dist/common/Selector.d.ts +27 -0
  75. package/dist/common/Selector.d.ts.map +1 -0
  76. package/dist/common/Selector.js +51 -0
  77. package/dist/common/SubscriptionItemSelector.d.ts +7 -0
  78. package/dist/common/SubscriptionItemSelector.d.ts.map +1 -0
  79. package/dist/common/SubscriptionItemSelector.js +19 -0
  80. package/dist/form/CampaignForm.d.ts +1 -0
  81. package/dist/form/CampaignForm.d.ts.map +1 -0
  82. package/dist/form/CampaignForm.js +1 -0
  83. package/{src/index.ts → dist/index.d.ts} +22 -27
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +78 -0
  86. package/dist/lineItem/BuyXGetY.d.ts +18 -0
  87. package/dist/lineItem/BuyXGetY.d.ts.map +1 -0
  88. package/dist/lineItem/BuyXGetY.js +85 -0
  89. package/dist/lineItem/ConditionalDiscount.d.ts +14 -0
  90. package/dist/lineItem/ConditionalDiscount.d.ts.map +1 -0
  91. package/dist/lineItem/ConditionalDiscount.js +81 -0
  92. package/dist/lineItem/FixedItemDiscount.d.ts +9 -0
  93. package/dist/lineItem/FixedItemDiscount.d.ts.map +1 -0
  94. package/dist/lineItem/FixedItemDiscount.js +35 -0
  95. package/dist/lineItem/PercentageDiscount.d.ts +8 -0
  96. package/dist/lineItem/PercentageDiscount.d.ts.map +1 -0
  97. package/dist/lineItem/PercentageDiscount.js +32 -0
  98. package/dist/lineItem/api.d.ts +2026 -0
  99. package/dist/lineItem/api.d.ts.map +1 -0
  100. package/dist/lineItem/api.js +1157 -0
  101. package/dist/shipping/FixedDiscount.d.ts +8 -0
  102. package/dist/shipping/FixedDiscount.d.ts.map +1 -0
  103. package/dist/shipping/FixedDiscount.js +30 -0
  104. package/dist/shipping/RateNameSelector.d.ts +10 -0
  105. package/dist/shipping/RateNameSelector.d.ts.map +1 -0
  106. package/dist/shipping/RateNameSelector.js +45 -0
  107. package/dist/shipping/ShippingDiscount.d.ts +14 -0
  108. package/dist/shipping/ShippingDiscount.d.ts.map +1 -0
  109. package/dist/shipping/ShippingDiscount.js +48 -0
  110. package/dist/shipping/api.d.ts +2019 -0
  111. package/dist/shipping/api.d.ts.map +1 -0
  112. package/dist/shipping/api.js +1147 -0
  113. package/package.json +26 -7
  114. package/migrate.ts +0 -64
  115. package/src/common/AndSelector.ts +0 -42
  116. package/src/common/Campaign.ts +0 -70
  117. package/src/common/CampaignConfiguration.ts +0 -10
  118. package/src/common/CampaignFactory.ts +0 -234
  119. package/src/common/CartAmountQualifier.ts +0 -64
  120. package/src/common/CartHasItemQualifier.ts +0 -80
  121. package/src/common/CartQuantityQualifier.ts +0 -94
  122. package/src/common/CountryCodeQualifier.ts +0 -49
  123. package/src/common/CustomerEmailQualifier.ts +0 -67
  124. package/src/common/CustomerSubscriberQualifier.ts +0 -32
  125. package/src/common/CustomerTagQualifier.ts +0 -69
  126. package/src/common/DiscountCart.ts +0 -161
  127. package/src/common/DiscountInterface.ts +0 -26
  128. package/src/common/OrSelector.ts +0 -40
  129. package/src/common/PostCartAmountQualifier.ts +0 -21
  130. package/src/common/ProductHandleSelector.ts +0 -31
  131. package/src/common/ProductIdSelector.ts +0 -34
  132. package/src/common/ProductTagSelector.ts +0 -63
  133. package/src/common/ProductTypeSelector.ts +0 -40
  134. package/src/common/Qualifier.ts +0 -67
  135. package/src/common/SaleItemSelector.ts +0 -36
  136. package/src/common/Selector.ts +0 -66
  137. package/src/common/SubscriptionItemSelector.ts +0 -23
  138. package/src/lineItem/BuyXGetY.ts +0 -131
  139. package/src/lineItem/ConditionalDiscount.ts +0 -102
  140. package/src/lineItem/FixedItemDiscount.ts +0 -51
  141. package/src/lineItem/PercentageDiscount.ts +0 -44
  142. package/src/lineItem/api.ts +0 -2103
  143. package/src/shipping/FixedDiscount.ts +0 -37
  144. package/src/shipping/RateNameSelector.ts +0 -54
  145. package/src/shipping/ShippingDiscount.ts +0 -75
  146. package/src/shipping/api.ts +0 -2014
  147. package/tests/AndSelector.test.ts +0 -27
  148. package/tests/CartQuantityQualifier.test.ts +0 -381
  149. package/tests/CountryCodeQualifier.test.ts +0 -55
  150. package/tests/CustomerSubscriberQualifier.test.ts +0 -101
  151. package/tests/CustomerTagQualifier.test.ts +0 -71
  152. package/tests/DiscountCart.test.ts +0 -115
  153. package/tests/OrSelector.test.ts +0 -27
  154. package/tests/ProductIdSelector.test.ts +0 -83
  155. package/tests/ProductTagSelector.test.ts +0 -75
  156. package/tests/Qualifier.test.ts +0 -193
  157. package/tests/RateNameSelector.test.ts +0 -107
  158. package/tests/SaleItemSelector.test.ts +0 -113
  159. package/tests/Selector.test.ts +0 -83
  160. package/tests/ShippingDiscount.test.ts +0 -147
  161. package/tsconfig.json +0 -25
@@ -0,0 +1,8 @@
1
+ import type { ApplyDiscount, Discount, DiscountInterface } from '../common/DiscountInterface';
2
+ export declare class FixedDiscount implements DiscountInterface {
3
+ amount: number;
4
+ message: string;
5
+ constructor(amount: number, message: string);
6
+ apply(items: ApplyDiscount[]): Discount;
7
+ }
8
+ //# sourceMappingURL=FixedDiscount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FixedDiscount.d.ts","sourceRoot":"","sources":["../../src/shipping/FixedDiscount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AAErC,qBAAa,aAAc,YAAW,iBAAiB;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;gBAEJ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAK3C,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,QAAQ;CAqBxC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FixedDiscount = void 0;
4
+ class FixedDiscount {
5
+ amount;
6
+ message;
7
+ constructor(amount, message) {
8
+ this.amount = amount;
9
+ this.message = message;
10
+ }
11
+ apply(items) {
12
+ const targets = items.map(({ deliveryOption: { handle } }) => {
13
+ return {
14
+ deliveryOption: {
15
+ handle,
16
+ },
17
+ };
18
+ });
19
+ return {
20
+ targets,
21
+ value: {
22
+ fixedAmount: {
23
+ amount: this.amount,
24
+ },
25
+ },
26
+ message: this.message,
27
+ };
28
+ }
29
+ }
30
+ exports.FixedDiscount = FixedDiscount;
@@ -0,0 +1,10 @@
1
+ import { MatchType, Selector } from '../common/Selector';
2
+ import { StringComparisonType } from '../common/Qualifier';
3
+ export declare class RateNameSelector extends Selector {
4
+ invert: boolean;
5
+ matchCondition: StringComparisonType;
6
+ names: string[];
7
+ constructor(matchType: MatchType.DOES | MatchType.DOES_NOT, matchCondition: StringComparisonType, names: string[]);
8
+ match(subject: unknown): boolean;
9
+ }
10
+ //# sourceMappingURL=RateNameSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RateNameSelector.d.ts","sourceRoot":"","sources":["../../src/shipping/RateNameSelector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,oBAAoB,CAAC;IACrC,KAAK,EAAE,MAAM,EAAE,CAAC;gBAGd,SAAS,EAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,EAC9C,cAAc,EAAE,oBAAoB,EACpC,KAAK,EAAE,MAAM,EAAE;IAQjB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;CAiCjC"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RateNameSelector = void 0;
4
+ const Selector_1 = require("../common/Selector");
5
+ const Qualifier_1 = require("../common/Qualifier");
6
+ class RateNameSelector extends Selector_1.Selector {
7
+ invert;
8
+ matchCondition;
9
+ names;
10
+ constructor(matchType, matchCondition, names) {
11
+ super();
12
+ this.invert = matchType == Selector_1.MatchType.DOES_NOT;
13
+ this.matchCondition = matchCondition;
14
+ this.names = names.map((e) => e.toLowerCase());
15
+ }
16
+ match(subject) {
17
+ let matchResult;
18
+ const title = subject?.title?.toLowerCase() || '';
19
+ switch (this.matchCondition) {
20
+ case Qualifier_1.StringComparisonType.MATCH:
21
+ matchResult = this.names.includes(title);
22
+ break;
23
+ case Qualifier_1.StringComparisonType.CONTAINS:
24
+ matchResult =
25
+ this.names.filter((e) => title.indexOf(e) > -1)
26
+ .length > 0;
27
+ break;
28
+ case Qualifier_1.StringComparisonType.START_WITH:
29
+ matchResult =
30
+ this.names.filter((e) => title.startsWith(e))
31
+ .length > 0;
32
+ break;
33
+ case Qualifier_1.StringComparisonType.END_WITH:
34
+ matchResult =
35
+ this.names.filter((e) => title.endsWith(e))
36
+ .length > 0;
37
+ break;
38
+ }
39
+ if (this.invert) {
40
+ return !matchResult;
41
+ }
42
+ return matchResult;
43
+ }
44
+ }
45
+ exports.RateNameSelector = RateNameSelector;
@@ -0,0 +1,14 @@
1
+ import { Campaign } from '../common/Campaign';
2
+ import type { DiscountCart } from '../common/DiscountCart';
3
+ import type { DiscountInterface } from '../common/DiscountInterface';
4
+ import type { QualifierBehavior, Qualifier } from '../common/Qualifier';
5
+ import type { Selector } from '../common/Selector';
6
+ import type { AndSelector } from '../common/AndSelector';
7
+ import type { OrSelector } from '../common/OrSelector';
8
+ export declare class ShippingDiscount extends Campaign {
9
+ discount: DiscountInterface;
10
+ rateSelector: Selector;
11
+ constructor(behavior: QualifierBehavior, qualifiers: (Qualifier | AndSelector | OrSelector)[] | null, discount: DiscountInterface, rateSelector: Selector);
12
+ run(discountCart: DiscountCart): DiscountCart;
13
+ }
14
+ //# sourceMappingURL=ShippingDiscount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShippingDiscount.d.ts","sourceRoot":"","sources":["../../src/shipping/ShippingDiscount.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EACV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,EAAE,QAAQ,CAAC;gBAGrB,QAAQ,EAAE,iBAAiB,EAC3B,UAAU,EACN,CAAC,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC,EAAE,GACxC,IAAI,EACR,QAAQ,EAAE,iBAAiB,EAC3B,YAAY,EAAE,QAAQ;IAOxB,GAAG,CAAC,YAAY,EAAE,YAAY;CA0C/B"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ShippingDiscount = void 0;
4
+ const Campaign_1 = require("../common/Campaign");
5
+ class ShippingDiscount extends Campaign_1.Campaign {
6
+ discount;
7
+ rateSelector;
8
+ constructor(behavior, qualifiers, discount, rateSelector) {
9
+ super(behavior, qualifiers);
10
+ this.discount = discount;
11
+ this.rateSelector = rateSelector;
12
+ }
13
+ run(discountCart) {
14
+ // First we see if this cart qualifies for this discount
15
+ if (this.qualifies(discountCart)) {
16
+ // Now that it qualifies, we can determine the applicableDeliveryOptions
17
+ // to apply discounts to by...
18
+ // Loop through all deliveryGroups
19
+ const applicableDiscounts = discountCart.cart.deliveryGroups
20
+ .reduce((deliveryOptions, deliveryGroup) => {
21
+ // Loop through its delivery options
22
+ deliveryGroup.deliveryOptions.forEach((o) => {
23
+ const deliveryOption = o;
24
+ // 2. Looping any deliveryOptions within the group
25
+ if (this.rateSelector &&
26
+ this.rateSelector.match(deliveryOption)) {
27
+ // if this is a match, we want to apply this discount
28
+ deliveryOptions.push(deliveryOption);
29
+ }
30
+ });
31
+ return deliveryOptions;
32
+ }, [])
33
+ .map((deliveryOption) => {
34
+ return {
35
+ deliveryOption: {
36
+ handle: deliveryOption.handle,
37
+ },
38
+ };
39
+ });
40
+ if (applicableDiscounts.length) {
41
+ const discount = this.discount.apply(applicableDiscounts);
42
+ discountCart.addShippingDiscount(discount);
43
+ }
44
+ }
45
+ return discountCart;
46
+ }
47
+ }
48
+ exports.ShippingDiscount = ShippingDiscount;