@4site/engrid-scripts 0.23.5 → 0.23.6
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/data-layer.d.ts +5 -1
- package/dist/data-layer.js +73 -17
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
package/dist/data-layer.d.ts
CHANGED
|
@@ -7,14 +7,18 @@ export declare class DataLayer {
|
|
|
7
7
|
private endOfGiftProcessStorageKey;
|
|
8
8
|
private excludedFields;
|
|
9
9
|
private hashedFields;
|
|
10
|
-
private
|
|
10
|
+
private retainedEmailField;
|
|
11
|
+
private retainedAddressFields;
|
|
12
|
+
private retainedPhoneFields;
|
|
11
13
|
constructor();
|
|
12
14
|
static getInstance(): DataLayer;
|
|
13
15
|
private transformJSON;
|
|
14
16
|
private onLoad;
|
|
17
|
+
private addRetainedHashesToDataLayer;
|
|
15
18
|
private onSubmit;
|
|
16
19
|
private attachEventListeners;
|
|
17
20
|
private handleFieldValueChange;
|
|
21
|
+
private geRetainedFieldsValue;
|
|
18
22
|
private hash;
|
|
19
23
|
private shaHash;
|
|
20
24
|
private getFieldLabel;
|
package/dist/data-layer.js
CHANGED
|
@@ -55,14 +55,16 @@ export class DataLayer {
|
|
|
55
55
|
"supporter.billingAddress2",
|
|
56
56
|
"supporter.billingAddress3",
|
|
57
57
|
];
|
|
58
|
-
this.
|
|
59
|
-
|
|
60
|
-
"supporter.emailAddress",
|
|
61
|
-
"supporter.phoneNumber2",
|
|
58
|
+
this.retainedEmailField = "supporter.emailAddress";
|
|
59
|
+
this.retainedAddressFields = [
|
|
62
60
|
"supporter.address1",
|
|
63
61
|
"supporter.address2",
|
|
64
62
|
"supporter.address3",
|
|
65
63
|
];
|
|
64
|
+
this.retainedPhoneFields = [
|
|
65
|
+
"supporter.phoneNumber2",
|
|
66
|
+
"supporter.phoneNumber",
|
|
67
|
+
];
|
|
66
68
|
if (ENGrid.getOption("RememberMe")) {
|
|
67
69
|
RememberMeEvents.getInstance().onLoad.subscribe((hasData) => {
|
|
68
70
|
this.logger.log("Remember me - onLoad", hasData);
|
|
@@ -120,13 +122,7 @@ export class DataLayer {
|
|
|
120
122
|
dataLayerData[`EN_URLPARAM_${key.toUpperCase()}`] =
|
|
121
123
|
this.transformJSON(value);
|
|
122
124
|
});
|
|
123
|
-
this.
|
|
124
|
-
const storedValue = localStorage.getItem(`EN_RETAINED_FIELD_${fieldName.toUpperCase()}`);
|
|
125
|
-
if (storedValue) {
|
|
126
|
-
dataLayerData[`EN_RETAINED_FIELD_${fieldName.toUpperCase()}`] =
|
|
127
|
-
storedValue;
|
|
128
|
-
}
|
|
129
|
-
});
|
|
125
|
+
this.addRetainedHashesToDataLayer(dataLayerData);
|
|
130
126
|
if (ENGrid.getPageType() === "DONATION") {
|
|
131
127
|
const recurrFreqEls = document.querySelectorAll('[name="transaction.recurrfreq"]');
|
|
132
128
|
const recurrValues = [...recurrFreqEls].map((el) => el.value);
|
|
@@ -139,6 +135,18 @@ export class DataLayer {
|
|
|
139
135
|
}
|
|
140
136
|
this.attachEventListeners();
|
|
141
137
|
}
|
|
138
|
+
addRetainedHashesToDataLayer(dataLayerData) {
|
|
139
|
+
if (typeof window === "undefined" || !window.localStorage) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
["EMAIL", "ADDRESS", "PHONE"].forEach((suffix) => {
|
|
143
|
+
const storageKey = `EN_HASH_${suffix}`;
|
|
144
|
+
const storedValue = window.localStorage.getItem(storageKey);
|
|
145
|
+
if (storedValue) {
|
|
146
|
+
dataLayerData[storageKey] = storedValue;
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
142
150
|
onSubmit() {
|
|
143
151
|
const optIn = document.querySelector(".en__field__item:not(.en__field--question) input[name^='supporter.questions'][type='checkbox']:checked");
|
|
144
152
|
if (optIn) {
|
|
@@ -206,15 +214,39 @@ export class DataLayer {
|
|
|
206
214
|
}
|
|
207
215
|
return;
|
|
208
216
|
}
|
|
209
|
-
if (
|
|
210
|
-
const
|
|
211
|
-
|
|
217
|
+
if (el.name === this.retainedEmailField) {
|
|
218
|
+
const retainedEmailValue = this.geRetainedFieldsValue("email");
|
|
219
|
+
const sha256value = yield this.shaHash(retainedEmailValue);
|
|
220
|
+
localStorage.setItem(`EN_HASH_EMAIL`, sha256value);
|
|
212
221
|
this.dataLayer.push({
|
|
213
|
-
event: "
|
|
214
|
-
enFieldName:
|
|
222
|
+
event: "EN_HASH_VALUE_UPDATED",
|
|
223
|
+
enFieldName: "email",
|
|
215
224
|
enFieldLabel: this.getFieldLabel(el),
|
|
216
225
|
enFieldValue: sha256value,
|
|
217
226
|
});
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
else if (this.retainedAddressFields.includes(el.name)) {
|
|
230
|
+
const retainedAddressValue = this.geRetainedFieldsValue("address");
|
|
231
|
+
const sha256value = yield this.shaHash(retainedAddressValue);
|
|
232
|
+
localStorage.setItem(`EN_HASH_ADDRESS`, sha256value);
|
|
233
|
+
this.dataLayer.push({
|
|
234
|
+
event: "EN_HASH_VALUE_UPDATED",
|
|
235
|
+
enFieldName: "address",
|
|
236
|
+
enFieldLabel: "Supporter Address",
|
|
237
|
+
enFieldValue: sha256value,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
else if (this.retainedPhoneFields.includes(el.name)) {
|
|
241
|
+
const retainedPhoneValue = this.geRetainedFieldsValue("phone");
|
|
242
|
+
const sha256value = yield this.shaHash(retainedPhoneValue);
|
|
243
|
+
localStorage.setItem(`EN_HASH_PHONE`, sha256value);
|
|
244
|
+
this.dataLayer.push({
|
|
245
|
+
event: "EN_HASH_VALUE_UPDATED",
|
|
246
|
+
enFieldName: "phone",
|
|
247
|
+
enFieldLabel: "Supporter Phone",
|
|
248
|
+
enFieldValue: sha256value,
|
|
249
|
+
});
|
|
218
250
|
}
|
|
219
251
|
this.dataLayer.push({
|
|
220
252
|
event: "EN_FORM_VALUE_UPDATED",
|
|
@@ -224,6 +256,30 @@ export class DataLayer {
|
|
|
224
256
|
});
|
|
225
257
|
});
|
|
226
258
|
}
|
|
259
|
+
geRetainedFieldsValue(kind) {
|
|
260
|
+
switch (kind) {
|
|
261
|
+
case "email":
|
|
262
|
+
return ENGrid.getFieldValue(this.retainedEmailField);
|
|
263
|
+
case "address":
|
|
264
|
+
return this.retainedAddressFields
|
|
265
|
+
.map((field) => ENGrid.getFieldValue(field))
|
|
266
|
+
.filter((value) => value !== "")
|
|
267
|
+
.join("")
|
|
268
|
+
.toLocaleLowerCase()
|
|
269
|
+
.replace(/\s+/g, "");
|
|
270
|
+
case "phone":
|
|
271
|
+
// Only return the first phone number found - prioritize phoneNumber2 over phoneNumber and remove non-numeric characters
|
|
272
|
+
for (const field of this.retainedPhoneFields) {
|
|
273
|
+
const value = ENGrid.getFieldValue(field);
|
|
274
|
+
if (value !== "") {
|
|
275
|
+
return value.replace(/\D/g, "");
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return "";
|
|
279
|
+
default:
|
|
280
|
+
return "";
|
|
281
|
+
}
|
|
282
|
+
}
|
|
227
283
|
hash(value) {
|
|
228
284
|
return btoa(value);
|
|
229
285
|
}
|
|
@@ -231,7 +287,7 @@ export class DataLayer {
|
|
|
231
287
|
shaHash(value) {
|
|
232
288
|
return __awaiter(this, void 0, void 0, function* () {
|
|
233
289
|
const data = this.encoder.encode(value);
|
|
234
|
-
const hashBuffer = yield crypto.subtle.digest(
|
|
290
|
+
const hashBuffer = yield crypto.subtle.digest("SHA-256", data);
|
|
235
291
|
return Array.from(new Uint8Array(hashBuffer))
|
|
236
292
|
.map((byte) => {
|
|
237
293
|
const hex = byte.toString(16);
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const AppVersion = "0.23.
|
|
1
|
+
export declare const AppVersion = "0.23.6";
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const AppVersion = "0.23.
|
|
1
|
+
export const AppVersion = "0.23.6";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@4site/engrid-scripts",
|
|
3
|
-
"version": "0.23.
|
|
3
|
+
"version": "0.23.6",
|
|
4
4
|
"description": "Scripts for the ENGRID Project",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"strongly-typed-events": "^2.0.9"
|
|
26
26
|
},
|
|
27
27
|
"homepage": "https://github.com/4site-interactive-studios/engrid#readme",
|
|
28
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "9089bb5a58a68a07e619c7e9a3d196bf986b3c43",
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"nodemon": "^2.0.20"
|
|
31
31
|
}
|