@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.
- package/CLAUDE.md +136 -0
- package/EXAMPLES.md +384 -0
- package/INTEGRATION.md +482 -0
- package/README.md +5 -1
- package/dist/common/AndSelector.d.ts +11 -0
- package/dist/common/AndSelector.d.ts.map +1 -0
- package/dist/common/AndSelector.js +30 -0
- package/dist/common/Campaign.d.ts +24 -0
- package/dist/common/Campaign.d.ts.map +1 -0
- package/dist/common/Campaign.js +41 -0
- package/dist/common/CampaignConfiguration.d.ts +10 -0
- package/dist/common/CampaignConfiguration.d.ts.map +1 -0
- package/dist/common/CampaignConfiguration.js +7 -0
- package/dist/common/CampaignFactory.d.ts +22 -0
- package/dist/common/CampaignFactory.d.ts.map +1 -0
- package/dist/common/CampaignFactory.js +95 -0
- package/dist/common/CartAmountQualifier.d.ts +22 -0
- package/dist/common/CartAmountQualifier.d.ts.map +1 -0
- package/dist/common/CartAmountQualifier.js +46 -0
- package/dist/common/CartHasItemQualifier.d.ts +21 -0
- package/dist/common/CartHasItemQualifier.d.ts.map +1 -0
- package/dist/common/CartHasItemQualifier.js +54 -0
- package/dist/common/CartQuantityQualifier.d.ts +22 -0
- package/dist/common/CartQuantityQualifier.d.ts.map +1 -0
- package/dist/common/CartQuantityQualifier.js +62 -0
- package/dist/common/ConfigSchema.d.ts +71 -0
- package/dist/common/ConfigSchema.d.ts.map +1 -0
- package/dist/common/ConfigSchema.js +69 -0
- package/dist/common/ConfigValidator.d.ts +29 -0
- package/dist/common/ConfigValidator.d.ts.map +1 -0
- package/dist/common/ConfigValidator.js +84 -0
- package/dist/common/CountryCodeQualifier.d.ts +15 -0
- package/dist/common/CountryCodeQualifier.d.ts.map +1 -0
- package/dist/common/CountryCodeQualifier.js +30 -0
- package/dist/common/CustomerEmailQualifier.d.ts +16 -0
- package/dist/common/CustomerEmailQualifier.d.ts.map +1 -0
- package/dist/common/CustomerEmailQualifier.js +52 -0
- package/dist/common/CustomerSubscriberQualifier.d.ts +18 -0
- package/dist/common/CustomerSubscriberQualifier.d.ts.map +1 -0
- package/dist/common/CustomerSubscriberQualifier.js +28 -0
- package/dist/common/CustomerTagQualifier.d.ts +16 -0
- package/dist/common/CustomerTagQualifier.d.ts.map +1 -0
- package/dist/common/CustomerTagQualifier.js +45 -0
- package/dist/common/DiscountCart.d.ts +23 -0
- package/dist/common/DiscountCart.d.ts.map +1 -0
- package/dist/common/DiscountCart.js +103 -0
- package/dist/common/DiscountInterface.d.ts +17 -0
- package/dist/common/DiscountInterface.d.ts.map +1 -0
- package/dist/common/DiscountInterface.js +2 -0
- package/dist/common/OrSelector.d.ts +11 -0
- package/dist/common/OrSelector.d.ts.map +1 -0
- package/dist/common/OrSelector.js +30 -0
- package/dist/common/PostCartAmountQualifier.d.ts +9 -0
- package/dist/common/PostCartAmountQualifier.d.ts.map +1 -0
- package/dist/common/PostCartAmountQualifier.js +17 -0
- package/dist/common/ProductHandleSelector.d.ts +8 -0
- package/dist/common/ProductHandleSelector.d.ts.map +1 -0
- package/dist/common/ProductHandleSelector.js +22 -0
- package/dist/common/ProductIdSelector.d.ts +8 -0
- package/dist/common/ProductIdSelector.d.ts.map +1 -0
- package/dist/common/ProductIdSelector.js +22 -0
- package/dist/common/ProductTagSelector.d.ts +10 -0
- package/dist/common/ProductTagSelector.d.ts.map +1 -0
- package/dist/common/ProductTagSelector.js +39 -0
- package/dist/common/ProductTypeSelector.d.ts +8 -0
- package/dist/common/ProductTypeSelector.d.ts.map +1 -0
- package/dist/common/ProductTypeSelector.js +25 -0
- package/dist/common/Qualifier.d.ts +30 -0
- package/dist/common/Qualifier.d.ts.map +1 -0
- package/dist/common/Qualifier.js +61 -0
- package/dist/common/SaleItemSelector.d.ts +11 -0
- package/dist/common/SaleItemSelector.d.ts.map +1 -0
- package/dist/common/SaleItemSelector.js +30 -0
- package/dist/common/Selector.d.ts +27 -0
- package/dist/common/Selector.d.ts.map +1 -0
- package/dist/common/Selector.js +51 -0
- package/dist/common/SubscriptionItemSelector.d.ts +7 -0
- package/dist/common/SubscriptionItemSelector.d.ts.map +1 -0
- package/dist/common/SubscriptionItemSelector.js +19 -0
- package/dist/form/CampaignForm.d.ts +1 -0
- package/dist/form/CampaignForm.d.ts.map +1 -0
- package/dist/form/CampaignForm.js +1 -0
- package/{src/index.ts → dist/index.d.ts} +22 -27
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +78 -0
- package/dist/lineItem/BuyXGetY.d.ts +18 -0
- package/dist/lineItem/BuyXGetY.d.ts.map +1 -0
- package/dist/lineItem/BuyXGetY.js +85 -0
- package/dist/lineItem/ConditionalDiscount.d.ts +14 -0
- package/dist/lineItem/ConditionalDiscount.d.ts.map +1 -0
- package/dist/lineItem/ConditionalDiscount.js +81 -0
- package/dist/lineItem/FixedItemDiscount.d.ts +9 -0
- package/dist/lineItem/FixedItemDiscount.d.ts.map +1 -0
- package/dist/lineItem/FixedItemDiscount.js +35 -0
- package/dist/lineItem/PercentageDiscount.d.ts +8 -0
- package/dist/lineItem/PercentageDiscount.d.ts.map +1 -0
- package/dist/lineItem/PercentageDiscount.js +32 -0
- package/dist/lineItem/api.d.ts +2026 -0
- package/dist/lineItem/api.d.ts.map +1 -0
- package/dist/lineItem/api.js +1157 -0
- package/dist/shipping/FixedDiscount.d.ts +8 -0
- package/dist/shipping/FixedDiscount.d.ts.map +1 -0
- package/dist/shipping/FixedDiscount.js +30 -0
- package/dist/shipping/RateNameSelector.d.ts +10 -0
- package/dist/shipping/RateNameSelector.d.ts.map +1 -0
- package/dist/shipping/RateNameSelector.js +45 -0
- package/dist/shipping/ShippingDiscount.d.ts +14 -0
- package/dist/shipping/ShippingDiscount.d.ts.map +1 -0
- package/dist/shipping/ShippingDiscount.js +48 -0
- package/dist/shipping/api.d.ts +2019 -0
- package/dist/shipping/api.d.ts.map +1 -0
- package/dist/shipping/api.js +1147 -0
- package/package.json +26 -7
- package/migrate.ts +0 -64
- package/src/common/AndSelector.ts +0 -42
- package/src/common/Campaign.ts +0 -70
- package/src/common/CampaignConfiguration.ts +0 -10
- package/src/common/CampaignFactory.ts +0 -233
- package/src/common/CartAmountQualifier.ts +0 -64
- package/src/common/CartHasItemQualifier.ts +0 -80
- package/src/common/CartQuantityQualifier.ts +0 -94
- package/src/common/CountryCodeQualifier.ts +0 -49
- package/src/common/CustomerEmailQualifier.ts +0 -67
- package/src/common/CustomerSubscriberQualifier.ts +0 -32
- package/src/common/CustomerTagQualifier.ts +0 -69
- package/src/common/DiscountCart.ts +0 -161
- package/src/common/DiscountInterface.ts +0 -26
- package/src/common/OrSelector.ts +0 -40
- package/src/common/PostCartAmountQualifier.ts +0 -21
- package/src/common/ProductHandleSelector.ts +0 -32
- package/src/common/ProductIdSelector.ts +0 -34
- package/src/common/ProductTagSelector.ts +0 -63
- package/src/common/ProductTypeSelector.ts +0 -40
- package/src/common/Qualifier.ts +0 -67
- package/src/common/SaleItemSelector.ts +0 -36
- package/src/common/Selector.ts +0 -66
- package/src/common/SubscriptionItemSelector.ts +0 -23
- package/src/lineItem/BuyXGetY.ts +0 -131
- package/src/lineItem/ConditionalDiscount.ts +0 -102
- package/src/lineItem/FixedItemDiscount.ts +0 -51
- package/src/lineItem/PercentageDiscount.ts +0 -44
- package/src/lineItem/api.ts +0 -2103
- package/src/shipping/FixedDiscount.ts +0 -37
- package/src/shipping/RateNameSelector.ts +0 -54
- package/src/shipping/ShippingDiscount.ts +0 -75
- package/src/shipping/api.ts +0 -2014
- package/tests/AndSelector.test.ts +0 -27
- package/tests/CartQuantityQualifier.test.ts +0 -381
- package/tests/CountryCodeQualifier.test.ts +0 -55
- package/tests/CustomerSubscriberQualifier.test.ts +0 -101
- package/tests/CustomerTagQualifier.test.ts +0 -71
- package/tests/DiscountCart.test.ts +0 -115
- package/tests/OrSelector.test.ts +0 -27
- package/tests/ProductIdSelector.test.ts +0 -83
- package/tests/ProductTagSelector.test.ts +0 -75
- package/tests/Qualifier.test.ts +0 -193
- package/tests/RateNameSelector.test.ts +0 -107
- package/tests/SaleItemSelector.test.ts +0 -113
- package/tests/Selector.test.ts +0 -83
- package/tests/ShippingDiscount.test.ts +0 -147
- 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;
|