@phantomstudios/ft-lib 0.2.0 → 0.3.0-rc10
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/.github/workflows/pr.yml +1 -1
- package/.github/workflows/release.yml +1 -1
- package/.nvmrc +1 -1
- package/README.md +11 -10
- package/lib/FTTracking/index.d.ts +3 -0
- package/lib/FTTracking/index.d.ts.map +1 -1
- package/lib/FTTracking/index.js +7 -2
- package/lib/FTTracking/index.js.map +1 -1
- package/lib/gaTracker/index.d.ts +1 -1
- package/lib/gaTracker/index.d.ts.map +1 -1
- package/lib/gaTracker/index.js +4 -5
- package/lib/gaTracker/index.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/oTracker/index.d.ts.map +1 -1
- package/lib/oTracker/index.js +5 -3
- package/lib/oTracker/index.js.map +1 -1
- package/lib/utils/attention.js +4 -24
- package/lib/utils/attention.js.map +1 -1
- package/lib/utils/scroll.d.ts +1 -1
- package/lib/utils/scroll.d.ts.map +1 -1
- package/lib/utils/scroll.js.map +1 -1
- package/lib/utils/yupValidator.d.ts +4 -15
- package/lib/utils/yupValidator.d.ts.map +1 -1
- package/lib/utils/yupValidator.js +23 -41
- package/lib/utils/yupValidator.js.map +1 -1
- package/package.json +4 -8
- package/src/FTTracking/index.ts +10 -2
- package/src/gaTracker/index.ts +3 -6
- package/src/index.ts +1 -5
- package/src/oTracker/index.ts +8 -3
- package/src/utils/attention.js +1 -1
- package/src/utils/scroll.ts +2 -2
- package/src/utils/yupValidator.ts +25 -42
package/.github/workflows/pr.yml
CHANGED
package/.nvmrc
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
v18.17.1
|
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ currently implemented:
|
|
|
21
21
|
Install this package with `npm`.
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
npm i @
|
|
24
|
+
npm i @phantomstudios/ft-lib
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
## Usage
|
|
@@ -39,6 +39,7 @@ The constructor requires the config JSON object (TODO - schema) and optionally a
|
|
|
39
39
|
```
|
|
40
40
|
scrollTrackerSelector: "#o_tracker_scroll", //top level DOM element selector for scroll tracking
|
|
41
41
|
isCustomGTMEvent: true, //selects between GTM and UA(GTAG) event formats - TODO - handle automatically by detecting loaded GTM/UA?
|
|
42
|
+
disableAppFormatTransform: false, //by default the config.app variable is formatted, ie: "app": "home-page" -> "app": "Home_page" - set to true to disable this formatting
|
|
42
43
|
|
|
43
44
|
```
|
|
44
45
|
|
|
@@ -49,7 +50,7 @@ The site config JSON object passed in the constructor and all events handled by
|
|
|
49
50
|
Typical usage:
|
|
50
51
|
|
|
51
52
|
```Javascript
|
|
52
|
-
import { FTTracking } from '@
|
|
53
|
+
import { FTTracking } from '@phantomstudios/ft-lib'
|
|
53
54
|
|
|
54
55
|
//For Wagtail sites, get server-rendered o-tracking-data
|
|
55
56
|
const config = JSON.parse(document.getElementById('o-tracking-data').textContent)
|
|
@@ -67,7 +68,7 @@ Adds an FT consent cookie poller to enable/disable Permutive consent (only usefu
|
|
|
67
68
|
There are optional constructor args for the hostname (defaults to window.location.hostname) and the dev environment host matches (defaults to ["localhost", "phq", "vercel.app"]) which are used to determine development environments in order to generate an FT banner event listener ((see [here](https://registry.origami.ft.com/components/o-cookie-message@6.0.1/readme?brand=master) for a list of banner DOM events) to set session-level cookies for development environments
|
|
68
69
|
|
|
69
70
|
```Javascript
|
|
70
|
-
import { consentMonitor } from "@
|
|
71
|
+
import { consentMonitor } from "@phantomstudios/ft-lib";
|
|
71
72
|
|
|
72
73
|
new consentMonitor("FT.staging.testsite.com". ["localhost", "phq", "staging"]);
|
|
73
74
|
```
|
|
@@ -78,7 +79,7 @@ emitPermutiveProgressEvents - used within a video player's progress event handle
|
|
|
78
79
|
Optional 3rd arg to pass a window.interval instance to be cleared once progress is complete.
|
|
79
80
|
|
|
80
81
|
```Javascript
|
|
81
|
-
import { permutiveVideoUtils } from "@
|
|
82
|
+
import { permutiveVideoUtils } from "@phantomstudios/ft-lib";
|
|
82
83
|
|
|
83
84
|
const permutivevideoTracker = new permutiveVideoUtils("<FT-CAMPAIGN>","<VIDEO-TITLE>","<VIDEO-ID/URL>") //Data will be site implementation specific
|
|
84
85
|
|
|
@@ -96,7 +97,7 @@ The constructor takes the parent site's FTTracking instance (typically set up as
|
|
|
96
97
|
Typical implementation:
|
|
97
98
|
|
|
98
99
|
```Javascript
|
|
99
|
-
import { reactPlayerTracking } from "@
|
|
100
|
+
import { reactPlayerTracking } from "@phantomstudios/ft-lib";
|
|
100
101
|
|
|
101
102
|
const [videoTracker] = useState(
|
|
102
103
|
new reactPlayerTracking(window.FTTracker, <VIDEO-TITLE>, <VIDEO-URL>),
|
|
@@ -123,7 +124,7 @@ NOTE: For Typescript usage as below, the @types/youtube NPM package should be ad
|
|
|
123
124
|
Typical implementation:
|
|
124
125
|
|
|
125
126
|
```Javascript
|
|
126
|
-
import { ytIframeTracking } from '@
|
|
127
|
+
import { ytIframeTracking } from '@phantomstudios/ft-lib';
|
|
127
128
|
|
|
128
129
|
const VIDEO_IFRAME_ID = 'video-iframe';
|
|
129
130
|
|
|
@@ -150,9 +151,9 @@ export class YoutubeIframeLoader {
|
|
|
150
151
|
}
|
|
151
152
|
```
|
|
152
153
|
|
|
153
|
-
[npm-image]: https://img.shields.io/npm/v/@
|
|
154
|
-
[npm-url]: https://npmjs.org/package/@
|
|
155
|
-
[npm-downloads-image]: https://img.shields.io/npm/dm/@
|
|
156
|
-
[npm-downloads-url]: https://npmcharts.com/compare/@
|
|
154
|
+
[npm-image]: https://img.shields.io/npm/v/@phantomstudios/ft-lib.svg?style=flat-square&logo=react
|
|
155
|
+
[npm-url]: https://npmjs.org/package/@phantomstudios/ft-lib
|
|
156
|
+
[npm-downloads-image]: https://img.shields.io/npm/dm/@phantomstudios/ft-lib.svg
|
|
157
|
+
[npm-downloads-url]: https://npmcharts.com/compare/@phantomstudios/ft-lib?minimal=true
|
|
157
158
|
[ci-image]: https://github.com/phantomstudios/ft-lib/workflows/test/badge.svg
|
|
158
159
|
[ci-url]: https://github.com/phantomstudios/ft-lib/actions
|
|
@@ -6,6 +6,8 @@ export interface TrackingOptions {
|
|
|
6
6
|
scrollTrackerSelector?: string;
|
|
7
7
|
isCustomGTMEvent?: boolean;
|
|
8
8
|
sendGTMPageViewYN?: boolean;
|
|
9
|
+
sendBrandedContent?: boolean;
|
|
10
|
+
disableAppFormatTransform?: boolean;
|
|
9
11
|
}
|
|
10
12
|
export declare class FTTracking {
|
|
11
13
|
private _config;
|
|
@@ -13,6 +15,7 @@ export declare class FTTracking {
|
|
|
13
15
|
oTracker: oTracker;
|
|
14
16
|
gaTracker: gaTracker;
|
|
15
17
|
scrollTracker: ScrollTracker;
|
|
18
|
+
disableAppFormatTransform: boolean;
|
|
16
19
|
oEvent: (detail: OrigamiEventType) => void;
|
|
17
20
|
gaEvent: (category: string, action: string, label: string) => void;
|
|
18
21
|
gtmEvent: (category: string, action: string, label: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/FTTracking/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAEL,UAAU,EACV,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,eAAe;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/FTTracking/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAEL,UAAU,EACV,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,eAAe;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AASD,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,yBAAyB,EAAE,OAAO,CAAC;IACnC,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;gBAExD,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,eAAe;IAuBzD,IAAI,MAAM,CAAC,CAAC,EAAE,UAAU,EAGvB;IACD,IAAI,MAAM,IAJI,UAAU,CAMvB;IAEM,WAAW,CAAC,MAAM,EAAE,UAAU;CActC"}
|
package/lib/FTTracking/index.js
CHANGED
|
@@ -21,12 +21,15 @@ var DEFAULT_OPTIONS = {
|
|
|
21
21
|
scrollTrackerSelector: "#o_tracker_scroll",
|
|
22
22
|
isCustomGTMEvent: true,
|
|
23
23
|
sendGTMPageViewYN: true,
|
|
24
|
+
sendBrandedContent: true,
|
|
24
25
|
};
|
|
25
26
|
var FTTracking = /** @class */ (function () {
|
|
26
27
|
function FTTracking(config, options) {
|
|
27
28
|
this.options = __assign(__assign({}, DEFAULT_OPTIONS), options);
|
|
28
29
|
this.oTracker = new oTracker_1.oTracker(config, this.options);
|
|
29
30
|
this.gaTracker = new gaTracker_1.gaTracker(this.options);
|
|
31
|
+
this.disableAppFormatTransform =
|
|
32
|
+
this.options.disableAppFormatTransform || false;
|
|
30
33
|
this.oEvent = this.oTracker.eventDispatcher;
|
|
31
34
|
this.gaEvent = this.options.isCustomGTMEvent
|
|
32
35
|
? this.gaTracker.GTMEventDispatcher
|
|
@@ -53,10 +56,12 @@ var FTTracking = /** @class */ (function () {
|
|
|
53
56
|
});
|
|
54
57
|
FTTracking.prototype.newPageView = function (config) {
|
|
55
58
|
//Update passed config to otracker,send pageview events and reset scrollTracker
|
|
56
|
-
(0, yupValidator_1.validateConfig)(config);
|
|
59
|
+
(0, yupValidator_1.validateConfig)(config, this.disableAppFormatTransform);
|
|
57
60
|
this.oTracker.config = config;
|
|
58
61
|
this.oTracker.broadcastPageView();
|
|
59
|
-
this.
|
|
62
|
+
if (this.options.sendBrandedContent) {
|
|
63
|
+
this.oTracker.broadcastBrandedContent();
|
|
64
|
+
}
|
|
60
65
|
this.scrollTracker.reset();
|
|
61
66
|
if (this.options.sendGTMPageViewYN) {
|
|
62
67
|
this.gaTracker.GTMVirtualPageView(this.config.url, this.config.title);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/FTTracking/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oDAAmD;AACnD,0CAAyC;AACzC,wCAAuC;AACvC,0CAAgD;AAChD,sDAI+B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/FTTracking/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oDAAmD;AACnD,0CAAyC;AACzC,wCAAuC;AACvC,0CAAgD;AAChD,sDAI+B;AAU/B,IAAM,eAAe,GAAG;IACtB,qBAAqB,EAAE,mBAAmB;IAC1C,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;IACvB,kBAAkB,EAAE,IAAI;CACzB,CAAC;AAEF;IAWE,oBAAY,MAAkB,EAAE,OAAyB;QACvD,IAAI,CAAC,OAAO,yBAAQ,eAAe,GAAK,OAAO,CAAE,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,yBAAyB;YAC5B,IAAI,CAAC,OAAO,CAAC,yBAAyB,IAAI,KAAK,CAAC;QAElD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAC1C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB;YACnC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,yBAAyB;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,IAAI,CAAC,aAAa,GAAG,IAAI,sBAAa,CAAC,IAAI,CAAC,CAAC;QAE7C,+CAA+C;QAC/C,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC9B,IAAI,+BAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;IACD,sBAAI,8BAAM;aAIV;YACE,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;aAND,UAAW,CAAa;YACtB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKM,gCAAW,GAAlB,UAAmB,MAAkB;QACnC,+EAA+E;QAC/E,IAAA,6BAAc,EAAC,MAAM,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;YACnC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC;SACzC;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;YAClC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACvE;QACD,mDAAmD;IACrD,CAAC;IACH,iBAAC;AAAD,CAAC,AAxDD,IAwDC;AAxDY,gCAAU"}
|
package/lib/gaTracker/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { TrackingOptions } from "../FTTracking";
|
|
|
2
2
|
export declare class gaTracker {
|
|
3
3
|
options: TrackingOptions;
|
|
4
4
|
constructor(options: TrackingOptions);
|
|
5
|
-
GTMEventDispatcher(category: string, action
|
|
5
|
+
GTMEventDispatcher(category: string, action?: string, label?: string): void;
|
|
6
6
|
GTMVirtualPageView(pageUrl: string, pageTitle: string): void;
|
|
7
7
|
GtagEventDispatcher(category: string, action: string, label: string): void;
|
|
8
8
|
addDataAttributesListener(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gaTracker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gaTracker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAIhD,qBAAa,SAAS;IACpB,OAAO,kBAAC;gBACI,OAAO,EAAE,eAAe;IAU7B,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAK,EAAE,KAAK,SAAK;IAa5D,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAQrD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAO1E,yBAAyB;IA0BzB,8BAA8B;IAc9B,+BAA+B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAmChE,wBAAwB;CAazB"}
|
package/lib/gaTracker/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.gaTracker = void 0;
|
|
4
|
-
var yupValidator_1 = require("../utils/yupValidator");
|
|
5
4
|
var HEADER_CATEGORY = "Header";
|
|
6
5
|
var HEADER_SEARCH_ACTION = "Engagement - Search";
|
|
7
6
|
var gaTracker = /** @class */ (function () {
|
|
@@ -12,8 +11,11 @@ var gaTracker = /** @class */ (function () {
|
|
|
12
11
|
this.setUpFTNavigationSearchTracking(HEADER_CATEGORY, HEADER_SEARCH_ACTION);
|
|
13
12
|
this.setupFooterLinksTracking();
|
|
14
13
|
}
|
|
14
|
+
/*Dhia - Nov 2023 - For new FT GA4 implementations, customEvents typically only need a single property name (i.e category as the GA4 'event name')
|
|
15
|
+
so the other properties are now optional */
|
|
15
16
|
gaTracker.prototype.GTMEventDispatcher = function (category, action, label) {
|
|
16
|
-
|
|
17
|
+
if (action === void 0) { action = ""; }
|
|
18
|
+
if (label === void 0) { label = ""; }
|
|
17
19
|
//from channels - sets event categories on window on certain pages..replace?
|
|
18
20
|
if (category === "<category>" && window.gtmCategory) {
|
|
19
21
|
category = window.gtmCategory;
|
|
@@ -33,7 +35,6 @@ var gaTracker = /** @class */ (function () {
|
|
|
33
35
|
});
|
|
34
36
|
};
|
|
35
37
|
gaTracker.prototype.GtagEventDispatcher = function (category, action, label) {
|
|
36
|
-
(0, yupValidator_1.validateGTMCustomEvent)({ category: category, action: action, label: label });
|
|
37
38
|
window.gtag("event", action, {
|
|
38
39
|
event_category: category,
|
|
39
40
|
event_label: label,
|
|
@@ -48,9 +49,7 @@ var gaTracker = /** @class */ (function () {
|
|
|
48
49
|
if (!gaEventString)
|
|
49
50
|
return;
|
|
50
51
|
var _a = gaEventString.split("|"), category = _a[0], action = _a[1], label = _a[2];
|
|
51
|
-
//TODO validate event fields
|
|
52
52
|
if (typeof window !== "undefined") {
|
|
53
|
-
//TBC - GTM customEvent tag vs standard UA event push?
|
|
54
53
|
if (_this.options.isCustomGTMEvent) {
|
|
55
54
|
_this.GTMEventDispatcher(category, action, label || window.location.pathname //use pathname if label section has not been defined
|
|
56
55
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gaTracker/index.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gaTracker/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -5,5 +5,5 @@ export { gaTracker } from "./gaTracker";
|
|
|
5
5
|
export { oTracker } from "./oTracker";
|
|
6
6
|
export { ytIframeTracking } from "./ytIframeTracking";
|
|
7
7
|
export { FTTracking, TrackingOptions } from "./FTTracking";
|
|
8
|
-
export { ConfigType, OrigamiEventType
|
|
8
|
+
export { ConfigType, OrigamiEventType } from "./utils/yupValidator";
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oTracker/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAIL,UAAU,EACV,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAK/B,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,EAAE,eAAe,CAAC;gBAEb,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oTracker/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAIL,UAAU,EACV,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAK/B,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,EAAE,eAAe,CAAC;gBAEb,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe;IAiCxD,IAAI,MAAM,CAAC,CAAC,EAAE,UAAU,EAEvB;IACD,IAAI,MAAM,IAHI,UAAU,CAKvB;IAEM,eAAe,CAAC,MAAM,EAAE,gBAAgB;IAaxC,iBAAiB;IAQjB,uBAAuB;IAa9B,gBAAgB;CAgCjB"}
|
package/lib/oTracker/index.js
CHANGED
|
@@ -24,8 +24,8 @@ The config object is read from the server-rendered o-tracking-data element
|
|
|
24
24
|
*/
|
|
25
25
|
var oTracker = /** @class */ (function () {
|
|
26
26
|
function oTracker(config, options) {
|
|
27
|
-
this._config = (0, yupValidator_1.parseConfig)(config);
|
|
28
|
-
(0, yupValidator_1.validateConfig)(this._config);
|
|
27
|
+
this._config = (0, yupValidator_1.parseConfig)(config, options.disableAppFormatTransform || false);
|
|
28
|
+
(0, yupValidator_1.validateConfig)(this._config, options.disableAppFormatTransform || false);
|
|
29
29
|
this._config.source_id = o_tracking_1.default.getRootID();
|
|
30
30
|
this.options = options;
|
|
31
31
|
//init config data
|
|
@@ -43,7 +43,9 @@ var oTracker = /** @class */ (function () {
|
|
|
43
43
|
//document.dispatchEvent(new CustomEvent("o.DOMContentLoaded")); //TODO this isnt needed on next and breaks the cookie-message eventhandlers - is it needed for the server sites?
|
|
44
44
|
//send page hits
|
|
45
45
|
this.broadcastPageView();
|
|
46
|
-
|
|
46
|
+
if (options.sendBrandedContent) {
|
|
47
|
+
this.broadcastBrandedContent();
|
|
48
|
+
}
|
|
47
49
|
}
|
|
48
50
|
Object.defineProperty(oTracker.prototype, "config", {
|
|
49
51
|
get: function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oTracker/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2EAAoD;AAGpD,4CAAsD;AACtD,+DAAyC;AACzC,sDAM+B;AAE/B;;EAEE;AACF;IAIE,kBAAY,MAAkB,EAAE,OAAwB;QACtD,IAAI,CAAC,OAAO,GAAG,IAAA,0BAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oTracker/index.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/attention.js
CHANGED
|
@@ -1,30 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
4
|
};
|
|
25
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
6
|
exports.Attention = void 0;
|
|
27
|
-
var
|
|
7
|
+
var o_viewport_1 = __importDefault(require("@financial-times/o-viewport"));
|
|
28
8
|
var ATTENTION_INTERVAL = 15000;
|
|
29
9
|
var ATTENTION_EVENTS = [
|
|
30
10
|
"load",
|
|
@@ -60,7 +40,7 @@ var Attention = /** @class */ (function () {
|
|
|
60
40
|
});
|
|
61
41
|
}
|
|
62
42
|
// Need to wait for this to be available
|
|
63
|
-
|
|
43
|
+
o_viewport_1.default.listenTo("visibility");
|
|
64
44
|
document.body.addEventListener("oViewport.visibility", function (ev) { return _this.handleVisibilityChange(ev); }, false);
|
|
65
45
|
this.addVideoEvents();
|
|
66
46
|
// Add event to send data on unload
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attention.js","sourceRoot":"","sources":["../../src/utils/attention.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attention.js","sourceRoot":"","sources":["../../src/utils/attention.js"],"names":[],"mappings":"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"}
|
package/lib/utils/scroll.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { ConfigType } from "./yupValidator";
|
|
1
2
|
import { TrackingOptions } from "../FTTracking";
|
|
2
3
|
import { FTTracking } from "../FTTracking";
|
|
3
4
|
import { gaTracker } from "../gaTracker";
|
|
4
5
|
import { oTracker } from "../oTracker";
|
|
5
|
-
import { ConfigType } from "./yupValidator";
|
|
6
6
|
import "./intersectionObserverPolyfill";
|
|
7
7
|
export declare class ScrollTracker {
|
|
8
8
|
oTracker: oTracker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../src/utils/scroll.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../src/utils/scroll.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAoB,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,gCAAgC,CAAC;AAExC,qBAAa,aAAa;IACxB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;gBACP,SAAS,EAAE,UAAU;IAUjC,KAAK;IAQL,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,QAAQ,SAAK;IAuBpD,oBAAoB,CAClB,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,yBAAyB,EAAE;CAmCvC"}
|
package/lib/utils/scroll.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/utils/scroll.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/utils/scroll.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InferType, ValidationError } from "yup";
|
|
2
2
|
declare const configSchema: import("yup").ObjectSchema<{
|
|
3
|
-
product:
|
|
3
|
+
product: string | undefined;
|
|
4
4
|
url: string;
|
|
5
5
|
feature: string;
|
|
6
6
|
author: string;
|
|
@@ -24,7 +24,7 @@ declare const configSchema: import("yup").ObjectSchema<{
|
|
|
24
24
|
wordCount: number | undefined;
|
|
25
25
|
commercial_product: string;
|
|
26
26
|
}, import("yup").AnyObject, {
|
|
27
|
-
product:
|
|
27
|
+
product: undefined;
|
|
28
28
|
url: undefined;
|
|
29
29
|
feature: undefined;
|
|
30
30
|
author: "";
|
|
@@ -48,15 +48,6 @@ declare const configSchema: import("yup").ObjectSchema<{
|
|
|
48
48
|
wordCount: undefined;
|
|
49
49
|
commercial_product: "ft";
|
|
50
50
|
}, "">;
|
|
51
|
-
declare const gtmCustomEventSchema: import("yup").ObjectSchema<{
|
|
52
|
-
category: string;
|
|
53
|
-
action: string;
|
|
54
|
-
label: string;
|
|
55
|
-
}, import("yup").AnyObject, {
|
|
56
|
-
category: undefined;
|
|
57
|
-
action: undefined;
|
|
58
|
-
label: undefined;
|
|
59
|
-
}, "">;
|
|
60
51
|
declare const origamiEventSchema: import("yup").ObjectSchema<{
|
|
61
52
|
category: string;
|
|
62
53
|
action: string;
|
|
@@ -77,11 +68,9 @@ declare const origamiEventSchema: import("yup").ObjectSchema<{
|
|
|
77
68
|
progress: undefined;
|
|
78
69
|
}, "">;
|
|
79
70
|
export type ConfigType = InferType<typeof configSchema>;
|
|
80
|
-
export type GTMCustomEventType = InferType<typeof gtmCustomEventSchema>;
|
|
81
71
|
export type OrigamiEventType = InferType<typeof origamiEventSchema>;
|
|
82
|
-
export declare const parseConfig: (config: ConfigType) => ConfigType;
|
|
83
|
-
export declare const validateConfig: (config: ConfigType) => ValidationError[] | undefined;
|
|
84
|
-
export declare const validateGTMCustomEvent: (event: GTMCustomEventType) => ValidationError[] | undefined;
|
|
72
|
+
export declare const parseConfig: (config: ConfigType, disableAppFormatTransform: boolean) => ConfigType;
|
|
73
|
+
export declare const validateConfig: (config: ConfigType, disableAppFormatTransform: boolean) => ValidationError[] | undefined;
|
|
85
74
|
export declare const validateOrigamiEvent: (config: OrigamiEventType) => ValidationError[] | undefined;
|
|
86
75
|
export {};
|
|
87
76
|
//# sourceMappingURL=yupValidator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yupValidator.d.ts","sourceRoot":"","sources":["../../src/utils/yupValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,SAAS,EACT,eAAe,EAChB,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"yupValidator.d.ts","sourceRoot":"","sources":["../../src/utils/yupValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,SAAS,EACT,eAAe,EAChB,MAAM,KAAK,CAAC;AAwBb,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAwDhB,CAAC;AAEH,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;MAkCtB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,YAAY,CAAC,CAAC;AACxD,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,WAAW,WACd,UAAU,6BACS,OAAO,KACjC,UAoBF,CAAC;AAEF,eAAO,MAAM,cAAc,WACjB,UAAU,6BACS,OAAO,KACjC,eAAe,EAAE,GAAG,SAatB,CAAC;AAEF,eAAO,MAAM,oBAAoB,WACvB,gBAAgB,KACvB,eAAe,EAAE,GAAG,SAatB,CAAC"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateOrigamiEvent = exports.
|
|
3
|
+
exports.validateOrigamiEvent = exports.validateConfig = exports.parseConfig = void 0;
|
|
4
4
|
var yup_1 = require("yup");
|
|
5
|
+
var disableAppFormatTransformValue = false;
|
|
5
6
|
//transform passed values to first character uppercase and replace spaces with underscores
|
|
6
|
-
var unifyValuesTransform = function (value) {
|
|
7
|
+
var unifyValuesTransform = function (value, disableTransform) {
|
|
8
|
+
if (disableTransform === void 0) { disableTransform = false; }
|
|
9
|
+
if (disableTransform)
|
|
10
|
+
return value;
|
|
7
11
|
return (value.trim().charAt(0).toUpperCase() +
|
|
8
12
|
value.trim().slice(1).toLowerCase().replace(/ /g, "_").replace(/-/g, "_"));
|
|
9
13
|
};
|
|
@@ -16,9 +20,9 @@ var authorTransform = function (value) {
|
|
|
16
20
|
value.trim().slice(1).toLowerCase().replace(/ /g, "_").replace(/-/g, "_"));
|
|
17
21
|
};
|
|
18
22
|
var configSchema = (0, yup_1.object)({
|
|
19
|
-
product: (0, yup_1.string)().
|
|
23
|
+
product: (0, yup_1.string)().oneOf(["paid-post", "commercial-ft-com"]),
|
|
20
24
|
url: (0, yup_1.string)().required(),
|
|
21
|
-
feature: (0, yup_1.string)().required().oneOf(["channel", "microsite"]),
|
|
25
|
+
feature: (0, yup_1.string)().required().oneOf(["channel", "microsite", "commercial"]),
|
|
22
26
|
author: (0, yup_1.string)().defined().default("").transform(authorTransform),
|
|
23
27
|
sponsor: (0, yup_1.string)().defined().default(""),
|
|
24
28
|
articleName: (0, yup_1.string)().defined().default(""),
|
|
@@ -38,7 +42,9 @@ var configSchema = (0, yup_1.object)({
|
|
|
38
42
|
app: (0, yup_1.string)()
|
|
39
43
|
.required()
|
|
40
44
|
.defined()
|
|
41
|
-
.transform(
|
|
45
|
+
.transform(function (value) {
|
|
46
|
+
return unifyValuesTransform(value, disableAppFormatTransformValue);
|
|
47
|
+
})
|
|
42
48
|
.oneOf([
|
|
43
49
|
"Stream",
|
|
44
50
|
"Article",
|
|
@@ -50,6 +56,14 @@ var configSchema = (0, yup_1.object)({
|
|
|
50
56
|
"Infographic",
|
|
51
57
|
"Interactive_infographic",
|
|
52
58
|
"Photo_essay",
|
|
59
|
+
"home-page",
|
|
60
|
+
"capabilities",
|
|
61
|
+
"my-products",
|
|
62
|
+
"audience",
|
|
63
|
+
"case-studies",
|
|
64
|
+
"markets",
|
|
65
|
+
"news-and-insights",
|
|
66
|
+
"other",
|
|
53
67
|
]),
|
|
54
68
|
publishDate: (0, yup_1.string)().nullable().default(""),
|
|
55
69
|
isBranded: (0, yup_1.boolean)().defined(),
|
|
@@ -62,24 +76,6 @@ var configSchema = (0, yup_1.object)({
|
|
|
62
76
|
wordCount: (0, yup_1.number)().optional(),
|
|
63
77
|
commercial_product: (0, yup_1.string)().optional().default("ft"),
|
|
64
78
|
});
|
|
65
|
-
var gtmCustomEventSchema = (0, yup_1.object)({
|
|
66
|
-
category: (0, yup_1.string)()
|
|
67
|
-
.required()
|
|
68
|
-
.oneOf([
|
|
69
|
-
"Internal click",
|
|
70
|
-
"External click",
|
|
71
|
-
"Video",
|
|
72
|
-
"Video:fallback",
|
|
73
|
-
"Audio",
|
|
74
|
-
"Scroll",
|
|
75
|
-
"Share",
|
|
76
|
-
"Form",
|
|
77
|
-
"Header",
|
|
78
|
-
"Footer",
|
|
79
|
-
]),
|
|
80
|
-
action: (0, yup_1.string)().required(),
|
|
81
|
-
label: (0, yup_1.string)().required(),
|
|
82
|
-
});
|
|
83
79
|
var origamiEventSchema = (0, yup_1.object)({
|
|
84
80
|
category: (0, yup_1.string)()
|
|
85
81
|
.required()
|
|
@@ -115,8 +111,9 @@ var origamiEventSchema = (0, yup_1.object)({
|
|
|
115
111
|
then: function () { return (0, yup_1.number)().required(); },
|
|
116
112
|
}),
|
|
117
113
|
});
|
|
118
|
-
var parseConfig = function (config) {
|
|
114
|
+
var parseConfig = function (config, disableAppFormatTransform) {
|
|
119
115
|
var _a;
|
|
116
|
+
disableAppFormatTransformValue = disableAppFormatTransform;
|
|
120
117
|
try {
|
|
121
118
|
//Replace app value based on deprecated hasVideo field and then remove hasVideo
|
|
122
119
|
if (config.hasVideo && config.app.toLowerCase() === "article") {
|
|
@@ -137,8 +134,9 @@ var parseConfig = function (config) {
|
|
|
137
134
|
}
|
|
138
135
|
};
|
|
139
136
|
exports.parseConfig = parseConfig;
|
|
140
|
-
var validateConfig = function (config) {
|
|
137
|
+
var validateConfig = function (config, disableAppFormatTransform) {
|
|
141
138
|
var _a;
|
|
139
|
+
disableAppFormatTransformValue = disableAppFormatTransform;
|
|
142
140
|
try {
|
|
143
141
|
configSchema.validateSync(config, {
|
|
144
142
|
strict: false,
|
|
@@ -153,22 +151,6 @@ var validateConfig = function (config) {
|
|
|
153
151
|
return undefined;
|
|
154
152
|
};
|
|
155
153
|
exports.validateConfig = validateConfig;
|
|
156
|
-
var validateGTMCustomEvent = function (event) {
|
|
157
|
-
var _a;
|
|
158
|
-
try {
|
|
159
|
-
gtmCustomEventSchema.validateSync(event, {
|
|
160
|
-
strict: true,
|
|
161
|
-
abortEarly: false,
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
catch (err) {
|
|
165
|
-
(_a = err.errors) === null || _a === void 0 ? void 0 : _a.map(function (err) {
|
|
166
|
-
console.error("FTTracker - GTM custom event validation error: " + err);
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
return undefined;
|
|
170
|
-
};
|
|
171
|
-
exports.validateGTMCustomEvent = validateGTMCustomEvent;
|
|
172
154
|
var validateOrigamiEvent = function (config) {
|
|
173
155
|
var _a;
|
|
174
156
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yupValidator.js","sourceRoot":"","sources":["../../src/utils/yupValidator.ts"],"names":[],"mappings":";;;AAAA,2BAQa;AAEb,0FAA0F;AAC1F,IAAM,oBAAoB,GAAG,UAAC,KAAa;
|
|
1
|
+
{"version":3,"file":"yupValidator.js","sourceRoot":"","sources":["../../src/utils/yupValidator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@phantomstudios/ft-lib",
|
|
3
3
|
"description": "A collection of Javascript UI & tracking utils for FT sites",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.0-rc10",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
7
7
|
"homepage": "https://github.com/phantomstudios/ft-lib#readme",
|
|
@@ -40,14 +40,13 @@
|
|
|
40
40
|
"@babel/preset-typescript": "^7.13.0",
|
|
41
41
|
"@types/debug": "^4.1.7",
|
|
42
42
|
"@types/jest": "^26.0.23",
|
|
43
|
-
"@types/react": "^17.0.6",
|
|
44
43
|
"@types/youtube": "^0.0.46",
|
|
45
44
|
"@types/yup": "^0.32.0",
|
|
46
45
|
"@typescript-eslint/eslint-plugin": "^4.24.0",
|
|
47
46
|
"@typescript-eslint/parser": "^4.24.0",
|
|
48
47
|
"babel-eslint": "^10.1.0",
|
|
49
48
|
"babel-jest": "^26.0.1",
|
|
50
|
-
"browser-env": "^
|
|
49
|
+
"browser-env": "^2.0.21",
|
|
51
50
|
"debug": "^4.3.2",
|
|
52
51
|
"eslint": "^7.26.0",
|
|
53
52
|
"eslint-config-prettier": "^8.3.0",
|
|
@@ -58,9 +57,6 @@
|
|
|
58
57
|
"jest": "^26.0.1",
|
|
59
58
|
"npm-run-all": "^4.1.5",
|
|
60
59
|
"prettier": "^2.3.0",
|
|
61
|
-
"react": "^17.0.2",
|
|
62
|
-
"react-dom": "^17.0.2",
|
|
63
|
-
"react-test-renderer": "^17.0.2",
|
|
64
60
|
"set-value": ">=4.0.1",
|
|
65
61
|
"ts-jest": "^26.5.6",
|
|
66
62
|
"typescript": "^4.2.4"
|
|
@@ -69,7 +65,7 @@
|
|
|
69
65
|
"yup": "^1.0.2"
|
|
70
66
|
},
|
|
71
67
|
"peerDependencies": {
|
|
72
|
-
"@financial-times/o-tracking": "^
|
|
73
|
-
"@financial-times/o-viewport": "^
|
|
68
|
+
"@financial-times/o-tracking": "^4.5.1",
|
|
69
|
+
"@financial-times/o-viewport": "^5.1.2"
|
|
74
70
|
}
|
|
75
71
|
}
|
package/src/FTTracking/index.ts
CHANGED
|
@@ -12,12 +12,15 @@ export interface TrackingOptions {
|
|
|
12
12
|
scrollTrackerSelector?: string;
|
|
13
13
|
isCustomGTMEvent?: boolean;
|
|
14
14
|
sendGTMPageViewYN?: boolean;
|
|
15
|
+
sendBrandedContent?: boolean;
|
|
16
|
+
disableAppFormatTransform?: boolean;
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
const DEFAULT_OPTIONS = {
|
|
18
20
|
scrollTrackerSelector: "#o_tracker_scroll",
|
|
19
21
|
isCustomGTMEvent: true,
|
|
20
22
|
sendGTMPageViewYN: true,
|
|
23
|
+
sendBrandedContent: true,
|
|
21
24
|
};
|
|
22
25
|
|
|
23
26
|
export class FTTracking {
|
|
@@ -26,6 +29,7 @@ export class FTTracking {
|
|
|
26
29
|
oTracker: oTracker;
|
|
27
30
|
gaTracker: gaTracker;
|
|
28
31
|
scrollTracker: ScrollTracker;
|
|
32
|
+
disableAppFormatTransform: boolean;
|
|
29
33
|
oEvent: (detail: OrigamiEventType) => void;
|
|
30
34
|
gaEvent: (category: string, action: string, label: string) => void;
|
|
31
35
|
gtmEvent: (category: string, action: string, label: string) => void;
|
|
@@ -34,6 +38,8 @@ export class FTTracking {
|
|
|
34
38
|
this.options = { ...DEFAULT_OPTIONS, ...options };
|
|
35
39
|
this.oTracker = new oTracker(config, this.options);
|
|
36
40
|
this.gaTracker = new gaTracker(this.options);
|
|
41
|
+
this.disableAppFormatTransform =
|
|
42
|
+
this.options.disableAppFormatTransform || false;
|
|
37
43
|
|
|
38
44
|
this.oEvent = this.oTracker.eventDispatcher;
|
|
39
45
|
this.gaEvent = this.options.isCustomGTMEvent
|
|
@@ -61,10 +67,12 @@ export class FTTracking {
|
|
|
61
67
|
|
|
62
68
|
public newPageView(config: ConfigType) {
|
|
63
69
|
//Update passed config to otracker,send pageview events and reset scrollTracker
|
|
64
|
-
validateConfig(config);
|
|
70
|
+
validateConfig(config, this.disableAppFormatTransform);
|
|
65
71
|
this.oTracker.config = config;
|
|
66
72
|
this.oTracker.broadcastPageView();
|
|
67
|
-
this.
|
|
73
|
+
if (this.options.sendBrandedContent) {
|
|
74
|
+
this.oTracker.broadcastBrandedContent();
|
|
75
|
+
}
|
|
68
76
|
this.scrollTracker.reset();
|
|
69
77
|
if (this.options.sendGTMPageViewYN) {
|
|
70
78
|
this.gaTracker.GTMVirtualPageView(this.config.url, this.config.title);
|
package/src/gaTracker/index.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { TrackingOptions } from "../FTTracking";
|
|
2
|
-
import { validateGTMCustomEvent } from "../utils/yupValidator";
|
|
3
2
|
const HEADER_CATEGORY = "Header";
|
|
4
3
|
const HEADER_SEARCH_ACTION = "Engagement - Search";
|
|
5
4
|
|
|
@@ -13,8 +12,9 @@ export class gaTracker {
|
|
|
13
12
|
this.setupFooterLinksTracking();
|
|
14
13
|
}
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
/*Dhia - Nov 2023 - For new FT GA4 implementations, customEvents typically only need a single property name (i.e category as the GA4 'event name')
|
|
16
|
+
so the other properties are now optional */
|
|
17
|
+
public GTMEventDispatcher(category: string, action = "", label = "") {
|
|
18
18
|
//from channels - sets event categories on window on certain pages..replace?
|
|
19
19
|
if (category === "<category>" && window.gtmCategory) {
|
|
20
20
|
category = window.gtmCategory;
|
|
@@ -36,7 +36,6 @@ export class gaTracker {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
public GtagEventDispatcher(category: string, action: string, label: string) {
|
|
39
|
-
validateGTMCustomEvent({ category, action, label });
|
|
40
39
|
window.gtag("event", action, {
|
|
41
40
|
event_category: category,
|
|
42
41
|
event_label: label,
|
|
@@ -51,9 +50,7 @@ export class gaTracker {
|
|
|
51
50
|
if (!gaEventString) return;
|
|
52
51
|
const [category, action, label] = gaEventString.split("|");
|
|
53
52
|
|
|
54
|
-
//TODO validate event fields
|
|
55
53
|
if (typeof window !== "undefined") {
|
|
56
|
-
//TBC - GTM customEvent tag vs standard UA event push?
|
|
57
54
|
if (this.options.isCustomGTMEvent) {
|
|
58
55
|
this.GTMEventDispatcher(
|
|
59
56
|
category,
|
package/src/index.ts
CHANGED
|
@@ -5,8 +5,4 @@ export { gaTracker } from "./gaTracker";
|
|
|
5
5
|
export { oTracker } from "./oTracker";
|
|
6
6
|
export { ytIframeTracking } from "./ytIframeTracking";
|
|
7
7
|
export { FTTracking, TrackingOptions } from "./FTTracking";
|
|
8
|
-
export {
|
|
9
|
-
ConfigType,
|
|
10
|
-
OrigamiEventType,
|
|
11
|
-
GTMCustomEventType,
|
|
12
|
-
} from "./utils/yupValidator";
|
|
8
|
+
export { ConfigType, OrigamiEventType } from "./utils/yupValidator";
|
package/src/oTracker/index.ts
CHANGED
|
@@ -19,8 +19,11 @@ export class oTracker {
|
|
|
19
19
|
options: TrackingOptions;
|
|
20
20
|
|
|
21
21
|
constructor(config: ConfigType, options: TrackingOptions) {
|
|
22
|
-
this._config = parseConfig(
|
|
23
|
-
|
|
22
|
+
this._config = parseConfig(
|
|
23
|
+
config,
|
|
24
|
+
options.disableAppFormatTransform || false
|
|
25
|
+
);
|
|
26
|
+
validateConfig(this._config, options.disableAppFormatTransform || false);
|
|
24
27
|
this._config.source_id = oTracking.getRootID();
|
|
25
28
|
this.options = options;
|
|
26
29
|
|
|
@@ -43,7 +46,9 @@ export class oTracker {
|
|
|
43
46
|
//document.dispatchEvent(new CustomEvent("o.DOMContentLoaded")); //TODO this isnt needed on next and breaks the cookie-message eventhandlers - is it needed for the server sites?
|
|
44
47
|
//send page hits
|
|
45
48
|
this.broadcastPageView();
|
|
46
|
-
|
|
49
|
+
if (options.sendBrandedContent) {
|
|
50
|
+
this.broadcastBrandedContent();
|
|
51
|
+
}
|
|
47
52
|
}
|
|
48
53
|
|
|
49
54
|
set config(c: ConfigType) {
|
package/src/utils/attention.js
CHANGED
package/src/utils/scroll.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { Attention } from "./attention";
|
|
2
|
+
import { ConfigType, OrigamiEventType } from "./yupValidator";
|
|
1
3
|
import { TrackingOptions } from "../FTTracking";
|
|
2
4
|
import { FTTracking } from "../FTTracking";
|
|
3
5
|
import { gaTracker } from "../gaTracker";
|
|
4
6
|
import { oTracker } from "../oTracker";
|
|
5
|
-
import { Attention } from "./attention";
|
|
6
|
-
import { ConfigType, OrigamiEventType } from "./yupValidator";
|
|
7
7
|
|
|
8
8
|
import "./intersectionObserverPolyfill";
|
|
9
9
|
|
|
@@ -8,8 +8,11 @@ import {
|
|
|
8
8
|
ValidationError,
|
|
9
9
|
} from "yup";
|
|
10
10
|
|
|
11
|
+
let disableAppFormatTransformValue = false;
|
|
12
|
+
|
|
11
13
|
//transform passed values to first character uppercase and replace spaces with underscores
|
|
12
|
-
const unifyValuesTransform = (value: string) => {
|
|
14
|
+
const unifyValuesTransform = (value: string, disableTransform = false) => {
|
|
15
|
+
if (disableTransform) return value;
|
|
13
16
|
return (
|
|
14
17
|
value.trim().charAt(0).toUpperCase() +
|
|
15
18
|
value.trim().slice(1).toLowerCase().replace(/ /g, "_").replace(/-/g, "_")
|
|
@@ -28,9 +31,9 @@ const authorTransform = (value: string) => {
|
|
|
28
31
|
};
|
|
29
32
|
|
|
30
33
|
const configSchema = object({
|
|
31
|
-
product: string().
|
|
34
|
+
product: string().oneOf(["paid-post", "commercial-ft-com"]),
|
|
32
35
|
url: string().required(),
|
|
33
|
-
feature: string().required().oneOf(["channel", "microsite"]),
|
|
36
|
+
feature: string().required().oneOf(["channel", "microsite", "commercial"]),
|
|
34
37
|
author: string().defined().default("").transform(authorTransform),
|
|
35
38
|
sponsor: string().defined().default(""),
|
|
36
39
|
articleName: string().defined().default(""),
|
|
@@ -50,7 +53,9 @@ const configSchema = object({
|
|
|
50
53
|
app: string()
|
|
51
54
|
.required()
|
|
52
55
|
.defined()
|
|
53
|
-
.transform(
|
|
56
|
+
.transform((value) =>
|
|
57
|
+
unifyValuesTransform(value, disableAppFormatTransformValue)
|
|
58
|
+
)
|
|
54
59
|
.oneOf([
|
|
55
60
|
"Stream",
|
|
56
61
|
"Article",
|
|
@@ -62,6 +67,14 @@ const configSchema = object({
|
|
|
62
67
|
"Infographic",
|
|
63
68
|
"Interactive_infographic",
|
|
64
69
|
"Photo_essay",
|
|
70
|
+
"home-page",
|
|
71
|
+
"capabilities",
|
|
72
|
+
"my-products",
|
|
73
|
+
"audience",
|
|
74
|
+
"case-studies",
|
|
75
|
+
"markets",
|
|
76
|
+
"news-and-insights",
|
|
77
|
+
"other",
|
|
65
78
|
]),
|
|
66
79
|
publishDate: string().nullable().default(""),
|
|
67
80
|
isBranded: boolean().defined(),
|
|
@@ -75,25 +88,6 @@ const configSchema = object({
|
|
|
75
88
|
commercial_product: string().optional().default("ft"),
|
|
76
89
|
});
|
|
77
90
|
|
|
78
|
-
const gtmCustomEventSchema = object({
|
|
79
|
-
category: string()
|
|
80
|
-
.required()
|
|
81
|
-
.oneOf([
|
|
82
|
-
"Internal click",
|
|
83
|
-
"External click",
|
|
84
|
-
"Video",
|
|
85
|
-
"Video:fallback",
|
|
86
|
-
"Audio",
|
|
87
|
-
"Scroll",
|
|
88
|
-
"Share",
|
|
89
|
-
"Form",
|
|
90
|
-
"Header",
|
|
91
|
-
"Footer",
|
|
92
|
-
]),
|
|
93
|
-
action: string().required(),
|
|
94
|
-
label: string().required(),
|
|
95
|
-
});
|
|
96
|
-
|
|
97
91
|
const origamiEventSchema = object({
|
|
98
92
|
category: string()
|
|
99
93
|
.required()
|
|
@@ -131,10 +125,13 @@ const origamiEventSchema = object({
|
|
|
131
125
|
});
|
|
132
126
|
|
|
133
127
|
export type ConfigType = InferType<typeof configSchema>;
|
|
134
|
-
export type GTMCustomEventType = InferType<typeof gtmCustomEventSchema>;
|
|
135
128
|
export type OrigamiEventType = InferType<typeof origamiEventSchema>;
|
|
136
129
|
|
|
137
|
-
export const parseConfig = (
|
|
130
|
+
export const parseConfig = (
|
|
131
|
+
config: ConfigType,
|
|
132
|
+
disableAppFormatTransform: boolean
|
|
133
|
+
): ConfigType => {
|
|
134
|
+
disableAppFormatTransformValue = disableAppFormatTransform;
|
|
138
135
|
try {
|
|
139
136
|
//Replace app value based on deprecated hasVideo field and then remove hasVideo
|
|
140
137
|
if (config.hasVideo && config.app.toLowerCase() === "article") {
|
|
@@ -156,8 +153,10 @@ export const parseConfig = (config: ConfigType): ConfigType => {
|
|
|
156
153
|
};
|
|
157
154
|
|
|
158
155
|
export const validateConfig = (
|
|
159
|
-
config: ConfigType
|
|
156
|
+
config: ConfigType,
|
|
157
|
+
disableAppFormatTransform: boolean
|
|
160
158
|
): ValidationError[] | undefined => {
|
|
159
|
+
disableAppFormatTransformValue = disableAppFormatTransform;
|
|
161
160
|
try {
|
|
162
161
|
configSchema.validateSync(config, {
|
|
163
162
|
strict: false,
|
|
@@ -171,22 +170,6 @@ export const validateConfig = (
|
|
|
171
170
|
return undefined;
|
|
172
171
|
};
|
|
173
172
|
|
|
174
|
-
export const validateGTMCustomEvent = (
|
|
175
|
-
event: GTMCustomEventType
|
|
176
|
-
): ValidationError[] | undefined => {
|
|
177
|
-
try {
|
|
178
|
-
gtmCustomEventSchema.validateSync(event, {
|
|
179
|
-
strict: true,
|
|
180
|
-
abortEarly: false,
|
|
181
|
-
});
|
|
182
|
-
} catch (err: any) {
|
|
183
|
-
err.errors?.map((err: ValidationError) => {
|
|
184
|
-
console.error("FTTracker - GTM custom event validation error: " + err);
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
return undefined;
|
|
188
|
-
};
|
|
189
|
-
|
|
190
173
|
export const validateOrigamiEvent = (
|
|
191
174
|
config: OrigamiEventType
|
|
192
175
|
): ValidationError[] | undefined => {
|