@zoxllc/shopify-checkout-extensions 0.0.8 → 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 -233
  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 -32
  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
@@ -1,37 +0,0 @@
1
- import type {
2
- ApplyDiscount,
3
- Discount,
4
- DiscountInterface,
5
- } from '../common/DiscountInterface';
6
-
7
- export class FixedDiscount implements DiscountInterface {
8
- amount: number;
9
- message: string;
10
-
11
- constructor(amount: number, message: string) {
12
- this.amount = amount;
13
- this.message = message;
14
- }
15
-
16
- apply(items: ApplyDiscount[]): Discount {
17
- const targets = items.map(
18
- ({ deliveryOption: { handle } }) => {
19
- return {
20
- deliveryOption: {
21
- handle,
22
- },
23
- };
24
- }
25
- );
26
-
27
- return {
28
- targets,
29
- value: {
30
- fixedAmount: {
31
- amount: this.amount,
32
- },
33
- },
34
- message: this.message,
35
- } as Discount;
36
- }
37
- }
@@ -1,54 +0,0 @@
1
- import type { CartDeliveryOption } from '../shipping/api';
2
- import { MatchType, Selector } from '../common/Selector';
3
- import { StringComparisonType } from '../common/Qualifier';
4
-
5
- export class RateNameSelector extends Selector {
6
- invert: boolean;
7
- matchCondition: StringComparisonType;
8
- names: string[];
9
-
10
- constructor(
11
- matchType: MatchType.DOES | MatchType.DOES_NOT,
12
- matchCondition: StringComparisonType,
13
- names: string[]
14
- ) {
15
- super();
16
- this.invert = matchType == MatchType.DOES_NOT;
17
- this.matchCondition = matchCondition;
18
- this.names = names.map((e) => e.toLowerCase());
19
- }
20
-
21
- match(subject: unknown): boolean;
22
- match(subject: CartDeliveryOption) {
23
- let matchResult;
24
-
25
- const title = subject?.title?.toLowerCase() || '';
26
-
27
- switch (this.matchCondition) {
28
- case StringComparisonType.MATCH:
29
- matchResult = this.names.includes(title);
30
- break;
31
- case StringComparisonType.CONTAINS:
32
- matchResult =
33
- this.names.filter((e) => title.indexOf(e) > -1)
34
- .length > 0;
35
- break;
36
- case StringComparisonType.START_WITH:
37
- matchResult =
38
- this.names.filter((e) => title.startsWith(e))
39
- .length > 0;
40
- break;
41
- case StringComparisonType.END_WITH:
42
- matchResult =
43
- this.names.filter((e) => title.endsWith(e))
44
- .length > 0;
45
- break;
46
- }
47
-
48
- if (this.invert) {
49
- return !matchResult;
50
- }
51
-
52
- return matchResult;
53
- }
54
- }
@@ -1,75 +0,0 @@
1
- import type { CartDeliveryOption } from './api';
2
- import { Campaign } from '../common/Campaign';
3
- import type { DiscountCart } from '../common/DiscountCart';
4
- import type {
5
- ApplyDiscount,
6
- DiscountInterface,
7
- } from '../common/DiscountInterface';
8
- import type {
9
- QualifierBehavior,
10
- Qualifier,
11
- } from '../common/Qualifier';
12
- import type { Selector } from '../common/Selector';
13
- import type { AndSelector } from '../common/AndSelector';
14
- import type { OrSelector } from '../common/OrSelector';
15
-
16
- export class ShippingDiscount extends Campaign {
17
- discount: DiscountInterface;
18
- rateSelector: Selector;
19
-
20
- constructor(
21
- behavior: QualifierBehavior,
22
- qualifiers:
23
- | (Qualifier | AndSelector | OrSelector)[]
24
- | null,
25
- discount: DiscountInterface,
26
- rateSelector: Selector
27
- ) {
28
- super(behavior, qualifiers);
29
- this.discount = discount;
30
- this.rateSelector = rateSelector;
31
- }
32
-
33
- run(discountCart: DiscountCart) {
34
- // First we see if this cart qualifies for this discount
35
- if (this.qualifies(discountCart)) {
36
- // Now that it qualifies, we can determine the applicableDeliveryOptions
37
- // to apply discounts to by...
38
- // Loop through all deliveryGroups
39
- const applicableDiscounts =
40
- discountCart.cart.deliveryGroups
41
- .reduce((deliveryOptions, deliveryGroup) => {
42
- // Loop through its delivery options
43
- deliveryGroup.deliveryOptions.forEach((o) => {
44
- const deliveryOption =
45
- o as CartDeliveryOption;
46
- // 2. Looping any deliveryOptions within the group
47
- if (
48
- this.rateSelector &&
49
- this.rateSelector.match(deliveryOption)
50
- ) {
51
- // if this is a match, we want to apply this discount
52
- deliveryOptions.push(deliveryOption);
53
- }
54
- });
55
-
56
- return deliveryOptions;
57
- }, [] as CartDeliveryOption[])
58
- .map((deliveryOption) => {
59
- return {
60
- deliveryOption: {
61
- handle: deliveryOption.handle,
62
- },
63
- } as ApplyDiscount;
64
- });
65
-
66
- if (applicableDiscounts.length) {
67
- const discount = this.discount.apply(
68
- applicableDiscounts
69
- );
70
- discountCart.addShippingDiscount(discount);
71
- }
72
- }
73
- return discountCart;
74
- }
75
- }