@segment/analytics-browser-actions-cj 1.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 (89) hide show
  1. package/dist/cjs/generated-types.d.ts +4 -0
  2. package/dist/cjs/generated-types.js +3 -0
  3. package/dist/cjs/generated-types.js.map +1 -0
  4. package/dist/cjs/index.d.ts +11 -0
  5. package/dist/cjs/index.js +38 -0
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/order/generated-types.d.ts +141 -0
  8. package/dist/cjs/order/generated-types.js +3 -0
  9. package/dist/cjs/order/generated-types.js.map +1 -0
  10. package/dist/cjs/order/hashing-utils.d.ts +15 -0
  11. package/dist/cjs/order/hashing-utils.js +96 -0
  12. package/dist/cjs/order/hashing-utils.js.map +1 -0
  13. package/dist/cjs/order/index.d.ts +6 -0
  14. package/dist/cjs/order/index.js +58 -0
  15. package/dist/cjs/order/index.js.map +1 -0
  16. package/dist/cjs/order/order-fields.d.ts +6 -0
  17. package/dist/cjs/order/order-fields.js +1091 -0
  18. package/dist/cjs/order/order-fields.js.map +1 -0
  19. package/dist/cjs/order/utils.d.ts +3 -0
  20. package/dist/cjs/order/utils.js +19 -0
  21. package/dist/cjs/order/utils.js.map +1 -0
  22. package/dist/cjs/sitePage/generated-types.d.ts +13 -0
  23. package/dist/cjs/sitePage/generated-types.js +3 -0
  24. package/dist/cjs/sitePage/generated-types.js.map +1 -0
  25. package/dist/cjs/sitePage/index.d.ts +6 -0
  26. package/dist/cjs/sitePage/index.js +125 -0
  27. package/dist/cjs/sitePage/index.js.map +1 -0
  28. package/dist/cjs/sitePage/utils.d.ts +2 -0
  29. package/dist/cjs/sitePage/utils.js +7 -0
  30. package/dist/cjs/sitePage/utils.js.map +1 -0
  31. package/dist/cjs/types.d.ts +34 -0
  32. package/dist/cjs/types.js +3 -0
  33. package/dist/cjs/types.js.map +1 -0
  34. package/dist/cjs/utils.d.ts +1 -0
  35. package/dist/cjs/utils.js +23 -0
  36. package/dist/cjs/utils.js.map +1 -0
  37. package/dist/esm/generated-types.d.ts +4 -0
  38. package/dist/esm/generated-types.js +2 -0
  39. package/dist/esm/generated-types.js.map +1 -0
  40. package/dist/esm/index.d.ts +11 -0
  41. package/dist/esm/index.js +34 -0
  42. package/dist/esm/index.js.map +1 -0
  43. package/dist/esm/order/generated-types.d.ts +141 -0
  44. package/dist/esm/order/generated-types.js +2 -0
  45. package/dist/esm/order/generated-types.js.map +1 -0
  46. package/dist/esm/order/hashing-utils.d.ts +15 -0
  47. package/dist/esm/order/hashing-utils.js +88 -0
  48. package/dist/esm/order/hashing-utils.js.map +1 -0
  49. package/dist/esm/order/index.d.ts +6 -0
  50. package/dist/esm/order/index.js +56 -0
  51. package/dist/esm/order/index.js.map +1 -0
  52. package/dist/esm/order/order-fields.d.ts +6 -0
  53. package/dist/esm/order/order-fields.js +1088 -0
  54. package/dist/esm/order/order-fields.js.map +1 -0
  55. package/dist/esm/order/utils.d.ts +3 -0
  56. package/dist/esm/order/utils.js +15 -0
  57. package/dist/esm/order/utils.js.map +1 -0
  58. package/dist/esm/sitePage/generated-types.d.ts +13 -0
  59. package/dist/esm/sitePage/generated-types.js +2 -0
  60. package/dist/esm/sitePage/generated-types.js.map +1 -0
  61. package/dist/esm/sitePage/index.d.ts +6 -0
  62. package/dist/esm/sitePage/index.js +123 -0
  63. package/dist/esm/sitePage/index.js.map +1 -0
  64. package/dist/esm/sitePage/utils.d.ts +2 -0
  65. package/dist/esm/sitePage/utils.js +4 -0
  66. package/dist/esm/sitePage/utils.js.map +1 -0
  67. package/dist/esm/types.d.ts +34 -0
  68. package/dist/esm/types.js +2 -0
  69. package/dist/esm/types.js.map +1 -0
  70. package/dist/esm/utils.d.ts +1 -0
  71. package/dist/esm/utils.js +20 -0
  72. package/dist/esm/utils.js.map +1 -0
  73. package/dist/tsconfig.tsbuildinfo +1 -0
  74. package/package.json +25 -0
  75. package/src/generated-types.ts +12 -0
  76. package/src/index.ts +46 -0
  77. package/src/order/__tests__/index.test.ts +985 -0
  78. package/src/order/generated-types.ts +545 -0
  79. package/src/order/hashing-utils.ts +141 -0
  80. package/src/order/index.ts +90 -0
  81. package/src/order/order-fields.ts +1117 -0
  82. package/src/order/utils.ts +19 -0
  83. package/src/sitePage/__tests__/index.test.ts +124 -0
  84. package/src/sitePage/generated-types.ts +45 -0
  85. package/src/sitePage/index.ts +128 -0
  86. package/src/sitePage/utils.ts +5 -0
  87. package/src/types.ts +38 -0
  88. package/src/utils.ts +21 -0
  89. package/tsconfig.json +9 -0
