@transcend-io/cli 8.36.1 → 8.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -0
- package/dist/{api-keys-DB0BZSh5.cjs → api-keys-eh_rPCV_.cjs} +2 -2
- package/dist/{api-keys-DB0BZSh5.cjs.map → api-keys-eh_rPCV_.cjs.map} +1 -1
- package/dist/app-D0ewaGAn.cjs +131 -0
- package/dist/app-D0ewaGAn.cjs.map +1 -0
- package/dist/bin/bash-complete.cjs +1 -1
- package/dist/bin/bash-complete.cjs.map +1 -1
- package/dist/bin/cli.cjs +1 -1
- package/dist/bin/cli.cjs.map +1 -1
- package/dist/bin/deprecated-command.cjs +1 -1
- package/dist/bin/deprecated-command.cjs.map +1 -1
- package/dist/buildAIIntegrationType-BwuCYR-o.cjs +2 -0
- package/dist/{buildAIIntegrationType-n_Qlv8wG.cjs.map → buildAIIntegrationType-BwuCYR-o.cjs.map} +1 -1
- package/dist/chunk-Bmb41Sf3.cjs +1 -0
- package/dist/{code-scanning-Yc7rgoTY.cjs → code-scanning-BB6Ncuzh.cjs} +2 -2
- package/dist/{code-scanning-Yc7rgoTY.cjs.map → code-scanning-BB6Ncuzh.cjs.map} +1 -1
- package/dist/codecs-Bvmb8o9R.cjs +2 -0
- package/dist/{codecs-JSDJgtyL.cjs.map → codecs-Bvmb8o9R.cjs.map} +1 -1
- package/dist/command-BUkTNNIa.cjs +9 -0
- package/dist/{command-41dUPvEa.cjs.map → command-BUkTNNIa.cjs.map} +1 -1
- package/dist/{consent-manager-BNMaKHId.cjs → consent-manager-Df8gw2Qh.cjs} +2 -2
- package/dist/{consent-manager-BNMaKHId.cjs.map → consent-manager-Df8gw2Qh.cjs.map} +1 -1
- package/dist/constants-7qBywLgI.cjs +2 -0
- package/dist/{constants-JoCDv9ym.cjs.map → constants-7qBywLgI.cjs.map} +1 -1
- package/dist/context-_8xfl0dt.cjs +2 -0
- package/dist/{context-Bw1xk9Q_.cjs.map → context-_8xfl0dt.cjs.map} +1 -1
- package/dist/{cron-ClvgH2uD.cjs → cron-BhfbISdy.cjs} +2 -2
- package/dist/{cron-ClvgH2uD.cjs.map → cron-BhfbISdy.cjs.map} +1 -1
- package/dist/{data-inventory-BzEYoxaa.cjs → data-inventory-D36n1YAJ.cjs} +2 -2
- package/dist/{data-inventory-BzEYoxaa.cjs.map → data-inventory-D36n1YAJ.cjs.map} +1 -1
- package/dist/{dataFlowsToDataSilos-daBgPi7V.cjs → dataFlowsToDataSilos-BLNhWeOw.cjs} +2 -2
- package/dist/{dataFlowsToDataSilos-daBgPi7V.cjs.map → dataFlowsToDataSilos-BLNhWeOw.cjs.map} +1 -1
- package/dist/{done-input-validation-Cgk5kNBs.cjs → done-input-validation-DGckEJ5a.cjs} +1 -1
- package/dist/{done-input-validation-Cgk5kNBs.cjs.map → done-input-validation-DGckEJ5a.cjs.map} +1 -1
- package/dist/enums-BZulhPFa.cjs +2 -0
- package/dist/{enums-CBXlBJii.cjs.map → enums-BZulhPFa.cjs.map} +1 -1
- package/dist/impl--CgaKM4x.cjs +2 -0
- package/dist/{impl-BFOghVmx.cjs.map → impl--CgaKM4x.cjs.map} +1 -1
- package/dist/impl--PmMYd1g.cjs +2 -0
- package/dist/{impl-BouHRicT.cjs.map → impl--PmMYd1g.cjs.map} +1 -1
- package/dist/impl-47WGWxyj.cjs +2 -0
- package/dist/{impl-CFmFCVt8.cjs.map → impl-47WGWxyj.cjs.map} +1 -1
- package/dist/impl-4NCrJ_Y6.cjs +2 -0
- package/dist/{impl-cfDtPbS9.cjs.map → impl-4NCrJ_Y6.cjs.map} +1 -1
- package/dist/impl-5AfPlpzA.cjs +2 -0
- package/dist/{impl-hGu8uCC4.cjs.map → impl-5AfPlpzA.cjs.map} +1 -1
- package/dist/impl-73q3K0b_.cjs +2 -0
- package/dist/{impl-BN61r-PG.cjs.map → impl-73q3K0b_.cjs.map} +1 -1
- package/dist/impl-8Basu9U-.cjs +2 -0
- package/dist/{impl-BXMfTm4K.cjs.map → impl-8Basu9U-.cjs.map} +1 -1
- package/dist/impl-BC1mCUl1.cjs +2 -0
- package/dist/{impl-CCOEjRnr.cjs.map → impl-BC1mCUl1.cjs.map} +1 -1
- package/dist/impl-BNEgHNz7.cjs +4 -0
- package/dist/{impl-8bci0gd2.cjs.map → impl-BNEgHNz7.cjs.map} +1 -1
- package/dist/impl-BPq8EyHn.cjs +2 -0
- package/dist/{impl-BRuqPhJU.cjs.map → impl-BPq8EyHn.cjs.map} +1 -1
- package/dist/impl-BfN9XMNM.cjs +2 -0
- package/dist/{impl-ClDXxODZ.cjs.map → impl-BfN9XMNM.cjs.map} +1 -1
- package/dist/impl-Boa1Uuzk.cjs +2 -0
- package/dist/{impl-DpdGWdrr.cjs.map → impl-Boa1Uuzk.cjs.map} +1 -1
- package/dist/impl-Bv2mYf1w.cjs +2 -0
- package/dist/{impl-C4D1tHjp.cjs.map → impl-Bv2mYf1w.cjs.map} +1 -1
- package/dist/impl-BxOeeF35.cjs +2 -0
- package/dist/{impl-CoxOrlXu.cjs.map → impl-BxOeeF35.cjs.map} +1 -1
- package/dist/impl-ByQI5s4b.cjs +2 -0
- package/dist/{impl-D7WBmmHb.cjs.map → impl-ByQI5s4b.cjs.map} +1 -1
- package/dist/impl-C1IjDv1N.cjs +2 -0
- package/dist/{impl-_dGu54cO.cjs.map → impl-C1IjDv1N.cjs.map} +1 -1
- package/dist/impl-CVsXgVaf.cjs +2 -0
- package/dist/{impl-BWiNjS6v.cjs.map → impl-CVsXgVaf.cjs.map} +1 -1
- package/dist/impl-CdXk78ar.cjs +2 -0
- package/dist/{impl-DhdY6lbj.cjs.map → impl-CdXk78ar.cjs.map} +1 -1
- package/dist/impl-CfsKuglq.cjs +2 -0
- package/dist/{impl-BH0HWnIY.cjs.map → impl-CfsKuglq.cjs.map} +1 -1
- package/dist/impl-CkkD_smS.cjs +2 -0
- package/dist/{impl-BS8t24Z7.cjs.map → impl-CkkD_smS.cjs.map} +1 -1
- package/dist/impl-Cotrjytz.cjs +2 -0
- package/dist/{impl-yHutqfbd.cjs.map → impl-Cotrjytz.cjs.map} +1 -1
- package/dist/impl-Crhm9eFe.cjs +2 -0
- package/dist/{impl-BYK9pQs0.cjs.map → impl-Crhm9eFe.cjs.map} +1 -1
- package/dist/impl-Cru4riTc.cjs +5 -0
- package/dist/impl-Cru4riTc.cjs.map +1 -0
- package/dist/impl-D2P_gDE8.cjs +2 -0
- package/dist/{impl-CA_CO88W.cjs.map → impl-D2P_gDE8.cjs.map} +1 -1
- package/dist/{impl-DjVmOb9T.cjs → impl-DDHduv-X.cjs} +2 -2
- package/dist/{impl-DjVmOb9T.cjs.map → impl-DDHduv-X.cjs.map} +1 -1
- package/dist/impl-DEULjxRp.cjs +2 -0
- package/dist/{impl-8zottXEQ.cjs.map → impl-DEULjxRp.cjs.map} +1 -1
- package/dist/impl-DHUnZ-Qx.cjs +2 -0
- package/dist/{impl-CSZwdpH-.cjs.map → impl-DHUnZ-Qx.cjs.map} +1 -1
- package/dist/impl-DI3lTLCy.cjs +2 -0
- package/dist/{impl-D3sI4I1g.cjs.map → impl-DI3lTLCy.cjs.map} +1 -1
- package/dist/impl-DKMxd5Wy.cjs +2 -0
- package/dist/{impl-ay7i0K_5.cjs.map → impl-DKMxd5Wy.cjs.map} +1 -1
- package/dist/impl-DNDs3FFG.cjs +2 -0
- package/dist/{impl-BjOFvm4E.cjs.map → impl-DNDs3FFG.cjs.map} +1 -1
- package/dist/impl-DQTfX_qq.cjs +4 -0
- package/dist/{impl-FlZPR0yd.cjs.map → impl-DQTfX_qq.cjs.map} +1 -1
- package/dist/impl-DS2IlxS3.cjs +2 -0
- package/dist/{impl-BIqdEXRo.cjs.map → impl-DS2IlxS3.cjs.map} +1 -1
- package/dist/impl-DVCUGrVY.cjs +2 -0
- package/dist/{impl-SkiG9sWb.cjs.map → impl-DVCUGrVY.cjs.map} +1 -1
- package/dist/{impl-C-_9uRms.cjs → impl-DZbi3AkB.cjs} +2 -2
- package/dist/{impl-C-_9uRms.cjs.map → impl-DZbi3AkB.cjs.map} +1 -1
- package/dist/impl-DcMkDhXY.cjs +2 -0
- package/dist/{impl-NLEQuKnT.cjs.map → impl-DcMkDhXY.cjs.map} +1 -1
- package/dist/impl-DlB56v12.cjs +2 -0
- package/dist/{impl-DU-WTXTY.cjs.map → impl-DlB56v12.cjs.map} +1 -1
- package/dist/impl-Du1Ty4JE.cjs +2 -0
- package/dist/{impl-Cp12F9tr.cjs.map → impl-Du1Ty4JE.cjs.map} +1 -1
- package/dist/{impl-KgEJvOhE.cjs → impl-DxDGyjMI.cjs} +2 -2
- package/dist/{impl-KgEJvOhE.cjs.map → impl-DxDGyjMI.cjs.map} +1 -1
- package/dist/impl-Dxgw6Xfk.cjs +2 -0
- package/dist/{impl-J5fV8gbh.cjs.map → impl-Dxgw6Xfk.cjs.map} +1 -1
- package/dist/impl-IQ7JOZxt.cjs +2 -0
- package/dist/{impl-Bv4gPikD.cjs.map → impl-IQ7JOZxt.cjs.map} +1 -1
- package/dist/impl-bgI-lF8x.cjs +2 -0
- package/dist/{impl-4pmSDQvA.cjs.map → impl-bgI-lF8x.cjs.map} +1 -1
- package/dist/impl-feFIqpBO.cjs +2 -0
- package/dist/{impl-BwAnSxkP.cjs.map → impl-feFIqpBO.cjs.map} +1 -1
- package/dist/impl-orpaJd8b.cjs +12 -0
- package/dist/{impl-BMxxKrNz.cjs.map → impl-orpaJd8b.cjs.map} +1 -1
- package/dist/{impl-ChNLuyNq.cjs → impl-xUzH7vUF.cjs} +2 -2
- package/dist/{impl-ChNLuyNq.cjs.map → impl-xUzH7vUF.cjs.map} +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/{logger-BaHHbWVd.cjs → logger-DQwEYtSS.cjs} +2 -2
- package/dist/{logger-BaHHbWVd.cjs.map → logger-DQwEYtSS.cjs.map} +1 -1
- package/dist/{manual-enrichment-D-0rM9KN.cjs → manual-enrichment-CzRiIFev.cjs} +2 -2
- package/dist/{manual-enrichment-D-0rM9KN.cjs.map → manual-enrichment-CzRiIFev.cjs.map} +1 -1
- package/dist/{mergeTranscendInputs-PPpGbYgG.cjs → mergeTranscendInputs-BIBCYbug.cjs} +2 -2
- package/dist/{mergeTranscendInputs-PPpGbYgG.cjs.map → mergeTranscendInputs-BIBCYbug.cjs.map} +1 -1
- package/dist/{pooling-DbIx6-i7.cjs → pooling-BJAPXDiq.cjs} +2 -2
- package/dist/{pooling-DbIx6-i7.cjs.map → pooling-BJAPXDiq.cjs.map} +1 -1
- package/dist/{preference-management-Dapt3Li3.cjs → preference-management-DV6NIcXt.cjs} +2 -2
- package/dist/{preference-management-Dapt3Li3.cjs.map → preference-management-DV6NIcXt.cjs.map} +1 -1
- package/dist/{readTranscendYaml-CL9nujUr.cjs → readTranscendYaml-Cycz6RxW.cjs} +2 -2
- package/dist/{readTranscendYaml-CL9nujUr.cjs.map → readTranscendYaml-Cycz6RxW.cjs.map} +1 -1
- package/dist/syncConfigurationToTranscend-Bd0ZTIm1.cjs +2994 -0
- package/dist/{syncConfigurationToTranscend-D4PLA70C.cjs.map → syncConfigurationToTranscend-Bd0ZTIm1.cjs.map} +1 -1
- package/dist/{uploadConsents-CN1JucL3.cjs → uploadConsents-XYRco1_L.cjs} +2 -2
- package/dist/{uploadConsents-CN1JucL3.cjs.map → uploadConsents-XYRco1_L.cjs.map} +1 -1
- package/package.json +1 -1
- package/dist/app-BOlZhpYh.cjs +0 -118
- package/dist/app-BOlZhpYh.cjs.map +0 -1
- package/dist/buildAIIntegrationType-n_Qlv8wG.cjs +0 -2
- package/dist/codecs-JSDJgtyL.cjs +0 -2
- package/dist/command-41dUPvEa.cjs +0 -9
- package/dist/constants-JoCDv9ym.cjs +0 -2
- package/dist/context-Bw1xk9Q_.cjs +0 -2
- package/dist/enums-CBXlBJii.cjs +0 -2
- package/dist/impl-4pmSDQvA.cjs +0 -2
- package/dist/impl-8bci0gd2.cjs +0 -4
- package/dist/impl-8zottXEQ.cjs +0 -2
- package/dist/impl-BFOghVmx.cjs +0 -2
- package/dist/impl-BH0HWnIY.cjs +0 -2
- package/dist/impl-BIqdEXRo.cjs +0 -2
- package/dist/impl-BMxxKrNz.cjs +0 -12
- package/dist/impl-BN61r-PG.cjs +0 -2
- package/dist/impl-BRuqPhJU.cjs +0 -2
- package/dist/impl-BS8t24Z7.cjs +0 -2
- package/dist/impl-BWiNjS6v.cjs +0 -2
- package/dist/impl-BXMfTm4K.cjs +0 -2
- package/dist/impl-BYK9pQs0.cjs +0 -2
- package/dist/impl-BjOFvm4E.cjs +0 -2
- package/dist/impl-BouHRicT.cjs +0 -2
- package/dist/impl-Bv4gPikD.cjs +0 -2
- package/dist/impl-BwAnSxkP.cjs +0 -2
- package/dist/impl-C4D1tHjp.cjs +0 -2
- package/dist/impl-CA_CO88W.cjs +0 -2
- package/dist/impl-CCOEjRnr.cjs +0 -2
- package/dist/impl-CFmFCVt8.cjs +0 -2
- package/dist/impl-CSZwdpH-.cjs +0 -2
- package/dist/impl-ClDXxODZ.cjs +0 -2
- package/dist/impl-CoxOrlXu.cjs +0 -2
- package/dist/impl-Cp12F9tr.cjs +0 -2
- package/dist/impl-D3sI4I1g.cjs +0 -2
- package/dist/impl-D7WBmmHb.cjs +0 -2
- package/dist/impl-DU-WTXTY.cjs +0 -2
- package/dist/impl-DhdY6lbj.cjs +0 -2
- package/dist/impl-DpdGWdrr.cjs +0 -2
- package/dist/impl-FlZPR0yd.cjs +0 -4
- package/dist/impl-J5fV8gbh.cjs +0 -2
- package/dist/impl-NLEQuKnT.cjs +0 -2
- package/dist/impl-SkiG9sWb.cjs +0 -2
- package/dist/impl-_dGu54cO.cjs +0 -2
- package/dist/impl-ay7i0K_5.cjs +0 -2
- package/dist/impl-cfDtPbS9.cjs +0 -2
- package/dist/impl-hGu8uCC4.cjs +0 -2
- package/dist/impl-yHutqfbd.cjs +0 -2
- package/dist/syncConfigurationToTranscend-D4PLA70C.cjs +0 -2994
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require(`./
|
|
1
|
+
const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./constants-7qBywLgI.cjs`),n=require(`./syncConfigurationToTranscend-Bd0ZTIm1.cjs`),r=require(`./logger-DQwEYtSS.cjs`),i=require(`./codecs-Bvmb8o9R.cjs`);let a=require(`@transcend-io/privacy-types`),o=require(`colors`);o=e.t(o);async function s({auth:e,deploy:i=!1,transcendUrl:s=t.a,bundleTypes:c=Object.values(a.ConsentBundleType)}){let l=n.ti(s,e),u=await n.Fr(l);await n.Es(c,async e=>{r.t.info(o.default.magenta(`Update Consent Manager bundle with ID "${u}" and type "${e}" to latest version...`)),await n.Qr(l,{id:u,bundleType:e}),r.t.info(o.default.green(`Updated Consent Manager bundle with ID "${u}" and type "${e}" to latest version!`))}),i&&await n.Es(c,async e=>{r.t.info(o.default.magenta(`Deploying Consent Manager bundle with ID "${u}" and type "${e}"...`)),await n.Zr(l,{id:u,bundleType:e}),r.t.info(o.default.green(`Deployed Consent Manager bundle with ID "${u}" and type "${e}"!`))})}const c=[`ID`,`Activity`,`Encounters`,`Last Seen At`,`Has Native Do Not Sell/Share Support`,`IAB USP API Support`,`Service Description`,`Website URL`,`Categories of Recipients`];async function l({auth:e,trackerStatus:a,file:s,classifyService:l=!1,transcendUrl:u=t.a}){let d=n.ti(u,e);r.t.info(o.default.magenta(`Reading "${s}" from disk`)),await n.kt(d,n.oi(s,i.I).map(({Type:e,Notes:t,Service:r,Purpose:i,Status:o,Owners:s,Teams:l,"Connections Made To":u,...d})=>({value:u,type:e,description:t,trackingPurposes:n.li(i),status:o||a,owners:s?n.li(s):void 0,teams:l?n.li(l):void 0,attributes:Object.entries(d).filter(([e])=>!c.includes(e)).map(([e,t])=>({key:e,values:n.li(t)}))})),l)||(r.t.error(o.default.red(`Encountered error(s) syncing data flows from CSV, see logs above for more info. `)),process.exit(1))}const u=[`ID`,`Activity`,`Encounters`,`Last Seen At`,`Has Native Do Not Sell/Share Support`,`IAB USP API Support`,`Service Description`,`Website URL`,`Categories of Recipients`];async function d({auth:e,trackerStatus:a,file:s,transcendUrl:c=t.a}){let l=n.ti(c,e);r.t.info(o.default.magenta(`Reading "${s}" from disk`)),await n.Pt(l,n.oi(s,i.A).map(({"Is Regex?":e,Notes:t,Service:r,Purpose:i,Status:o,Owners:s,Teams:c,Name:l,...d})=>({...typeof e==`string`?{isRegex:e.toLowerCase()===`true`}:{},name:l,description:t,trackingPurposes:n.li(i),status:o||a,owners:s?n.li(s):void 0,teams:c?n.li(c):void 0,attributes:Object.entries(d).filter(([e])=>!u.includes(e)).map(([e,t])=>({key:e,values:n.li(t)}))})))||(r.t.error(o.default.red(`Encountered error(s) syncing cookies from CSV, see logs above for more info. `)),process.exit(1))}const f=60*1e3*60*24*7;async function p(e,{bin:t,start:r,end:i=new Date}){let a=await n.Fr(e);if(Math.floor(r.getTime()/1e3)>Math.floor(i.getTime()/1e3))throw Error(`Received "end" date that happened before "start" date`);if(t===`1h`&&i.getTime()-r.getTime()>6048e5*2)throw Error(`When using bin=1h, start and end time can be no more than 2 weeks apart`);let o=r.toISOString(),s=i.toISOString(),[c,l,u]=await Promise.all([n.Nr(e,{dataSource:`PRIVACY_SIGNAL_TIMESERIES`,startDate:o,endDate:s,forceRefetch:!0,airgapBundleId:a,binInterval:t,smoothTimeseries:!1}),n.Nr(e,{dataSource:`CONSENT_CHANGES_TIMESERIES`,startDate:o,endDate:s,forceRefetch:!0,airgapBundleId:a,binInterval:t,smoothTimeseries:!1}),n.Nr(e,{dataSource:`CONSENT_SESSIONS_BY_REGIME`,startDate:o,endDate:s,forceRefetch:!0,airgapBundleId:a,binInterval:t,smoothTimeseries:!1})]);return{PRIVACY_SIGNAL_TIMESERIES:c,CONSENT_CHANGES_TIMESERIES:l,CONSENT_SESSIONS_BY_REGIME:u}}const m=e=>new URL(`https://${e}`).hostname.split(`.`).slice(-2).join(`.`),h=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;async function g(e,{xdiLocation:i,transcendUrl:a=t.a,removeIpAddresses:s=!0,domainBlockList:c=[`localhost`],xdiAllowedCommands:l=`ConsentManager:Sync`}){let u=await n.Ts(Array.isArray(e)?e:[{apiKey:e,organizationId:``,organizationName:``}],async e=>(r.t.info(o.default.magenta(`Pulling consent metadata for organization - ${e.organizationName}`)),await n.Mr(n.ti(a,e.apiKey))),{concurrency:5}),d={};return u.forEach(e=>{let t=e.partition?.partition||e.bundleURL.split(`/`).reverse()[1];d[t]||(d[t]=[]);let r=n.js(e.configuration.domains.filter(e=>!s||!h.test(e)).map(e=>m(e)),c);d[t]=[...new Set([...d[t]||[],...r])]}),{html:`
|
|
2
2
|
<!DOCTYPE html>
|
|
3
3
|
<script
|
|
4
4
|
src="${i}"
|
|
@@ -9,4 +9,4 @@ data-xdi-commands="${l}"
|
|
|
9
9
|
|
|
10
10
|
~~~~~~~~~~~
|
|
11
11
|
Airgap scripts to host:`),t.forEach(({attributes:e,title:t},n)=>{e?.find(e=>e.key===`Airgap Production URL`)?.values?.forEach(e=>{r.t.info(`${n}) ${t} - ${e}`)})}),t}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return _}});
|
|
12
|
-
//# sourceMappingURL=consent-manager-
|
|
12
|
+
//# sourceMappingURL=consent-manager-Df8gw2Qh.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consent-manager-BNMaKHId.cjs","names":["DEFAULT_TRANSCEND_API","ConsentBundleType","buildTranscendGraphQLClient","fetchConsentManagerId","mapSeries","updateConsentManagerToLatest","deployConsentManager","OMIT_COLUMNS","DEFAULT_TRANSCEND_API","buildTranscendGraphQLClient","syncDataFlows","readCsv","DataFlowCsvInput","splitCsvToList","value","DEFAULT_TRANSCEND_API","buildTranscendGraphQLClient","syncCookies","readCsv","CookieCsvInput","splitCsvToList","fetchConsentManagerId","fetchConsentManagerAnalyticsData","DEFAULT_TRANSCEND_API","map","fetchConsentManager","buildTranscendGraphQLClient","difference"],"sources":["../src/lib/consent-manager/updateConsentManagerVersionToLatest.ts","../src/lib/consent-manager/uploadDataFlowsFromCsv.ts","../src/lib/consent-manager/uploadCookiesFromCsv.ts","../src/lib/consent-manager/pullConsentManagerMetrics.ts","../src/lib/consent-manager/domainToHost.ts","../src/lib/consent-manager/buildXdiSyncEndpoint.ts","../src/lib/consent-manager/consentManagersToBusinessEntities.ts"],"sourcesContent":["import { ConsentBundleType } from '@transcend-io/privacy-types';\nimport { mapSeries } from '../bluebird';\nimport {\n updateConsentManagerToLatest,\n buildTranscendGraphQLClient,\n fetchConsentManagerId,\n deployConsentManager,\n} from '../graphql';\nimport colors from 'colors';\n\nimport { logger } from '../../logger';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\n\n/**\n * Update the consent manager to latest version\n *\n * @param options - Options\n */\nexport async function updateConsentManagerVersionToLatest({\n auth,\n deploy = false,\n transcendUrl = DEFAULT_TRANSCEND_API,\n bundleTypes = Object.values(ConsentBundleType),\n}: {\n /** Transcend API key authentication */\n auth: string;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n /** Deploy consent manager with this update */\n deploy?: boolean;\n /** The bundle types to update and deploy */\n bundleTypes?: ConsentBundleType[];\n}): Promise<void> {\n // Find all requests made before createdAt that are in a removing data state\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Grab Consent Manager ID\n const consentManagerId = await fetchConsentManagerId(client);\n\n // Update each bundle type to latest version\n await mapSeries(bundleTypes, async (bundleType) => {\n logger.info(\n colors.magenta(\n `Update Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\" to latest version...`,\n ),\n );\n await updateConsentManagerToLatest(client, {\n id: consentManagerId,\n bundleType,\n });\n logger.info(\n colors.green(\n `Updated Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\" to latest version!`,\n ),\n );\n });\n\n // deploy Consent Managers\n if (deploy) {\n // Update each bundle type to latest version\n await mapSeries(bundleTypes, async (bundleType) => {\n logger.info(\n colors.magenta(\n `Deploying Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\"...`,\n ),\n );\n await deployConsentManager(client, {\n id: consentManagerId,\n bundleType,\n });\n logger.info(\n colors.green(\n `Deployed Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\"!`,\n ),\n );\n });\n }\n}\n","import colors from 'colors';\nimport { logger } from '../../logger';\nimport { ConsentTrackerStatus } from '@transcend-io/privacy-types';\nimport { buildTranscendGraphQLClient, syncDataFlows } from '../graphql';\nimport { readCsv } from '../requests/readCsv';\nimport { DataFlowInput, DataFlowCsvInput } from '../../codecs';\nimport { splitCsvToList } from '../requests';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\n\nconst OMIT_COLUMNS = [\n 'ID',\n 'Activity',\n 'Encounters',\n 'Last Seen At',\n 'Has Native Do Not Sell/Share Support',\n 'IAB USP API Support',\n 'Service Description',\n 'Website URL',\n 'Categories of Recipients',\n];\n\n/**\n * Upload a set of data flows from CSV\n *\n * @param options - Options\n */\nexport async function uploadDataFlowsFromCsv({\n auth,\n trackerStatus,\n file,\n classifyService = false,\n transcendUrl = DEFAULT_TRANSCEND_API,\n}: {\n /** CSV file path */\n file: string;\n /** Transcend API key authentication */\n auth: string;\n /** Sombra API key authentication */\n trackerStatus: ConsentTrackerStatus;\n /** classify data flow service if missing */\n classifyService?: boolean;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n}): Promise<void> {\n // Build a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Read from CSV the set of data flow inputs\n logger.info(colors.magenta(`Reading \"${file}\" from disk`));\n const dataFlowInputs = readCsv(file, DataFlowCsvInput);\n\n // Convert these data flow inputs into a format that the other function can use\n const validatedDataFlowInputs = dataFlowInputs.map(\n ({\n Type,\n Notes,\n // TODO: https://transcend.height.app/T-26391 - export in CSV\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Service,\n Purpose,\n Status,\n Owners,\n Teams,\n 'Connections Made To': value,\n ...rest\n }): DataFlowInput => ({\n value,\n type: Type,\n description: Notes,\n trackingPurposes: splitCsvToList(Purpose),\n // TODO: https://transcend.height.app/T-26391\n // service: Service,\n // Apply the trackerStatus to all values in the CSV -> allows for customer to define tracker status\n // on a row by row basis if needed\n status: Status || trackerStatus,\n owners: Owners ? splitCsvToList(Owners) : undefined,\n teams: Teams ? splitCsvToList(Teams) : undefined,\n // all remaining options are attribute\n attributes: Object.entries(rest)\n // filter out native columns that are exported from the admin dashboard\n // but not custom attributes\n .filter(([key]) => !OMIT_COLUMNS.includes(key))\n .map(([key, value]) => ({\n key,\n values: splitCsvToList(value),\n })),\n }),\n );\n\n // Upload the data flows into Transcend dashboard\n const syncedDataFlows = await syncDataFlows(\n client,\n validatedDataFlowInputs,\n classifyService,\n );\n\n // Log errors\n if (!syncedDataFlows) {\n logger.error(\n colors.red(\n 'Encountered error(s) syncing data flows from CSV, see logs above for more info. ',\n ),\n );\n process.exit(1);\n }\n}\n","import colors from 'colors';\nimport { logger } from '../../logger';\nimport { ConsentTrackerStatus } from '@transcend-io/privacy-types';\nimport { buildTranscendGraphQLClient, syncCookies } from '../graphql';\nimport { readCsv } from '../requests/readCsv';\nimport { CookieInput, CookieCsvInput } from '../../codecs';\nimport { splitCsvToList } from '../requests';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\n\nconst OMIT_COLUMNS = [\n 'ID',\n 'Activity',\n 'Encounters',\n 'Last Seen At',\n 'Has Native Do Not Sell/Share Support',\n 'IAB USP API Support',\n 'Service Description',\n 'Website URL',\n 'Categories of Recipients',\n];\n\n/**\n * Upload a set of cookies from CSV\n *\n * @param options - Options\n */\nexport async function uploadCookiesFromCsv({\n auth,\n trackerStatus,\n file,\n transcendUrl = DEFAULT_TRANSCEND_API,\n}: {\n /** CSV file path */\n file: string;\n /** Transcend API key authentication */\n auth: string;\n /** Sombra API key authentication */\n trackerStatus: ConsentTrackerStatus;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n}): Promise<void> {\n // Build a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Read from CSV the set of cookie inputs\n logger.info(colors.magenta(`Reading \"${file}\" from disk`));\n const cookieInputs = readCsv(file, CookieCsvInput);\n\n // Convert these inputs into a format that the other function can use\n const validatedCookieInputs = cookieInputs.map(\n ({\n 'Is Regex?': isRegex,\n Notes,\n // TODO: https://transcend.height.app/T-26391 - export in CSV\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Service,\n Purpose,\n Status,\n Owners,\n Teams,\n Name,\n ...rest\n }): CookieInput => ({\n ...(typeof isRegex === 'string'\n ? { isRegex: isRegex.toLowerCase() === 'true' }\n : {}),\n name: Name,\n description: Notes,\n trackingPurposes: splitCsvToList(Purpose),\n // TODO: https://transcend.height.app/T-26391\n // service: Service,\n // Apply the trackerStatus to all values in the CSV -> allows for customer to define tracker status\n // on a row by row basis if needed\n status: Status || trackerStatus,\n owners: Owners ? splitCsvToList(Owners) : undefined,\n teams: Teams ? splitCsvToList(Teams) : undefined,\n // all remaining options are attribute\n attributes: Object.entries(rest)\n // filter out native columns that are exported from the admin dashboard\n // but not custom attributes\n .filter(([key]) => !OMIT_COLUMNS.includes(key))\n .map(([key, value]) => ({\n key,\n values: splitCsvToList(value),\n })),\n }),\n );\n\n // Upload the cookies into Transcend dashboard\n const syncedCookies = await syncCookies(client, validatedCookieInputs);\n\n // Log errors\n if (!syncedCookies) {\n logger.error(\n colors.red(\n 'Encountered error(s) syncing cookies from CSV, see logs above for more info. ',\n ),\n );\n process.exit(1);\n }\n}\n","import type { GraphQLClient } from 'graphql-request';\nimport {\n ConsentManagerMetric,\n ConsentManagerMetricBin,\n fetchConsentManagerAnalyticsData,\n fetchConsentManagerId,\n} from '../graphql';\n\n/**\n * One second of time in ms\n */\nconst ONE_SECOND = 1000;\nconst ONE_MINUTE = 60 * ONE_SECOND;\nconst ONE_HOUR = 60 * ONE_MINUTE;\nconst ONE_DAY = 24 * ONE_HOUR;\nconst ONE_WEEK = 7 * ONE_DAY;\n\n/**\n * Pull consent manager metrics in an organization\n *\n * @param client - GraphQL client\n * @param options - Options\n * @returns The consent manager metrics\n */\nexport async function pullConsentManagerMetrics(\n client: GraphQLClient,\n {\n bin,\n start,\n end = new Date(),\n }: {\n /** Start date to pull metrics from */\n start: Date;\n /** End date to pull metrics from (assumes now) */\n end?: Date;\n /** Bin size to pull metrics */\n bin: ConsentManagerMetricBin;\n },\n): Promise<{\n /** Privacy signal data */\n PRIVACY_SIGNAL_TIMESERIES: ConsentManagerMetric[];\n /** Consent changes data */\n CONSENT_CHANGES_TIMESERIES: ConsentManagerMetric[];\n /** Consent sessions by regime */\n CONSENT_SESSIONS_BY_REGIME: ConsentManagerMetric[];\n}> {\n // Grab the bundleId associated with this API key\n const airgapBundleId = await fetchConsentManagerId(client);\n\n // convert start and end to times\n const startTime = Math.floor(start.getTime() / 1000);\n const endTime = Math.floor(end.getTime() / 1000);\n if (startTime > endTime) {\n throw new Error('Received \"end\" date that happened before \"start\" date');\n }\n\n // do not allow hourly bins greater than 2 weeks\n if (bin === '1h' && end.getTime() - start.getTime() > ONE_WEEK * 2) {\n throw new Error(\n 'When using bin=1h, start and end time can be no more than 2 weeks apart',\n );\n }\n\n // Pull in the metrics\n const startDate = start.toISOString();\n const endDate = end.toISOString();\n const [privacySignalData, consentChangesData, consentSessionsByRegimeData] =\n await Promise.all([\n fetchConsentManagerAnalyticsData(client, {\n dataSource: 'PRIVACY_SIGNAL_TIMESERIES',\n startDate,\n endDate,\n forceRefetch: true,\n airgapBundleId,\n binInterval: bin,\n smoothTimeseries: false,\n }),\n fetchConsentManagerAnalyticsData(client, {\n dataSource: 'CONSENT_CHANGES_TIMESERIES',\n startDate,\n endDate,\n forceRefetch: true,\n airgapBundleId,\n binInterval: bin,\n smoothTimeseries: false,\n }),\n fetchConsentManagerAnalyticsData(client, {\n dataSource: 'CONSENT_SESSIONS_BY_REGIME',\n startDate,\n endDate,\n forceRefetch: true,\n airgapBundleId,\n binInterval: bin,\n smoothTimeseries: false,\n }),\n ]);\n\n return {\n PRIVACY_SIGNAL_TIMESERIES: privacySignalData,\n CONSENT_CHANGES_TIMESERIES: consentChangesData,\n CONSENT_SESSIONS_BY_REGIME: consentSessionsByRegimeData,\n };\n}\n","/**\n * Convert a domain to host\n *\n * @param domain - e.g. test.acme.com\n * @returns Host acme.com\n */\nexport const domainToHost = (domain: string): string =>\n new URL(`https://${domain}`).hostname.split('.').slice(-2).join('.');\n","import colors from 'colors';\n\nimport { buildTranscendGraphQLClient, fetchConsentManager } from '../graphql';\nimport { difference } from 'lodash-es';\nimport { map } from '../bluebird';\nimport { StoredApiKey } from '../../codecs';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\nimport { logger } from '../../logger';\nimport { domainToHost } from './domainToHost';\n\n/**\n * Sync group configuration mapping\n * e.g.\n * {\n * \"abdb5e78-0d69-4554-a3bd-84b72ca3b3d9\": [\n * \"test.com\"\n * ],\n * \"f6b3ba87-c9df-444f-b420-6fac49e35910\": [\n * \"blue.com\"\n * ]\n * }\n */\nexport type XdiSyncGroups = { [k in string]: string[] };\n\n/** Regular expression for IP addresses - remove these from sync endpoint */\nexport const IP_ADDRESS_REGEX =\n // eslint-disable-next-line max-len\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n\n/**\n * Build the sync endpoint definition for a set of Transcend accounts\n *\n * @param apiKeys - The API keys that will be used to pull down configurations for\n * @param options - Options\n * @returns The XDI configuration\n */\nexport async function buildXdiSyncEndpoint(\n apiKeys: string | StoredApiKey[],\n {\n xdiLocation,\n transcendUrl = DEFAULT_TRANSCEND_API,\n removeIpAddresses = true,\n domainBlockList = ['localhost'],\n xdiAllowedCommands = 'ConsentManager:Sync',\n }: {\n /** The file location where the XDI file is hosted */\n xdiLocation: string;\n /** URL of Transcend API */\n transcendUrl?: string;\n /** When true, remove IP addresses (defaults to true) */\n removeIpAddresses?: boolean;\n /** Block list of domains to omit from sync endpoint - includes `localhost` by default */\n domainBlockList?: string[];\n /** Allows XDI commands */\n xdiAllowedCommands?: string;\n },\n): Promise<{\n /** Sync group configurations */\n syncGroups: XdiSyncGroups;\n /** The HTML string */\n html: string;\n}> {\n // Convert API keys to list\n const apiKeysAsList = Array.isArray(apiKeys)\n ? apiKeys\n : [{ apiKey: apiKeys, organizationId: '', organizationName: '' }];\n\n // Fetch configuration for each account\n const consentManagers = await map(\n apiKeysAsList,\n async (apiKey) => {\n logger.info(\n colors.magenta(\n `Pulling consent metadata for organization - ${apiKey.organizationName}`,\n ),\n );\n\n // Create a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, apiKey.apiKey);\n\n // Grab consent manager\n const consentManager = await fetchConsentManager(client);\n return consentManager;\n },\n { concurrency: 5 },\n );\n\n // construct the sync groups\n const syncGroups: XdiSyncGroups = {};\n consentManagers.forEach((consentManager) => {\n // grab the partition key\n const partitionKey =\n // take explicit key first\n consentManager.partition?.partition ||\n // fallback to bundle ID\n consentManager.bundleURL.split('/').reverse()[1];\n\n // Ensure that partition exists in the sync groups\n if (!syncGroups[partitionKey]) {\n syncGroups[partitionKey] = [];\n }\n\n // Map domain list to a host list\n const hosts = difference(\n consentManager.configuration.domains\n .filter(\n // ignore IP addresses\n (domain) => !removeIpAddresses || !IP_ADDRESS_REGEX.test(domain),\n )\n .map((domain) => domainToHost(domain)),\n // ignore block list\n domainBlockList,\n );\n // merge existing sync group with hosts for this consent manager\n syncGroups[partitionKey] = [\n ...new Set([...(syncGroups[partitionKey] || []), ...hosts]),\n ];\n });\n\n // Construct the HTML\n const syncEndpointHtml = `\n<!DOCTYPE html>\n<script\nsrc=\"${xdiLocation}\"\ndata-sync-groups='${JSON.stringify(syncGroups, null, 2)}'\ndata-xdi-commands=\"${xdiAllowedCommands}\"\n></script>\n`;\n\n return {\n html: syncEndpointHtml,\n syncGroups,\n };\n}\n","import { BusinessEntityInput, ConsentManagerInput } from '../../codecs';\nimport { logger } from '../../logger';\n\n/**\n * Combine multiple consent manager configurations into a list of business entity configurations\n *\n * @param inputs - Consent manager configurations to combine\n * @returns Business entity configuration input\n */\nexport function consentManagersToBusinessEntities(\n inputs: {\n /** Name of business entity */\n name: string;\n /** Consent manager input */\n input?: ConsentManagerInput;\n }[],\n): BusinessEntityInput[] {\n // Construct the business entities YAML definition\n const businessEntities = inputs.map(\n ({ name, input }): BusinessEntityInput => ({\n // Title of Transcend Instance\n title: name.replace('.yml', ''),\n attributes: [\n // Sync domain list\n ...(input?.domains\n ? [\n {\n key: 'Transcend Domain List',\n values: [...new Set(input.domains)],\n },\n ]\n : []),\n // Sync bundle URLs\n ...(input?.bundleUrls\n ? [\n {\n key: 'Airgap Production URL',\n values: [input.bundleUrls.PRODUCTION],\n },\n {\n key: 'Airgap Test URL',\n values: [input.bundleUrls.TEST],\n },\n {\n key: 'Airgap XDI URL',\n values: [\n input.bundleUrls.PRODUCTION.replace('airgap.js', 'xdi.js'),\n ],\n },\n ]\n : []),\n // Sync partition keys\n ...(input?.partition\n ? [\n {\n key: 'Consent Partition Key',\n values: [input.partition],\n },\n ]\n : []),\n ],\n }),\n );\n\n // Log out info on airgap scripts to host\n logger.info('\\n\\n~~~~~~~~~~~\\nAirgap scripts to host:');\n businessEntities.forEach(({ attributes, title }, ind) => {\n attributes\n ?.find((attr) => attr.key === 'Airgap Production URL')\n ?.values?.forEach((url) => {\n logger.info(`${ind}) ${title} - ${url}`);\n });\n });\n\n return businessEntities;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"consent-manager-Df8gw2Qh.cjs","names":["DEFAULT_TRANSCEND_API","ConsentBundleType","buildTranscendGraphQLClient","fetchConsentManagerId","mapSeries","updateConsentManagerToLatest","deployConsentManager","OMIT_COLUMNS","DEFAULT_TRANSCEND_API","buildTranscendGraphQLClient","syncDataFlows","readCsv","DataFlowCsvInput","splitCsvToList","value","DEFAULT_TRANSCEND_API","buildTranscendGraphQLClient","syncCookies","readCsv","CookieCsvInput","splitCsvToList","fetchConsentManagerId","fetchConsentManagerAnalyticsData","DEFAULT_TRANSCEND_API","map","fetchConsentManager","buildTranscendGraphQLClient","difference"],"sources":["../src/lib/consent-manager/updateConsentManagerVersionToLatest.ts","../src/lib/consent-manager/uploadDataFlowsFromCsv.ts","../src/lib/consent-manager/uploadCookiesFromCsv.ts","../src/lib/consent-manager/pullConsentManagerMetrics.ts","../src/lib/consent-manager/domainToHost.ts","../src/lib/consent-manager/buildXdiSyncEndpoint.ts","../src/lib/consent-manager/consentManagersToBusinessEntities.ts"],"sourcesContent":["import { ConsentBundleType } from '@transcend-io/privacy-types';\nimport { mapSeries } from '../bluebird';\nimport {\n updateConsentManagerToLatest,\n buildTranscendGraphQLClient,\n fetchConsentManagerId,\n deployConsentManager,\n} from '../graphql';\nimport colors from 'colors';\n\nimport { logger } from '../../logger';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\n\n/**\n * Update the consent manager to latest version\n *\n * @param options - Options\n */\nexport async function updateConsentManagerVersionToLatest({\n auth,\n deploy = false,\n transcendUrl = DEFAULT_TRANSCEND_API,\n bundleTypes = Object.values(ConsentBundleType),\n}: {\n /** Transcend API key authentication */\n auth: string;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n /** Deploy consent manager with this update */\n deploy?: boolean;\n /** The bundle types to update and deploy */\n bundleTypes?: ConsentBundleType[];\n}): Promise<void> {\n // Find all requests made before createdAt that are in a removing data state\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Grab Consent Manager ID\n const consentManagerId = await fetchConsentManagerId(client);\n\n // Update each bundle type to latest version\n await mapSeries(bundleTypes, async (bundleType) => {\n logger.info(\n colors.magenta(\n `Update Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\" to latest version...`,\n ),\n );\n await updateConsentManagerToLatest(client, {\n id: consentManagerId,\n bundleType,\n });\n logger.info(\n colors.green(\n `Updated Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\" to latest version!`,\n ),\n );\n });\n\n // deploy Consent Managers\n if (deploy) {\n // Update each bundle type to latest version\n await mapSeries(bundleTypes, async (bundleType) => {\n logger.info(\n colors.magenta(\n `Deploying Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\"...`,\n ),\n );\n await deployConsentManager(client, {\n id: consentManagerId,\n bundleType,\n });\n logger.info(\n colors.green(\n `Deployed Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\"!`,\n ),\n );\n });\n }\n}\n","import colors from 'colors';\nimport { logger } from '../../logger';\nimport { ConsentTrackerStatus } from '@transcend-io/privacy-types';\nimport { buildTranscendGraphQLClient, syncDataFlows } from '../graphql';\nimport { readCsv } from '../requests/readCsv';\nimport { DataFlowInput, DataFlowCsvInput } from '../../codecs';\nimport { splitCsvToList } from '../requests';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\n\nconst OMIT_COLUMNS = [\n 'ID',\n 'Activity',\n 'Encounters',\n 'Last Seen At',\n 'Has Native Do Not Sell/Share Support',\n 'IAB USP API Support',\n 'Service Description',\n 'Website URL',\n 'Categories of Recipients',\n];\n\n/**\n * Upload a set of data flows from CSV\n *\n * @param options - Options\n */\nexport async function uploadDataFlowsFromCsv({\n auth,\n trackerStatus,\n file,\n classifyService = false,\n transcendUrl = DEFAULT_TRANSCEND_API,\n}: {\n /** CSV file path */\n file: string;\n /** Transcend API key authentication */\n auth: string;\n /** Sombra API key authentication */\n trackerStatus: ConsentTrackerStatus;\n /** classify data flow service if missing */\n classifyService?: boolean;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n}): Promise<void> {\n // Build a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Read from CSV the set of data flow inputs\n logger.info(colors.magenta(`Reading \"${file}\" from disk`));\n const dataFlowInputs = readCsv(file, DataFlowCsvInput);\n\n // Convert these data flow inputs into a format that the other function can use\n const validatedDataFlowInputs = dataFlowInputs.map(\n ({\n Type,\n Notes,\n // TODO: https://transcend.height.app/T-26391 - export in CSV\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Service,\n Purpose,\n Status,\n Owners,\n Teams,\n 'Connections Made To': value,\n ...rest\n }): DataFlowInput => ({\n value,\n type: Type,\n description: Notes,\n trackingPurposes: splitCsvToList(Purpose),\n // TODO: https://transcend.height.app/T-26391\n // service: Service,\n // Apply the trackerStatus to all values in the CSV -> allows for customer to define tracker status\n // on a row by row basis if needed\n status: Status || trackerStatus,\n owners: Owners ? splitCsvToList(Owners) : undefined,\n teams: Teams ? splitCsvToList(Teams) : undefined,\n // all remaining options are attribute\n attributes: Object.entries(rest)\n // filter out native columns that are exported from the admin dashboard\n // but not custom attributes\n .filter(([key]) => !OMIT_COLUMNS.includes(key))\n .map(([key, value]) => ({\n key,\n values: splitCsvToList(value),\n })),\n }),\n );\n\n // Upload the data flows into Transcend dashboard\n const syncedDataFlows = await syncDataFlows(\n client,\n validatedDataFlowInputs,\n classifyService,\n );\n\n // Log errors\n if (!syncedDataFlows) {\n logger.error(\n colors.red(\n 'Encountered error(s) syncing data flows from CSV, see logs above for more info. ',\n ),\n );\n process.exit(1);\n }\n}\n","import colors from 'colors';\nimport { logger } from '../../logger';\nimport { ConsentTrackerStatus } from '@transcend-io/privacy-types';\nimport { buildTranscendGraphQLClient, syncCookies } from '../graphql';\nimport { readCsv } from '../requests/readCsv';\nimport { CookieInput, CookieCsvInput } from '../../codecs';\nimport { splitCsvToList } from '../requests';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\n\nconst OMIT_COLUMNS = [\n 'ID',\n 'Activity',\n 'Encounters',\n 'Last Seen At',\n 'Has Native Do Not Sell/Share Support',\n 'IAB USP API Support',\n 'Service Description',\n 'Website URL',\n 'Categories of Recipients',\n];\n\n/**\n * Upload a set of cookies from CSV\n *\n * @param options - Options\n */\nexport async function uploadCookiesFromCsv({\n auth,\n trackerStatus,\n file,\n transcendUrl = DEFAULT_TRANSCEND_API,\n}: {\n /** CSV file path */\n file: string;\n /** Transcend API key authentication */\n auth: string;\n /** Sombra API key authentication */\n trackerStatus: ConsentTrackerStatus;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n}): Promise<void> {\n // Build a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Read from CSV the set of cookie inputs\n logger.info(colors.magenta(`Reading \"${file}\" from disk`));\n const cookieInputs = readCsv(file, CookieCsvInput);\n\n // Convert these inputs into a format that the other function can use\n const validatedCookieInputs = cookieInputs.map(\n ({\n 'Is Regex?': isRegex,\n Notes,\n // TODO: https://transcend.height.app/T-26391 - export in CSV\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Service,\n Purpose,\n Status,\n Owners,\n Teams,\n Name,\n ...rest\n }): CookieInput => ({\n ...(typeof isRegex === 'string'\n ? { isRegex: isRegex.toLowerCase() === 'true' }\n : {}),\n name: Name,\n description: Notes,\n trackingPurposes: splitCsvToList(Purpose),\n // TODO: https://transcend.height.app/T-26391\n // service: Service,\n // Apply the trackerStatus to all values in the CSV -> allows for customer to define tracker status\n // on a row by row basis if needed\n status: Status || trackerStatus,\n owners: Owners ? splitCsvToList(Owners) : undefined,\n teams: Teams ? splitCsvToList(Teams) : undefined,\n // all remaining options are attribute\n attributes: Object.entries(rest)\n // filter out native columns that are exported from the admin dashboard\n // but not custom attributes\n .filter(([key]) => !OMIT_COLUMNS.includes(key))\n .map(([key, value]) => ({\n key,\n values: splitCsvToList(value),\n })),\n }),\n );\n\n // Upload the cookies into Transcend dashboard\n const syncedCookies = await syncCookies(client, validatedCookieInputs);\n\n // Log errors\n if (!syncedCookies) {\n logger.error(\n colors.red(\n 'Encountered error(s) syncing cookies from CSV, see logs above for more info. ',\n ),\n );\n process.exit(1);\n }\n}\n","import type { GraphQLClient } from 'graphql-request';\nimport {\n ConsentManagerMetric,\n ConsentManagerMetricBin,\n fetchConsentManagerAnalyticsData,\n fetchConsentManagerId,\n} from '../graphql';\n\n/**\n * One second of time in ms\n */\nconst ONE_SECOND = 1000;\nconst ONE_MINUTE = 60 * ONE_SECOND;\nconst ONE_HOUR = 60 * ONE_MINUTE;\nconst ONE_DAY = 24 * ONE_HOUR;\nconst ONE_WEEK = 7 * ONE_DAY;\n\n/**\n * Pull consent manager metrics in an organization\n *\n * @param client - GraphQL client\n * @param options - Options\n * @returns The consent manager metrics\n */\nexport async function pullConsentManagerMetrics(\n client: GraphQLClient,\n {\n bin,\n start,\n end = new Date(),\n }: {\n /** Start date to pull metrics from */\n start: Date;\n /** End date to pull metrics from (assumes now) */\n end?: Date;\n /** Bin size to pull metrics */\n bin: ConsentManagerMetricBin;\n },\n): Promise<{\n /** Privacy signal data */\n PRIVACY_SIGNAL_TIMESERIES: ConsentManagerMetric[];\n /** Consent changes data */\n CONSENT_CHANGES_TIMESERIES: ConsentManagerMetric[];\n /** Consent sessions by regime */\n CONSENT_SESSIONS_BY_REGIME: ConsentManagerMetric[];\n}> {\n // Grab the bundleId associated with this API key\n const airgapBundleId = await fetchConsentManagerId(client);\n\n // convert start and end to times\n const startTime = Math.floor(start.getTime() / 1000);\n const endTime = Math.floor(end.getTime() / 1000);\n if (startTime > endTime) {\n throw new Error('Received \"end\" date that happened before \"start\" date');\n }\n\n // do not allow hourly bins greater than 2 weeks\n if (bin === '1h' && end.getTime() - start.getTime() > ONE_WEEK * 2) {\n throw new Error(\n 'When using bin=1h, start and end time can be no more than 2 weeks apart',\n );\n }\n\n // Pull in the metrics\n const startDate = start.toISOString();\n const endDate = end.toISOString();\n const [privacySignalData, consentChangesData, consentSessionsByRegimeData] =\n await Promise.all([\n fetchConsentManagerAnalyticsData(client, {\n dataSource: 'PRIVACY_SIGNAL_TIMESERIES',\n startDate,\n endDate,\n forceRefetch: true,\n airgapBundleId,\n binInterval: bin,\n smoothTimeseries: false,\n }),\n fetchConsentManagerAnalyticsData(client, {\n dataSource: 'CONSENT_CHANGES_TIMESERIES',\n startDate,\n endDate,\n forceRefetch: true,\n airgapBundleId,\n binInterval: bin,\n smoothTimeseries: false,\n }),\n fetchConsentManagerAnalyticsData(client, {\n dataSource: 'CONSENT_SESSIONS_BY_REGIME',\n startDate,\n endDate,\n forceRefetch: true,\n airgapBundleId,\n binInterval: bin,\n smoothTimeseries: false,\n }),\n ]);\n\n return {\n PRIVACY_SIGNAL_TIMESERIES: privacySignalData,\n CONSENT_CHANGES_TIMESERIES: consentChangesData,\n CONSENT_SESSIONS_BY_REGIME: consentSessionsByRegimeData,\n };\n}\n","/**\n * Convert a domain to host\n *\n * @param domain - e.g. test.acme.com\n * @returns Host acme.com\n */\nexport const domainToHost = (domain: string): string =>\n new URL(`https://${domain}`).hostname.split('.').slice(-2).join('.');\n","import colors from 'colors';\n\nimport { buildTranscendGraphQLClient, fetchConsentManager } from '../graphql';\nimport { difference } from 'lodash-es';\nimport { map } from '../bluebird';\nimport { StoredApiKey } from '../../codecs';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\nimport { logger } from '../../logger';\nimport { domainToHost } from './domainToHost';\n\n/**\n * Sync group configuration mapping\n * e.g.\n * {\n * \"abdb5e78-0d69-4554-a3bd-84b72ca3b3d9\": [\n * \"test.com\"\n * ],\n * \"f6b3ba87-c9df-444f-b420-6fac49e35910\": [\n * \"blue.com\"\n * ]\n * }\n */\nexport type XdiSyncGroups = { [k in string]: string[] };\n\n/** Regular expression for IP addresses - remove these from sync endpoint */\nexport const IP_ADDRESS_REGEX =\n // eslint-disable-next-line max-len\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n\n/**\n * Build the sync endpoint definition for a set of Transcend accounts\n *\n * @param apiKeys - The API keys that will be used to pull down configurations for\n * @param options - Options\n * @returns The XDI configuration\n */\nexport async function buildXdiSyncEndpoint(\n apiKeys: string | StoredApiKey[],\n {\n xdiLocation,\n transcendUrl = DEFAULT_TRANSCEND_API,\n removeIpAddresses = true,\n domainBlockList = ['localhost'],\n xdiAllowedCommands = 'ConsentManager:Sync',\n }: {\n /** The file location where the XDI file is hosted */\n xdiLocation: string;\n /** URL of Transcend API */\n transcendUrl?: string;\n /** When true, remove IP addresses (defaults to true) */\n removeIpAddresses?: boolean;\n /** Block list of domains to omit from sync endpoint - includes `localhost` by default */\n domainBlockList?: string[];\n /** Allows XDI commands */\n xdiAllowedCommands?: string;\n },\n): Promise<{\n /** Sync group configurations */\n syncGroups: XdiSyncGroups;\n /** The HTML string */\n html: string;\n}> {\n // Convert API keys to list\n const apiKeysAsList = Array.isArray(apiKeys)\n ? apiKeys\n : [{ apiKey: apiKeys, organizationId: '', organizationName: '' }];\n\n // Fetch configuration for each account\n const consentManagers = await map(\n apiKeysAsList,\n async (apiKey) => {\n logger.info(\n colors.magenta(\n `Pulling consent metadata for organization - ${apiKey.organizationName}`,\n ),\n );\n\n // Create a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, apiKey.apiKey);\n\n // Grab consent manager\n const consentManager = await fetchConsentManager(client);\n return consentManager;\n },\n { concurrency: 5 },\n );\n\n // construct the sync groups\n const syncGroups: XdiSyncGroups = {};\n consentManagers.forEach((consentManager) => {\n // grab the partition key\n const partitionKey =\n // take explicit key first\n consentManager.partition?.partition ||\n // fallback to bundle ID\n consentManager.bundleURL.split('/').reverse()[1];\n\n // Ensure that partition exists in the sync groups\n if (!syncGroups[partitionKey]) {\n syncGroups[partitionKey] = [];\n }\n\n // Map domain list to a host list\n const hosts = difference(\n consentManager.configuration.domains\n .filter(\n // ignore IP addresses\n (domain) => !removeIpAddresses || !IP_ADDRESS_REGEX.test(domain),\n )\n .map((domain) => domainToHost(domain)),\n // ignore block list\n domainBlockList,\n );\n // merge existing sync group with hosts for this consent manager\n syncGroups[partitionKey] = [\n ...new Set([...(syncGroups[partitionKey] || []), ...hosts]),\n ];\n });\n\n // Construct the HTML\n const syncEndpointHtml = `\n<!DOCTYPE html>\n<script\nsrc=\"${xdiLocation}\"\ndata-sync-groups='${JSON.stringify(syncGroups, null, 2)}'\ndata-xdi-commands=\"${xdiAllowedCommands}\"\n></script>\n`;\n\n return {\n html: syncEndpointHtml,\n syncGroups,\n };\n}\n","import { BusinessEntityInput, ConsentManagerInput } from '../../codecs';\nimport { logger } from '../../logger';\n\n/**\n * Combine multiple consent manager configurations into a list of business entity configurations\n *\n * @param inputs - Consent manager configurations to combine\n * @returns Business entity configuration input\n */\nexport function consentManagersToBusinessEntities(\n inputs: {\n /** Name of business entity */\n name: string;\n /** Consent manager input */\n input?: ConsentManagerInput;\n }[],\n): BusinessEntityInput[] {\n // Construct the business entities YAML definition\n const businessEntities = inputs.map(\n ({ name, input }): BusinessEntityInput => ({\n // Title of Transcend Instance\n title: name.replace('.yml', ''),\n attributes: [\n // Sync domain list\n ...(input?.domains\n ? [\n {\n key: 'Transcend Domain List',\n values: [...new Set(input.domains)],\n },\n ]\n : []),\n // Sync bundle URLs\n ...(input?.bundleUrls\n ? [\n {\n key: 'Airgap Production URL',\n values: [input.bundleUrls.PRODUCTION],\n },\n {\n key: 'Airgap Test URL',\n values: [input.bundleUrls.TEST],\n },\n {\n key: 'Airgap XDI URL',\n values: [\n input.bundleUrls.PRODUCTION.replace('airgap.js', 'xdi.js'),\n ],\n },\n ]\n : []),\n // Sync partition keys\n ...(input?.partition\n ? [\n {\n key: 'Consent Partition Key',\n values: [input.partition],\n },\n ]\n : []),\n ],\n }),\n );\n\n // Log out info on airgap scripts to host\n logger.info('\\n\\n~~~~~~~~~~~\\nAirgap scripts to host:');\n businessEntities.forEach(({ attributes, title }, ind) => {\n attributes\n ?.find((attr) => attr.key === 'Airgap Production URL')\n ?.values?.forEach((url) => {\n logger.info(`${ind}) ${title} - ${url}`);\n });\n });\n\n return businessEntities;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./enums-BZulhPFa.cjs`);let n=require(`@transcend-io/privacy-types`);var r=typeof global==`object`&&global&&global.Object===Object&&global,i=r,a=typeof self==`object`&&self&&self.Object===Object&&self,o=i||a||Function(`return this`)(),s=o,c=s.Symbol,l=c,u=Object.prototype,d=u.hasOwnProperty,f=u.toString,p=l?l.toStringTag:void 0;function m(e){var t=d.call(e,p),n=e[p];try{e[p]=void 0;var r=!0}catch{}var i=f.call(e);return r&&(t?e[p]=n:delete e[p]),i}var h=m,g=Object.prototype.toString;function ee(e){return g.call(e)}var _=ee,v=`[object Null]`,te=`[object Undefined]`,ne=l?l.toStringTag:void 0;function re(e){return e==null?e===void 0?te:v:ne&&ne in Object(e)?h(e):_(e)}var y=re;function ie(e){return typeof e==`object`&&!!e}var b=ie,ae=`[object Symbol]`;function oe(e){return typeof e==`symbol`||b(e)&&y(e)==ae}var x=oe;function se(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}var ce=se,le=Array.isArray,S=le,ue=1/0,de=l?l.prototype:void 0,fe=de?de.toString:void 0;function pe(e){if(typeof e==`string`)return e;if(S(e))return ce(e,pe)+``;if(x(e))return fe?fe.call(e):``;var t=e+``;return t==`0`&&1/e==-ue?`-0`:t}var me=pe;function he(e){var t=typeof e;return e!=null&&(t==`object`||t==`function`)}var C=he;function ge(e){return e}var _e=ge,ve=`[object AsyncFunction]`,ye=`[object Function]`,be=`[object GeneratorFunction]`,xe=`[object Proxy]`;function Se(e){if(!C(e))return!1;var t=y(e);return t==ye||t==be||t==ve||t==xe}var Ce=Se,we=s[`__core-js_shared__`],w=we,Te=function(){var e=/[^.]+$/.exec(w&&w.keys&&w.keys.IE_PROTO||``);return e?`Symbol(src)_1.`+e:``}();function Ee(e){return!!Te&&Te in e}var De=Ee,Oe=Function.prototype.toString;function ke(e){if(e!=null){try{return Oe.call(e)}catch{}try{return e+``}catch{}}return``}var T=ke,Ae=/[\\^$.*+?()[\]{}|]/g,je=/^\[object .+?Constructor\]$/,Me=Function.prototype,Ne=Object.prototype,Pe=Me.toString,Fe=Ne.hasOwnProperty,Ie=RegExp(`^`+Pe.call(Fe).replace(Ae,`\\$&`).replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,`$1.*?`)+`$`);function Le(e){return!C(e)||De(e)?!1:(Ce(e)?Ie:je).test(T(e))}var Re=Le;function ze(e,t){return e?.[t]}var Be=ze;function Ve(e,t){var n=Be(e,t);return Re(n)?n:void 0}var E=Ve,He=E(s,`WeakMap`),D=He,Ue=function(){try{var e=E(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),We=Ue,Ge=9007199254740991,Ke=/^(?:0|[1-9]\d*)$/;function qe(e,t){var n=typeof e;return t??=Ge,!!t&&(n==`number`||n!=`symbol`&&Ke.test(e))&&e>-1&&e%1==0&&e<t}var Je=qe;function Ye(e,t,n){t==`__proto__`&&We?We(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}var Xe=Ye;function Ze(e,t){return e===t||e!==e&&t!==t}var Qe=Ze,$e=9007199254740991;function et(e){return typeof e==`number`&&e>-1&&e%1==0&&e<=$e}var O=et;function tt(e){return e!=null&&O(e.length)&&!Ce(e)}var k=tt,nt=Object.prototype;function rt(e){var t=e&&e.constructor;return e===(typeof t==`function`&&t.prototype||nt)}var it=rt;function at(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}var ot=at,st=`[object Arguments]`;function ct(e){return b(e)&&y(e)==st}var lt=ct,ut=Object.prototype,dt=ut.hasOwnProperty,ft=ut.propertyIsEnumerable,pt=lt(function(){return arguments}())?lt:function(e){return b(e)&&dt.call(e,`callee`)&&!ft.call(e,`callee`)},A=pt;function mt(){return!1}var ht=mt,gt=typeof exports==`object`&&exports&&!exports.nodeType&&exports,_t=gt&&typeof module==`object`&&module&&!module.nodeType&&module,vt=_t&&_t.exports===gt?s.Buffer:void 0,yt=(vt?vt.isBuffer:void 0)||ht,j=yt,bt=`[object Arguments]`,xt=`[object Array]`,St=`[object Boolean]`,Ct=`[object Date]`,wt=`[object Error]`,Tt=`[object Function]`,Et=`[object Map]`,Dt=`[object Number]`,Ot=`[object Object]`,kt=`[object RegExp]`,At=`[object Set]`,jt=`[object String]`,Mt=`[object WeakMap]`,Nt=`[object ArrayBuffer]`,Pt=`[object DataView]`,Ft=`[object Float32Array]`,It=`[object Float64Array]`,Lt=`[object Int8Array]`,Rt=`[object Int16Array]`,zt=`[object Int32Array]`,Bt=`[object Uint8Array]`,Vt=`[object Uint8ClampedArray]`,Ht=`[object Uint16Array]`,Ut=`[object Uint32Array]`,M={};M[Ft]=M[It]=M[Lt]=M[Rt]=M[zt]=M[Bt]=M[Vt]=M[Ht]=M[Ut]=!0,M[bt]=M[xt]=M[Nt]=M[St]=M[Pt]=M[Ct]=M[wt]=M[Tt]=M[Et]=M[Dt]=M[Ot]=M[kt]=M[At]=M[jt]=M[Mt]=!1;function Wt(e){return b(e)&&O(e.length)&&!!M[y(e)]}var Gt=Wt;function Kt(e){return function(t){return e(t)}}var qt=Kt,Jt=typeof exports==`object`&&exports&&!exports.nodeType&&exports,N=Jt&&typeof module==`object`&&module&&!module.nodeType&&module,P=N&&N.exports===Jt&&i.process,Yt=function(){try{return N&&N.require&&N.require(`util`).types||P&&P.binding&&P.binding(`util`)}catch{}}(),Xt=Yt,Zt=Xt&&Xt.isTypedArray,Qt=Zt?qt(Zt):Gt,$t=Qt,en=Object.prototype.hasOwnProperty;function tn(e,t){var n=S(e),r=!n&&A(e),i=!n&&!r&&j(e),a=!n&&!r&&!i&&$t(e),o=n||r||i||a,s=o?ot(e.length,String):[],c=s.length;for(var l in e)(t||en.call(e,l))&&!(o&&(l==`length`||i&&(l==`offset`||l==`parent`)||a&&(l==`buffer`||l==`byteLength`||l==`byteOffset`)||Je(l,c)))&&s.push(l);return s}var nn=tn;function rn(e,t){return function(n){return e(t(n))}}var an=rn,on=an(Object.keys,Object),sn=on,cn=Object.prototype.hasOwnProperty;function ln(e){if(!it(e))return sn(e);var t=[];for(var n in Object(e))cn.call(e,n)&&n!=`constructor`&&t.push(n);return t}var un=ln;function dn(e){return k(e)?nn(e):un(e)}var fn=dn,pn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,mn=/^\w*$/;function hn(e,t){if(S(e))return!1;var n=typeof e;return n==`number`||n==`symbol`||n==`boolean`||e==null||x(e)?!0:mn.test(e)||!pn.test(e)||t!=null&&e in Object(t)}var F=hn,gn=E(Object,`create`),I=gn;function _n(){this.__data__=I?I(null):{},this.size=0}var vn=_n;function yn(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var bn=yn,xn=`__lodash_hash_undefined__`,Sn=Object.prototype.hasOwnProperty;function Cn(e){var t=this.__data__;if(I){var n=t[e];return n===xn?void 0:n}return Sn.call(t,e)?t[e]:void 0}var wn=Cn,Tn=Object.prototype.hasOwnProperty;function En(e){var t=this.__data__;return I?t[e]!==void 0:Tn.call(t,e)}var Dn=En,On=`__lodash_hash_undefined__`;function kn(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=I&&t===void 0?On:t,this}var An=kn;function L(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}L.prototype.clear=vn,L.prototype.delete=bn,L.prototype.get=wn,L.prototype.has=Dn,L.prototype.set=An;var jn=L;function Mn(){this.__data__=[],this.size=0}var Nn=Mn;function Pn(e,t){for(var n=e.length;n--;)if(Qe(e[n][0],t))return n;return-1}var R=Pn,Fn=Array.prototype.splice;function In(e){var t=this.__data__,n=R(t,e);return n<0?!1:(n==t.length-1?t.pop():Fn.call(t,n,1),--this.size,!0)}var Ln=In;function Rn(e){var t=this.__data__,n=R(t,e);return n<0?void 0:t[n][1]}var zn=Rn;function Bn(e){return R(this.__data__,e)>-1}var Vn=Bn;function Hn(e,t){var n=this.__data__,r=R(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var Un=Hn;function z(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}z.prototype.clear=Nn,z.prototype.delete=Ln,z.prototype.get=zn,z.prototype.has=Vn,z.prototype.set=Un;var B=z,Wn=E(s,`Map`),V=Wn;function Gn(){this.size=0,this.__data__={hash:new jn,map:new(V||B),string:new jn}}var Kn=Gn;function qn(e){var t=typeof e;return t==`string`||t==`number`||t==`symbol`||t==`boolean`?e!==`__proto__`:e===null}var Jn=qn;function Yn(e,t){var n=e.__data__;return Jn(t)?n[typeof t==`string`?`string`:`hash`]:n.map}var H=Yn;function Xn(e){var t=H(this,e).delete(e);return this.size-=t?1:0,t}var Zn=Xn;function Qn(e){return H(this,e).get(e)}var $n=Qn;function er(e){return H(this,e).has(e)}var tr=er;function nr(e,t){var n=H(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}var rr=nr;function U(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}U.prototype.clear=Kn,U.prototype.delete=Zn,U.prototype.get=$n,U.prototype.has=tr,U.prototype.set=rr;var W=U,ir=`Expected a function`;function G(e,t){if(typeof e!=`function`||t!=null&&typeof t!=`function`)throw TypeError(ir);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=e.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(G.Cache||W),n}G.Cache=W;var ar=G,or=500;function sr(e){var t=ar(e,function(e){return n.size===or&&n.clear(),e}),n=t.cache;return t}var cr=sr,lr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ur=/\\(\\)?/g,dr=cr(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(``),e.replace(lr,function(e,n,r,i){t.push(r?i.replace(ur,`$1`):n||e)}),t}),fr=dr;function pr(e){return e==null?``:me(e)}var mr=pr;function hr(e,t){return S(e)?e:F(e,t)?[e]:fr(mr(e))}var gr=hr,_r=1/0;function vr(e){if(typeof e==`string`||x(e))return e;var t=e+``;return t==`0`&&1/e==-_r?`-0`:t}var K=vr;function yr(e,t){t=gr(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[K(t[n++])];return n&&n==r?e:void 0}var q=yr;function br(e,t,n){var r=e==null?void 0:q(e,t);return r===void 0?n:r}var xr=br;function Sr(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}var Cr=Sr;function wr(){this.__data__=new B,this.size=0}var Tr=wr;function Er(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}var Dr=Er;function Or(e){return this.__data__.get(e)}var kr=Or;function Ar(e){return this.__data__.has(e)}var jr=Ar,Mr=200;function Nr(e,t){var n=this.__data__;if(n instanceof B){var r=n.__data__;if(!V||r.length<Mr-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new W(r)}return n.set(e,t),this.size=n.size,this}var Pr=Nr;function J(e){this.size=(this.__data__=new B(e)).size}J.prototype.clear=Tr,J.prototype.delete=Dr,J.prototype.get=kr,J.prototype.has=jr,J.prototype.set=Pr;var Y=J;function Fr(e,t){for(var n=-1,r=e==null?0:e.length,i=0,a=[];++n<r;){var o=e[n];t(o,n,e)&&(a[i++]=o)}return a}var Ir=Fr;function Lr(){return[]}var Rr=Lr,zr=Object.prototype.propertyIsEnumerable,Br=Object.getOwnPropertySymbols,Vr=Br?function(e){return e==null?[]:(e=Object(e),Ir(Br(e),function(t){return zr.call(e,t)}))}:Rr,Hr=Vr;function Ur(e,t,n){var r=t(e);return S(e)?r:Cr(r,n(e))}var Wr=Ur;function Gr(e){return Wr(e,fn,Hr)}var Kr=Gr,qr=E(s,`DataView`),Jr=qr,Yr=E(s,`Promise`),Xr=Yr,Zr=E(s,`Set`),X=Zr,Qr=`[object Map]`,$r=`[object Object]`,ei=`[object Promise]`,ti=`[object Set]`,ni=`[object WeakMap]`,ri=`[object DataView]`,ii=T(Jr),ai=T(V),oi=T(Xr),si=T(X),ci=T(D),Z=y;(Jr&&Z(new Jr(new ArrayBuffer(1)))!=ri||V&&Z(new V)!=Qr||Xr&&Z(Xr.resolve())!=ei||X&&Z(new X)!=ti||D&&Z(new D)!=ni)&&(Z=function(e){var t=y(e),n=t==$r?e.constructor:void 0,r=n?T(n):``;if(r)switch(r){case ii:return ri;case ai:return Qr;case oi:return ei;case si:return ti;case ci:return ni}return t});var li=Z,ui=s.Uint8Array,di=ui,fi=`__lodash_hash_undefined__`;function pi(e){return this.__data__.set(e,fi),this}var mi=pi;function hi(e){return this.__data__.has(e)}var gi=hi;function Q(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new W;++t<n;)this.add(e[t])}Q.prototype.add=Q.prototype.push=mi,Q.prototype.has=gi;var _i=Q;function vi(e,t){for(var n=-1,r=e==null?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}var yi=vi;function bi(e,t){return e.has(t)}var xi=bi,Si=1,Ci=2;function wi(e,t,n,r,i,a){var o=n&Si,s=e.length,c=t.length;if(s!=c&&!(o&&c>s))return!1;var l=a.get(e),u=a.get(t);if(l&&u)return l==t&&u==e;var d=-1,f=!0,p=n&Ci?new _i:void 0;for(a.set(e,t),a.set(t,e);++d<s;){var m=e[d],h=t[d];if(r)var g=o?r(h,m,d,t,e,a):r(m,h,d,e,t,a);if(g!==void 0){if(g)continue;f=!1;break}if(p){if(!yi(t,function(e,t){if(!xi(p,t)&&(m===e||i(m,e,n,r,a)))return p.push(t)})){f=!1;break}}else if(!(m===h||i(m,h,n,r,a))){f=!1;break}}return a.delete(e),a.delete(t),f}var Ti=wi;function Ei(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}var Di=Ei;function Oi(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var ki=Oi,Ai=1,ji=2,Mi=`[object Boolean]`,Ni=`[object Date]`,Pi=`[object Error]`,Fi=`[object Map]`,Ii=`[object Number]`,Li=`[object RegExp]`,Ri=`[object Set]`,zi=`[object String]`,Bi=`[object Symbol]`,Vi=`[object ArrayBuffer]`,Hi=`[object DataView]`,Ui=l?l.prototype:void 0,Wi=Ui?Ui.valueOf:void 0;function Gi(e,t,n,r,i,a,o){switch(n){case Hi:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Vi:return!(e.byteLength!=t.byteLength||!a(new di(e),new di(t)));case Mi:case Ni:case Ii:return Qe(+e,+t);case Pi:return e.name==t.name&&e.message==t.message;case Li:case zi:return e==t+``;case Fi:var s=Di;case Ri:var c=r&Ai;if(s||=ki,e.size!=t.size&&!c)return!1;var l=o.get(e);if(l)return l==t;r|=ji,o.set(e,t);var u=Ti(s(e),s(t),r,i,a,o);return o.delete(e),u;case Bi:if(Wi)return Wi.call(e)==Wi.call(t)}return!1}var Ki=Gi,qi=1,Ji=Object.prototype.hasOwnProperty;function Yi(e,t,n,r,i,a){var o=n&qi,s=Kr(e),c=s.length;if(c!=Kr(t).length&&!o)return!1;for(var l=c;l--;){var u=s[l];if(!(o?u in t:Ji.call(t,u)))return!1}var d=a.get(e),f=a.get(t);if(d&&f)return d==t&&f==e;var p=!0;a.set(e,t),a.set(t,e);for(var m=o;++l<c;){u=s[l];var h=e[u],g=t[u];if(r)var ee=o?r(g,h,u,t,e,a):r(h,g,u,e,t,a);if(!(ee===void 0?h===g||i(h,g,n,r,a):ee)){p=!1;break}m||=u==`constructor`}if(p&&!m){var _=e.constructor,v=t.constructor;_!=v&&`constructor`in e&&`constructor`in t&&!(typeof _==`function`&&_ instanceof _&&typeof v==`function`&&v instanceof v)&&(p=!1)}return a.delete(e),a.delete(t),p}var Xi=Yi,Zi=1,Qi=`[object Arguments]`,$i=`[object Array]`,$=`[object Object]`,ea=Object.prototype.hasOwnProperty;function ta(e,t,n,r,i,a){var o=S(e),s=S(t),c=o?$i:li(e),l=s?$i:li(t);c=c==Qi?$:c,l=l==Qi?$:l;var u=c==$,d=l==$,f=c==l;if(f&&j(e)){if(!j(t))return!1;o=!0,u=!1}if(f&&!u)return a||=new Y,o||$t(e)?Ti(e,t,n,r,i,a):Ki(e,t,c,n,r,i,a);if(!(n&Zi)){var p=u&&ea.call(e,`__wrapped__`),m=d&&ea.call(t,`__wrapped__`);if(p||m){var h=p?e.value():e,g=m?t.value():t;return a||=new Y,i(h,g,n,r,a)}}return f?(a||=new Y,Xi(e,t,n,r,i,a)):!1}var na=ta;function ra(e,t,n,r,i){return e===t?!0:e==null||t==null||!b(e)&&!b(t)?e!==e&&t!==t:na(e,t,n,r,ra,i)}var ia=ra,aa=1,oa=2;function sa(e,t,n,r){var i=n.length,a=i,o=!r;if(e==null)return!a;for(e=Object(e);i--;){var s=n[i];if(o&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++i<a;){s=n[i];var c=s[0],l=e[c],u=s[1];if(o&&s[2]){if(l===void 0&&!(c in e))return!1}else{var d=new Y;if(r)var f=r(l,u,c,e,t,d);if(!(f===void 0?ia(u,l,aa|oa,r,d):f))return!1}}return!0}var ca=sa;function la(e){return e===e&&!C(e)}var ua=la;function da(e){for(var t=fn(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,ua(i)]}return t}var fa=da;function pa(e,t){return function(n){return n==null?!1:n[e]===t&&(t!==void 0||e in Object(n))}}var ma=pa;function ha(e){var t=fa(e);return t.length==1&&t[0][2]?ma(t[0][0],t[0][1]):function(n){return n===e||ca(n,e,t)}}var ga=ha;function _a(e,t){return e!=null&&t in Object(e)}var va=_a;function ya(e,t,n){t=gr(t,e);for(var r=-1,i=t.length,a=!1;++r<i;){var o=K(t[r]);if(!(a=e!=null&&n(e,o)))break;e=e[o]}return a||++r!=i?a:(i=e==null?0:e.length,!!i&&O(i)&&Je(o,i)&&(S(e)||A(e)))}var ba=ya;function xa(e,t){return e!=null&&ba(e,t,va)}var Sa=xa,Ca=1,wa=2;function Ta(e,t){return F(e)&&ua(t)?ma(K(e),t):function(n){var r=xr(n,e);return r===void 0&&r===t?Sa(n,e):ia(t,r,Ca|wa)}}var Ea=Ta;function Da(e){return function(t){return t?.[e]}}var Oa=Da;function ka(e){return function(t){return q(t,e)}}var Aa=ka;function ja(e){return F(e)?Oa(K(e)):Aa(e)}var Ma=ja;function Na(e){return typeof e==`function`?e:e==null?_e:typeof e==`object`?S(e)?Ea(e[0],e[1]):ga(e):Ma(e)}var Pa=Na;function Fa(e,t,n,r){for(var i=-1,a=e==null?0:e.length;++i<a;){var o=e[i];t(r,o,n(o),e)}return r}var Ia=Fa;function La(e){return function(t,n,r){for(var i=-1,a=Object(t),o=r(t),s=o.length;s--;){var c=o[e?s:++i];if(n(a[c],c,a)===!1)break}return t}}var Ra=La,za=Ra(),Ba=za;function Va(e,t){return e&&Ba(e,t,fn)}var Ha=Va;function Ua(e,t){return function(n,r){if(n==null)return n;if(!k(n))return e(n,r);for(var i=n.length,a=t?i:-1,o=Object(n);(t?a--:++a<i)&&r(o[a],a,o)!==!1;);return n}}var Wa=Ua,Ga=Wa(Ha),Ka=Ga;function qa(e,t,n,r){return Ka(e,function(e,i,a){t(r,e,n(e),a)}),r}var Ja=qa;function Ya(e,t){return function(n,r){var i=S(n)?Ia:Ja,a=t?t():{};return i(n,e,Pa(r,2),a)}}var Xa=Ya,Za=Xa(function(e,t,n){Xe(e,n,t)}),Qa=Za,$a=`A command line interface for programmatic operations across Transcend.`,eo=`8.37.0`;const to=`transcend`,no=`https://app.transcend.io`,ro=`${no}/infrastructure/integrations`,io=`${no}/data-map/data-inventory/data-points`,ao=process.env.TRANSCEND_API_URL||`https://api.transcend.io`,oo=process.env.TRANSCEND_CONSENT_API_URL||`https://consent.transcend.io`,so={[t.o.ApiKeys]:[n.ScopeName.ViewApiKeys],[t.o.Templates]:[n.ScopeName.ManageEmailTemplates],[t.o.DataSilos]:[n.ScopeName.ManageDataMap,n.ScopeName.ConnectDataSilos],[t.o.Enrichers]:[n.ScopeName.ManageRequestIdentities],[t.o.BusinessEntities]:[n.ScopeName.ManageDataInventory],[t.o.ProcessingActivities]:[n.ScopeName.ManageDataMap],[t.o.Identifiers]:[n.ScopeName.ManageRequestIdentities],[t.o.Attributes]:[n.ScopeName.ManageGlobalAttributes],[t.o.DataFlows]:[n.ScopeName.ManageDataFlow],[t.o.Cookies]:[n.ScopeName.ManageDataFlow],[t.o.ConsentManager]:[n.ScopeName.ManageConsentManagerDeveloperSettings],[t.o.Partitions]:[n.ScopeName.ManageConsentManagerDeveloperSettings],[t.o.Actions]:[n.ScopeName.ManageDataSubjectRequestSettings],[t.o.DataSubjects]:[n.ScopeName.ManageDataSubjectRequestSettings],[t.o.Prompts]:[n.ScopeName.ManagePrompts],[t.o.PromptPartials]:[n.ScopeName.ManagePrompts],[t.o.PromptGroups]:[n.ScopeName.ManagePrompts],[t.o.Agents]:[n.ScopeName.ManagePathfinder],[t.o.AgentFunctions]:[n.ScopeName.ManagePathfinder],[t.o.AgentFiles]:[n.ScopeName.ManagePathfinder],[t.o.Vendors]:[n.ScopeName.ManageDataInventory],[t.o.DataCategories]:[n.ScopeName.ManageDataInventory],[t.o.ProcessingPurposes]:[n.ScopeName.ManageDataInventory],[t.o.ActionItems]:[n.ScopeName.ManageAllActionItems,n.ScopeName.ViewGlobalAttributes],[t.o.ActionItemCollections]:[n.ScopeName.ManageActionItemCollections],[t.o.Teams]:[n.ScopeName.ManageAccessControl],[t.o.Messages]:[n.ScopeName.ManageIntlMessages],[t.o.PrivacyCenters]:[n.ScopeName.ManagePrivacyCenter],[t.o.Policies]:[n.ScopeName.ManagePolicies],[t.o.Assessments]:[n.ScopeName.ManageAssessments],[t.o.AssessmentTemplates]:[n.ScopeName.ManageAssessments],[t.o.Purposes]:[n.ScopeName.ManageConsentManager,n.ScopeName.ManagePreferenceStoreSettings],[t.o.SystemDiscovery]:[n.ScopeName.ManageDataMap]},co={[t.o.ApiKeys]:[n.ScopeName.ViewApiKeys],[t.o.Templates]:[n.ScopeName.ViewEmailTemplates],[t.o.DataSilos]:[n.ScopeName.ViewDataMap,n.ScopeName.ViewDataSubjectRequestSettings],[t.o.Enrichers]:[n.ScopeName.ViewRequestIdentitySettings],[t.o.BusinessEntities]:[n.ScopeName.ViewDataInventory],[t.o.ProcessingActivities]:[n.ScopeName.ViewDataInventory],[t.o.Identifiers]:[n.ScopeName.ViewRequestIdentitySettings],[t.o.Attributes]:[n.ScopeName.ViewGlobalAttributes],[t.o.DataFlows]:[n.ScopeName.ViewDataFlow],[t.o.Cookies]:[n.ScopeName.ViewDataFlow],[t.o.ConsentManager]:[n.ScopeName.ViewConsentManager],[t.o.Partitions]:[n.ScopeName.ViewConsentManager],[t.o.Actions]:[n.ScopeName.ViewDataSubjectRequestSettings],[t.o.DataSubjects]:[n.ScopeName.ViewDataSubjectRequestSettings],[t.o.Prompts]:[n.ScopeName.ViewPrompts],[t.o.PromptPartials]:[n.ScopeName.ViewPrompts],[t.o.PromptGroups]:[n.ScopeName.ViewPrompts],[t.o.Agents]:[n.ScopeName.ViewPathfinder],[t.o.AgentFunctions]:[n.ScopeName.ViewPathfinder],[t.o.AgentFiles]:[n.ScopeName.ViewPathfinder],[t.o.Vendors]:[n.ScopeName.ViewDataInventory],[t.o.DataCategories]:[n.ScopeName.ViewDataInventory],[t.o.ProcessingPurposes]:[n.ScopeName.ViewDataInventory],[t.o.ActionItemCollections]:[n.ScopeName.ViewAllActionItems],[t.o.ActionItems]:[n.ScopeName.ViewAllActionItems],[t.o.Teams]:[n.ScopeName.ViewScopes],[t.o.Messages]:[n.ScopeName.ViewIntlMessages],[t.o.PrivacyCenters]:[n.ScopeName.ViewPrivacyCenter],[t.o.Policies]:[n.ScopeName.ViewPolicies],[t.o.Assessments]:[n.ScopeName.ViewAssessments],[t.o.AssessmentTemplates]:[n.ScopeName.ViewAssessments],[t.o.Purposes]:[n.ScopeName.ViewConsentManager,n.ScopeName.ViewPreferenceStoreSettings],[t.o.SystemDiscovery]:[n.ScopeName.ViewDataMap]},lo={[t.o.ApiKeys]:`api-keys`,[t.o.Attributes]:`attributes`,[t.o.DataFlows]:`data-flows`,[t.o.Cookies]:`cookies`,[t.o.ConsentManager]:`consent-manager`,[t.o.Partitions]:`partitions`,[t.o.Actions]:`actions`,[t.o.DataSubjects]:`data-subjects`,[t.o.BusinessEntities]:`business-entities`,[t.o.ProcessingActivities]:`processing-activities`,[t.o.Identifiers]:`identifiers`,[t.o.Enrichers]:`enrichers`,[t.o.DataSilos]:`data-silos`,[t.o.Templates]:`templates`,[t.o.Prompts]:`prompts`,[t.o.PromptPartials]:`prompt-partials`,[t.o.PromptGroups]:`prompt-groups`,[t.o.Agents]:`agents`,[t.o.AgentFunctions]:`agent-functions`,[t.o.AgentFiles]:`agent-files`,[t.o.Vendors]:`vendors`,[t.o.DataCategories]:`data-categories`,[t.o.ProcessingPurposes]:`processing-purposes`,[t.o.ActionItems]:`action-items`,[t.o.ActionItemCollections]:`action-item-collections`,[t.o.Teams]:`teams`,[t.o.Messages]:`messages`,[t.o.PrivacyCenters]:`privacy-center`,[t.o.Policies]:`policies`,[t.o.Assessments]:`assessments`,[t.o.AssessmentTemplates]:`assessment-templates`,[t.o.Purposes]:`purposes`,[t.o.SystemDiscovery]:`system-discovery`},uo=Qa(Object.entries(n.TRANSCEND_SCOPES).map(([e,t])=>({...t,name:e})),`title`),fo=Object.keys(uo),po=new Set([429,502,500,504,329]),mo=process.env.DEBUG===`1`;Object.defineProperty(exports,`A`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`B`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return _i}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return mr}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`F`,{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,`I`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`L`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`M`,{enumerable:!0,get:function(){return Xe}}),Object.defineProperty(exports,`N`,{enumerable:!0,get:function(){return Je}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return qt}}),Object.defineProperty(exports,`P`,{enumerable:!0,get:function(){return We}}),Object.defineProperty(exports,`R`,{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return xi}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return Cr}}),Object.defineProperty(exports,`V`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return Xa}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return ao}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return Pa}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return uo}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return so}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return lo}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return Qa}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return eo}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return mo}}),Object.defineProperty(exports,`j`,{enumerable:!0,get:function(){return Qe}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return fo}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return $a}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return io}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return oo}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return`transcend`}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return ro}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return po}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return no}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return co}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return Ka}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return ki}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return Ha}}),Object.defineProperty(exports,`z`,{enumerable:!0,get:function(){return x}});
|
|
2
|
+
//# sourceMappingURL=constants-7qBywLgI.cjs.map
|