@financial-times/cmp-client 6.10.0 → 6.10.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/dist/index.cjs CHANGED
@@ -879,13 +879,12 @@ function consentReadyHandlerFn(props) {
879
879
  if (!props.includeUsNat && legislation === "usnat") {
880
880
  return;
881
881
  }
882
- const activeLegislation = consentMeta.applies ? legislation : "gdpr";
883
- if (activeLegislation !== legislation || !consentString) {
882
+ if (!consentMeta.applies || !consentString) {
884
883
  return;
885
884
  }
886
885
  let parsedConsent;
887
886
  try {
888
- parsedConsent = await getParsedConsent(activeLegislation);
887
+ parsedConsent = await getParsedConsent(legislation);
889
888
  } catch (error) {
890
889
  console.error(error);
891
890
  }
@@ -902,7 +901,7 @@ function consentReadyHandlerFn(props) {
902
901
  consentUpdateBehaviouralAds: parsedConsent.behaviouralAds,
903
902
  consentUpdateCookies: parsedConsent.cookies
904
903
  });
905
- const isUserInitiated = await isUserInitiatedUpdate(activeLegislation);
904
+ const isUserInitiated = await isUserInitiatedUpdate(legislation);
906
905
  const updateConsentStore = shouldUpdateConsentStore(props);
907
906
  const consentEndpoint = getConsentEndpoint(updateConsentStore, props);
908
907
  const payload = getConsentPayload(parsedConsent, updateConsentStore, isUserInitiated, props);
@@ -1083,7 +1082,7 @@ function setupFTConsentCookieAuditStorage() {
1083
1082
  localStorage.setItem("__lastFtc", ftConsentCookieValue);
1084
1083
  });
1085
1084
  }
