@guardian/commercial-core 3.4.0 → 3.5.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.
@@ -30,6 +30,7 @@ interface EventTimerProperties {
30
30
  adSlotsInline?: number;
31
31
  adSlotsTotal?: number;
32
32
  pageHeightVH?: number;
33
+ gpcSignal?: number;
33
34
  lazyLoadMarginPercent?: number;
34
35
  }
35
36
  export declare class EventTimer {
@@ -71,7 +72,7 @@ export declare class EventTimer {
71
72
  * @param {string} name - the property's name
72
73
  * @param {value} number - the property's value
73
74
  */
74
- setProperty(name: 'adSlotsInline' | 'adSlotsTotal' | 'pageHeightVH' | 'lazyLoadMarginPercent', value: number): void;
75
+ setProperty(name: 'adSlotsInline' | 'adSlotsTotal' | 'pageHeightVH' | 'gpcSignal' | 'lazyLoadMarginPercent', value: number): void;
75
76
  /**
76
77
  * Creates a new performance mark
77
78
  * For slot events also ensures each TYPE of event event is marked only once for 'first'
@@ -12,6 +12,7 @@ export type { SizeKeys, AdSizeString, AdSize } from './ad-sizes';
12
12
  export { isAdBlockInUse } from './detect-ad-blocker';
13
13
  export { clearPermutiveSegments, getPermutiveSegments, getPermutivePFPSegments, } from './permutive';
14
14
  export { initTrackScrollDepth } from './track-scroll-depth';
15
+ export { initTrackGpcSignal } from './track-gpc-signal';
15
16
  export { buildAdsConfigWithConsent, disabledAds } from './ad-targeting-youtube';
16
17
  export type { AdsConfig, AdsConfigBasic, AdsConfigDisabled, AdTargetingBuilder, CustomParams, } from './types';
17
18
  export * as constants from './constants';
package/dist/cjs/index.js CHANGED
@@ -2,7 +2,11 @@
2
2
  /* istanbul ignore file -- there's no point check this for test coverage */
3
3
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
4
  if (k2 === undefined) k2 = k;
5
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
6
10
  }) : (function(o, m, k, k2) {
7
11
  if (k2 === undefined) k2 = k;
8
12
  o[k2] = m[k];
@@ -20,7 +24,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
20
24
  return result;
21
25
  };
22
26
  Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.pickTargetingValues = exports.getViewportTargeting = exports.getSharedTargeting = exports.getSessionTargeting = exports.getPersonalisedTargeting = exports.getContentTargeting = exports.constants = exports.disabledAds = exports.buildAdsConfigWithConsent = exports.initTrackScrollDepth = exports.getPermutivePFPSegments = exports.getPermutiveSegments = exports.clearPermutiveSegments = exports.isAdBlockInUse = exports.sizeMappings = exports.getAdSize = exports.adSizes = exports.initCommercialMetrics = exports.bypassCommercialMetricsSampling = exports.EventTimer = exports.remarketing = exports.inizio = exports.twitter = exports.fbPixel = exports.permutive = exports.ias = void 0;
27
+ exports.pickTargetingValues = exports.getViewportTargeting = exports.getSharedTargeting = exports.getSessionTargeting = exports.getPersonalisedTargeting = exports.getContentTargeting = exports.constants = exports.disabledAds = exports.buildAdsConfigWithConsent = exports.initTrackGpcSignal = exports.initTrackScrollDepth = exports.getPermutivePFPSegments = exports.getPermutiveSegments = exports.clearPermutiveSegments = exports.isAdBlockInUse = exports.sizeMappings = exports.getAdSize = exports.adSizes = exports.initCommercialMetrics = exports.bypassCommercialMetricsSampling = exports.EventTimer = exports.remarketing = exports.inizio = exports.twitter = exports.fbPixel = exports.permutive = exports.ias = void 0;
24
28
  var ias_1 = require("./third-party-tags/ias");
25
29
  Object.defineProperty(exports, "ias", { enumerable: true, get: function () { return ias_1.ias; } });
26
30
  var permutive_1 = require("./third-party-tags/permutive");
@@ -50,6 +54,8 @@ Object.defineProperty(exports, "getPermutiveSegments", { enumerable: true, get:
50
54
  Object.defineProperty(exports, "getPermutivePFPSegments", { enumerable: true, get: function () { return permutive_2.getPermutivePFPSegments; } });
51
55
  var track_scroll_depth_1 = require("./track-scroll-depth");
52
56
  Object.defineProperty(exports, "initTrackScrollDepth", { enumerable: true, get: function () { return track_scroll_depth_1.initTrackScrollDepth; } });
57
+ var track_gpc_signal_1 = require("./track-gpc-signal");
58
+ Object.defineProperty(exports, "initTrackGpcSignal", { enumerable: true, get: function () { return track_gpc_signal_1.initTrackGpcSignal; } });
53
59
  var ad_targeting_youtube_1 = require("./ad-targeting-youtube");
54
60
  Object.defineProperty(exports, "buildAdsConfigWithConsent", { enumerable: true, get: function () { return ad_targeting_youtube_1.buildAdsConfigWithConsent; } });
55
61
  Object.defineProperty(exports, "disabledAds", { enumerable: true, get: function () { return ad_targeting_youtube_1.disabledAds; } });
@@ -0,0 +1,7 @@
1
+ import type { ConsentState } from '@guardian/consent-management-platform/dist/types';
2
+ /**
3
+ * Collect metrics on gpcSignal presence and value
4
+ * https://globalprivacycontrol.github.io/gpc-spec/
5
+ */
6
+ declare const initTrackGpcSignal: (consentState: ConsentState) => void;
7
+ export { initTrackGpcSignal };
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initTrackGpcSignal = void 0;
4
+ const libs_1 = require("@guardian/libs");
5
+ const event_timer_1 = require("./event-timer");
6
+ /**
7
+ * Collect metrics on gpcSignal presence and value
8
+ * https://globalprivacycontrol.github.io/gpc-spec/
9
+ */
10
+ const initTrackGpcSignal = (consentState) => {
11
+ // If undefined we set the property value to -1, false is 0, true is 1
12
+ const gpcSignal = consentState.gpcSignal === undefined ? -1 : +consentState.gpcSignal;
13
+ const eventTimer = event_timer_1.EventTimer.get();
14
+ (0, libs_1.log)('commercial', `gpcSignal ${gpcSignal}`);
15
+ eventTimer.setProperty('gpcSignal', gpcSignal);
16
+ };
17
+ exports.initTrackGpcSignal = initTrackGpcSignal;
@@ -30,6 +30,7 @@ interface EventTimerProperties {
30
30
  adSlotsInline?: number;
31
31
  adSlotsTotal?: number;
32
32
  pageHeightVH?: number;
33
+ gpcSignal?: number;
33
34
  lazyLoadMarginPercent?: number;
34
35
  }
35
36
  export declare class EventTimer {
@@ -71,7 +72,7 @@ export declare class EventTimer {
71
72
  * @param {string} name - the property's name
72
73
  * @param {value} number - the property's value
73
74
  */
74
- setProperty(name: 'adSlotsInline' | 'adSlotsTotal' | 'pageHeightVH' | 'lazyLoadMarginPercent', value: number): void;
75
+ setProperty(name: 'adSlotsInline' | 'adSlotsTotal' | 'pageHeightVH' | 'gpcSignal' | 'lazyLoadMarginPercent', value: number): void;
75
76
  /**
76
77
  * Creates a new performance mark
77
78
  * For slot events also ensures each TYPE of event event is marked only once for 'first'
@@ -12,6 +12,7 @@ export type { SizeKeys, AdSizeString, AdSize } from './ad-sizes';
12
12
  export { isAdBlockInUse } from './detect-ad-blocker';
13
13
  export { clearPermutiveSegments, getPermutiveSegments, getPermutivePFPSegments, } from './permutive';
14
14
  export { initTrackScrollDepth } from './track-scroll-depth';
15
+ export { initTrackGpcSignal } from './track-gpc-signal';
15
16
  export { buildAdsConfigWithConsent, disabledAds } from './ad-targeting-youtube';
16
17
  export type { AdsConfig, AdsConfigBasic, AdsConfigDisabled, AdTargetingBuilder, CustomParams, } from './types';
17
18
  export * as constants from './constants';
package/dist/esm/index.js CHANGED
@@ -11,6 +11,7 @@ export { adSizes, getAdSize, sizeMappings } from './ad-sizes';
11
11
  export { isAdBlockInUse } from './detect-ad-blocker';
12
12
  export { clearPermutiveSegments, getPermutiveSegments, getPermutivePFPSegments, } from './permutive';
13
13
  export { initTrackScrollDepth } from './track-scroll-depth';
14
+ export { initTrackGpcSignal } from './track-gpc-signal';
14
15
  export { buildAdsConfigWithConsent, disabledAds } from './ad-targeting-youtube';
15
16
  import * as constants_1 from './constants';
16
17
  export { constants_1 as constants };
@@ -0,0 +1,7 @@
1
+ import type { ConsentState } from '@guardian/consent-management-platform/dist/types';
2
+ /**
3
+ * Collect metrics on gpcSignal presence and value
4
+ * https://globalprivacycontrol.github.io/gpc-spec/
5
+ */
6
+ declare const initTrackGpcSignal: (consentState: ConsentState) => void;
7
+ export { initTrackGpcSignal };
@@ -0,0 +1,14 @@
1
+ import { log } from '@guardian/libs';
2
+ import { EventTimer } from './event-timer';
3
+ /**
4
+ * Collect metrics on gpcSignal presence and value
5
+ * https://globalprivacycontrol.github.io/gpc-spec/
6
+ */
7
+ const initTrackGpcSignal = (consentState) => {
8
+ // If undefined we set the property value to -1, false is 0, true is 1
9
+ const gpcSignal = consentState.gpcSignal === undefined ? -1 : +consentState.gpcSignal;
10
+ const eventTimer = EventTimer.get();
11
+ log('commercial', `gpcSignal ${gpcSignal}`);
12
+ eventTimer.setProperty('gpcSignal', gpcSignal);
13
+ };
14
+ export { initTrackGpcSignal };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guardian/commercial-core",
3
- "version": "3.4.0",
3
+ "version": "3.5.0",
4
4
  "description": "Guardian advertising business logic",
5
5
  "homepage": "https://github.com/guardian/commercial-core#readme",
6
6
  "bugs": {
@@ -43,16 +43,16 @@
43
43
  "prettier": "@guardian/prettier",
44
44
  "devDependencies": {
45
45
  "@commitlint/cli": "^16.1.0",
46
- "@commitlint/config-conventional": "^16.0.0",
46
+ "@commitlint/config-conventional": "^17.0.0",
47
47
  "@guardian/ab-core": "^2.0.0",
48
- "@guardian/consent-management-platform": "^10.5.0",
48
+ "@guardian/consent-management-platform": "^10.6.0",
49
49
  "@guardian/eslint-config-typescript": "^1.0.0",
50
- "@guardian/libs": "3.6.1",
51
- "@guardian/prettier": "^0.7.0",
50
+ "@guardian/libs": "5.1.0",
51
+ "@guardian/prettier": "^1.0.0",
52
52
  "@octokit/core": "^3.5.1",
53
53
  "@semantic-release/github": "^8.0.2",
54
54
  "@types/google.analytics": "^0.0.42",
55
- "@types/googletag": "^1.1.4",
55
+ "@types/googletag": "^2.0.0",
56
56
  "@types/jest": "^27.0.3",
57
57
  "@typescript-eslint/eslint-plugin": "^5.5.0",
58
58
  "@typescript-eslint/parser": "^5.5.0",
@@ -63,15 +63,15 @@
63
63
  "eslint-config-prettier": "^8.3.0",
64
64
  "eslint-plugin-eslint-comments": "^3.2.0",
65
65
  "eslint-plugin-import": "^2.25.3",
66
- "eslint-plugin-jest": "^25.3.0",
66
+ "eslint-plugin-jest": "^26.1.5",
67
67
  "eslint-plugin-prettier": "^4.0.0",
68
- "husky": "^7.0.4",
68
+ "husky": "^8.0.1",
69
69
  "jest": "^27.4.1",
70
70
  "lint-staged": "^12.1.2",
71
71
  "mockdate": "^3.0.5",
72
72
  "npm-run-all": "^4.1.5",
73
73
  "prettier": "^2.5.0",
74
- "semantic-release": "^18.0.1",
74
+ "semantic-release": "^19.0.2",
75
75
  "ts-jest": "^27.0.7",
76
76
  "type-fest": "^2.8.0",
77
77
  "typescript": "^4.5.2",