@@ -0,0 +1,4 @@
1
+ export interface Settings {
2
+ tagId: string;
3
+ actionTrackerId?: string;
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=generated-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../src/generated-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import type { BrowserDestinationDefinition } from '@segment/browser-destination-runtime/types';
2
+ import type { Settings } from './generated-types';
3
+ import { CJ } from './types';
4
+ declare global {
5
+ interface Window {
6
+ cj: CJ;
7
+ }
8
+ }
9
+ export declare const destination: BrowserDestinationDefinition<Settings, CJ>;
10
+ declare const _default: import("@segment/browser-destination-runtime/types").PluginFactory;
11
+ export default _default;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.destination = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const shim_1 = require("@segment/browser-destination-runtime/shim");
6
+ const sitePage_1 = tslib_1.__importDefault(require("./sitePage"));
7
+ const order_1 = tslib_1.__importDefault(require("./order"));
8
+ exports.destination = {
9
+ name: 'Commission Junction (Actions)',
10
+ slug: 'actions-cj',
11
+ mode: 'device',
12
+ description: 'The Commission Junction Browser Destination allows you to install the CJ Javascript pixel onto your site and pass mapped Segment events and metadata to CJ.',
13
+ settings: {
14
+ tagId: {
15
+ label: 'Tag ID',
16
+ description: 'Your Commission Junction Tag ID.',
17
+ type: 'string',
18
+ required: true
19
+ },
20
+ actionTrackerId: {
21
+ label: 'Action Tracker ID',
22
+ description: 'Used with the "Order" Action only. Can be overridden at the Action level. This is a static value provided by CJ. Each account may have multiple actions and each will be referenced by a different actionTrackerId value.',
23
+ type: 'string'
24
+ }
25
+ },
26
+ initialize: async () => {
27
+ if (!window.cj) {
28
+ window.cj = {};
29
+ }
30
+ return window.cj;
31
+ },
32
+ actions: {
33
+ sitePage: sitePage_1.default,
34
+ order: order_1.default
35
+ }
36
+ };
37
+ exports.default = (0, shim_1.browserDestination)(exports.destination);
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AACA,oEAA8E;AAG9E,kEAAiC;AACjC,4DAA2B;AAQd,QAAA,WAAW,GAA+C;IACrE,IAAI,EAAE,+BAA+B;IACrC,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,QAAQ;IACd,WAAW,EACT,6JAA6J;IAC/J,QAAQ,EAAE;QACR,KAAK,EAAE;YACL,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,kCAAkC;YAC/C,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;SACf;QACD,eAAe,EAAE;YACf,KAAK,EAAE,mBAAmB;YAC1B,WAAW,EACT,2NAA2N;YAC7N,IAAI,EAAE,QAAQ;SACf;KACF;IACD,UAAU,EAAE,KAAK,IAAI,EAAE;QACrB,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,CAAC,EAAE,GAAG,EAAQ,CAAA;QACtB,CAAC;QACD,OAAO,MAAM,CAAC,EAAE,CAAA;IAClB,CAAC;IACD,OAAO,EAAE;QACP,QAAQ,EAAR,kBAAQ;QACR,KAAK,EAAL,eAAK;KACN;CACF,CAAA;AAED,kBAAe,IAAA,yBAAkB,EAAC,mBAAW,CAAC,CAAA"}
@@ -0,0 +1,141 @@
1
+ export interface Payload {
2
+ verticalType?: string;
3
+ userId?: string;
4
+ enterpriseId: number;
5
+ pageType: string;
6
+ emailHash?: string;
7
+ orderId: string;
8
+ actionTrackerId?: string;
9
+ currency: string;
10
+ amount: number;
11
+ discount?: number;
12
+ coupon?: string;
13
+ cjeventOrderCookieName: string;
14
+ items?: {
15
+ unitPrice: number;
16
+ itemId: string;
17
+ quantity: number;
18
+ discount?: number;
19
+ }[];
20
+ allVerticals?: {
21
+ ancillarySpend?: number;
22
+ brand?: string;
23
+ brandId?: string;
24
+ businessUnit?: string;
25
+ campaignId?: string;
26
+ campaignName?: string;
27
+ category?: string;
28
+ class?: string;
29
+ confirmationNumber?: number;
30
+ couponDiscount?: number;
31
+ couponType?: string;
32
+ customerCountry?: string;
33
+ customerSegment?: string;
34
+ customerStatus?: string;
35
+ customerType?: string;
36
+ delivery?: string;
37
+ description?: string;
38
+ duration?: number;
39
+ endDateTime?: string;
40
+ genre?: string;
41
+ itemId?: string;
42
+ itemName?: string;
43
+ itemType?: string;
44
+ lifestage?: string;
45
+ location?: string;
46
+ loyaltyEarned?: number;
47
+ loyaltyFirstTimeSignup?: string;
48
+ loyaltyLevel?: string;
49
+ loyaltyRedeemed?: number;
50
+ loyaltyStatus?: string;
51
+ margin?: string;
52
+ marketingChannel?: string;
53
+ noCancellation?: string;
54
+ orderSubtotal?: number;
55
+ paymentMethod?: string;
56
+ paymentModel?: string;
57
+ platformId?: string;
58
+ pointOfSale?: string;
59
+ preorder?: string;
60
+ prepaid?: string;
61
+ promotion?: string;
62
+ promotionAmount?: number;
63
+ promotionConditionThreshold?: number;
64
+ promotionConditionType?: string;
65
+ promotionEnds?: string;
66
+ promotionStarts?: string;
67
+ promotionType?: string;
68
+ quantity?: number;
69
+ rating?: string;
70
+ serviceType?: string;
71
+ startDateTime?: string;
72
+ subscriptionFee?: number;
73
+ subscriptionLength?: string;
74
+ taxAmount?: number;
75
+ taxType?: string;
76
+ upsell?: string;
77
+ };
78
+ travelVerticals?: {
79
+ bookingDate?: string;
80
+ bookingStatus?: string;
81
+ bookingValuePostTax?: number;
82
+ bookingValuePreTax?: number;
83
+ carOptions?: string;
84
+ class?: string;
85
+ cruiseType?: string;
86
+ destinationCity?: string;
87
+ destinationCountry?: string;
88
+ destinationState?: string;
89
+ domestic?: string;
90
+ dropoffIata?: string;
91
+ dropoffId?: string;
92
+ flightFareType?: string;
93
+ flightOptions?: string;
94
+ flightType?: string;
95
+ flyerMiles?: number;
96
+ guests?: number;
97
+ iata?: string;
98
+ itineraryId?: string;
99
+ minimumStayDuration?: number;
100
+ originCity?: string;
101
+ originCountry?: string;
102
+ originState?: string;
103
+ paidAtBookingPostTax?: number;
104
+ paidAtBookingPreTax?: number;
105
+ pickupIata?: string;
106
+ pickupId?: string;
107
+ port?: string;
108
+ roomType?: string;
109
+ rooms?: number;
110
+ shipName?: string;
111
+ travelType?: string;
112
+ };
113
+ financeVerticals?: {
114
+ annualFee?: number;
115
+ applicationStatus?: string;
116
+ apr?: number;
117
+ aprTransfer?: number;
118
+ aprTransferTime?: number;
119
+ cardCategory?: string;
120
+ cashAdvanceFee?: number;
121
+ contractLength?: number;
122
+ contractType?: string;
123
+ creditReport?: string;
124
+ creditLine?: number;
125
+ creditQuality?: string;
126
+ fundedAmount?: number;
127
+ fundedCurrency?: number;
128
+ introductoryApr?: number;
129
+ introductoryAprTime?: number;
130
+ minimumBalance?: number;
131
+ minimumDeposit?: number;
132
+ prequalify?: string;
133
+ transferFee?: number;
134
+ };
135
+ networkServicesVerticals?: {
136
+ annualFee?: number;
137
+ applicationStatus?: string;
138
+ contractLength?: number;
139
+ contractType?: string;
140
+ };
141
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=generated-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../src/order/generated-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ export type EncryptionMethod = 'sha1' | 'sha224' | 'sha256' | 'sha384' | 'sha512';
2
+ export declare const hashConfigs: {
3
+ [key in EncryptionMethod]: {
4
+ lengthHex: number;
5
+ lengthBase64: number;
6
+ };
7
+ };
8
+ export declare const DigestTypes: readonly ["hex", "base64"];
9
+ export type DigestType = typeof DigestTypes[number];
10
+ type CleaningFunction = (value: string) => string;
11
+ export declare function createHash(value: string, encryptionMethod?: EncryptionMethod, digest?: DigestType): Promise<string>;
12
+ export declare function processHashing(value: string, encryptionMethod: EncryptionMethod, digest: DigestType, cleaningFunction?: CleaningFunction): Promise<string>;
13
+ export declare function smartHash(value: string, normalizeFunction?: (value: string) => string): Promise<string>;
14
+ export declare function normalizeEmail(email: string): string;
15
+ export {};
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DigestTypes = exports.hashConfigs = void 0;
4
+ exports.createHash = createHash;
5
+ exports.processHashing = processHashing;
6
+ exports.smartHash = smartHash;
7
+ exports.normalizeEmail = normalizeEmail;
8
+ const tslib_1 = require("tslib");
9
+ const btoa_lite_1 = tslib_1.__importDefault(require("btoa-lite"));
10
+ exports.hashConfigs = {
11
+ sha1: { lengthHex: 40, lengthBase64: 28 },
12
+ sha224: { lengthHex: 56, lengthBase64: 40 },
13
+ sha256: { lengthHex: 64, lengthBase64: 44 },
14
+ sha384: { lengthHex: 96, lengthBase64: 64 },
15
+ sha512: { lengthHex: 128, lengthBase64: 88 }
16
+ };
17
+ exports.DigestTypes = ['hex', 'base64'];
18
+ class SmartHashing {
19
+ constructor(encryptionMethod = 'sha256', digest = 'hex') {
20
+ this.encryptionMethod = encryptionMethod;
21
+ this.digest = digest;
22
+ this.preHashed = false;
23
+ }
24
+ isAlreadyHashed(value) {
25
+ const config = exports.hashConfigs[this.encryptionMethod];
26
+ if (!config)
27
+ throw new Error(`Unsupported encryption method: ${this.encryptionMethod}`);
28
+ let regex;
29
+ switch (this.digest) {
30
+ case 'hex':
31
+ regex = new RegExp(`^[a-f0-9]{${config.lengthHex}}$`, 'i');
32
+ this.preHashed = value.length === config.lengthHex && regex.test(value);
33
+ break;
34
+ case 'base64':
35
+ regex = new RegExp(`^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$`);
36
+ this.preHashed = value.length === config.lengthBase64 && regex.test(value);
37
+ break;
38
+ default:
39
+ throw new Error(`Unsupported digest type: ${this.digest}`);
40
+ }
41
+ return this.preHashed;
42
+ }
43
+ async hash(value) {
44
+ if (value.trim() === '') {
45
+ throw new Error('Cannot hash an empty string');
46
+ }
47
+ if (this.preHashed) {
48
+ return value;
49
+ }
50
+ const hash = await createHash(value, this.encryptionMethod, this.digest);
51
+ return hash;
52
+ }
53
+ }
54
+ async function createHash(value, encryptionMethod = 'sha256', digest = 'hex') {
55
+ const algo = encryptionMethod.toUpperCase().replace(/^SHA(\d+)$/, 'SHA-$1');
56
+ const encoded = new TextEncoder().encode(value);
57
+ const hashBuffer = await window.crypto.subtle.digest(algo, encoded);
58
+ const hashArray = new Uint8Array(hashBuffer);
59
+ return digest === 'hex' ? toHex(hashArray) : toBase64(hashArray);
60
+ }
61
+ function toHex(bytes) {
62
+ return Array.from(bytes)
63
+ .map(b => b.toString(16).padStart(2, '0'))
64
+ .join('');
65
+ }
66
+ function toBase64(bytes) {
67
+ const binary = String.fromCharCode(...bytes);
68
+ return (0, btoa_lite_1.default)(binary);
69
+ }
70
+ async function processHashing(value, encryptionMethod, digest, cleaningFunction) {
71
+ if (value.trim() === '') {
72
+ return '';
73
+ }
74
+ const smartHashing = new SmartHashing(encryptionMethod, digest);
75
+ if (smartHashing.isAlreadyHashed(value)) {
76
+ return value;
77
+ }
78
+ if (cleaningFunction) {
79
+ value = cleaningFunction(value);
80
+ }
81
+ return smartHashing.hash(value);
82
+ }
83
+ async function smartHash(value, normalizeFunction) {
84
+ return await processHashing(value, 'sha256', 'hex', normalizeFunction);
85
+ }
86
+ function normalize(value, allowedChars, trim = true) {
87
+ let normalized = value.toLowerCase().replace(allowedChars, '');
88
+ if (trim)
89
+ normalized = normalized.trim();
90
+ return normalized;
91
+ }
92
+ const emailAllowed = /[^a-z0-9.@+-]/g;
93
+ function normalizeEmail(email) {
94
+ return normalize(email, emailAllowed);
95
+ }
96
+ //# sourceMappingURL=hashing-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashing-utils.js","sourceRoot":"","sources":["../../../src/order/hashing-utils.ts"],"names":[],"mappings":";;;AAsEA,gCAWC;AAuBD,wCAoBC;AAED,8BAEC;AAUD,wCAEC;;AAxID,kEAA4B;AAGf,QAAA,WAAW,GAEpB;IACF,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;IACzC,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;IAC3C,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;IAC3C,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;IAC3C,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE;CAC7C,CAAA;AAEY,QAAA,WAAW,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAU,CAAA;AAKrD,MAAM,YAAY;IAQhB,YAAmB,mBAAqC,QAAQ,EAAS,SAAqB,KAAK;QAAhF,qBAAgB,GAAhB,gBAAgB,CAA6B;QAAS,WAAM,GAAN,MAAM,CAAoB;QACjG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IACxB,CAAC;IAED,eAAe,CAAC,KAAa;QAC3B,MAAM,MAAM,GAAG,mBAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACjD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA;QAEvF,IAAI,KAAa,CAAA;QACjB,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,KAAK;gBACR,KAAK,GAAG,IAAI,MAAM,CAAC,aAAa,MAAM,CAAC,SAAS,IAAI,EAAE,GAAG,CAAC,CAAA;gBAC1D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACvE,MAAK;YACP,KAAK,QAAQ;gBACX,KAAK,GAAG,IAAI,MAAM,CAAC,8DAA8D,CAAC,CAAA;gBAClF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC1E,MAAK;YACP;gBACE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAC9D,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAa;QACtB,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAChD,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAExE,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAEM,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,mBAAqC,QAAQ,EAC7C,SAAqB,KAAK;IAE1B,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;IAC3E,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACnE,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAA;IAE5C,OAAO,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;AAClE,CAAC;AAED,SAAS,KAAK,CAAC,KAAiB;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SACrB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACzC,IAAI,CAAC,EAAE,CAAC,CAAA;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,KAAiB;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAA;IAC5C,OAAO,IAAA,mBAAI,EAAC,MAAM,CAAC,CAAA;AACrB,CAAC;AAYM,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,gBAAkC,EAClC,MAAkB,EAClB,gBAAmC;IAEnC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;IAE/D,IAAI,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,gBAAgB,EAAE,CAAC;QACrB,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;IACjC,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACjC,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,KAAa,EAAE,iBAA6C;IAC1F,OAAO,MAAM,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAA;AACxE,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,YAAoB,EAAE,IAAI,GAAG,IAAI;IACjE,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;IAC9D,IAAI,IAAI;QAAE,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAA;IACxC,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,MAAM,YAAY,GAAG,gBAAgB,CAAA;AAErC,SAAgB,cAAc,CAAC,KAAa;IAC1C,OAAO,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;AACvC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { BrowserActionDefinition } from '@segment/browser-destination-runtime/types';
2
+ import type { Settings } from '../generated-types';
3
+ import type { Payload } from './generated-types';
4
+ import type { CJ } from '../types';
5
+ declare const action: BrowserActionDefinition<Settings, CJ, Payload>;
6
+ export default action;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("../utils");
4
+ const utils_2 = require("./utils");
5
+ const hashing_utils_1 = require("./hashing-utils");
6
+ const order_fields_1 = require("./order-fields");
7
+ const action = {
8
+ title: 'Order',
9
+ description: 'Send order data to CJ.',
10
+ defaultSubscription: 'event = "Order Completed"',
11
+ platform: 'web',
12
+ fields: order_fields_1.orderFields,
13
+ perform: async (cj, { payload, settings }) => {
14
+ const { verticalType, userId, enterpriseId, pageType, emailHash, orderId, actionTrackerId, currency, amount, discount, coupon, cjeventOrderCookieName, items, allVerticals, travelVerticals, financeVerticals, networkServicesVerticals } = payload;
15
+ const cjeventOrder = (0, utils_2.getCookieValue)(cjeventOrderCookieName);
16
+ if (!cjeventOrder) {
17
+ console.warn(`Segment CJ Actions Destination: Cookie ${cjeventOrderCookieName} not found. Please ensure the cookie is set before calling this action.`);
18
+ }
19
+ const actionTrackerIdFromSettings = settings.actionTrackerId;
20
+ if (!actionTrackerId && !actionTrackerIdFromSettings) {
21
+ console.warn('Segment CJ Actions Destination: Missing actionTrackerId. This can be set as a Setting or as an Action field value.');
22
+ }
23
+ const order = {
24
+ trackingSource: 'Segment',
25
+ userId,
26
+ enterpriseId,
27
+ pageType,
28
+ emailHash: emailHash ? await (0, hashing_utils_1.smartHash)(emailHash, hashing_utils_1.normalizeEmail) : undefined,
29
+ orderId,
30
+ actionTrackerId: actionTrackerId ?? actionTrackerIdFromSettings ?? '',
31
+ currency,
32
+ amount,
33
+ discount,
34
+ coupon,
35
+ cjeventOrder: cjeventOrder ?? '',
36
+ items,
37
+ ...allVerticals,
38
+ ...verticalType === 'travel' ? travelVerticals : {},
39
+ ...verticalType === 'finance' ? financeVerticals : {},
40
+ ...verticalType === 'network' ? networkServicesVerticals : {}
41
+ };
42
+ if ('customerCountry' in order && typeof order.customerCountry === 'string') {
43
+ order.customerCountry = order.customerCountry.split('-').pop() || undefined;
44
+ }
45
+ (0, utils_2.setOrderJSON)(cj, order);
46
+ const { tagId } = settings;
47
+ (0, utils_1.send)(tagId)
48
+ .then(() => {
49
+ cj.sitePage = undefined;
50
+ cj.order = undefined;
51
+ })
52
+ .catch((err) => {
53
+ console.warn(err);
54
+ });
55
+ }
56
+ };
57
+ exports.default = action;
58
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/order/index.ts"],"names":[],"mappings":";;AAIA,oCAA+B;AAC/B,mCAAsD;AACtD,mDAA2D;AAC3D,iDAA4C;AAE5C,MAAM,MAAM,GAAmD;IAC7D,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,wBAAwB;IACrC,mBAAmB,EAAE,2BAA2B;IAChD,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE,0BAAW;IACnB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3C,MAAM,EACJ,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,OAAO,EACP,eAAe,EACf,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,MAAM,EACN,sBAAsB,EACtB,KAAK,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACzB,GAAG,OAAO,CAAA;QAEX,MAAM,YAAY,GAAkB,IAAA,sBAAc,EAAC,sBAAsB,CAAC,CAAA;QAE1E,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CACV,0CAA0C,sBAAsB,yEAAyE,CAC1I,CAAA;QACH,CAAC;QAED,MAAM,2BAA2B,GAAG,QAAQ,CAAC,eAAe,CAAA;QAE5D,IAAI,CAAC,eAAe,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACrD,OAAO,CAAC,IAAI,CACV,oHAAoH,CACrH,CAAA;QACH,CAAC;QAED,MAAM,KAAK,GAAgC;YACzC,cAAc,EAAE,SAAS;YACzB,MAAM;YACN,YAAY;YACZ,QAAQ;YACR,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,IAAA,yBAAS,EAAC,SAAS,EAAE,8BAAc,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7E,OAAO;YACP,eAAe,EAAE,eAAe,IAAI,2BAA2B,IAAI,EAAE;YACrE,QAAQ;YACR,MAAM;YACN,QAAQ;YACR,MAAM;YACN,YAAY,EAAE,YAAY,IAAI,EAAE;YAChC,KAAK;YACL,GAAG,YAAY;YACf,GAAG,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;YACnD,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAA,CAAC,CAAC,EAAE;YACpD,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;SAC9D,CAAA;QAED,IAAI,iBAAiB,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YAC5E,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAA;QAC7E,CAAC;QAED,IAAA,oBAAY,EAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QACvB,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAA;QAC1B,IAAA,YAAI,EAAC,KAAK,CAAC;aACR,IAAI,CAAC,GAAG,EAAE;YACT,EAAE,CAAC,QAAQ,GAAG,SAAS,CAAA;YACvB,EAAE,CAAC,KAAK,GAAG,SAAS,CAAA;QACtB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;IACN,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { InputField } from '@segment/actions-core';
2
+ export declare const allVerticals: InputField;
3
+ export declare const travelVerticals: InputField;
4
+ export declare const financeVerticals: InputField;
5
+ export declare const networkServicesVerticals: InputField;
6
+ export declare const orderFields: Record<string, InputField>;