@financial-times/cmp-client 6.0.0 → 6.0.2

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/README.md CHANGED
@@ -19,6 +19,12 @@ Install as a \<script> tag (**recommended**):
19
19
  <script async src="https://consent-notice.ft.com/cmp.js"></script>
20
20
  ```
21
21
 
22
+ To enable development branch previews (recommended), set the script referrer policy as follows:
23
+
24
+ ```copy
25
+ <script async src="https://consent-notice.ft.com/cmp.js" referrerpolicy="no-referrer-when-downgrade"></script>
26
+ ```
27
+
22
28
  Install the library from NPM:
23
29
 
24
30
  ```copy
@@ -276,6 +282,11 @@ Visit https://localhost:5173 (see setup details in `src/examples/cmp-client`) to
276
282
 
277
283
  > For resetting your consent cookies/record and other common troubleshooting issues, see the [Troubleshooting Guide](./docs/troubleshooting.md)
278
284
 
285
+ ### Branch previews
286
+
287
+ You can also preview changes on your branch in a consuming app that uses the static loader script and is configured as described above. Append a `cmp_preview` query param as follows with its value set to the first seven digits of the branch's commit hash. This can easily be obtained in a Git-based VCS UI or using `git rev-parse --short HEAD`. And then appended as:
288
+ `https://ft.com?cmp_preview=<SHORT_COMMIT_SHA>`
289
+
279
290
  #### Resources
280
291
 
281
292
  For a detailed deep-dive (internal only) of how the static deployment process works, the design is [documented here](https://financialtimes.atlassian.net/wiki/spaces/ADS/pages/8293711881/How+the+CMP+static+loader+works). If you need to be granted access, please reach out to the Ads & Privacy team.
package/dist/index.cjs CHANGED
@@ -211,12 +211,102 @@ const TNW = {
211
211
  rootDomain: "thenextweb.com"
212
212
  }
213
213
  };
214
+ const INVISSO = {
215
+ ...defaults,
216
+ accountId: 1906,
217
+ baseEndpoint: "https://consent-manager.invisso.org",
218
+ propertyId: 38851,
219
+ _clientOptions: {
220
+ rootDomain: "invisso.org"
221
+ }
222
+ };
223
+ const INV_ABSEAST = {
224
+ ...defaults,
225
+ accountId: 1906,
226
+ baseEndpoint: "https://consent-manager.abseast.com",
227
+ propertyId: 38888,
228
+ _clientOptions: {
229
+ rootDomain: "abseast.com"
230
+ }
231
+ };
232
+ const INV_ABSASIA = {
233
+ ...defaults,
234
+ accountId: 1906,
235
+ baseEndpoint: "https://consent-manager.absasia.org",
236
+ propertyId: 38887,
237
+ _clientOptions: {
238
+ rootDomain: "absasia.org"
239
+ }
240
+ };
241
+ const INV_GLOBAL_COVERED_BONDS = {
242
+ ...defaults,
243
+ accountId: 1906,
244
+ baseEndpoint: "https://consent-manager.globalcoveredbonds.com",
245
+ propertyId: 38886,
246
+ _clientOptions: {
247
+ rootDomain: "globalcoveredbonds.com"
248
+ }
249
+ };
250
+ const INV_GLOBAL_BORROWERS = {
251
+ ...defaults,
252
+ accountId: 1906,
253
+ baseEndpoint: "https://consent-manager.globalborrowers.com",
254
+ propertyId: 38885,
255
+ _clientOptions: {
256
+ rootDomain: "globalborrowers.com"
257
+ }
258
+ };
259
+ const INV_GLOBAL_ABS = {
260
+ ...defaults,
261
+ accountId: 1906,
262
+ baseEndpoint: "https://consent-manager.globalabs.org",
263
+ propertyId: 38884,
264
+ _clientOptions: {
265
+ rootDomain: "globalabs.org"
266
+ }
267
+ };
268
+ const INV_CREDITRISK_TRANSFER = {
269
+ ...defaults,
270
+ accountId: 1906,
271
+ baseEndpoint: "https://consent-manager.creditrisk-transfer.com",
272
+ propertyId: 38883,
273
+ _clientOptions: {
274
+ rootDomain: "creditrisk-transfer.com"
275
+ }
276
+ };
277
+ const SIGRISK_TRANSFER = {
278
+ ...defaults,
279
+ accountId: 1906,
280
+ baseEndpoint: "https://consent-manager.significantrisktransfer.com",
281
+ propertyId: 38882,
282
+ _clientOptions: {
283
+ rootDomain: "significantrisktransfer.com"
284
+ }
285
+ };
286
+ const INV_CEE_FORUM = {
287
+ ...defaults,
288
+ accountId: 1906,
289
+ baseEndpoint: "https://consent-manager.theceeforum.com",
290
+ propertyId: 38882,
291
+ _clientOptions: {
292
+ rootDomain: "theceeforum.com"
293
+ }
294
+ };
214
295
  const properties = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
215
296
  __proto__: null,
216
297
  FT_DOTCOM_PROD,
217
298
  FT_DOTCOM_TEST,
299
+ INVISSO,
300
+ INV_ABSASIA,
301
+ INV_ABSEAST,
302
+ INV_CEE_FORUM,
303
+ INV_CREDITRISK_TRANSFER,
304
+ INV_GLOBAL_ABS,
305
+ INV_GLOBAL_BORROWERS,
306
+ INV_GLOBAL_COVERED_BONDS,
218
307
  MM_IGNITES_ASIA,
219
308
  MM_IGNITES_EUROPE,
309
+ SIGRISK_TRANSFER,
220
310
  SP_BANKING_RR,
221
311
  SP_CELEBRATION_OF_INVESTMENT,
222
312
  SP_FDI_INTELLIGENCE,
@@ -912,7 +1002,7 @@ function setupPmTracking(trackingProps, cmpBaseEndpoint) {
912
1002
  false
913
1003
  );
914
1004
  }