1086
- const version = "6.10.0";
1085
+ const version = "6.10.2";
1087
1086
  async function initSourcepointCmp(options) {
1088
1087
  const {
1089
1088
  useFTSession = true,
package/dist/index.js CHANGED
@@ -877,13 +877,12 @@ function consentReadyHandlerFn(props) {
877
877
  if (!props.includeUsNat && legislation === "usnat") {
878
878
  return;
879
879
  }
880
- const activeLegislation = consentMeta.applies ? legislation : "gdpr";
881
- if (activeLegislation !== legislation || !consentString) {
880
+ if (!consentMeta.applies || !consentString) {
882
881
  return;
883
882
  }
884
883
  let parsedConsent;
885
884
  try {
886
- parsedConsent = await getParsedConsent(activeLegislation);
885
+ parsedConsent = await getParsedConsent(legislation);
887
886
  } catch (error) {
888
887
  console.error(error);
889
888
  }
@@ -900,7 +899,7 @@ function consentReadyHandlerFn(props) {
900
899
  consentUpdateBehaviouralAds: parsedConsent.behaviouralAds,
901
900
  consentUpdateCookies: parsedConsent.cookies
902
901
  });
903
- const isUserInitiated = await isUserInitiatedUpdate(activeLegislation);
902
+ const isUserInitiated = await isUserInitiatedUpdate(legislation);
904
903
  const updateConsentStore = shouldUpdateConsentStore(props);
905
904
  const consentEndpoint = getConsentEndpoint(updateConsentStore, props);
906
905
  const payload = getConsentPayload(parsedConsent, updateConsentStore, isUserInitiated, props);
@@ -1081,7 +1080,7 @@ function setupFTConsentCookieAuditStorage() {
1081
1080
  localStorage.setItem("__lastFtc", ftConsentCookieValue);
1082
1081
  });
1083
1082
  }
1084
- const version = "6.10.0";
1083
+ const version = "6.10.2";
1085
1084
  async function initSourcepointCmp(options) {
1086
1085
  const {
1087
1086
  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 I={};const h=(t,e)=>{if(typeof t=="object"){I=t;return}if(typeof t=="string"&&typeof e=="string"){I[t]=e;return}if(typeof t=="string"&&typeof e>"u")return I[t]||null;if(typeof t>"u"&&typeof e>"u")return I;throw new Error("Invalid arguments")};h.clear=()=>{I={}};const y={},x=()=>{const[,t]=/FTSession_s=([^;]+)/.exec(document.cookie)||[];return t},H=()=>{const t=h("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&&h("uuid",n),{uuid:n}))),y.uuid):Promise.resolve({uuid:void 0})},S="sourcepoint-cmp",j="FTPINK",G="FTConsent",q="sourcepointCmp/VngD.XycZut.595cp9fWdp5XYP9vlFvk",B=".ft.com",W="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,4,8,9],iabVendors:[],customVendors:[],specialFeatures:[]},personalisedMarketing:{purposes:[2,7,8,9,10],iabVendors:[],customVendors:[],specialFeatures:[]},cookies:{purposes:[1,2,3,4,7,8,9,10],iabVendors:[],customVendors:[],specialFeatures:[]}},b=Object.keys(k),u={joinHref:!0,gdpr:{}},T={...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",includeUsNat:!0}},K={...u,accountId:1906,baseEndpoint:"https://consent-manager.fdiintelligence.com",propertyId:34061,_clientOptions:{rootDomain:"fdiintelligence.com",includeUsNat:!0}},J={...u,accountId:1906,baseEndpoint:"https://consent-manager.thebanker.com",propertyId:34060,_clientOptions:{rootDomain:"thebanker.com",includeUsNat:!0}},X={...u,accountId:1906,baseEndpoint:"https://consent-manager.bankingriskandregulation.com",propertyId:34059,_clientOptions:{rootDomain:"bankingriskandregulation.com",includeUsNat:!0}},Y={...u,accountId:1906,baseEndpoint:"https://consent-manager.sustainableviews.com",propertyId:34058,_clientOptions:{rootDomain:"sustainableviews.com",includeUsNat:!0}},z={...u,accountId:1906,baseEndpoint:"https://consent-manager.ftadviser.com",propertyId:33416,_clientOptions:{rootDomain:"ftadviser.com",includeUsNat:!0}},Z={...u,accountId:1906,baseEndpoint:"https://consent-manager.investorschronicle.co.uk",propertyId:33415,_clientOptions:{rootDomain:"investorschronicle.co.uk",includeUsNat:!0}},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",includeUsNat:!0}},nt={...u,accountId:1906,baseEndpoint:"https://consent-manager.ftlocations.com",propertyId:37407,_clientOptions:{rootDomain:"ftlocations.com",cookieDomain:".ftlocations.com",consentProxyHost:"https://consent.ftlocations.com",includeUsNat:!0}},ot={...u,accountId:1906,baseEndpoint:"https://consent-manager.financialadviserserviceawards.com",propertyId:38297,_clientOptions:{rootDomain:"financialadviserserviceawards.com",includeUsNat:!0}},st={...u,accountId:1906,baseEndpoint:"https://consent-manager.celebrationofinvestment.co.uk",propertyId:38296,_clientOptions:{rootDomain:"celebrationofinvestment.co.uk",includeUsNat:!0}},at={...u,accountId:1906,baseEndpoint:"https://consent-manager.globalprivatebankingawards.com",propertyId:38295,_clientOptions:{rootDomain:"globalprivatebankingawards.com",includeUsNat:!0}},it={...u,accountId:1906,baseEndpoint:"https://consent-manager.thenextweb.com",propertyId:37672,_clientOptions:{rootDomain:"thenextweb.com"}},ct={...u,accountId:1906,baseEndpoint:"https://consent-manager.invisso.org",propertyId:38851,_clientOptions:{rootDomain:"invisso.org"}},rt={...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"}},mt={...u,accountId:1906,baseEndpoint:"https://consent-manager.significantrisktransfer.com",propertyId:38882,_clientOptions:{rootDomain:"significantrisktransfer.com"}},gt={...u,accountId:1906,baseEndpoint:"https://consent-manager.theceeforum.com",propertyId:38882,_clientOptions:{rootDomain:"theceeforum.com"}},_t={...u,accountId:1906,baseEndpoint:"https://consent-manager.fdimarkets.com",propertyId:40508,_clientOptions:{rootDomain:"fdimarkets.com",cookieDomain:".fdimarkets.com",consentProxyHost:"https://consent.fdimarkets.com",includeUsNat:!0}},It={...u,accountId:1906,baseEndpoint:"https://consent-manager.fdibenchmark.com",propertyId:40509,_clientOptions:{rootDomain:"fdibenchmark.com",cookieDomain:".fdibenchmark.com",consentProxyHost:"https://consent.fdibenchmark.com",includeUsNat:!0}},yt=Object.freeze(Object.defineProperty({__proto__:null,FT_DOTCOM_PROD:v,FT_DOTCOM_TEST:T,INVISSO:ct,INV_ABSASIA:pt,INV_ABSEAST:rt,INV_CEE_FORUM:gt,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:mt,SP_BANKING_RR:X,SP_CELEBRATION_OF_INVESTMENT:st,SP_FDI_BENCHMARK:It,SP_FDI_INTELLIGENCE:K,SP_FDI_MARKETS:_t,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 bt(t){const e=document.createElement("script");return e.src=t,e}const vt={cmpFrames:"https://consent-manager.ft.com/unified/wrapperMessagingWithoutDetection.js"},D={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:usca","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:usca","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:usca","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 wt(t){const e=document.createDocumentFragment();return e.appendChild(A("tcf",D.tcfStub)),t.includeUsNat&&e.appendChild(A("gpp",D.gppStub)),e.appendChild(bt(vt.cmpFrames)),e}function ht(t,e){const{userId:n,includeUsNat:o}=e;return n&&(t.authId=n),o&&(t.usnat=t.usnat||{}),t}function St(t,e){const{_clientOptions:n,...o}=t,s=ht(o,e);window._sp_={config:s},window._sp_queue??(window._sp_queue=[]),document.head.appendChild(wt(e))}function Ct(t,e,n,{formOfWordsId:o,cookieDomain:s}){const i=Object.keys(t).reduce((c,r)=>(c[r]={onsite:{status:t[r],lbi:!1,source:S,fow:o}},r==="cookies"&&(c.cookies.userAccept={status:t[r],lbi:!1,source:S,fow:o}),c),{});return e?{setConsentCookie:!0,formOfWordsId:o,consentSource:S,cookieDomain:s,skipDuplicateUpdates:!n,data:i}:{data:i,cookieDomain:s}}const _={CALIFORNIA:"usca",US_NATIONAL:"usnat"},P={[_.CALIFORNIA]:{excludedCategories:{}},[_.US_NATIONAL]:{excludedCategories:{personalisedMarketing:!0}}};function Ot(t){const{applicableSections:e,supportedAPIs:n}=t,o=e[0];if(o===-1||typeof o>"u")return;const s=n.find(i=>i.startsWith(`${o}:`));return s==null?void 0:s.split(":")[1]}function Et(t){const{SaleOptOut:e,SharingOptOut:n,Gpc:o}=t,{excludedCategories:s}=P[_.CALIFORNIA],a=e!==1&&n!==1&&!o,i={};for(const c of b){if(c in s){i[c]=!0;continue}i[c]=a}return i}function Nt(t){const{SaleOptOut:e,SharingOptOut:n,TargetedAdvertisingOptOut:o}=t,{excludedCategories:s}=P[_.US_NATIONAL],a=JSON.parse(localStorage.getItem("ft_sp_marketing_optout")||"{}"),i=e!==1&&n!==1&&o!==1,c={};for(const r of b){if(r in s){c[r]=!0;continue}c[r]=i}if(a.usnat)for(const r of b)c[r]=!1;return c}const kt={[_.CALIFORNIA]:Et,[_.US_NATIONAL]:Nt};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 Tt(){const t=await L(),{parsedSections:e}=t,n=Ot(t);if(!n||!e[n])throw new Error("GPP parser was called without an applicable section");const o=e[n],s=kt[n];if(!s||typeof s!="function")throw new Error(`No parser found for applicable GPP section: ${n}`);return s(o)}function At(t,{purpose:e,vendor:n,specialFeatureOptins:o={}}){const s=k[t],a=(e==null?void 0:e.consents)||{},i=(e==null?void 0:e.legitimateInterests)||{},c=(n==null?void 0:n.consents)||{},r=(n==null?void 0:n.legitimateInterests)||{},p=s.purposes.every(l=>a[l]||i[l]),f=s.iabVendors.every(l=>c[l]||r[l]),d=s.specialFeatures.every(l=>o[l]===!0),g=s.purposes.every(l=>a[l]===!0);return t==="cookies"?g&&f&&d:p&&f&&d}async function F(){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 Dt(){const t=await F(),e={};for(const n of b)e[n]=At(n,t);return e}async function Pt(t){const n={gdpr:Dt,usnat:Tt}[t];if(!n)throw new Error("Unable to update user consent. Unsupported consent legislation.");return n()}function Lt(){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 Ft(t,e){return Object.keys(t).some(o=>{const s=`${o.toLowerCase()}Onsite`;return t[o]!==e[s]})}function Mt({userId:t,useConsentStore:e}){return!!t&&e===!0}function Rt(t,e){return t?`${e.consentProxyHost}/__consent/consent-record/${j}/${e.userId}?updateFtConsentCookie=true`:`${e.consentProxyHost}/__consent/consent-record-cookie?cookieDomain=${e.cookieDomain}`}const M={gdpr:!1,usnat:!1},C=Object.assign({},M);function R(t){C[t]=!0}function Ut(t){return C[t]}function Vt(){Object.assign(C,M)}async function xt(t){return Ut(t)?t==="gdpr"?(await F()).eventStatus==="useractioncomplete":t==="usnat"?(await L()).cmpDisplayStatus==="hidden":!1:!1}function Ht(){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 jt(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)}finally{document.dispatchEvent(new CustomEvent("onCmpConsentSaveCompleted",{bubbles:!0}))}}const Gt=()=>{document.dispatchEvent(new CustomEvent("onCmpConsentReady",{bubbles:!0}))};function qt(t){return async function(n,o,s,a){if(Gt(),t.disableFTCookies||!t.includeUsNat&&n==="usnat")return;const i=a.applies?n:"gdpr";if(i!==n||!s)return;let c;try{c=await Pt(i)}catch(l){console.error(l)}if(!c||!Ft(c,Lt()))return;window.dataLayer=(window==null?void 0:window.dataLayer)||[],window.dataLayer.push({event:"consentUpdate",consentUpdateBehaviouralAds:c.behaviouralAds,consentUpdateCookies:c.cookies});const p=await xt(i),f=Mt(t),d=Rt(f,t),g=Ct(c,f,p,t);await jt(d,g),p&&Vt(),document.dispatchEvent(new CustomEvent("oCookieMessage.act",{bubbles:!0}))}}const O="cookie-message",Bt="manage-cookies";let E=Object.freeze({activeComponent:O,messageId:0,privacyManagerId:0});function Wt(t){return typeof t=="object"&&t!==null&&t.constructor===Object&&Object.prototype.toString.call(t)==="[object Object]"}const $t=()=>({...E}),N=t=>{if(!Wt(t)){console.error("Invalid state changes");return}E={...E,...t}},Kt=["adsDisableInternalCMP","pwm.cmp"];function Jt(t,e){const n=Xt(t.flags);window._sp_queue=window._sp_queue??[],window._sp_queue.push(()=>{var o,s;for(const[a,i]of Object.entries(zt))(s=(o=window._sp_).addEventListener)==null||s.call(o,a,i({...t,flags:n}))}),Zt({...t,flags:n},e),Qt()}function Xt(t){const e={};return typeof t=="object"&&Kt.forEach(n=>{Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}),e}function Yt(t){if(!t)return;const e=document.body,n=new CustomEvent("oTracking.event",{bubbles:!0,cancelable:!0,detail:t.detail});e.dispatchEvent(n)}function w({trackingProps:t,action:e,triggerAction:n}){let o;const s=$t(),{product:a,app:i,flags:c}=t;s.activeComponent===O?o=s.messageId:o=s.privacyManagerId;const r={detail:{component:{id:o,name:s.activeComponent,type:"overlay",subtype:"cmp"},category:"component",action:e,...n&&{trigger_action:n},...a&&{product:a},...i&&{app:i},custom:[{cookie_toggle_flag:c}],url:window.document.location.href||null}};Yt(r)}const zt={onMessageChoiceSelect:t=>(e,n,o)=>{const a={11:"accept_all",12:"manage_cookies",13:"reject_all"}[o];a&&w({trackingProps:t,action:"click",triggerAction:a})},onMessageReady:t=>()=>{w({trackingProps:t,action:"view"})},onMessageReceiveData:()=>(t,e)=>{const{messageId:n}=e;n&&N({messageId:n})},onError:t=>(e,n)=>{w({trackingProps:t,action:"error",triggerAction:n})},onPMCancel:()=>()=>{N({activeComponent:O})}};function Zt(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:i="0"}={}}=n;s&&(+i&&N({activeComponent:Bt,privacyManagerId:+i}),!(!a||!o[a])&&w({trackingProps:t,action:"click",triggerAction:o[a]}))},!1)}function Qt(){document.addEventListener("onCmpConsentSaveCompleted",()=>{const t=document.cookie.match(/FTConsent=([^;]+)/);if(!t)return;const e=t[1];localStorage.setItem("__lastFtc",e)})}const te="6.10.0";async function ee(t){const{useFTSession:e=!0,consentProxyHost:n=W,cookieDomain:o=B,formOfWordsId:s=q,useConsentStore:a=!0,trackingContext:i={},disableFTCookies:c=!1,includeUsNat:r=!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=te,!f&&e)try{const d=await H();f=d==null?void 0:d.uuid}catch(d){console.error(d)}p=ne(p),St(p,{userId:f,includeUsNat:r}),Ht(),window._sp_queue.push(()=>{var d,g;(g=(d=window._sp_)==null?void 0:d.addEventListener)==null||g.call(d,"onConsentReady",qt({userId:f,consentProxyHost:n,cookieDomain:o,formOfWordsId:s,useConsentStore:a,disableFTCookies:c,includeUsNat:r}))}),Jt(i,p.baseEndpoint)}function ne(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:i,onClick:c}=o[e],r=document.querySelectorAll(`a[href*="${a}"]`);for(const p of r)(n||t)&&(s.has(p)&&p.removeEventListener("click",s.get(p)),p.innerText=i,p.addEventListener("click",c),s.set(p,c))}function oe({_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:r=>{var p;r.preventDefault(),(p=window._sp_.usnat)==null||p.loadPrivacyManagerModal(o)}},ccpa:{text:"Do Not Sell My Personal Information",onClick:r=>{var p;r.preventDefault(),(p=window._sp_.ccpa)==null||p.loadPrivacyManagerModal(n)}},gdpr:{text:"Manage Cookies",onClick:r=>{var p;r.preventDefault(),(p=window._sp_.gdpr)==null||p.loadPrivacyManagerModal(e)}}},i=new Map,c=function(r,p,f,d){U(!1,r,d.applies,a,i,s),d.applies&&window._sp_queue.push(()=>{var g,l;(l=(g=window._sp_).removeEventListener)==null||l.call(g,"onConsentReady",c)})};U(!0,"gdpr",!1,a,i,s),window._sp_queue??(window._sp_queue=[]),window._sp_queue.push(()=>{var r,p;(p=(r=window._sp_).addEventListener)==null||p.call(r,"onConsentReady",c)})}function se(t){return t._clientOptions??{}}const ae={"ft.com":se};function ie(t){return new Promise((e,n)=>{const{rootDomain:o}=t._clientOptions||{};if(!o)return e({});const s=ae[o];if(!s||typeof s!="function")return e({...t._clientOptions});const a=()=>{try{e(s(t))}catch(i){n(i)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",a):a()})}function ce(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 re(t){if(!t)throw new Error("Invalid hostname provided");let n=Object.values(yt).find(o=>{var a;if(o.propertyHref)return!1;const s=(a=o._clientOptions)==null?void 0:a.rootDomain;return s&&ce(t,s)});return n??(n=T),n}const pe=new URL(window.location.href).hostname,m=re(pe);(async()=>{var t,e;try{const n=await ie(m);ee({propertyConfig:m,...n}),(t=m==null?void 0:m._clientOptions)!=null&&t.privacyManagerId&&((e=m==null?void 0:m._clientOptions)!=null&&e.manageCookiesLinkOverride)&&oe(m)}catch(n){console.error("Error: CMP package configure + initialise Sourcepoint failed.",n)}})()})();
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 I={};const h=(t,e)=>{if(typeof t=="object"){I=t;return}if(typeof t=="string"&&typeof e=="string"){I[t]=e;return}if(typeof t=="string"&&typeof e>"u")return I[t]||null;if(typeof t>"u"&&typeof e>"u")return I;throw new Error("Invalid arguments")};h.clear=()=>{I={}};const y={},x=()=>{const[,t]=/FTSession_s=([^;]+)/.exec(document.cookie)||[];return t},H=()=>{const t=h("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&&h("uuid",n),{uuid:n}))),y.uuid):Promise.resolve({uuid:void 0})},S="sourcepoint-cmp",j="FTPINK",G="FTConsent",q="sourcepointCmp/VngD.XycZut.595cp9fWdp5XYP9vlFvk",B=".ft.com",W="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,4,8,9],iabVendors:[],customVendors:[],specialFeatures:[]},personalisedMarketing:{purposes:[2,7,8,9,10],iabVendors:[],customVendors:[],specialFeatures:[]},cookies:{purposes:[1,2,3,4,7,8,9,10],iabVendors:[],customVendors:[],specialFeatures:[]}},b=Object.keys(k),p={joinHref:!0,gdpr:{}},T={...p,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={...p,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}},$={...p,accountId:1906,baseEndpoint:"https://consent-manager.pwmnet.com",propertyId:33414,_clientOptions:{rootDomain:"pwmnet.com",includeUsNat:!0}},K={...p,accountId:1906,baseEndpoint:"https://consent-manager.fdiintelligence.com",propertyId:34061,_clientOptions:{rootDomain:"fdiintelligence.com",includeUsNat:!0}},J={...p,accountId:1906,baseEndpoint:"https://consent-manager.thebanker.com",propertyId:34060,_clientOptions:{rootDomain:"thebanker.com",includeUsNat:!0}},X={...p,accountId:1906,baseEndpoint:"https://consent-manager.bankingriskandregulation.com",propertyId:34059,_clientOptions:{rootDomain:"bankingriskandregulation.com",includeUsNat:!0}},Y={...p,accountId:1906,baseEndpoint:"https://consent-manager.sustainableviews.com",propertyId:34058,_clientOptions:{rootDomain:"sustainableviews.com",includeUsNat:!0}},z={...p,accountId:1906,baseEndpoint:"https://consent-manager.ftadviser.com",propertyId:33416,_clientOptions:{rootDomain:"ftadviser.com",includeUsNat:!0}},Z={...p,accountId:1906,baseEndpoint:"https://consent-manager.investorschronicle.co.uk",propertyId:33415,_clientOptions:{rootDomain:"investorschronicle.co.uk",includeUsNat:!0}},Q={...p,accountId:1906,baseEndpoint:"https://cdn.privacy-mgmt.com",propertyId:33947,_clientOptions:{rootDomain:"ignitesasia.com"}},tt={...p,accountId:1906,baseEndpoint:"https://cdn.privacy-mgmt.com",propertyId:33946,_clientOptions:{rootDomain:"igniteseurope.com"}},et={...p,accountId:1906,baseEndpoint:"https://consent-manager.mandatewire.com",propertyId:35490,_clientOptions:{rootDomain:"mandatewire.com",includeUsNat:!0}},nt={...p,accountId:1906,baseEndpoint:"https://consent-manager.ftlocations.com",propertyId:37407,_clientOptions:{rootDomain:"ftlocations.com",cookieDomain:".ftlocations.com",consentProxyHost:"https://consent.ftlocations.com",includeUsNat:!0}},ot={...p,accountId:1906,baseEndpoint:"https://consent-manager.financialadviserserviceawards.com",propertyId:38297,_clientOptions:{rootDomain:"financialadviserserviceawards.com",includeUsNat:!0}},st={...p,accountId:1906,baseEndpoint:"https://consent-manager.celebrationofinvestment.co.uk",propertyId:38296,_clientOptions:{rootDomain:"celebrationofinvestment.co.uk",includeUsNat:!0}},at={...p,accountId:1906,baseEndpoint:"https://consent-manager.globalprivatebankingawards.com",propertyId:38295,_clientOptions:{rootDomain:"globalprivatebankingawards.com",includeUsNat:!0}},it={...p,accountId:1906,baseEndpoint:"https://consent-manager.thenextweb.com",propertyId:37672,_clientOptions:{rootDomain:"thenextweb.com"}},ct={...p,accountId:1906,baseEndpoint:"https://consent-manager.invisso.org",propertyId:38851,_clientOptions:{rootDomain:"invisso.org"}},rt={...p,accountId:1906,baseEndpoint:"https://consent-manager.abseast.com",propertyId:38888,_clientOptions:{rootDomain:"abseast.com"}},pt={...p,accountId:1906,baseEndpoint:"https://consent-manager.absasia.org",propertyId:38887,_clientOptions:{rootDomain:"absasia.org"}},ut={...p,accountId:1906,baseEndpoint:"https://consent-manager.globalcoveredbonds.com",propertyId:38886,_clientOptions:{rootDomain:"globalcoveredbonds.com"}},dt={...p,accountId:1906,baseEndpoint:"https://consent-manager.globalborrowers.com",propertyId:38885,_clientOptions:{rootDomain:"globalborrowers.com"}},lt={...p,accountId:1906,baseEndpoint:"https://consent-manager.globalabs.org",propertyId:38884,_clientOptions:{rootDomain:"globalabs.org"}},ft={...p,accountId:1906,baseEndpoint:"https://consent-manager.creditrisk-transfer.com",propertyId:38883,_clientOptions:{rootDomain:"creditrisk-transfer.com"}},mt={...p,accountId:1906,baseEndpoint:"https://consent-manager.significantrisktransfer.com",propertyId:38882,_clientOptions:{rootDomain:"significantrisktransfer.com"}},gt={...p,accountId:1906,baseEndpoint:"https://consent-manager.theceeforum.com",propertyId:38882,_clientOptions:{rootDomain:"theceeforum.com"}},_t={...p,accountId:1906,baseEndpoint:"https://consent-manager.fdimarkets.com",propertyId:40508,_clientOptions:{rootDomain:"fdimarkets.com",cookieDomain:".fdimarkets.com",consentProxyHost:"https://consent.fdimarkets.com",includeUsNat:!0}},It={...p,accountId:1906,baseEndpoint:"https://consent-manager.fdibenchmark.com",propertyId:40509,_clientOptions:{rootDomain:"fdibenchmark.com",cookieDomain:".fdibenchmark.com",consentProxyHost:"https://consent.fdibenchmark.com",includeUsNat:!0}},yt=Object.freeze(Object.defineProperty({__proto__:null,FT_DOTCOM_PROD:v,FT_DOTCOM_TEST:T,INVISSO:ct,INV_ABSASIA:pt,INV_ABSEAST:rt,INV_CEE_FORUM:gt,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:mt,SP_BANKING_RR:X,SP_CELEBRATION_OF_INVESTMENT:st,SP_FDI_BENCHMARK:It,SP_FDI_INTELLIGENCE:K,SP_FDI_MARKETS:_t,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 bt(t){const e=document.createElement("script");return e.src=t,e}const vt={cmpFrames:"https://consent-manager.ft.com/unified/wrapperMessagingWithoutDetection.js"},D={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:usca","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:usca","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:usca","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 wt(t){const e=document.createDocumentFragment();return e.appendChild(A("tcf",D.tcfStub)),t.includeUsNat&&e.appendChild(A("gpp",D.gppStub)),e.appendChild(bt(vt.cmpFrames)),e}function ht(t,e){const{userId:n,includeUsNat:o}=e;return n&&(t.authId=n),o&&(t.usnat=t.usnat||{}),t}function St(t,e){const{_clientOptions:n,...o}=t,s=ht(o,e);window._sp_={config:s},window._sp_queue??(window._sp_queue=[]),document.head.appendChild(wt(e))}function Ct(t,e,n,{formOfWordsId:o,cookieDomain:s}){const i=Object.keys(t).reduce((u,c)=>(u[c]={onsite:{status:t[c],lbi:!1,source:S,fow:o}},c==="cookies"&&(u.cookies.userAccept={status:t[c],lbi:!1,source:S,fow:o}),u),{});return e?{setConsentCookie:!0,formOfWordsId:o,consentSource:S,cookieDomain:s,skipDuplicateUpdates:!n,data:i}:{data:i,cookieDomain:s}}const _={CALIFORNIA:"usca",US_NATIONAL:"usnat"},P={[_.CALIFORNIA]:{excludedCategories:{}},[_.US_NATIONAL]:{excludedCategories:{personalisedMarketing:!0}}};function Ot(t){const{applicableSections:e,supportedAPIs:n}=t,o=e[0];if(o===-1||typeof o>"u")return;const s=n.find(i=>i.startsWith(`${o}:`));return s==null?void 0:s.split(":")[1]}function Et(t){const{SaleOptOut:e,SharingOptOut:n,Gpc:o}=t,{excludedCategories:s}=P[_.CALIFORNIA],a=e!==1&&n!==1&&!o,i={};for(const u of b){if(u in s){i[u]=!0;continue}i[u]=a}return i}function Nt(t){const{SaleOptOut:e,SharingOptOut:n,TargetedAdvertisingOptOut:o}=t,{excludedCategories:s}=P[_.US_NATIONAL],a=JSON.parse(localStorage.getItem("ft_sp_marketing_optout")||"{}"),i=e!==1&&n!==1&&o!==1,u={};for(const c of b){if(c in s){u[c]=!0;continue}u[c]=i}if(a.usnat)for(const c of b)u[c]=!1;return u}const kt={[_.CALIFORNIA]:Et,[_.US_NATIONAL]:Nt};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 Tt(){const t=await L(),{parsedSections:e}=t,n=Ot(t);if(!n||!e[n])throw new Error("GPP parser was called without an applicable section");const o=e[n],s=kt[n];if(!s||typeof s!="function")throw new Error(`No parser found for applicable GPP section: ${n}`);return s(o)}function At(t,{purpose:e,vendor:n,specialFeatureOptins:o={}}){const s=k[t],a=(e==null?void 0:e.consents)||{},i=(e==null?void 0:e.legitimateInterests)||{},u=(n==null?void 0:n.consents)||{},c=(n==null?void 0:n.legitimateInterests)||{},r=s.purposes.every(l=>a[l]||i[l]),f=s.iabVendors.every(l=>u[l]||c[l]),d=s.specialFeatures.every(l=>o[l]===!0),g=s.purposes.every(l=>a[l]===!0);return t==="cookies"?g&&f&&d:r&&f&&d}async function F(){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 Dt(){const t=await F(),e={};for(const n of b)e[n]=At(n,t);return e}async function Pt(t){const n={gdpr:Dt,usnat:Tt}[t];if(!n)throw new Error("Unable to update user consent. Unsupported consent legislation.");return n()}function Lt(){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 Ft(t,e){return Object.keys(t).some(o=>{const s=`${o.toLowerCase()}Onsite`;return t[o]!==e[s]})}function Mt({userId:t,useConsentStore:e}){return!!t&&e===!0}function Rt(t,e){return t?`${e.consentProxyHost}/__consent/consent-record/${j}/${e.userId}?updateFtConsentCookie=true`:`${e.consentProxyHost}/__consent/consent-record-cookie?cookieDomain=${e.cookieDomain}`}const M={gdpr:!1,usnat:!1},C=Object.assign({},M);function R(t){C[t]=!0}function Ut(t){return C[t]}function Vt(){Object.assign(C,M)}async function xt(t){return Ut(t)?t==="gdpr"?(await F()).eventStatus==="useractioncomplete":t==="usnat"?(await L()).cmpDisplayStatus==="hidden":!1:!1}function Ht(){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 jt(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)}finally{document.dispatchEvent(new CustomEvent("onCmpConsentSaveCompleted",{bubbles:!0}))}}const Gt=()=>{document.dispatchEvent(new CustomEvent("onCmpConsentReady",{bubbles:!0}))};function qt(t){return async function(n,o,s,a){if(Gt(),t.disableFTCookies||!t.includeUsNat&&n==="usnat"||!a.applies||!s)return;let i;try{i=await Pt(n)}catch(g){console.error(g)}if(!i||!Ft(i,Lt()))return;window.dataLayer=(window==null?void 0:window.dataLayer)||[],window.dataLayer.push({event:"consentUpdate",consentUpdateBehaviouralAds:i.behaviouralAds,consentUpdateCookies:i.cookies});const c=await xt(n),r=Mt(t),f=Rt(r,t),d=Ct(i,r,c,t);await jt(f,d),c&&Vt(),document.dispatchEvent(new CustomEvent("oCookieMessage.act",{bubbles:!0}))}}const O="cookie-message",Bt="manage-cookies";let E=Object.freeze({activeComponent:O,messageId:0,privacyManagerId:0});function Wt(t){return typeof t=="object"&&t!==null&&t.constructor===Object&&Object.prototype.toString.call(t)==="[object Object]"}const $t=()=>({...E}),N=t=>{if(!Wt(t)){console.error("Invalid state changes");return}E={...E,...t}},Kt=["adsDisableInternalCMP","pwm.cmp"];function Jt(t,e){const n=Xt(t.flags);window._sp_queue=window._sp_queue??[],window._sp_queue.push(()=>{var o,s;for(const[a,i]of Object.entries(zt))(s=(o=window._sp_).addEventListener)==null||s.call(o,a,i({...t,flags:n}))}),Zt({...t,flags:n},e),Qt()}function Xt(t){const e={};return typeof t=="object"&&Kt.forEach(n=>{Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}),e}function Yt(t){if(!t)return;const e=document.body,n=new CustomEvent("oTracking.event",{bubbles:!0,cancelable:!0,detail:t.detail});e.dispatchEvent(n)}function w({trackingProps:t,action:e,triggerAction:n}){let o;const s=$t(),{product:a,app:i,flags:u}=t;s.activeComponent===O?o=s.messageId:o=s.privacyManagerId;const c={detail:{component:{id:o,name:s.activeComponent,type:"overlay",subtype:"cmp"},category:"component",action:e,...n&&{trigger_action:n},...a&&{product:a},...i&&{app:i},custom:[{cookie_toggle_flag:u}],url:window.document.location.href||null}};Yt(c)}const zt={onMessageChoiceSelect:t=>(e,n,o)=>{const a={11:"accept_all",12:"manage_cookies",13:"reject_all"}[o];a&&w({trackingProps:t,action:"click",triggerAction:a})},onMessageReady:t=>()=>{w({trackingProps:t,action:"view"})},onMessageReceiveData:()=>(t,e)=>{const{messageId:n}=e;n&&N({messageId:n})},onError:t=>(e,n)=>{w({trackingProps:t,action:"error",triggerAction:n})},onPMCancel:()=>()=>{N({activeComponent:O})}};function Zt(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:i="0"}={}}=n;s&&(+i&&N({activeComponent:Bt,privacyManagerId:+i}),!(!a||!o[a])&&w({trackingProps:t,action:"click",triggerAction:o[a]}))},!1)}function Qt(){document.addEventListener("onCmpConsentSaveCompleted",()=>{const t=document.cookie.match(/FTConsent=([^;]+)/);if(!t)return;const e=t[1];localStorage.setItem("__lastFtc",e)})}const te="6.10.2";async function ee(t){const{useFTSession:e=!0,consentProxyHost:n=W,cookieDomain:o=B,formOfWordsId:s=q,useConsentStore:a=!0,trackingContext:i={},disableFTCookies:u=!1,includeUsNat:c=!1}=t||{};let{propertyConfig:r=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=te,!f&&e)try{const d=await H();f=d==null?void 0:d.uuid}catch(d){console.error(d)}r=ne(r),St(r,{userId:f,includeUsNat:c}),Ht(),window._sp_queue.push(()=>{var d,g;(g=(d=window._sp_)==null?void 0:d.addEventListener)==null||g.call(d,"onConsentReady",qt({userId:f,consentProxyHost:n,cookieDomain:o,formOfWordsId:s,useConsentStore:a,disableFTCookies:u,includeUsNat:c}))}),Jt(i,r.baseEndpoint)}function ne(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:i,onClick:u}=o[e],c=document.querySelectorAll(`a[href*="${a}"]`);for(const r of c)(n||t)&&(s.has(r)&&r.removeEventListener("click",s.get(r)),r.innerText=i,r.addEventListener("click",u),s.set(r,u))}function oe({_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:c=>{var r;c.preventDefault(),(r=window._sp_.usnat)==null||r.loadPrivacyManagerModal(o)}},ccpa:{text:"Do Not Sell My Personal Information",onClick:c=>{var r;c.preventDefault(),(r=window._sp_.ccpa)==null||r.loadPrivacyManagerModal(n)}},gdpr:{text:"Manage Cookies",onClick:c=>{var r;c.preventDefault(),(r=window._sp_.gdpr)==null||r.loadPrivacyManagerModal(e)}}},i=new Map,u=function(c,r,f,d){U(!1,c,d.applies,a,i,s),d.applies&&window._sp_queue.push(()=>{var g,l;(l=(g=window._sp_).removeEventListener)==null||l.call(g,"onConsentReady",u)})};U(!0,"gdpr",!1,a,i,s),window._sp_queue??(window._sp_queue=[]),window._sp_queue.push(()=>{var c,r;(r=(c=window._sp_).addEventListener)==null||r.call(c,"onConsentReady",u)})}function se(t){return t._clientOptions??{}}const ae={"ft.com":se};function ie(t){return new Promise((e,n)=>{const{rootDomain:o}=t._clientOptions||{};if(!o)return e({});const s=ae[o];if(!s||typeof s!="function")return e({...t._clientOptions});const a=()=>{try{e(s(t))}catch(i){n(i)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",a):a()})}function ce(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 re(t){if(!t)throw new Error("Invalid hostname provided");let n=Object.values(yt).find(o=>{var a;if(o.propertyHref)return!1;const s=(a=o._clientOptions)==null?void 0:a.rootDomain;return s&&ce(t,s)});return n??(n=T),n}const pe=new URL(window.location.href).hostname,m=re(pe);(async()=>{var t,e;try{const n=await ie(m);ee({propertyConfig:m,...n}),(t=m==null?void 0:m._clientOptions)!=null&&t.privacyManagerId&&((e=m==null?void 0:m._clientOptions)!=null&&e.manageCookiesLinkOverride)&&oe(m)}catch(n){console.error("Error: CMP package configure + initialise Sourcepoint failed.",n)}})()})();
@@ -1,6 +1,6 @@
1
- import type { ConsentReadyProps } from "../../typings/types.d.ts";
1
+ import type { Legislation, ConsentReadyProps } from "../../typings/types.d.ts";
2
2
  export declare function saveConsent(consentEndpoint: string, payload: Record<string, unknown>): Promise<void>;
3
- export declare function consentReadyHandlerFn(props: ConsentReadyProps): (legislation: string, _consentUUID: string, consentString: string, consentMeta: {
3
+ export declare function consentReadyHandlerFn(props: ConsentReadyProps): (legislation: Legislation, _consentUUID: string, consentString: string, consentMeta: {
4
4
  applies?: boolean;
5
5
  }) => Promise<void>;
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/consent-ready/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAa/E,wBAAsB,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iBAwB1F;AAMD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,iBAE7C,MAAM,gBACL,MAAM,iBACL,MAAM,eACR;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,mBAqDrC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/consent-ready/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAa/E,wBAAsB,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iBAwB1F;AAMD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,iBAE7C,WAAW,gBACV,MAAM,iBACL,MAAM,eACR;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,mBA0DrC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@financial-times/cmp-client",
3
- "version": "6.10.0",
3
+ "version": "6.10.2",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "files": [
@@ -64,6 +64,15 @@ export interface ConsentCategoryPayload {
64
64
 
65
65
  export type ConsentReadyProps = Omit<CMPInitOptions, "propertyConfig" | "useFTSession">;
66
66
 
67
+ export type ConsentCallbackArguments = [
68
+ Legislation,
69
+ string,
70
+ string,
71
+ {
72
+ applies: boolean
73
+ }
74
+ ]
75
+
67
76
  export interface ConsentPayloadOptions {
68
77
  shouldUpdateConsentStore: boolean;
69
78
  formOfWordsId: string;