@rokt/dcui-orchestrator 1.2.1-rc.2 → 1.2.1-rc.21
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/dist/index.cjs +37 -37
- package/dist/index.js +42 -42
- package/dist/libraries/dcui-components/src/components/data-mapper/data-mapper.d.ts +4 -0
- package/dist/libraries/dcui-components/src/contexts/data-mapper-context.d.ts +4 -0
- package/dist/libraries/dcui-components/src/contexts/index.d.ts +1 -0
- package/dist/libraries/dcui-components/src/contexts/lead-capture-offer-context.d.ts +5 -0
- package/dist/libraries/dcui-components/src/failure-codes.d.ts +1 -0
- package/dist/libraries/domain/src/behaviors/offer-engagement.d.ts +11 -0
- package/dist/libraries/domain/src/behaviors/send-partner.d.ts +14 -2
- package/dist/libraries/domain/src/behaviors/trigger-action.d.ts +3 -3
- package/dist/libraries/domain/src/models/child-layout-response.d.ts +4 -0
- package/dist/libraries/domain/src/models/index.d.ts +1 -0
- package/dist/libraries/domain/src/models/layout/layout-offer.d.ts +2 -0
- package/dist/libraries/domain/src/models/partner-event.d.ts +1 -1
- package/dist/libraries/domain/src/models/plugin/plugin-offer.d.ts +2 -0
- package/dist/libraries/layout-renderer-utils/src/actions/attributes.d.ts +7 -0
- package/dist/libraries/layout-renderer-utils/src/actions/index.d.ts +4 -1
- package/dist/libraries/layout-renderer-utils/src/models/state/attributes.d.ts +2 -0
- package/dist/libraries/layout-renderer-utils/src/models/state/index.d.ts +3 -0
- package/dist/libraries/layout-renderer-utils/src/reducers/attributes/index.d.ts +1 -0
- package/dist/libraries/layout-renderer-utils/src/reducers/attributes/reducer.d.ts +4 -0
- package/dist/libraries/layout-renderer-utils/src/reducers/index.d.ts +3 -0
- package/dist/libraries/layout-renderer-utils/src/sagas/plugin/channels.d.ts +3 -3
- package/dist/libraries/layout-renderer-utils/src/sagas/plugin/display.d.ts +3 -0
- package/dist/libraries/layout-renderer-utils/src/sagas/plugin/sagas.d.ts +5 -2
- package/dist/libraries/module-utils/src/sagas/child-layouts/sagas.d.ts +2 -0
- package/dist/libraries/orchestrator/src/actions/index.d.ts +1 -0
- package/dist/libraries/orchestrator/src/reducers/index.d.ts +1 -0
- package/dist/libraries/plugin-utils/src/plugin-service/attributes.d.ts +7 -0
- package/dist/libraries/plugin-utils/src/plugin-service/index.d.ts +3 -1
- package/dist/modules/instant-purchase/src/actions/catalog-selection.d.ts +8 -1
- package/dist/modules/instant-purchase/src/actions/instant-purchase.d.ts +1 -0
- package/dist/modules/instant-purchase/src/components/catalog-selectors-stacked/catalog-selectors-stacked.d.ts +30 -0
- package/dist/modules/instant-purchase/src/models/state/instant-purchase.d.ts +1 -0
- package/dist/modules/instant-purchase/src/reducers/catalog-selection/reducer.d.ts +2 -0
- package/dist/modules/instant-purchase/src/reducers/index.d.ts +3 -0
- package/dist/modules/instant-purchase/src/sagas/tax-and-shipping/sagas.d.ts +5 -30
- package/dist/modules/instant-purchase/src/selectors/tax-and-shipping/selectors.d.ts +3 -0
- package/dist/modules/instant-purchase/src/utils/parse-non-negative-monetary-amount.d.ts +1 -0
- package/dist/modules/instant-purchase/src/utils/requires-tax-and-shipping-initialization.d.ts +2 -0
- package/dist/modules/standard-marketing/src/sagas/offer-engagement/sagas.d.ts +2 -1
- package/node_modules/@rokt/dcui-layout-schema/dist/schema.d.ts +490 -18
- package/node_modules/@rokt/dcui-layout-schema/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@rokt/dcui-layout-schema/package.json +1 -1
- package/node_modules/@rokt/dcui-layout-schema/v1.21/index.d.ts +7105 -0
- package/node_modules/@rokt/dcui-layout-schema/v1.21/index.js +4 -0
- package/node_modules/@rokt/dcui-layout-schema/v1.22/index.d.ts +7121 -0
- package/node_modules/@rokt/dcui-layout-schema/v1.22/index.js +4 -0
- package/node_modules/@rokt/dcui-layout-schema/v1.23/index.d.ts +7126 -0
- package/node_modules/@rokt/dcui-layout-schema/v1.23/index.js +4 -0
- package/node_modules/@rokt/dcui-layout-schema/v1.24/index.d.ts +7492 -0
- package/node_modules/@rokt/dcui-layout-schema/v1.24/index.js +4 -0
- package/node_modules/@rokt/dcui-layout-schema/v1.25/index.d.ts +7510 -0
- package/node_modules/@rokt/dcui-layout-schema/v1.25/index.js +4 -0
- package/node_modules/@rokt/dcui-layout-schema/v1.26/index.d.ts +7516 -0
- package/node_modules/@rokt/dcui-layout-schema/v1.26/index.js +4 -0
- package/package.json +2 -2
|
@@ -5,9 +5,13 @@ export type DataObject = {
|
|
|
5
5
|
export type StateOnlyObject = {
|
|
6
6
|
state: object;
|
|
7
7
|
};
|
|
8
|
+
export type AttributeOnlyObject = {
|
|
9
|
+
attribute: object;
|
|
10
|
+
};
|
|
8
11
|
export type ExtendableDataMapper = ReturnType<typeof createDataMapper>;
|
|
9
12
|
export declare function createDataMapper(data: object, namespace?: string): {
|
|
10
13
|
(template: string): string;
|
|
11
14
|
(stateObj: StateOnlyObject, namespace?: string): /*elided*/ any;
|
|
15
|
+
(attributeObj: AttributeOnlyObject, namespace?: string): /*elided*/ any;
|
|
12
16
|
(dataObj: DataObject, namespace: string): /*elided*/ any;
|
|
13
17
|
};
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
export declare const DataMapperContext: import("react").Context<{
|
|
2
2
|
(template: string): string;
|
|
3
3
|
(stateObj: import("..").StateOnlyObject, namespace?: string): /*elided*/ any;
|
|
4
|
+
(attributeObj: import("..").AttributeOnlyObject, namespace?: string): /*elided*/ any;
|
|
4
5
|
(dataObj: import("..").DataObject, namespace: string): /*elided*/ any;
|
|
5
6
|
}>;
|
|
6
7
|
export declare const DataMapperConsumer: import("react").Consumer<{
|
|
7
8
|
(template: string): string;
|
|
8
9
|
(stateObj: import("..").StateOnlyObject, namespace?: string): /*elided*/ any;
|
|
10
|
+
(attributeObj: import("..").AttributeOnlyObject, namespace?: string): /*elided*/ any;
|
|
9
11
|
(dataObj: import("..").DataObject, namespace: string): /*elided*/ any;
|
|
10
12
|
}>;
|
|
11
13
|
export declare const DataMapperProvider: import("react").Provider<{
|
|
12
14
|
(template: string): string;
|
|
13
15
|
(stateObj: import("..").StateOnlyObject, namespace?: string): /*elided*/ any;
|
|
16
|
+
(attributeObj: import("..").AttributeOnlyObject, namespace?: string): /*elided*/ any;
|
|
14
17
|
(dataObj: import("..").DataObject, namespace: string): /*elided*/ any;
|
|
15
18
|
}>;
|
|
16
19
|
export declare const useDataMapper: () => {
|
|
17
20
|
(template: string): string;
|
|
18
21
|
(stateObj: import("..").StateOnlyObject, namespace?: string): /*elided*/ any;
|
|
22
|
+
(attributeObj: import("..").AttributeOnlyObject, namespace?: string): /*elided*/ any;
|
|
19
23
|
(dataObj: import("..").DataObject, namespace: string): /*elided*/ any;
|
|
20
24
|
};
|
|
@@ -3,6 +3,7 @@ export * from './global-state-context';
|
|
|
3
3
|
export * from './node-mapper-context';
|
|
4
4
|
export * from './root-element-context';
|
|
5
5
|
export * from './offer-data-context';
|
|
6
|
+
export * from './lead-capture-offer-context';
|
|
6
7
|
export * from './data-mapper-context';
|
|
7
8
|
export * from './scoped-style-mapper-context';
|
|
8
9
|
export * from './layout-schema-type-context';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { PluginOffer } from '../../../domain/src/models';
|
|
2
|
+
/** Resolves the offer whose referral response a lead form belongs to. */
|
|
3
|
+
export type LeadCaptureOfferResolver = (offerPositionIndex?: number) => PluginOffer | undefined;
|
|
4
|
+
export declare const LeadCaptureOfferContext: import("react").Context<LeadCaptureOfferResolver>;
|
|
5
|
+
export declare const useLeadCaptureOffer: () => LeadCaptureOfferResolver;
|
|
@@ -5,3 +5,4 @@ export declare const FAILED_TEMPLATING_DATA = "FAILED_TEMPLATING_DATA";
|
|
|
5
5
|
export declare const FAILED_TO_MAP_STATIC_DATA = "FAILED_TO_MAP_STATIC_DATA";
|
|
6
6
|
export declare const FAILED_SANITISING_HTML = "FAILED_SANITISING_HTML";
|
|
7
7
|
export declare const UNRESOLVED_FORM_VALIDATION_TARGET = "UNRESOLVED_FORM_VALIDATION_TARGET";
|
|
8
|
+
export declare const MISSING_LEAD_IDENTITY = "MISSING_LEAD_IDENTITY";
|
|
@@ -14,10 +14,12 @@ export interface OfferEngagementFulfillmentPayload {
|
|
|
14
14
|
fulfillment: Fulfillment;
|
|
15
15
|
accountID: string;
|
|
16
16
|
referralCreativeID?: string;
|
|
17
|
+
adID?: string;
|
|
17
18
|
}
|
|
18
19
|
export interface OfferEngagementUrlPayload extends PluginCreativeUrlResponseOption {
|
|
19
20
|
accountID: string;
|
|
20
21
|
referralCreativeID?: string;
|
|
22
|
+
adID?: string;
|
|
21
23
|
creativeInstanceGuid?: string;
|
|
22
24
|
}
|
|
23
25
|
export interface OfferEngagementProductItemResponsePayload extends OfferEngagementUrlPayload {
|
|
@@ -44,6 +46,15 @@ export declare function isRealTimeReferralOnly(response: OfferEngagementPayload
|
|
|
44
46
|
})): response is OfferEngagementPayload & {
|
|
45
47
|
accountID: string;
|
|
46
48
|
referralCreativeID: string;
|
|
49
|
+
adID?: string;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* `adID` is the key the Web SDK's realtime-conversion-promotion extension reads.
|
|
53
|
+
* Anything but a non-empty string yields no key, so a payload or event without
|
|
54
|
+
* an ad id keeps exactly the keys it had before.
|
|
55
|
+
*/
|
|
56
|
+
export declare function adIDField(adID: string | undefined): {
|
|
57
|
+
adID?: string;
|
|
47
58
|
};
|
|
48
59
|
export declare function makeCaptureOnlyOfferEngagementPayload(offerPayload?: Partial<OfferEngagementCaptureOnlyPayload>): OfferEngagementCaptureOnlyPayload;
|
|
49
60
|
export declare function makeUrlOfferEngagementPayload(offerPayload?: Partial<OfferEngagementUrlPayload>): OfferEngagementUrlPayload;
|
|
@@ -14,6 +14,7 @@ export type OutboundRealtimeOfferFulfillmentReferralEventPayload = {
|
|
|
14
14
|
rclid: string;
|
|
15
15
|
accountID: string;
|
|
16
16
|
referralCreativeID: string;
|
|
17
|
+
adID?: string;
|
|
17
18
|
referralOnly?: boolean;
|
|
18
19
|
rewardHandoff?: boolean;
|
|
19
20
|
};
|
|
@@ -24,6 +25,7 @@ export type OutboundRealtimeOfferFulfillmentConversionEventPayload = {
|
|
|
24
25
|
rclid: string;
|
|
25
26
|
accountID: string;
|
|
26
27
|
referralCreativeID: string;
|
|
28
|
+
adID?: string;
|
|
27
29
|
rewardHandoff?: boolean;
|
|
28
30
|
};
|
|
29
31
|
};
|
|
@@ -80,10 +82,20 @@ export type OutboundAbortDevicePayEventPayload = {
|
|
|
80
82
|
export type OutboundCompleteDevicePayEventPayload = {
|
|
81
83
|
name: 'COMPLETE_DEVICE_PAY_EVENT';
|
|
82
84
|
};
|
|
83
|
-
export type
|
|
85
|
+
export type OutboundLeadCaptureSubmittedEventPayload = {
|
|
86
|
+
name: 'LEAD_CAPTURE_SUBMITTED';
|
|
87
|
+
body: {
|
|
88
|
+
email?: string;
|
|
89
|
+
mobile_number?: string;
|
|
90
|
+
rclid?: string;
|
|
91
|
+
accountID?: string;
|
|
92
|
+
referralCreativeID?: string;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
export type OutboundPartnerEventPayload<EventType extends OutboundPartnerEvent> = EventType extends 'LEAD_CAPTURE_SUBMITTED' ? OutboundLeadCaptureSubmittedEventPayload : EventType extends 'REALTIME_OFFER_FULFILLMENT_REFERRAL' ? OutboundRealtimeOfferFulfillmentReferralEventPayload : EventType extends 'REALTIME_OFFER_FULFILLMENT_CONVERSION' ? OutboundRealtimeOfferFulfillmentConversionEventPayload : EventType extends 'REALTIME_OFFER_FULFILLMENT_SUCCESS' ? OutboundRealtimeOfferFulfillmentSuccessEventPayload : EventType extends 'V2_CART_ITEM_UPDATED' | 'UPDATE_CART_ITEM_MESSAGE' | 'CART_ITEM_INSTANT_PURCHASE' | 'UPSELL_ITEM_INSTANT_PURCHASE' | 'UPSELL_CREATIVE_SENT' | 'INITIATE_INSTANT_PURCHASE_EVENT' | 'INSTANT_PURCHASE_INITIATE_TAX_AND_SHIPPING_EVENT' | 'INITIATE_CART_ITEM_EVENT' | 'DELIVERY_DETAILS_SENT' | 'PREPARE_DEVICE_PAY_EVENT' | 'INITIATE_DEVICE_PAY_EVENT' | 'ABORT_DEVICE_PAY_EVENT' | 'COMPLETE_DEVICE_PAY_EVENT' ? never : {
|
|
84
96
|
name: EventType;
|
|
85
97
|
};
|
|
86
98
|
export type SendPartner<EventType extends OutboundPartnerEvent> = {
|
|
87
99
|
type: typeof SEND_PARTNER;
|
|
88
|
-
payload: OutboundPartnerEventPayload<EventType> | OutboundUpdateCartEventPayload | OutboundUpdateCartItemMessageEventPayload | OutboundInstantPurchaseEventPayload | OutboundUpsellItemInstantPurchaseEventPayload | OutboundUpsellCreativeSentEventPayload | OutboundInstantPurchaseWsdkEventPayload | OutboundInstantPurchaseTaxAndShippingEventPayload | OutboundCartItemEventPayload | OutboundDeliveryDetailsSentEventPayload | OutboundPrepareDevicePayEventPayload | OutboundDevicePayEventPayload | OutboundAbortDevicePayEventPayload | OutboundCompleteDevicePayEventPayload;
|
|
100
|
+
payload: OutboundPartnerEventPayload<EventType> | OutboundUpdateCartEventPayload | OutboundUpdateCartItemMessageEventPayload | OutboundInstantPurchaseEventPayload | OutboundUpsellItemInstantPurchaseEventPayload | OutboundUpsellCreativeSentEventPayload | OutboundInstantPurchaseWsdkEventPayload | OutboundInstantPurchaseTaxAndShippingEventPayload | OutboundCartItemEventPayload | OutboundDeliveryDetailsSentEventPayload | OutboundPrepareDevicePayEventPayload | OutboundDevicePayEventPayload | OutboundAbortDevicePayEventPayload | OutboundCompleteDevicePayEventPayload | OutboundLeadCaptureSubmittedEventPayload;
|
|
89
101
|
};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { LayoutAction, LayoutVariantAction, OuterLayoutAction } from '@rokt/dcui-layout-schema';
|
|
1
|
+
import { ChildLayoutAction, LayoutAction, LayoutVariantAction, OuterLayoutAction } from '@rokt/dcui-layout-schema';
|
|
2
2
|
import { PluginOffer } from '../models';
|
|
3
3
|
export declare const TRIGGER_ACTION = "GLOBAL/TRIGGER_ACTION";
|
|
4
4
|
/**
|
|
5
5
|
* Actions a trigger (e.g. a layout timer or button) can carry. A trigger may
|
|
6
|
-
* originate in any of the
|
|
6
|
+
* originate in any of the four layout contexts, so the channel accepts the
|
|
7
7
|
* union of all their action sets rather than assuming one stays a superset of
|
|
8
8
|
* the others. This keeps producers in every context assignable even if the
|
|
9
9
|
* sets diverge in future schema versions.
|
|
10
10
|
*/
|
|
11
|
-
export type TriggerableAction = LayoutAction | OuterLayoutAction | LayoutVariantAction;
|
|
11
|
+
export type TriggerableAction = LayoutAction | OuterLayoutAction | LayoutVariantAction | ChildLayoutAction;
|
|
12
12
|
export interface TriggerAction {
|
|
13
13
|
type: typeof TRIGGER_ACTION;
|
|
14
14
|
payload: {
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { PluginOffer } from './plugin/plugin-offer';
|
|
2
|
+
import { PluginCreativeUrlResponseOption } from './plugin/plugin-creative-response-option';
|
|
3
|
+
/** Child acceptance supports ordinary positive URLs, not deferred fulfillment. */
|
|
4
|
+
export declare function getChildPositiveResponse(offer: PluginOffer | null, responseKey: string): PluginCreativeUrlResponseOption | undefined;
|
|
@@ -4,6 +4,8 @@ import { LayoutTransactionData } from './layout-transaction-data';
|
|
|
4
4
|
export interface LayoutOffer {
|
|
5
5
|
campaignId: string;
|
|
6
6
|
accountId: string;
|
|
7
|
+
/** The rendered ad's id; absent until the transactions API sends it. */
|
|
8
|
+
adId?: string;
|
|
7
9
|
maxTotalItemsQtyInOffer: number;
|
|
8
10
|
creative: LayoutCreative;
|
|
9
11
|
metadata: Record<string, string>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type CatalogOutboundPartnerEvent = 'V2_CART_ITEM_UPDATED' | 'UPDATE_CART_ITEM_MESSAGE' | 'CART_ITEM_INSTANT_PURCHASE' | 'UPSELL_ITEM_INSTANT_PURCHASE' | 'DELIVERY_DETAILS_SENT';
|
|
2
|
-
export type OfferOutboundPartnerEvent = CatalogOutboundPartnerEvent | 'OFFER_ENGAGEMENT' | 'POSITIVE_ENGAGEMENT' | 'UPSELL_CREATIVE_SENT' | 'REALTIME_OFFER_FULFILLMENT_REFERRAL' | 'REALTIME_OFFER_FULFILLMENT_CONVERSION' | 'REALTIME_OFFER_FULFILLMENT_SUCCESS' | 'INITIATE_INSTANT_PURCHASE_EVENT' | 'INSTANT_PURCHASE_INITIATE_TAX_AND_SHIPPING_EVENT' | 'INITIATE_CART_ITEM_EVENT' | 'PREPARE_DEVICE_PAY_EVENT' | 'INITIATE_DEVICE_PAY_EVENT' | 'ABORT_DEVICE_PAY_EVENT' | 'COMPLETE_DEVICE_PAY_EVENT';
|
|
2
|
+
export type OfferOutboundPartnerEvent = CatalogOutboundPartnerEvent | 'OFFER_ENGAGEMENT' | 'POSITIVE_ENGAGEMENT' | 'UPSELL_CREATIVE_SENT' | 'REALTIME_OFFER_FULFILLMENT_REFERRAL' | 'REALTIME_OFFER_FULFILLMENT_CONVERSION' | 'REALTIME_OFFER_FULFILLMENT_SUCCESS' | 'INITIATE_INSTANT_PURCHASE_EVENT' | 'INSTANT_PURCHASE_INITIATE_TAX_AND_SHIPPING_EVENT' | 'INITIATE_CART_ITEM_EVENT' | 'PREPARE_DEVICE_PAY_EVENT' | 'INITIATE_DEVICE_PAY_EVENT' | 'ABORT_DEVICE_PAY_EVENT' | 'COMPLETE_DEVICE_PAY_EVENT' | 'LEAD_CAPTURE_SUBMITTED';
|
|
3
3
|
export type OutboundPartnerEvent = OfferOutboundPartnerEvent | 'PLACEMENT_CLOSED' | 'PLACEMENT_COMPLETED' | 'PLACEMENT_INTERACTIVE' | 'PLACEMENT_FAILURE';
|
|
4
4
|
export declare function isOutboundPartnerEvent(value: unknown): value is OutboundPartnerEvent;
|
|
5
5
|
export declare function isOfferOutboundPartnerEvent(value: unknown): value is OfferOutboundPartnerEvent;
|
|
@@ -5,6 +5,8 @@ import { TransactionData } from './plugin-transaction-data';
|
|
|
5
5
|
export interface PluginOffer {
|
|
6
6
|
campaignId: string;
|
|
7
7
|
accountId: string;
|
|
8
|
+
/** The rendered ad's id; absent until the transactions API sends it. */
|
|
9
|
+
adId?: string;
|
|
8
10
|
maxTotalItemsQtyInOffer: number;
|
|
9
11
|
creative: PluginCreative;
|
|
10
12
|
metadata: Record<string, string>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { OpenLink, PrepareSignal, RaiseMetric, RaiseSignal, SendPartner, SetDomainState } from '../../../domain/src/behaviors';
|
|
2
2
|
import { ActiveStateActions } from './active';
|
|
3
3
|
import { BreakpointActions, SetBreakpoints } from './breakpoint';
|
|
4
|
+
import { AttributesActions } from './attributes';
|
|
4
5
|
import { FontsActions } from './fonts';
|
|
5
6
|
import { LayoutActions } from './layout';
|
|
6
7
|
import { ClosePlugin } from './plugin';
|
|
@@ -25,16 +26,18 @@ export * from './error';
|
|
|
25
26
|
export * from './log';
|
|
26
27
|
export * from './overlay';
|
|
27
28
|
export * from './plugin';
|
|
29
|
+
export * from './attributes';
|
|
28
30
|
export * from './custom-states';
|
|
29
31
|
export * from './domain-states';
|
|
30
32
|
export * from './form-states';
|
|
31
|
-
export type CoreStateActions = LayoutActions | BreakpointActions | ActiveStateActions | FontsActions | SignalStateActions | SerializableCacheActions | SettingsActions | CustomStatesActions | SetDomainStateReducer | LayoutEventAction | FormStatesActions;
|
|
33
|
+
export type CoreStateActions = LayoutActions | BreakpointActions | ActiveStateActions | AttributesActions | FontsActions | SignalStateActions | SerializableCacheActions | SettingsActions | CustomStatesActions | SetDomainStateReducer | LayoutEventAction | FormStatesActions;
|
|
32
34
|
export declare const coreStateActionTypes: {
|
|
33
35
|
readonly LAYOUT_UPDATE: "LAYOUT/UPDATE";
|
|
34
36
|
readonly UPDATE_ACTIVE_BREAKPOINT: "BREAKPOINT/UPDATE_ACTIVE";
|
|
35
37
|
readonly INITIALISE_BREAKPOINT: "BREAKPOINT/INITIALISE";
|
|
36
38
|
readonly ACTIVE_ADD: "ACTIVE/ADD";
|
|
37
39
|
readonly ACTIVE_DELETE: "ACTIVE/DELETE";
|
|
40
|
+
readonly SET_ATTRIBUTES: "ATTRIBUTES/SET";
|
|
38
41
|
readonly SET_FONTS: "FONTS/SET";
|
|
39
42
|
readonly QUEUE_SIGNAL: "SIGNAL/QUEUE";
|
|
40
43
|
readonly SIGNAL_PROCESSED: "SIGNAL/PROCESSED";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ActiveState } from './active';
|
|
2
|
+
import { AttributesState } from './attributes';
|
|
2
3
|
import { BreakpointState } from './breakpoint';
|
|
3
4
|
import { FontsState } from './fonts';
|
|
4
5
|
import { LayoutState } from './layout';
|
|
@@ -9,6 +10,7 @@ import { CustomStatesIndexState } from './custom-states';
|
|
|
9
10
|
import { FiredEventsIndexState } from './fired-events';
|
|
10
11
|
import { FormStatesIndexState } from './form-states';
|
|
11
12
|
export * from './active';
|
|
13
|
+
export * from './attributes';
|
|
12
14
|
export * from './breakpoint';
|
|
13
15
|
export * from './fonts';
|
|
14
16
|
export * from './layout';
|
|
@@ -22,6 +24,7 @@ export type CoreAppState = {
|
|
|
22
24
|
layout: LayoutState;
|
|
23
25
|
breakpoint: BreakpointState;
|
|
24
26
|
active: ActiveState;
|
|
27
|
+
attributes: AttributesState;
|
|
25
28
|
fonts: FontsState;
|
|
26
29
|
signal: SignalState;
|
|
27
30
|
serializableCache: SerializableCacheState;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './reducer';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AnyAction } from '@reduxjs/toolkit';
|
|
2
|
+
import { AttributesState } from '../../models';
|
|
3
|
+
export declare function makeInitialAttributesState(): AttributesState;
|
|
4
|
+
export declare function attributesReducer(state: AttributesState | undefined, action: AnyAction): AttributesState;
|
|
@@ -2,6 +2,7 @@ import { CoreAppState } from '../models';
|
|
|
2
2
|
import { breakpointReducer } from './breakpoint';
|
|
3
3
|
import { layoutReducer } from './layout';
|
|
4
4
|
import { activeReducer } from './active';
|
|
5
|
+
import { attributesReducer } from './attributes';
|
|
5
6
|
import { fontsReducer } from './fonts';
|
|
6
7
|
import { signalReducer } from './signal';
|
|
7
8
|
import { serializableCacheReducer } from './serializable-cache';
|
|
@@ -12,6 +13,7 @@ import { formStatesReducer } from './form-states';
|
|
|
12
13
|
export * from './breakpoint';
|
|
13
14
|
export * from './layout';
|
|
14
15
|
export * from './active';
|
|
16
|
+
export * from './attributes';
|
|
15
17
|
export * from './fonts';
|
|
16
18
|
export * from './signal';
|
|
17
19
|
export * from './serializable-cache';
|
|
@@ -23,6 +25,7 @@ export declare const coreAppReducers: {
|
|
|
23
25
|
layout: typeof layoutReducer;
|
|
24
26
|
breakpoint: typeof breakpointReducer;
|
|
25
27
|
active: typeof activeReducer;
|
|
28
|
+
attributes: typeof attributesReducer;
|
|
26
29
|
fonts: typeof fontsReducer;
|
|
27
30
|
signal: typeof signalReducer;
|
|
28
31
|
serializableCache: typeof serializableCacheReducer;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventChannel } from 'redux-saga';
|
|
2
2
|
import { ThemeInterface } from '@rokt/plugin';
|
|
3
|
-
import { ConfigService } from '../../../../plugin-utils/src/index';
|
|
4
|
-
import { HandleConfigAction, SetFontsAction } from '../../actions';
|
|
5
|
-
export declare function makeWsdkChannel<LayoutModelType, PluginModelType>(configService: ConfigService<LayoutModelType>, themeService: ThemeInterface, transformRawConfig: (config: LayoutModelType) => PluginModelType | undefined): EventChannel<HandleConfigAction<PluginModelType> | SetFontsAction>;
|
|
3
|
+
import { AttributesService, ConfigService } from '../../../../plugin-utils/src/index';
|
|
4
|
+
import { HandleConfigAction, SetAttributesAction, SetFontsAction } from '../../actions';
|
|
5
|
+
export declare function makeWsdkChannel<LayoutModelType, PluginModelType>(configService: ConfigService<LayoutModelType>, themeService: ThemeInterface, transformRawConfig: (config: LayoutModelType) => PluginModelType | undefined, attributesService?: AttributesService): EventChannel<HandleConfigAction<PluginModelType> | SetFontsAction | SetAttributesAction>;
|
|
@@ -19,6 +19,7 @@ export declare function getDisplaySettings(preset?: LayoutDisplayPreset | null,
|
|
|
19
19
|
width: string;
|
|
20
20
|
};
|
|
21
21
|
css?: undefined;
|
|
22
|
+
lockHostScroll?: undefined;
|
|
22
23
|
} | {
|
|
23
24
|
autoresize: boolean;
|
|
24
25
|
css: {
|
|
@@ -34,9 +35,11 @@ export declare function getDisplaySettings(preset?: LayoutDisplayPreset | null,
|
|
|
34
35
|
replaceTargetElement?: undefined;
|
|
35
36
|
outerCss?: undefined;
|
|
36
37
|
innerCss?: undefined;
|
|
38
|
+
lockHostScroll?: undefined;
|
|
37
39
|
} | {
|
|
38
40
|
autoresize: boolean;
|
|
39
41
|
applyHighestZIndex: boolean;
|
|
42
|
+
lockHostScroll: boolean;
|
|
40
43
|
replaceTargetElement: string;
|
|
41
44
|
css: {
|
|
42
45
|
zIndex?: number | undefined;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { CallEffect, PutEffect, SelectEffect } from '@redux-saga/core/effects';
|
|
2
|
+
import { OutboundPartnerEvent } from '../../../../domain/src/models';
|
|
3
|
+
import { SendPartner } from '../../../../domain/src/behaviors';
|
|
2
4
|
import { FrameControls, LayoutDisplayPreset } from '@rokt/dcui-layout-schema';
|
|
3
5
|
import { RaceEffect } from 'redux-saga/effects';
|
|
4
|
-
import { ContextService, DisplayService, PluginService } from '../../../../plugin-utils/src/index';
|
|
6
|
+
import { ContextService, DisplayService, PartnerInteractionService, PluginService } from '../../../../plugin-utils/src/index';
|
|
5
7
|
import { HandleConfigAction, ReportError } from '../../actions';
|
|
6
8
|
import { EventChannel } from 'redux-saga';
|
|
7
9
|
export declare function closePlugin(contextService: ContextService): Generator<RaceEffect<CallEffect | Generator<SelectEffect | CallEffect, void, boolean>> | SelectEffect | CallEffect | Generator<SelectEffect | CallEffect, void, boolean> | PutEffect<ReportError>, void, boolean>;
|
|
8
|
-
export declare function
|
|
10
|
+
export declare function handlePartnerSend(partnerInteractionService: PartnerInteractionService, { payload }: SendPartner<OutboundPartnerEvent>): Generator<Promise<void>, void, void>;
|
|
11
|
+
export declare function listenToWsdkChannel<LayoutModelType, PluginModelType>(pluginService: PluginService<LayoutModelType>, transformRawConfig: (config: LayoutModelType) => PluginModelType | undefined): Generator<PutEffect<ReportError> | CallEffect<EventChannel<import("../../../../orchestrator/src/actions").SetAttributesAction | import("../../../../orchestrator/src/actions").SetFontsAction | HandleConfigAction<PluginModelType>>> | import("redux-saga/effects").ChannelTakeEffect<HandleConfigAction<PluginModelType>> | PutEffect<HandleConfigAction<PluginModelType>>, void, EventChannel<HandleConfigAction<PluginModelType>> & HandleConfigAction<PluginModelType>>;
|
|
9
12
|
export declare function wsdkSagas<LayoutModelType, PluginModelType>(pluginService: PluginService<LayoutModelType>, transformRawConfig: (config: LayoutModelType) => PluginModelType | undefined): Generator<import("redux-saga/effects").AllEffect<import("redux-saga/effects").ForkEffect<void>>, void, unknown>;
|
|
10
13
|
export declare function displayPlugin(displayService: DisplayService, preset?: LayoutDisplayPreset | null, controls?: FrameControls | null): Generator<CallEffect<void> | import("redux-saga/effects").ForkEffect<void> | PutEffect<{
|
|
11
14
|
type: "ACTIVE/ADD";
|
|
@@ -13,5 +13,7 @@ type BridgeChannelMessage = {
|
|
|
13
13
|
export declare function childLayoutBridge(gateway: GlobalGateway, logger: (log: Log) => void, childPlugin: ChildPluginInterface<BasicObject>, offerContext: {
|
|
14
14
|
offer: PluginOffer;
|
|
15
15
|
offerPositionIndex: number | undefined;
|
|
16
|
+
childInstanceGuid: string;
|
|
17
|
+
advanceOnDismiss?: boolean;
|
|
16
18
|
}): Generator<PutEffect | CallEffect | CancelledEffect | RaceEffect<ChannelTakeEffect<BridgeChannelMessage> | CallEffect>, void, never>;
|
|
17
19
|
export {};
|
|
@@ -36,6 +36,7 @@ export declare const stateActionTypes: {
|
|
|
36
36
|
readonly INITIALISE_BREAKPOINT: "BREAKPOINT/INITIALISE";
|
|
37
37
|
readonly ACTIVE_ADD: "ACTIVE/ADD";
|
|
38
38
|
readonly ACTIVE_DELETE: "ACTIVE/DELETE";
|
|
39
|
+
readonly SET_ATTRIBUTES: "ATTRIBUTES/SET";
|
|
39
40
|
readonly SET_FONTS: "FONTS/SET";
|
|
40
41
|
readonly QUEUE_SIGNAL: "SIGNAL/QUEUE";
|
|
41
42
|
readonly SIGNAL_PROCESSED: "SIGNAL/PROCESSED";
|
|
@@ -14,6 +14,7 @@ export declare const appReducers: {
|
|
|
14
14
|
layout: typeof import("../../../layout-renderer-utils/src/index").layoutReducer;
|
|
15
15
|
breakpoint: typeof import("../../../layout-renderer-utils/src/index").breakpointReducer;
|
|
16
16
|
active: typeof import("../../../layout-renderer-utils/src/index").activeReducer;
|
|
17
|
+
attributes: typeof import("../../../layout-renderer-utils/src/index").attributesReducer;
|
|
17
18
|
fonts: typeof import("../../../layout-renderer-utils/src/index").fontsReducer;
|
|
18
19
|
signal: typeof import("../../../layout-renderer-utils/src/index").signalReducer;
|
|
19
20
|
serializableCache: typeof import("../../../layout-renderer-utils/src/index").serializableCacheReducer;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PluginInterface } from '@rokt/plugin';
|
|
2
|
+
import { NormalizedAttributes } from '@rokt/plugin/interface/attributes';
|
|
3
|
+
import { Callback, Unsubscriber } from '@rokt/plugin/interface/subscriber';
|
|
4
|
+
export type AttributesService = {
|
|
5
|
+
subscribe(value?: Callback<[NormalizedAttributes]>, error?: Callback, complete?: Callback): Unsubscriber;
|
|
6
|
+
};
|
|
7
|
+
export declare const makeAttributesService: (pluginInterface: Pick<PluginInterface, "attributes">) => AttributesService;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ErrorInterface, PluginInterface, RDNInterface, ThemeInterface } from '@rokt/plugin';
|
|
2
|
+
import { AttributesService } from './attributes';
|
|
2
3
|
import { ContextService } from './context';
|
|
3
4
|
import { MetricsService } from './metrics';
|
|
4
5
|
import { DisplayService } from './display';
|
|
@@ -6,8 +7,9 @@ import { PartnerInteractionService } from './partner-interaction';
|
|
|
6
7
|
import { ParentInteractionService } from './parent-interaction';
|
|
7
8
|
import { ConfigService } from './config';
|
|
8
9
|
import { ChildPluginService } from './child-plugin';
|
|
9
|
-
export { ContextService, MetricsService, DisplayService, PartnerInteractionService, ParentInteractionService, ConfigService, ChildPluginService, };
|
|
10
|
+
export { AttributesService, ContextService, MetricsService, DisplayService, PartnerInteractionService, ParentInteractionService, ConfigService, ChildPluginService, };
|
|
10
11
|
export interface PluginService<T> {
|
|
12
|
+
attributesService: AttributesService;
|
|
11
13
|
contextService: ContextService;
|
|
12
14
|
configService: ConfigService<T>;
|
|
13
15
|
partnerInteractionService: PartnerInteractionService;
|
|
@@ -6,10 +6,17 @@ export declare const TRIGGER_SELECT_ITEM = "CATALOG/TRIGGER_SELECT_ITEM";
|
|
|
6
6
|
export type TriggerSelectItemAction = {
|
|
7
7
|
type: typeof TRIGGER_SELECT_ITEM;
|
|
8
8
|
payload: SetSelectedItemPayload;
|
|
9
|
+
preserveAttributeSelections?: boolean;
|
|
9
10
|
};
|
|
10
11
|
export declare const SET_SELECTED_ITEM = "CATALOG/SET_SELECTED_ITEM";
|
|
11
12
|
export type SetSelectedItemAction = {
|
|
12
13
|
type: typeof SET_SELECTED_ITEM;
|
|
13
14
|
payload: SetSelectedItemPayload;
|
|
15
|
+
preserveAttributeSelections?: boolean;
|
|
14
16
|
};
|
|
15
|
-
export
|
|
17
|
+
export declare const SET_CATALOG_ATTRIBUTE_SELECTIONS = "CATALOG/SET_ATTRIBUTE_SELECTIONS";
|
|
18
|
+
export type SetCatalogAttributeSelectionsAction = {
|
|
19
|
+
type: typeof SET_CATALOG_ATTRIBUTE_SELECTIONS;
|
|
20
|
+
payload: Record<string, string>;
|
|
21
|
+
};
|
|
22
|
+
export type CatalogSelectionActions = SetCatalogAttributeSelectionsAction | SetSelectedItemAction | TriggerSelectItemAction;
|
|
@@ -42,6 +42,7 @@ export interface PushTaxAndShippingPayload {
|
|
|
42
42
|
}
|
|
43
43
|
export interface MarkTaxAndShippingPendingPayload {
|
|
44
44
|
cacheKey: string;
|
|
45
|
+
requestId: string;
|
|
45
46
|
}
|
|
46
47
|
export declare const INITIATE_INSTANT_PURCHASE = "INSTANT_PURCHASE/INITIATE";
|
|
47
48
|
export type InitiateInstantPurchase = {
|
|
@@ -1,6 +1,36 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { CatalogSelectorsStackedModel, LayoutSchemaModel, WhenPredicate } from '@rokt/dcui-layout-schema';
|
|
3
3
|
export interface CatalogSelectorsStackedProps<Template extends LayoutSchemaModel> {
|
|
4
|
+
/**
|
|
5
|
+
* - `default`: the template rendered once per variant dimension.
|
|
6
|
+
* `CatalogDropdown` includes its own visible dimension label. Do not add a
|
|
7
|
+
* separate label node. Each render also exposes tokens for custom content:
|
|
8
|
+
* * `%^DATA.variantAttribute.attributeId^%`: the dimension id, e.g.
|
|
9
|
+
* `color`. It comes from the merchant's variant option key and is
|
|
10
|
+
* neither normalised nor guaranteed lowercase or single-word, so
|
|
11
|
+
* `shoe_size` reaches the shopper verbatim. Apply casing with the node's
|
|
12
|
+
* `text.textTransform` rather than transforming the value, so `When`
|
|
13
|
+
* comparisons stay stable.
|
|
14
|
+
* * `%^DATA.variantAttribute.hasMultipleOptions^%`: `"true"` or `"false"`.
|
|
15
|
+
* `CatalogDropdown` renders neither label nor control for a single option,
|
|
16
|
+
* and the whole template for that dimension is hidden, so it takes no
|
|
17
|
+
* space in the stack.
|
|
18
|
+
* Tokens from the enclosing scope stay resolvable alongside these.
|
|
19
|
+
*
|
|
20
|
+
* Keep the dropdown mounted. A `When` that encloses it would stop it mounting, and
|
|
21
|
+
* a dropdown that never mounts never registers its validator field key —
|
|
22
|
+
* a trigger that then resolves zero keys fails closed, blocking the CTA
|
|
23
|
+
* with nothing on screen to explain it.
|
|
24
|
+
*
|
|
25
|
+
* Bind custom text with `BasicText`. `RichText` sends the value through the
|
|
26
|
+
* HTML sanitiser, which throws on markup-shaped input; the node is then
|
|
27
|
+
* dropped by its error boundary.
|
|
28
|
+
* - `dropdown`: accepted by the layout schema, currently ignored — this
|
|
29
|
+
* component only ever renders `default`.
|
|
30
|
+
* - `styles`:
|
|
31
|
+
* * `elements`:
|
|
32
|
+
* - `own`
|
|
33
|
+
*/
|
|
4
34
|
schema: CatalogSelectorsStackedModel<Template, WhenPredicate>;
|
|
5
35
|
testId?: string;
|
|
6
36
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { AnyAction } from '@reduxjs/toolkit';
|
|
2
2
|
import { CatalogSelectionState } from '../../models/state/catalog-selection';
|
|
3
|
+
export type CatalogAttributeSelectionsState = Record<string, string> | null;
|
|
4
|
+
export declare const catalogAttributeSelectionsReducer: (state: CatalogAttributeSelectionsState | undefined, action: AnyAction) => CatalogAttributeSelectionsState;
|
|
3
5
|
export declare function makeInitialCatalogSelectionState(): CatalogSelectionState;
|
|
4
6
|
export declare const catalogReducer: (state: CatalogSelectionState | undefined, action: AnyAction) => CatalogSelectionState;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { GlobalActions } from '../../../../libraries/domain/src/behaviors';
|
|
2
2
|
import { ChildLayoutActions, childLayoutsReducer, ChildLayoutsState, StaticData, staticDataReducer, DynamicData, dynamicDataReducer } from '../../../../libraries/module-utils/src/index';
|
|
3
3
|
import { CatalogSelectionState, DevicePayAvailabilityState, FulfillmentDetailsState, OfferLifecycleEventState, TaxAndShippingState } from '../models';
|
|
4
|
+
import { CatalogAttributeSelectionsState } from './catalog-selection/reducer';
|
|
4
5
|
import { DevicePayRequestsState } from './device-pay-requests';
|
|
5
6
|
import { PurchaseIdState } from './instant-purchase';
|
|
6
7
|
import { PayPalTransactionDetailsState } from './paypal-transaction-details';
|
|
@@ -8,6 +9,7 @@ import { PayPalPurchaseContextState } from './paypal-purchase-context';
|
|
|
8
9
|
export type AppState = {
|
|
9
10
|
staticData: StaticData;
|
|
10
11
|
selectedItem: CatalogSelectionState;
|
|
12
|
+
catalogAttributeSelections: CatalogAttributeSelectionsState;
|
|
11
13
|
dynamicData: DynamicData;
|
|
12
14
|
childLayouts: ChildLayoutsState;
|
|
13
15
|
fulfillmentDetails: FulfillmentDetailsState;
|
|
@@ -23,6 +25,7 @@ export type StateActions = GlobalActions | ChildLayoutActions;
|
|
|
23
25
|
export declare const appReducers: {
|
|
24
26
|
staticData: typeof staticDataReducer;
|
|
25
27
|
selectedItem: (state: CatalogSelectionState | undefined, action: import("redux").AnyAction) => CatalogSelectionState;
|
|
28
|
+
catalogAttributeSelections: (state: CatalogAttributeSelectionsState | undefined, action: import("redux").AnyAction) => CatalogAttributeSelectionsState;
|
|
26
29
|
dynamicData: typeof dynamicDataReducer;
|
|
27
30
|
childLayouts: typeof childLayoutsReducer;
|
|
28
31
|
fulfillmentDetails: (state: FulfillmentDetailsState | undefined, action: import("redux").AnyAction) => FulfillmentDetailsState;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CallEffect, PutEffect, RaceEffect, SelectEffect, ForkEffect } from 'redux-saga/effects';
|
|
2
|
-
import { InstantPurchaseTaxAndShippingResponsePayload,
|
|
2
|
+
import { InstantPurchaseTaxAndShippingResponsePayload, TaxAndShippingState, TaxAndShippingErrors } from '../../models';
|
|
3
3
|
import { GlobalGateway } from '../../../../../libraries/module-connector/src/main';
|
|
4
4
|
import { Log } from '../../../../../libraries/domain/src/models';
|
|
5
5
|
import { AppState } from '../../reducers';
|
|
@@ -10,41 +10,16 @@ export declare function watchTaxAndShippingChannel(gateway: GlobalGateway, logge
|
|
|
10
10
|
offerEnd: unknown;
|
|
11
11
|
} | undefined>;
|
|
12
12
|
export declare function initiateTaxAndShippingRequest(_gateway: GlobalGateway, logger: (log: Log) => void, action: InitiateTaxAndShipping): Generator<SelectEffect | CallEffect | PutEffect | ForkEffect, void, AppState['fulfillmentDetails'] | boolean>;
|
|
13
|
-
export declare function processTaxAndShippingResponse(payload: InstantPurchaseTaxAndShippingResponsePayload): Generator<PutEffect
|
|
13
|
+
export declare function processTaxAndShippingResponse(payload: InstantPurchaseTaxAndShippingResponsePayload): Generator<SelectEffect | PutEffect, void, unknown>;
|
|
14
|
+
export declare function timeoutPendingCacheEntry(cacheKey: string, requestId: string, logger: (log: Log) => void): Generator<CallEffect<void> | SelectEffect | CallEffect<true> | PutEffect<{
|
|
14
15
|
type: string;
|
|
15
16
|
payload: {
|
|
16
17
|
cacheKey: string;
|
|
17
18
|
taxAndShippingEntry: {
|
|
18
19
|
isPending: false;
|
|
19
20
|
taxAndShippingData: {
|
|
20
|
-
error: TaxAndShippingErrors
|
|
21
|
+
error: TaxAndShippingErrors;
|
|
21
22
|
};
|
|
22
23
|
};
|
|
23
24
|
};
|
|
24
|
-
}
|
|
25
|
-
type: string;
|
|
26
|
-
payload: {
|
|
27
|
-
event: string;
|
|
28
|
-
completionReason: string;
|
|
29
|
-
};
|
|
30
|
-
}> | PutEffect<{
|
|
31
|
-
type: string;
|
|
32
|
-
payload: {
|
|
33
|
-
key: "offerComplete";
|
|
34
|
-
value: number;
|
|
35
|
-
};
|
|
36
|
-
}> | PutEffect<{
|
|
37
|
-
type: string;
|
|
38
|
-
payload: {
|
|
39
|
-
cacheKey: string;
|
|
40
|
-
taxAndShippingEntry: {
|
|
41
|
-
isPending: false;
|
|
42
|
-
taxAndShippingData: {
|
|
43
|
-
taxAndShippingPricing: TaxAndShippingPricing;
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
}> | PutEffect<{
|
|
48
|
-
type: string;
|
|
49
|
-
payload: string | null;
|
|
50
|
-
}>, void, unknown>;
|
|
25
|
+
}>, void, TaxAndShippingState>;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { PluginCatalogItem } from '../../../../../libraries/domain/src/models';
|
|
1
2
|
import { TaxAndShippingEntry } from '../../models';
|
|
2
3
|
import { AppState } from '../../reducers';
|
|
3
4
|
export declare function getActiveTaxAndShipping(state: AppState): TaxAndShippingEntry;
|
|
5
|
+
export declare function getTaxAndShippingForCatalogItem(state: AppState, catalogItem: Pick<PluginCatalogItem, 'catalogItemId'>): TaxAndShippingEntry | undefined;
|
|
6
|
+
export declare function isCatalogItemTaxAndShippingReady(state: AppState, catalogItem: Pick<PluginCatalogItem, 'catalogItemId' | 'copy'>): boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function parseNonNegativeMonetaryAmount(value: unknown): number | null;
|
|
@@ -12,10 +12,11 @@ export declare function getRealtimeFulfillmentSuccessCallback(gateway: GlobalGat
|
|
|
12
12
|
payload: {
|
|
13
13
|
name: string;
|
|
14
14
|
body: {
|
|
15
|
+
rewardHandoff: boolean | undefined;
|
|
16
|
+
adID?: string;
|
|
15
17
|
rclid: string | undefined;
|
|
16
18
|
accountID: string;
|
|
17
19
|
referralCreativeID: string | undefined;
|
|
18
|
-
rewardHandoff: boolean | undefined;
|
|
19
20
|
};
|
|
20
21
|
};
|
|
21
22
|
}>, void, unknown>) | undefined;
|