915
- const version = "6.0.0";
1005
+ const version = "6.0.2";
916
1006
  async function initSourcepointCmp(options) {
917
1007
  const {
918
1008
  useFTSession = true,
package/dist/index.js CHANGED
@@ -209,12 +209,102 @@ const TNW = {
209
209
  rootDomain: "thenextweb.com"
210
210
  }
211
211
  };
212
+ const INVISSO = {
213
+ ...defaults,
214
+ accountId: 1906,
215
+ baseEndpoint: "https://consent-manager.invisso.org",
216
+ propertyId: 38851,
217
+ _clientOptions: {
218
+ rootDomain: "invisso.org"
219
+ }
220
+ };
221
+ const INV_ABSEAST = {
222
+ ...defaults,
223
+ accountId: 1906,
224
+ baseEndpoint: "https://consent-manager.abseast.com",
225
+ propertyId: 38888,
226
+ _clientOptions: {
227
+ rootDomain: "abseast.com"
228
+ }
229
+ };
230
+ const INV_ABSASIA = {
231
+ ...defaults,
232
+ accountId: 1906,
233
+ baseEndpoint: "https://consent-manager.absasia.org",
234
+ propertyId: 38887,
235
+ _clientOptions: {
236
+ rootDomain: "absasia.org"
237
+ }
238
+ };
239
+ const INV_GLOBAL_COVERED_BONDS = {
240
+ ...defaults,
241
+ accountId: 1906,
242
+ baseEndpoint: "https://consent-manager.globalcoveredbonds.com",
243
+ propertyId: 38886,
244
+ _clientOptions: {
245
+ rootDomain: "globalcoveredbonds.com"
246
+ }
247
+ };
248
+ const INV_GLOBAL_BORROWERS = {
249
+ ...defaults,
250
+ accountId: 1906,
251
+ baseEndpoint: "https://consent-manager.globalborrowers.com",
252
+ propertyId: 38885,
253
+ _clientOptions: {
254
+ rootDomain: "globalborrowers.com"
255
+ }
256
+ };
257
+ const INV_GLOBAL_ABS = {
258
+ ...defaults,
259
+ accountId: 1906,
260
+ baseEndpoint: "https://consent-manager.globalabs.org",
261
+ propertyId: 38884,
262
+ _clientOptions: {
263
+ rootDomain: "globalabs.org"
264
+ }
265
+ };
266
+ const INV_CREDITRISK_TRANSFER = {
267
+ ...defaults,
268
+ accountId: 1906,
269
+ baseEndpoint: "https://consent-manager.creditrisk-transfer.com",
270
+ propertyId: 38883,
271
+ _clientOptions: {
272
+ rootDomain: "creditrisk-transfer.com"
273
+ }
274
+ };
275
+ const SIGRISK_TRANSFER = {
276
+ ...defaults,
277
+ accountId: 1906,
278
+ baseEndpoint: "https://consent-manager.significantrisktransfer.com",
279
+ propertyId: 38882,
280
+ _clientOptions: {
281
+ rootDomain: "significantrisktransfer.com"
282
+ }
283
+ };
284
+ const INV_CEE_FORUM = {
285
+ ...defaults,
286
+ accountId: 1906,
287
+ baseEndpoint: "https://consent-manager.theceeforum.com",
288
+ propertyId: 38882,
289
+ _clientOptions: {
290
+ rootDomain: "theceeforum.com"
291
+ }
292
+ };
212
293
  const properties = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
213
294
  __proto__: null,
214
295
  FT_DOTCOM_PROD,
215
296
  FT_DOTCOM_TEST,
297
+ INVISSO,
298
+ INV_ABSASIA,
299
+ INV_ABSEAST,
300
+ INV_CEE_FORUM,
301
+ INV_CREDITRISK_TRANSFER,
302
+ INV_GLOBAL_ABS,
303
+ INV_GLOBAL_BORROWERS,
304
+ INV_GLOBAL_COVERED_BONDS,
216
305
  MM_IGNITES_ASIA,
217
306
  MM_IGNITES_EUROPE,
307
+ SIGRISK_TRANSFER,
218
308
  SP_BANKING_RR,
219
309
  SP_CELEBRATION_OF_INVESTMENT,
220
310
  SP_FDI_INTELLIGENCE,
@@ -910,7 +1000,7 @@ function setupPmTracking(trackingProps, cmpBaseEndpoint) {
910
1000
  false
911
1001
  );
912
1002
  }
913
- const version = "6.0.0";
1003
+ const version = "6.0.2";
914
1004
  async function initSourcepointCmp(options) {
915
1005
  const {
916
1006
  useFTSession = true,
@@ -1,2 +1,2 @@
1
- (function(){"use strict";const V=(t,{credentials:e="omit"}={})=>fetch(`https://session-next.ft.com${t}`,{credentials:e,useCorsProxy:!0}).then(n=>n.ok?n.json():n.text().then(o=>{throw new Error(`Next session responded with "${o}" (${n.status})`)})).catch(n=>{document.body.dispatchEvent(new CustomEvent("oErrors.log",{bubbles:!0,detail:{error:n,info:{component:"next-session-client"}}}))});let _={};const S=(t,e)=>{if(typeof t=="object"){_=t;return}if(typeof t=="string"&&typeof e=="string"){_[t]=e;return}if(typeof t=="string"&&typeof e>"u")return _[t]||null;if(typeof t>"u"&&typeof e>"u")return _;throw new Error("Invalid arguments")};S.clear=()=>{_={}};const y={},x=()=>{const[,t]=/FTSession_s=([^;]+)/.exec(document.cookie)||[];return t},j=()=>{const t=S("uuid");if(t)return Promise.resolve({uuid:t});const e=x();return e?(y.uuid||(y.uuid=V(`/sessions/s/${e}`).then(({uuid:n}={})=>(delete y.uuid,n&&S("uuid",n),{uuid:n}))),y.uuid):Promise.resolve({uuid:void 0})},T="sourcepoint-cmp",H="FTPINK",q="FTConsent",G="sourcepointCmp/VngD.XycZut.595cp9fWdp5XYP9vlFvk",W=".ft.com",$="https://consent.ft.com",k={permutiveAds:{purposes:[2,4,8,9],iabVendors:[361],customVendors:[],specialFeatures:[]},demographicAds:{purposes:[7,9,10],iabVendors:[],customVendors:[],specialFeatures:[]},behaviouralAds:{purposes:[2,4,8,9],iabVendors:[],customVendors:[],specialFeatures:[]},programmaticAds:{purposes:[2],iabVendors:[],customVendors:[],specialFeatures:[]},personalisedMarketing:{purposes:[2,7,8,9,10],iabVendors:[],customVendors:[],specialFeatures:[]}},v=Object.keys(k),u={joinHref:!0,gdpr:{}},N={...u,accountId:1906,baseEndpoint:"https://consent-manager.ft.com",propertyHref:"https://local.ft.com",_clientOptions:{privacyManagerId:827767,manageCookiesLinkOverride:"ft.com/preferences/manage-cookies",rootDomain:"ft.com",includeUsNat:!0}},w={...u,accountId:1906,baseEndpoint:"https://consent-manager.ft.com",propertyId:31642,_clientOptions:{privacyManagerId:827767,usnatPrivacyManagerId:1143274,ccpaPrivacyManagerId:944882,manageCookiesLinkOverride:"ft.com/preferences/manage-cookies",rootDomain:"ft.com",includeUsNat:!0}},K={...u,accountId:1906,baseEndpoint:"https://consent-manager.pwmnet.com",propertyId:33414,_clientOptions:{rootDomain:"pwmnet.com"}},B={...u,accountId:1906,baseEndpoint:"https://consent-manager.fdiintelligence.com",propertyId:34061,_clientOptions:{rootDomain:"fdiintelligence.com"}},J={...u,accountId:1906,baseEndpoint:"https://consent-manager.thebanker.com",propertyId:34060,_clientOptions:{rootDomain:"thebanker.com"}},X={...u,accountId:1906,baseEndpoint:"https://consent-manager.bankingriskandregulation.com",propertyId:34059,_clientOptions:{rootDomain:"bankingriskandregulation.com"}},Y={...u,accountId:1906,baseEndpoint:"https://consent-manager.sustainableviews.com",propertyId:34058,_clientOptions:{rootDomain:"sustainableviews.com"}},z={...u,accountId:1906,baseEndpoint:"https://consent-manager.ftadviser.com",propertyId:33416,_clientOptions:{rootDomain:"ftadviser.com"}},Z={...u,accountId:1906,baseEndpoint:"https://consent-manager.investorschronicle.co.uk",propertyId:33415,_clientOptions:{rootDomain:"investorschronicle.co.uk"}},Q={...u,accountId:1906,baseEndpoint:"https://cdn.privacy-mgmt.com",propertyId:33947,_clientOptions:{rootDomain:"ignitesasia.com"}},tt={...u,accountId:1906,baseEndpoint:"https://cdn.privacy-mgmt.com",propertyId:33946,_clientOptions:{rootDomain:"igniteseurope.com"}},et={...u,accountId:1906,baseEndpoint:"https://consent-manager.mandatewire.com",propertyId:35490,_clientOptions:{rootDomain:"mandatewire.com"}},nt={...u,accountId:1906,baseEndpoint:"https://consent-manager.ftlocations.com",propertyId:37407,_clientOptions:{rootDomain:"ftlocations.com",cookieDomain:".ftlocations.com",consentProxyHost:"https://consent.ftlocations.com"}},ot={...u,accountId:1906,baseEndpoint:"https://consent-manager.financialadviserserviceawards.com",propertyId:38297,_clientOptions:{rootDomain:"financialadviserserviceawards.com"}},st={...u,accountId:1906,baseEndpoint:"https://consent-manager.celebrationofinvestment.co.uk",propertyId:38296,_clientOptions:{rootDomain:"celebrationofinvestment.co.uk"}},at={...u,accountId:1906,baseEndpoint:"https://consent-manager.globalprivatebankingawards.com",propertyId:38295,_clientOptions:{rootDomain:"globalprivatebankingawards.com"}},it={...u,accountId:1906,baseEndpoint:"https://consent-manager.thenextweb.com",propertyId:37672,_clientOptions:{rootDomain:"thenextweb.com"}},rt=Object.freeze(Object.defineProperty({__proto__:null,FT_DOTCOM_PROD:w,FT_DOTCOM_TEST:N,MM_IGNITES_ASIA:Q,MM_IGNITES_EUROPE:tt,SP_BANKING_RR:X,SP_CELEBRATION_OF_INVESTMENT:st,SP_FDI_INTELLIGENCE:B,SP_FTA_SERVICE_AWARDS:ot,SP_FT_ADVISER:z,SP_FT_LOCATIONS:nt,SP_GLOBAL_PRIVATE_BANKING_AWARDS:at,SP_INVESTORS_CHRONICLE:Z,SP_MANDATE_WIRE:et,SP_PWMNET:K,SP_SUSTAINABLE_VIEWS:Y,SP_THE_BANKER:J,TNW:it},Symbol.toStringTag,{value:"Module"}));function P(t,e){const n=document.createElement("script");return n.dataset.cmpScript=t,n.innerHTML=e,n}function ct(t){const e=document.createElement("script");return e.src=t,e}const pt={cmpFrames:"https://consent-manager.ft.com/unified/wrapperMessagingWithoutDetection.js"},A={tcfStub:'"use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",r.title = "__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];if(!n.length)return o;"setGdprApplies"===n[0]?n.length>3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}();',gppStub:`window.__gpp_addFrame=function(e){if(!window.frames[e])if(document.body){var t=document.createElement("iframe");t.style.cssText="display:none",t.name=e,document.body.appendChild(t)}else window.setTimeout(window.__gpp_addFrame,10,e)},window.__gpp_stub=function(){var e=arguments;if(__gpp.queue=__gpp.queue||[],__gpp.events=__gpp.events||[],!e.length||1==e.length&&"queue"==e[0])return __gpp.queue;if(1==e.length&&"events"==e[0])return __gpp.events;var t=e[0],p=e.length>1?e[1]:null,s=e.length>2?e[2]:null;if("ping"===t)p({gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnat","8:uscav1","9:usvav1","10:uscov1","11:usutv1","12:usctv1"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}},!0);else if("addEventListener"===t){"lastId"in __gpp||(__gpp.lastId=0),__gpp.lastId++;var n=__gpp.lastId;__gpp.events.push({id:n,callback:p,parameter:s}),p({eventName:"listenerRegistered",listenerId:n,data:!0,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnat","8:uscav1","9:usvav1","10:uscov1","11:usutv1","12:usctv1"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else if("removeEventListener"===t){for(var a=!1,i=0;i<__gpp.events.length;i++)if(__gpp.events[i].id==s){__gpp.events.splice(i,1),a=!0;break}p({eventName:"listenerRemoved",listenerId:s,data:a,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnat","8:uscav1","9:usvav1","10:uscov1","11:usutv1","12:usctv1"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else"hasSection"===t?p(!1,!0):"getSection"===t||"getField"===t?p(null,!0):__gpp.queue.push([].slice.apply(e))},window.__gpp_msghandler=function(e){var t="string"==typeof e.data;try{var p=t?JSON.parse(e.data):e.data}catch(e){p=null}if("object"==typeof p&&null!==p&&"__gppCall"in p){var s=p.__gppCall;window.__gpp(s.command,(function(p,n){var a={__gppReturn:{returnValue:p,success:n,callId:s.callId}};e.source.postMessage(t?JSON.stringify(a):a,"*")}),"parameter"in s?s.parameter:null,"version"in s?s.version:"1.1")}},"__gpp"in window&&"function"==typeof window.__gpp||(window.__gpp=window.__gpp_stub,window.addEventListener("message",window.__gpp_msghandler,!1),window.__gpp_addFrame("__gppLocator"));
2
- `};function ut(t){const e=document.createDocumentFragment();return e.appendChild(P("tcf",A.tcfStub)),t.includeUsNat&&e.appendChild(P("gpp",A.gppStub)),e.appendChild(ct(pt.cmpFrames)),e}function dt(t,e){const{userId:n,includeUsNat:o}=e;return n&&(t.authId=n),o&&(t.usnat=t.usnat||{}),t}function lt(t,e){const{_clientOptions:n,...o}=t,s=dt(o,e);window._sp_={config:s},window._sp_queue??(window._sp_queue=[]),document.head.appendChild(ut(e))}function ft(t,e,n,{formOfWordsId:o,cookieDomain:s}){const r=Object.keys(t).reduce((c,i)=>(c[i]={onsite:{status:t[i],lbi:!1,source:T,fow:o}},c),{});return e?{setConsentCookie:!0,formOfWordsId:o,consentSource:T,cookieDomain:s,skipDuplicateUpdates:!n,data:r}:{data:r,cookieDomain:s}}const m={CALIFORNIA:"uscav1",US_NATIONAL:"usnat"},D={[m.CALIFORNIA]:{excludedCategories:{personalisedMarketing:!0}},[m.US_NATIONAL]:{excludedCategories:{personalisedMarketing:!0}}};function gt(t){const{applicableSections:e,supportedAPIs:n}=t,o=e[0];if(o===-1||typeof o>"u")return;const s=n.find(r=>r.startsWith(`${o}:`));return s==null?void 0:s.split(":")[1]}function mt(t){const{SaleOptOut:e,SharingOptOut:n,Gpc:o}=t,{excludedCategories:s}=D[m.CALIFORNIA],a=e!==1&&n!==1&&!o,r={};for(const c of v){if(c in s){r[c]=!0;continue}r[c]=a}return r}function _t(t){const{SaleOptOut:e,SharingOptOut:n,TargetedAdvertisingOptOut:o}=t,{excludedCategories:s}=D[m.US_NATIONAL],a=JSON.parse(localStorage.getItem("ft_sp_marketing_optout")||"{}"),r=e!==1&&n!==1&&o!==1,c={};for(const i of v){if(i in s){c[i]=!0;continue}c[i]=r}if(a.usnat)for(const i of v)c[i]=!1;return c}const yt={[m.CALIFORNIA]:mt,[m.US_NATIONAL]:_t};async function M(){return new Promise((t,e)=>{try{window.__gpp?window.__gpp("ping",t):e(new Error("GPP API is not available on page"))}catch(n){e(n)}})}async function vt(){const t=await M(),{parsedSections:e}=t,n=gt(t);if(!n||!e[n])throw new Error("GPP parser was called without an applicable section");const o=e[n],s=yt[n];if(!s||typeof s!="function")throw new Error(`No parser found for applicable GPP section: ${n}`);return s(o)}function wt(t,{purpose:e,vendor:n,specialFeatureOptins:o}){const s=k[t],a=s.purposes.every(i=>(e==null?void 0:e.consents[i])||(e==null?void 0:e.legitimateInterests[i])),r=s.iabVendors.every(i=>(n==null?void 0:n.consents[i])||(n==null?void 0:n.legitimateInterests[i])),c=s.specialFeatures.every(i=>(o==null?void 0:o[i])===!0);return a&&r&&c}async function L(){return new Promise((t,e)=>{try{window.__tcfapi?window.__tcfapi("addEventListener",2,t):e(new Error("TCF API is not available on page"))}catch(n){e(n)}})}async function It(){const t=await L(),e={};for(const n of v)e[n]=wt(n,t);return e}async function bt(t){const n={gdpr:It,usnat:vt}[t];if(!n)throw new Error("Unable to update user consent. Unsupported consent legislation.");return n()}function St(){const e=Object.fromEntries(document.cookie.split("; ").map(o=>o.split("=")))[q];if(!e)return{};const n=decodeURIComponent(e);return Object.fromEntries(n.split(",").map(o=>{const[s,a]=o.split(":");return[s,a==="on"]}))}function Ct(t,e){return Object.keys(t).some(o=>{const s=`${o.toLowerCase()}Onsite`;return t[o]!==e[s]})}function ht({userId:t,useConsentStore:e}){return!!t&&e===!0}function Ot(t,e){return t?`${e.consentProxyHost}/__consent/consent-record/${H}/${e.userId}?updateFtConsentCookie=true`:`${e.consentProxyHost}/__consent/consent-record-cookie?cookieDomain=${e.cookieDomain}`}const F={gdpr:!1,usnat:!1},C=Object.assign({},F);function R(t){C[t]=!0}function Et(t){return C[t]}function Tt(){Object.assign(C,F)}async function kt(t){return Et(t)?t==="gdpr"?(await L()).eventStatus==="useractioncomplete":t==="usnat"?(await M()).cmpDisplayStatus==="hidden":!1:!1}function Nt(){window.__tcfapi&&window.__tcfapi("addEventListener",2,t=>{t.eventStatus==="cmpuishown"&&R("gdpr")}),window.__gpp&&window.__gpp("addEventListener",({pingData:t})=>{t.cmpDisplayStatus==="visible"&&R("usnat")})}async function Pt(t,e){try{const n=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),credentials:"include"});n.ok||console.error("Unable to save consent preferences",n.status)}catch(n){console.error("An error occurred while saving consent",n)}}const At=()=>{document.dispatchEvent(new CustomEvent("onCmpConsentReady",{bubbles:!0}))};function Dt(t){return async function(n,o,s,a){if(At(),t.disableFTCookies||!t.includeUsNat&&n==="usnat")return;const r=a.applies?n:"gdpr";if(r!==n||!s)return;let c;try{c=await bt(r)}catch(b){console.error(b)}if(!c||!Ct(c,St()))return;const p=await kt(r),f=ht(t),d=Ot(f,t),g=ft(c,f,p,t);await Pt(d,g),p&&Tt(),document.dispatchEvent(new CustomEvent("oCookieMessage.act",{bubbles:!0}))}}const h="cookie-message",Mt="manage-cookies";let O=Object.freeze({activeComponent:h,messageId:0,privacyManagerId:0});function Lt(t){return typeof t=="object"&&t!==null&&t.constructor===Object&&Object.prototype.toString.call(t)==="[object Object]"}const Ft=()=>({...O}),E=t=>{if(!Lt(t)){console.error("Invalid state changes");return}O={...O,...t}},Rt=["adsDisableInternalCMP","pwm.cmp","messageSlotBottom"];function Ut(t,e){const n=Vt(t.flags);window._sp_queue=window._sp_queue??[],window._sp_queue.push(()=>{var o,s;for(const[a,r]of Object.entries(jt))(s=(o=window._sp_).addEventListener)==null||s.call(o,a,r({...t,flags:n}))}),Ht({...t,flags:n},e)}function Vt(t){const e={};return typeof t=="object"&&Rt.forEach(n=>{Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}),e}function xt(t){if(!t)return;const e=document.body,n=new CustomEvent("oTracking.event",{bubbles:!0,cancelable:!0,detail:t.detail});e.dispatchEvent(n)}function I({trackingProps:t,action:e,triggerAction:n}){let o;const s=Ft(),{product:a,app:r,flags:c}=t;s.activeComponent===h?o=s.messageId:o=s.privacyManagerId;const i={detail:{component:{id:o,name:s.activeComponent,type:"overlay",subtype:"cmp"},category:"component",action:e,...n&&{trigger_action:n},...a&&{product:a},...r&&{app:r},custom:[{cookie_toggle_flag:c}],url:window.document.location.href||null}};xt(i)}const jt={onMessageChoiceSelect:t=>(e,n,o)=>{const a={11:"accept_all",12:"manage_cookies",13:"reject_all"}[o];a&&I({trackingProps:t,action:"click",triggerAction:a})},onMessageReady:t=>()=>{I({trackingProps:t,action:"view"})},onMessageReceiveData:()=>(t,e)=>{const{messageId:n}=e;n&&E({messageId:n})},onError:t=>(e,n)=>{I({trackingProps:t,action:"error",triggerAction:n})},onPMCancel:()=>()=>{E({activeComponent:h})}};function Ht(t,e){window.addEventListener("message",function(n){if(n.origin!==e)return;const o={1:"save_and_close",11:"accept_all",13:"reject_all"},{data:{fromPM:s,actionType:a,messageId:r="0"}={}}=n;s&&(+r&&E({activeComponent:Mt,privacyManagerId:+r}),!(!a||!o[a])&&I({trackingProps:t,action:"click",triggerAction:o[a]}))},!1)}const qt="6.0.0";async function Gt(t){const{useFTSession:e=!0,consentProxyHost:n=$,cookieDomain:o=W,formOfWordsId:s=G,useConsentStore:a=!0,trackingContext:r={},disableFTCookies:c=!1,includeUsNat:i=!1}=t||{};let{propertyConfig:p=w,userId:f}=t||{};if(typeof window>"u"){console.error("The CMP client can only be initialised in a browser context");return}if(window.FT_CMP_CLIENT_VERSION=qt,!f&&e)try{const d=await j();f=d==null?void 0:d.uuid}catch(d){console.error(d)}p=Wt(p),lt(p,{userId:f,includeUsNat:i}),Nt(),window._sp_queue.push(()=>{var d,g;(g=(d=window._sp_)==null?void 0:d.addEventListener)==null||g.call(d,"onConsentReady",Dt({userId:f,consentProxyHost:n,cookieDomain:o,formOfWordsId:s,useConsentStore:a,disableFTCookies:c,includeUsNat:i}))}),Ut(r,p.baseEndpoint)}function Wt(t){if(!(t!=null&&t.accountId))throw new Error("Please pass a valid property config");return t.events&&(console.warn("[cmp-client] Passing an events map in the config is not supported and will be ignored. Please use window._sp_.addEventListener() to listen for events"),delete t.events),t}function U(t,e,n,o,s,a){const{text:r,onClick:c}=o[e],i=document.querySelectorAll(`a[href*="${a}"]`);for(const p of i)(n||t)&&(s.has(p)&&p.removeEventListener("click",s.get(p)),p.innerText=r,p.addEventListener("click",c),s.set(p,c))}function $t({_clientOptions:t}=w){const{privacyManagerId:e,ccpaPrivacyManagerId:n,usnatPrivacyManagerId:o,manageCookiesLinkOverride:s}=t??w._clientOptions,a={usnat:{text:"Do Not Sell My Personal Information",onClick:i=>{var p;i.preventDefault(),(p=window._sp_.usnat)==null||p.loadPrivacyManagerModal(o)}},ccpa:{text:"Do Not Sell My Personal Information",onClick:i=>{var p;i.preventDefault(),(p=window._sp_.ccpa)==null||p.loadPrivacyManagerModal(n)}},gdpr:{text:"Manage Cookies",onClick:i=>{var p;i.preventDefault(),(p=window._sp_.gdpr)==null||p.loadPrivacyManagerModal(e)}}},r=new Map,c=function(i,p,f,d){U(!1,i,d.applies,a,r,s),d.applies&&window._sp_queue.push(()=>{var g,b;(b=(g=window._sp_).removeEventListener)==null||b.call(g,"onConsentReady",c)})};U(!0,"gdpr",!1,a,r,s),window._sp_queue??(window._sp_queue=[]),window._sp_queue.push(()=>{var i,p;(p=(i=window._sp_).addEventListener)==null||p.call(i,"onConsentReady",c)})}function Kt(t){return t._clientOptions??{}}const Bt={"ft.com":Kt};function Jt(t){return new Promise((e,n)=>{const{rootDomain:o}=t._clientOptions||{};if(!o)return e({});const s=Bt[o];if(!s||typeof s!="function")return e({...t._clientOptions});const a=()=>{try{e(s(t))}catch(r){n(r)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",a):a()})}function Xt(t,e){if(!e||Number.isFinite(parseFloat(e))||!t.endsWith(e))return!1;const n=t.indexOf(e),o=t[n-1];return o==="."||o===void 0}function Yt(t){if(!t)throw new Error("Invalid hostname provided");let n=Object.values(rt).find(o=>{var a;if(o.propertyHref)return!1;const s=(a=o._clientOptions)==null?void 0:a.rootDomain;return s&&Xt(t,s)});return n??(n=N),n}const zt=new URL(window.location.href).hostname,l=Yt(zt);(async()=>{var t,e;try{const n=await Jt(l);Gt({propertyConfig:l,...n}),(t=l==null?void 0:l._clientOptions)!=null&&t.privacyManagerId&&((e=l==null?void 0:l._clientOptions)!=null&&e.manageCookiesLinkOverride)&&$t(l)}catch(n){console.error("Error: CMP package configure + initialise Sourcepoint failed.",n)}})()})();
1
+ (function(){"use strict";const U=(t,{credentials:e="omit"}={})=>fetch(`https://session-next.ft.com${t}`,{credentials:e,useCorsProxy:!0}).then(n=>n.ok?n.json():n.text().then(o=>{throw new Error(`Next session responded with "${o}" (${n.status})`)})).catch(n=>{document.body.dispatchEvent(new CustomEvent("oErrors.log",{bubbles:!0,detail:{error:n,info:{component:"next-session-client"}}}))});let _={};const S=(t,e)=>{if(typeof t=="object"){_=t;return}if(typeof t=="string"&&typeof e=="string"){_[t]=e;return}if(typeof t=="string"&&typeof e>"u")return _[t]||null;if(typeof t>"u"&&typeof e>"u")return _;throw new Error("Invalid arguments")};S.clear=()=>{_={}};const I={},x=()=>{const[,t]=/FTSession_s=([^;]+)/.exec(document.cookie)||[];return t},j=()=>{const t=S("uuid");if(t)return Promise.resolve({uuid:t});const e=x();return e?(I.uuid||(I.uuid=U(`/sessions/s/${e}`).then(({uuid:n}={})=>(delete I.uuid,n&&S("uuid",n),{uuid:n}))),I.uuid):Promise.resolve({uuid:void 0})},N="sourcepoint-cmp",H="FTPINK",G="FTConsent",q="sourcepointCmp/VngD.XycZut.595cp9fWdp5XYP9vlFvk",W=".ft.com",B="https://consent.ft.com",T={permutiveAds:{purposes:[2,4,8,9],iabVendors:[361],customVendors:[],specialFeatures:[]},demographicAds:{purposes:[7,9,10],iabVendors:[],customVendors:[],specialFeatures:[]},behaviouralAds:{purposes:[2,4,8,9],iabVendors:[],customVendors:[],specialFeatures:[]},programmaticAds:{purposes:[2],iabVendors:[],customVendors:[],specialFeatures:[]},personalisedMarketing:{purposes:[2,7,8,9,10],iabVendors:[],customVendors:[],specialFeatures:[]}},y=Object.keys(T),u={joinHref:!0,gdpr:{}},k={...u,accountId:1906,baseEndpoint:"https://consent-manager.ft.com",propertyHref:"https://local.ft.com",_clientOptions:{privacyManagerId:827767,manageCookiesLinkOverride:"ft.com/preferences/manage-cookies",rootDomain:"ft.com",includeUsNat:!0}},v={...u,accountId:1906,baseEndpoint:"https://consent-manager.ft.com",propertyId:31642,_clientOptions:{privacyManagerId:827767,usnatPrivacyManagerId:1143274,ccpaPrivacyManagerId:944882,manageCookiesLinkOverride:"ft.com/preferences/manage-cookies",rootDomain:"ft.com",includeUsNat:!0}},$={...u,accountId:1906,baseEndpoint:"https://consent-manager.pwmnet.com",propertyId:33414,_clientOptions:{rootDomain:"pwmnet.com"}},K={...u,accountId:1906,baseEndpoint:"https://consent-manager.fdiintelligence.com",propertyId:34061,_clientOptions:{rootDomain:"fdiintelligence.com"}},J={...u,accountId:1906,baseEndpoint:"https://consent-manager.thebanker.com",propertyId:34060,_clientOptions:{rootDomain:"thebanker.com"}},X={...u,accountId:1906,baseEndpoint:"https://consent-manager.bankingriskandregulation.com",propertyId:34059,_clientOptions:{rootDomain:"bankingriskandregulation.com"}},Y={...u,accountId:1906,baseEndpoint:"https://consent-manager.sustainableviews.com",propertyId:34058,_clientOptions:{rootDomain:"sustainableviews.com"}},z={...u,accountId:1906,baseEndpoint:"https://consent-manager.ftadviser.com",propertyId:33416,_clientOptions:{rootDomain:"ftadviser.com"}},Z={...u,accountId:1906,baseEndpoint:"https://consent-manager.investorschronicle.co.uk",propertyId:33415,_clientOptions:{rootDomain:"investorschronicle.co.uk"}},Q={...u,accountId:1906,baseEndpoint:"https://cdn.privacy-mgmt.com",propertyId:33947,_clientOptions:{rootDomain:"ignitesasia.com"}},tt={...u,accountId:1906,baseEndpoint:"https://cdn.privacy-mgmt.com",propertyId:33946,_clientOptions:{rootDomain:"igniteseurope.com"}},et={...u,accountId:1906,baseEndpoint:"https://consent-manager.mandatewire.com",propertyId:35490,_clientOptions:{rootDomain:"mandatewire.com"}},nt={...u,accountId:1906,baseEndpoint:"https://consent-manager.ftlocations.com",propertyId:37407,_clientOptions:{rootDomain:"ftlocations.com",cookieDomain:".ftlocations.com",consentProxyHost:"https://consent.ftlocations.com"}},ot={...u,accountId:1906,baseEndpoint:"https://consent-manager.financialadviserserviceawards.com",propertyId:38297,_clientOptions:{rootDomain:"financialadviserserviceawards.com"}},st={...u,accountId:1906,baseEndpoint:"https://consent-manager.celebrationofinvestment.co.uk",propertyId:38296,_clientOptions:{rootDomain:"celebrationofinvestment.co.uk"}},at={...u,accountId:1906,baseEndpoint:"https://consent-manager.globalprivatebankingawards.com",propertyId:38295,_clientOptions:{rootDomain:"globalprivatebankingawards.com"}},it={...u,accountId:1906,baseEndpoint:"https://consent-manager.thenextweb.com",propertyId:37672,_clientOptions:{rootDomain:"thenextweb.com"}},rt={...u,accountId:1906,baseEndpoint:"https://consent-manager.invisso.org",propertyId:38851,_clientOptions:{rootDomain:"invisso.org"}},ct={...u,accountId:1906,baseEndpoint:"https://consent-manager.abseast.com",propertyId:38888,_clientOptions:{rootDomain:"abseast.com"}},pt={...u,accountId:1906,baseEndpoint:"https://consent-manager.absasia.org",propertyId:38887,_clientOptions:{rootDomain:"absasia.org"}},ut={...u,accountId:1906,baseEndpoint:"https://consent-manager.globalcoveredbonds.com",propertyId:38886,_clientOptions:{rootDomain:"globalcoveredbonds.com"}},dt={...u,accountId:1906,baseEndpoint:"https://consent-manager.globalborrowers.com",propertyId:38885,_clientOptions:{rootDomain:"globalborrowers.com"}},lt={...u,accountId:1906,baseEndpoint:"https://consent-manager.globalabs.org",propertyId:38884,_clientOptions:{rootDomain:"globalabs.org"}},ft={...u,accountId:1906,baseEndpoint:"https://consent-manager.creditrisk-transfer.com",propertyId:38883,_clientOptions:{rootDomain:"creditrisk-transfer.com"}},gt={...u,accountId:1906,baseEndpoint:"https://consent-manager.significantrisktransfer.com",propertyId:38882,_clientOptions:{rootDomain:"significantrisktransfer.com"}},mt={...u,accountId:1906,baseEndpoint:"https://consent-manager.theceeforum.com",propertyId:38882,_clientOptions:{rootDomain:"theceeforum.com"}},_t=Object.freeze(Object.defineProperty({__proto__:null,FT_DOTCOM_PROD:v,FT_DOTCOM_TEST:k,INVISSO:rt,INV_ABSASIA:pt,INV_ABSEAST:ct,INV_CEE_FORUM:mt,INV_CREDITRISK_TRANSFER:ft,INV_GLOBAL_ABS:lt,INV_GLOBAL_BORROWERS:dt,INV_GLOBAL_COVERED_BONDS:ut,MM_IGNITES_ASIA:Q,MM_IGNITES_EUROPE:tt,SIGRISK_TRANSFER:gt,SP_BANKING_RR:X,SP_CELEBRATION_OF_INVESTMENT:st,SP_FDI_INTELLIGENCE:K,SP_FTA_SERVICE_AWARDS:ot,SP_FT_ADVISER:z,SP_FT_LOCATIONS:nt,SP_GLOBAL_PRIVATE_BANKING_AWARDS:at,SP_INVESTORS_CHRONICLE:Z,SP_MANDATE_WIRE:et,SP_PWMNET:$,SP_SUSTAINABLE_VIEWS:Y,SP_THE_BANKER:J,TNW:it},Symbol.toStringTag,{value:"Module"}));function A(t,e){const n=document.createElement("script");return n.dataset.cmpScript=t,n.innerHTML=e,n}function It(t){const e=document.createElement("script");return e.src=t,e}const yt={cmpFrames:"https://consent-manager.ft.com/unified/wrapperMessagingWithoutDetection.js"},P={tcfStub:'"use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",r.title = "__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];if(!n.length)return o;"setGdprApplies"===n[0]?n.length>3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}();',gppStub:`window.__gpp_addFrame=function(e){if(!window.frames[e])if(document.body){var t=document.createElement("iframe");t.style.cssText="display:none",t.name=e,document.body.appendChild(t)}else window.setTimeout(window.__gpp_addFrame,10,e)},window.__gpp_stub=function(){var e=arguments;if(__gpp.queue=__gpp.queue||[],__gpp.events=__gpp.events||[],!e.length||1==e.length&&"queue"==e[0])return __gpp.queue;if(1==e.length&&"events"==e[0])return __gpp.events;var t=e[0],p=e.length>1?e[1]:null,s=e.length>2?e[2]:null;if("ping"===t)p({gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnat","8:uscav1","9:usvav1","10:uscov1","11:usutv1","12:usctv1"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}},!0);else if("addEventListener"===t){"lastId"in __gpp||(__gpp.lastId=0),__gpp.lastId++;var n=__gpp.lastId;__gpp.events.push({id:n,callback:p,parameter:s}),p({eventName:"listenerRegistered",listenerId:n,data:!0,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnat","8:uscav1","9:usvav1","10:uscov1","11:usutv1","12:usctv1"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else if("removeEventListener"===t){for(var a=!1,i=0;i<__gpp.events.length;i++)if(__gpp.events[i].id==s){__gpp.events.splice(i,1),a=!0;break}p({eventName:"listenerRemoved",listenerId:s,data:a,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnat","8:uscav1","9:usvav1","10:uscov1","11:usutv1","12:usctv1"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else"hasSection"===t?p(!1,!0):"getSection"===t||"getField"===t?p(null,!0):__gpp.queue.push([].slice.apply(e))},window.__gpp_msghandler=function(e){var t="string"==typeof e.data;try{var p=t?JSON.parse(e.data):e.data}catch(e){p=null}if("object"==typeof p&&null!==p&&"__gppCall"in p){var s=p.__gppCall;window.__gpp(s.command,(function(p,n){var a={__gppReturn:{returnValue:p,success:n,callId:s.callId}};e.source.postMessage(t?JSON.stringify(a):a,"*")}),"parameter"in s?s.parameter:null,"version"in s?s.version:"1.1")}},"__gpp"in window&&"function"==typeof window.__gpp||(window.__gpp=window.__gpp_stub,window.addEventListener("message",window.__gpp_msghandler,!1),window.__gpp_addFrame("__gppLocator"));
2
+ `};function vt(t){const e=document.createDocumentFragment();return e.appendChild(A("tcf",P.tcfStub)),t.includeUsNat&&e.appendChild(A("gpp",P.gppStub)),e.appendChild(It(yt.cmpFrames)),e}function bt(t,e){const{userId:n,includeUsNat:o}=e;return n&&(t.authId=n),o&&(t.usnat=t.usnat||{}),t}function wt(t,e){const{_clientOptions:n,...o}=t,s=bt(o,e);window._sp_={config:s},window._sp_queue??(window._sp_queue=[]),document.head.appendChild(vt(e))}function St(t,e,n,{formOfWordsId:o,cookieDomain:s}){const r=Object.keys(t).reduce((c,i)=>(c[i]={onsite:{status:t[i],lbi:!1,source:N,fow:o}},c),{});return e?{setConsentCookie:!0,formOfWordsId:o,consentSource:N,cookieDomain:s,skipDuplicateUpdates:!n,data:r}:{data:r,cookieDomain:s}}const m={CALIFORNIA:"uscav1",US_NATIONAL:"usnat"},D={[m.CALIFORNIA]:{excludedCategories:{personalisedMarketing:!0}},[m.US_NATIONAL]:{excludedCategories:{personalisedMarketing:!0}}};function ht(t){const{applicableSections:e,supportedAPIs:n}=t,o=e[0];if(o===-1||typeof o>"u")return;const s=n.find(r=>r.startsWith(`${o}:`));return s==null?void 0:s.split(":")[1]}function Ot(t){const{SaleOptOut:e,SharingOptOut:n,Gpc:o}=t,{excludedCategories:s}=D[m.CALIFORNIA],a=e!==1&&n!==1&&!o,r={};for(const c of y){if(c in s){r[c]=!0;continue}r[c]=a}return r}function Ct(t){const{SaleOptOut:e,SharingOptOut:n,TargetedAdvertisingOptOut:o}=t,{excludedCategories:s}=D[m.US_NATIONAL],a=JSON.parse(localStorage.getItem("ft_sp_marketing_optout")||"{}"),r=e!==1&&n!==1&&o!==1,c={};for(const i of y){if(i in s){c[i]=!0;continue}c[i]=r}if(a.usnat)for(const i of y)c[i]=!1;return c}const Et={[m.CALIFORNIA]:Ot,[m.US_NATIONAL]:Ct};async function L(){return new Promise((t,e)=>{try{window.__gpp?window.__gpp("ping",t):e(new Error("GPP API is not available on page"))}catch(n){e(n)}})}async function Nt(){const t=await L(),{parsedSections:e}=t,n=ht(t);if(!n||!e[n])throw new Error("GPP parser was called without an applicable section");const o=e[n],s=Et[n];if(!s||typeof s!="function")throw new Error(`No parser found for applicable GPP section: ${n}`);return s(o)}function Tt(t,{purpose:e,vendor:n,specialFeatureOptins:o}){const s=T[t],a=s.purposes.every(i=>(e==null?void 0:e.consents[i])||(e==null?void 0:e.legitimateInterests[i])),r=s.iabVendors.every(i=>(n==null?void 0:n.consents[i])||(n==null?void 0:n.legitimateInterests[i])),c=s.specialFeatures.every(i=>(o==null?void 0:o[i])===!0);return a&&r&&c}async function M(){return new Promise((t,e)=>{try{window.__tcfapi?window.__tcfapi("addEventListener",2,t):e(new Error("TCF API is not available on page"))}catch(n){e(n)}})}async function kt(){const t=await M(),e={};for(const n of y)e[n]=Tt(n,t);return e}async function At(t){const n={gdpr:kt,usnat:Nt}[t];if(!n)throw new Error("Unable to update user consent. Unsupported consent legislation.");return n()}function Pt(){const e=Object.fromEntries(document.cookie.split("; ").map(o=>o.split("=")))[G];if(!e)return{};const n=decodeURIComponent(e);return Object.fromEntries(n.split(",").map(o=>{const[s,a]=o.split(":");return[s,a==="on"]}))}function Dt(t,e){return Object.keys(t).some(o=>{const s=`${o.toLowerCase()}Onsite`;return t[o]!==e[s]})}function Lt({userId:t,useConsentStore:e}){return!!t&&e===!0}function Mt(t,e){return t?`${e.consentProxyHost}/__consent/consent-record/${H}/${e.userId}?updateFtConsentCookie=true`:`${e.consentProxyHost}/__consent/consent-record-cookie?cookieDomain=${e.cookieDomain}`}const R={gdpr:!1,usnat:!1},h=Object.assign({},R);function F(t){h[t]=!0}function Rt(t){return h[t]}function Ft(){Object.assign(h,R)}async function Vt(t){return Rt(t)?t==="gdpr"?(await M()).eventStatus==="useractioncomplete":t==="usnat"?(await L()).cmpDisplayStatus==="hidden":!1:!1}function Ut(){window.__tcfapi&&window.__tcfapi("addEventListener",2,t=>{t.eventStatus==="cmpuishown"&&F("gdpr")}),window.__gpp&&window.__gpp("addEventListener",({pingData:t})=>{t.cmpDisplayStatus==="visible"&&F("usnat")})}async function xt(t,e){try{const n=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),credentials:"include"});n.ok||console.error("Unable to save consent preferences",n.status)}catch(n){console.error("An error occurred while saving consent",n)}}const jt=()=>{document.dispatchEvent(new CustomEvent("onCmpConsentReady",{bubbles:!0}))};function Ht(t){return async function(n,o,s,a){if(jt(),t.disableFTCookies||!t.includeUsNat&&n==="usnat")return;const r=a.applies?n:"gdpr";if(r!==n||!s)return;let c;try{c=await At(r)}catch(w){console.error(w)}if(!c||!Dt(c,Pt()))return;const p=await Vt(r),f=Lt(t),d=Mt(f,t),g=St(c,f,p,t);await xt(d,g),p&&Ft(),document.dispatchEvent(new CustomEvent("oCookieMessage.act",{bubbles:!0}))}}const O="cookie-message",Gt="manage-cookies";let C=Object.freeze({activeComponent:O,messageId:0,privacyManagerId:0});function qt(t){return typeof t=="object"&&t!==null&&t.constructor===Object&&Object.prototype.toString.call(t)==="[object Object]"}const Wt=()=>({...C}),E=t=>{if(!qt(t)){console.error("Invalid state changes");return}C={...C,...t}},Bt=["adsDisableInternalCMP","pwm.cmp","messageSlotBottom"];function $t(t,e){const n=Kt(t.flags);window._sp_queue=window._sp_queue??[],window._sp_queue.push(()=>{var o,s;for(const[a,r]of Object.entries(Xt))(s=(o=window._sp_).addEventListener)==null||s.call(o,a,r({...t,flags:n}))}),Yt({...t,flags:n},e)}function Kt(t){const e={};return typeof t=="object"&&Bt.forEach(n=>{Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}),e}function Jt(t){if(!t)return;const e=document.body,n=new CustomEvent("oTracking.event",{bubbles:!0,cancelable:!0,detail:t.detail});e.dispatchEvent(n)}function b({trackingProps:t,action:e,triggerAction:n}){let o;const s=Wt(),{product:a,app:r,flags:c}=t;s.activeComponent===O?o=s.messageId:o=s.privacyManagerId;const i={detail:{component:{id:o,name:s.activeComponent,type:"overlay",subtype:"cmp"},category:"component",action:e,...n&&{trigger_action:n},...a&&{product:a},...r&&{app:r},custom:[{cookie_toggle_flag:c}],url:window.document.location.href||null}};Jt(i)}const Xt={onMessageChoiceSelect:t=>(e,n,o)=>{const a={11:"accept_all",12:"manage_cookies",13:"reject_all"}[o];a&&b({trackingProps:t,action:"click",triggerAction:a})},onMessageReady:t=>()=>{b({trackingProps:t,action:"view"})},onMessageReceiveData:()=>(t,e)=>{const{messageId:n}=e;n&&E({messageId:n})},onError:t=>(e,n)=>{b({trackingProps:t,action:"error",triggerAction:n})},onPMCancel:()=>()=>{E({activeComponent:O})}};function Yt(t,e){window.addEventListener("message",function(n){if(n.origin!==e)return;const o={1:"save_and_close",11:"accept_all",13:"reject_all"},{data:{fromPM:s,actionType:a,messageId:r="0"}={}}=n;s&&(+r&&E({activeComponent:Gt,privacyManagerId:+r}),!(!a||!o[a])&&b({trackingProps:t,action:"click",triggerAction:o[a]}))},!1)}const zt="6.0.2";async function Zt(t){const{useFTSession:e=!0,consentProxyHost:n=B,cookieDomain:o=W,formOfWordsId:s=q,useConsentStore:a=!0,trackingContext:r={},disableFTCookies:c=!1,includeUsNat:i=!1}=t||{};let{propertyConfig:p=v,userId:f}=t||{};if(typeof window>"u"){console.error("The CMP client can only be initialised in a browser context");return}if(window.FT_CMP_CLIENT_VERSION=zt,!f&&e)try{const d=await j();f=d==null?void 0:d.uuid}catch(d){console.error(d)}p=Qt(p),wt(p,{userId:f,includeUsNat:i}),Ut(),window._sp_queue.push(()=>{var d,g;(g=(d=window._sp_)==null?void 0:d.addEventListener)==null||g.call(d,"onConsentReady",Ht({userId:f,consentProxyHost:n,cookieDomain:o,formOfWordsId:s,useConsentStore:a,disableFTCookies:c,includeUsNat:i}))}),$t(r,p.baseEndpoint)}function Qt(t){if(!(t!=null&&t.accountId))throw new Error("Please pass a valid property config");return t.events&&(console.warn("[cmp-client] Passing an events map in the config is not supported and will be ignored. Please use window._sp_.addEventListener() to listen for events"),delete t.events),t}function V(t,e,n,o,s,a){const{text:r,onClick:c}=o[e],i=document.querySelectorAll(`a[href*="${a}"]`);for(const p of i)(n||t)&&(s.has(p)&&p.removeEventListener("click",s.get(p)),p.innerText=r,p.addEventListener("click",c),s.set(p,c))}function te({_clientOptions:t}=v){const{privacyManagerId:e,ccpaPrivacyManagerId:n,usnatPrivacyManagerId:o,manageCookiesLinkOverride:s}=t??v._clientOptions,a={usnat:{text:"Do Not Sell My Personal Information",onClick:i=>{var p;i.preventDefault(),(p=window._sp_.usnat)==null||p.loadPrivacyManagerModal(o)}},ccpa:{text:"Do Not Sell My Personal Information",onClick:i=>{var p;i.preventDefault(),(p=window._sp_.ccpa)==null||p.loadPrivacyManagerModal(n)}},gdpr:{text:"Manage Cookies",onClick:i=>{var p;i.preventDefault(),(p=window._sp_.gdpr)==null||p.loadPrivacyManagerModal(e)}}},r=new Map,c=function(i,p,f,d){V(!1,i,d.applies,a,r,s),d.applies&&window._sp_queue.push(()=>{var g,w;(w=(g=window._sp_).removeEventListener)==null||w.call(g,"onConsentReady",c)})};V(!0,"gdpr",!1,a,r,s),window._sp_queue??(window._sp_queue=[]),window._sp_queue.push(()=>{var i,p;(p=(i=window._sp_).addEventListener)==null||p.call(i,"onConsentReady",c)})}function ee(t){return t._clientOptions??{}}const ne={"ft.com":ee};function oe(t){return new Promise((e,n)=>{const{rootDomain:o}=t._clientOptions||{};if(!o)return e({});const s=ne[o];if(!s||typeof s!="function")return e({...t._clientOptions});const a=()=>{try{e(s(t))}catch(r){n(r)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",a):a()})}function se(t,e){if(!e||Number.isFinite(parseFloat(e))||!t.endsWith(e))return!1;const n=t.indexOf(e),o=t[n-1];return o==="."||o===void 0}function ae(t){if(!t)throw new Error("Invalid hostname provided");let n=Object.values(_t).find(o=>{var a;if(o.propertyHref)return!1;const s=(a=o._clientOptions)==null?void 0:a.rootDomain;return s&&se(t,s)});return n??(n=k),n}const ie=new URL(window.location.href).hostname,l=ae(ie);(async()=>{var t,e;try{const n=await oe(l);Zt({propertyConfig:l,...n}),(t=l==null?void 0:l._clientOptions)!=null&&t.privacyManagerId&&((e=l==null?void 0:l._clientOptions)!=null&&e.manageCookiesLinkOverride)&&te(l)}catch(n){console.error("Error: CMP package configure + initialise Sourcepoint failed.",n)}})()})();
@@ -183,4 +183,94 @@ export declare const TNW: {
183
183
  joinHref: boolean;
184
184
  gdpr: {};
185
185
  };
186
+ export declare const INVISSO: {
187
+ accountId: number;
188
+ baseEndpoint: string;
189
+ propertyId: number;
190
+ _clientOptions: {
191
+ rootDomain: string;
192
+ };
193
+ joinHref: boolean;
194
+ gdpr: {};
195
+ };
196
+ export declare const INV_ABSEAST: {
197
+ accountId: number;
198
+ baseEndpoint: string;
199
+ propertyId: number;
200
+ _clientOptions: {
201
+ rootDomain: string;
202
+ };
203
+ joinHref: boolean;
204
+ gdpr: {};
205
+ };
206
+ export declare const INV_ABSASIA: {
207
+ accountId: number;
208
+ baseEndpoint: string;
209
+ propertyId: number;
210
+ _clientOptions: {
211
+ rootDomain: string;
212
+ };
213
+ joinHref: boolean;
214
+ gdpr: {};
215
+ };
216
+ export declare const INV_GLOBAL_COVERED_BONDS: {
217
+ accountId: number;
218
+ baseEndpoint: string;
219
+ propertyId: number;
220
+ _clientOptions: {
221
+ rootDomain: string;
222
+ };
223
+ joinHref: boolean;
224
+ gdpr: {};
225
+ };
226
+ export declare const INV_GLOBAL_BORROWERS: {
227
+ accountId: number;
228
+ baseEndpoint: string;
229
+ propertyId: number;
230
+ _clientOptions: {
231
+ rootDomain: string;
232
+ };
233
+ joinHref: boolean;
234
+ gdpr: {};
235
+ };
236
+ export declare const INV_GLOBAL_ABS: {
237
+ accountId: number;
238
+ baseEndpoint: string;
239
+ propertyId: number;
240
+ _clientOptions: {
241
+ rootDomain: string;
242
+ };
243
+ joinHref: boolean;
244
+ gdpr: {};
245
+ };
246
+ export declare const INV_CREDITRISK_TRANSFER: {
247
+ accountId: number;
248
+ baseEndpoint: string;
249
+ propertyId: number;
250
+ _clientOptions: {
251
+ rootDomain: string;
252
+ };
253
+ joinHref: boolean;
254
+ gdpr: {};
255
+ };
256
+ export declare const SIGRISK_TRANSFER: {
257
+ accountId: number;
258
+ baseEndpoint: string;
259
+ propertyId: number;
260
+ _clientOptions: {
261
+ rootDomain: string;
262
+ };
263
+ joinHref: boolean;
264
+ gdpr: {};
265
+ };
266
+ export declare const INV_CEE_FORUM: {
267
+ accountId: number;
268
+ baseEndpoint: string;
269
+ propertyId: number;
270
+ _clientOptions: {
271
+ rootDomain: string;
272
+ };
273
+ joinHref: boolean;
274
+ gdpr: {};
275
+ };
186
276
  //# sourceMappingURL=properties.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../src/lib/properties.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;CAW1B,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAa1B,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;CAQrB,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;CAQ/B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;CAQzB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;CAQzB,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;CAQhC,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;CAQzB,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;CAQlC,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;CAQ3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;CAQ7B,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;CAQ3B,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;CAU3B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;CAQjC,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;CAQxC,CAAC;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;CAQ5C,CAAC;AAEF,eAAO,MAAM,GAAG;;;;;;;;;CAQf,CAAC"}
1
+ {"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../src/lib/properties.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;CAW1B,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAa1B,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;CAQrB,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;CAQ/B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;CAQzB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;CAQzB,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;CAQhC,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;CAQzB,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;CAQlC,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;CAQ3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;CAQ7B,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;CAQ3B,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;CAU3B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;CAQjC,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;CAQxC,CAAC;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;CAQ5C,CAAC;AAEF,eAAO,MAAM,GAAG;;;;;;;;;CAQf,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;;;CAQnB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;CAQvB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;CAQvB,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;CAQpC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;CAQhC,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;CAQ1B,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;CAQnC,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;CAQ5B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;CAQzB,CAAC"}
@@ -172,5 +172,86 @@ export declare function getPropertyConfigByHostname(hostname: string): {
172
172
  };
173
173
  joinHref: boolean;
174
174
  gdpr: {};
175
+ } | {
176
+ accountId: number;
177
+ baseEndpoint: string;
178
+ propertyId: number;
179
+ _clientOptions: {
180
+ rootDomain: string;
181
+ };
182
+ joinHref: boolean;
183
+ gdpr: {};
184
+ } | {
185
+ accountId: number;
186
+ baseEndpoint: string;
187
+ propertyId: number;
188
+ _clientOptions: {
189
+ rootDomain: string;
190
+ };
191
+ joinHref: boolean;
192
+ gdpr: {};
193
+ } | {
194
+ accountId: number;
195
+ baseEndpoint: string;
196
+ propertyId: number;
197
+ _clientOptions: {
198
+ rootDomain: string;
199
+ };
200
+ joinHref: boolean;
201
+ gdpr: {};
202
+ } | {
203
+ accountId: number;
204
+ baseEndpoint: string;
205
+ propertyId: number;
206
+ _clientOptions: {
207
+ rootDomain: string;
208
+ };
209
+ joinHref: boolean;
210
+ gdpr: {};
211
+ } | {
212
+ accountId: number;
213
+ baseEndpoint: string;
214
+ propertyId: number;
215
+ _clientOptions: {
216
+ rootDomain: string;
217
+ };
218
+ joinHref: boolean;
219
+ gdpr: {};
220
+ } | {
221
+ accountId: number;
222
+ baseEndpoint: string;
223
+ propertyId: number;
224
+ _clientOptions: {
225
+ rootDomain: string;
226
+ };
227
+ joinHref: boolean;
228
+ gdpr: {};
229
+ } | {
230
+ accountId: number;
231
+ baseEndpoint: string;
232
+ propertyId: number;
233
+ _clientOptions: {
234
+ rootDomain: string;
235
+ };
236
+ joinHref: boolean;
237
+ gdpr: {};
238
+ } | {
239
+ accountId: number;
240
+ baseEndpoint: string;
241
+ propertyId: number;
242
+ _clientOptions: {
243
+ rootDomain: string;
244
+ };
245
+ joinHref: boolean;
246
+ gdpr: {};
247
+ } | {
248
+ accountId: number;
249
+ baseEndpoint: string;
250
+ propertyId: number;
251
+ _clientOptions: {
252
+ rootDomain: string;
253
+ };
254
+ joinHref: boolean;
255
+ gdpr: {};
175
256
  };
176
257
  //# sourceMappingURL=url.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/utils/url.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAWtE;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiB3D"}
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/utils/url.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAWtE;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiB3D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@financial-times/cmp-client",
3
- "version": "6.0.0",
3
+ "version": "6.0.2",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "files": [