@transcend-io/cli 8.30.0 → 8.30.1
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/bin/bash-complete.cjs +1 -1
- package/dist/bin/cli.cjs +1 -1
- package/dist/bin/deprecated-command.cjs +2 -2
- package/dist/chunk-3FIDP42N.cjs +4 -0
- package/dist/chunk-3FIDP42N.cjs.map +1 -0
- package/dist/{chunk-U7B2ZKV5.cjs → chunk-6KRRRMY2.cjs} +21 -21
- package/dist/{chunk-U7B2ZKV5.cjs.map → chunk-6KRRRMY2.cjs.map} +1 -1
- package/dist/{chunk-OSRNUQQ5.cjs → chunk-FIJLHU4Q.cjs} +4 -4
- package/dist/{chunk-OSRNUQQ5.cjs.map → chunk-FIJLHU4Q.cjs.map} +1 -1
- package/dist/{chunk-56COHDFT.cjs → chunk-HTS7K7QD.cjs} +4 -4
- package/dist/{chunk-56COHDFT.cjs.map → chunk-HTS7K7QD.cjs.map} +1 -1
- package/dist/{chunk-XURR4JGE.cjs → chunk-LRADV5OI.cjs} +2 -2
- package/dist/{chunk-XURR4JGE.cjs.map → chunk-LRADV5OI.cjs.map} +1 -1
- package/dist/{chunk-4WBBQCOV.cjs → chunk-LZA5Y4SB.cjs} +4 -4
- package/dist/{chunk-4WBBQCOV.cjs.map → chunk-LZA5Y4SB.cjs.map} +1 -1
- package/dist/{chunk-A3GRLGNU.cjs → chunk-OMVVROKB.cjs} +2 -2
- package/dist/{chunk-A3GRLGNU.cjs.map → chunk-OMVVROKB.cjs.map} +1 -1
- package/dist/{chunk-GNEZHNUR.cjs → chunk-RAA5VWQS.cjs} +2 -2
- package/dist/{chunk-GNEZHNUR.cjs.map → chunk-RAA5VWQS.cjs.map} +1 -1
- package/dist/{chunk-BKPEELIQ.cjs → chunk-SPN6SWMF.cjs} +2 -2
- package/dist/{chunk-BKPEELIQ.cjs.map → chunk-SPN6SWMF.cjs.map} +1 -1
- package/dist/{chunk-XSKGXUIG.cjs → chunk-UXFL56TL.cjs} +6 -6
- package/dist/{chunk-XSKGXUIG.cjs.map → chunk-UXFL56TL.cjs.map} +1 -1
- package/dist/{chunk-ZPCV7RA2.cjs → chunk-WURUFVEG.cjs} +2 -2
- package/dist/{chunk-ZPCV7RA2.cjs.map → chunk-WURUFVEG.cjs.map} +1 -1
- package/dist/{chunk-BAQ45VZI.cjs → chunk-XEXS6R45.cjs} +2 -2
- package/dist/{chunk-BAQ45VZI.cjs.map → chunk-XEXS6R45.cjs.map} +1 -1
- package/dist/{chunk-5IHV6OHB.cjs → chunk-YYDWSYMF.cjs} +2 -2
- package/dist/{chunk-5IHV6OHB.cjs.map → chunk-YYDWSYMF.cjs.map} +1 -1
- package/dist/{chunk-4Y7PZGF3.cjs → chunk-Z2DYKPKM.cjs} +2 -2
- package/dist/{chunk-4Y7PZGF3.cjs.map → chunk-Z2DYKPKM.cjs.map} +1 -1
- package/dist/{impl-63RUFEPF.cjs → impl-2X2FNMJR.cjs} +2 -2
- package/dist/{impl-63RUFEPF.cjs.map → impl-2X2FNMJR.cjs.map} +1 -1
- package/dist/{impl-R4LLNQUP.cjs → impl-3BTFEGV4.cjs} +5 -5
- package/dist/{impl-R4LLNQUP.cjs.map → impl-3BTFEGV4.cjs.map} +1 -1
- package/dist/{impl-DLADC4DX.cjs → impl-463J7BYV.cjs} +2 -2
- package/dist/{impl-DLADC4DX.cjs.map → impl-463J7BYV.cjs.map} +1 -1
- package/dist/{impl-THXX4NLG.cjs → impl-4CA7VK4U.cjs} +2 -2
- package/dist/{impl-THXX4NLG.cjs.map → impl-4CA7VK4U.cjs.map} +1 -1
- package/dist/{impl-5IZGOLMG.cjs → impl-5GGFGRTD.cjs} +2 -2
- package/dist/{impl-5IZGOLMG.cjs.map → impl-5GGFGRTD.cjs.map} +1 -1
- package/dist/{impl-UNS2BXR7.cjs → impl-5WHENVVS.cjs} +2 -2
- package/dist/{impl-UNS2BXR7.cjs.map → impl-5WHENVVS.cjs.map} +1 -1
- package/dist/{impl-TR2HDZHR.cjs → impl-76E4DKAE.cjs} +2 -2
- package/dist/{impl-TR2HDZHR.cjs.map → impl-76E4DKAE.cjs.map} +1 -1
- package/dist/{impl-VUTJ4QIY.cjs → impl-7BAUUGZT.cjs} +2 -2
- package/dist/{impl-VUTJ4QIY.cjs.map → impl-7BAUUGZT.cjs.map} +1 -1
- package/dist/{impl-TMXHKQO3.cjs → impl-AWWB3TEU.cjs} +2 -2
- package/dist/{impl-TMXHKQO3.cjs.map → impl-AWWB3TEU.cjs.map} +1 -1
- package/dist/{impl-QZYAF6M6.cjs → impl-BLIELFUK.cjs} +3 -3
- package/dist/{impl-QZYAF6M6.cjs.map → impl-BLIELFUK.cjs.map} +1 -1
- package/dist/{impl-L5C2RKOS.cjs → impl-BSI3RBQ2.cjs} +2 -2
- package/dist/{impl-L5C2RKOS.cjs.map → impl-BSI3RBQ2.cjs.map} +1 -1
- package/dist/{impl-DFC7R4VO.cjs → impl-BSIFPZLW.cjs} +2 -2
- package/dist/{impl-DFC7R4VO.cjs.map → impl-BSIFPZLW.cjs.map} +1 -1
- package/dist/{impl-HMJ3RSYJ.cjs → impl-COZ7ADUO.cjs} +4 -4
- package/dist/{impl-HMJ3RSYJ.cjs.map → impl-COZ7ADUO.cjs.map} +1 -1
- package/dist/{impl-ULIJEGGC.cjs → impl-DS73OYLE.cjs} +2 -2
- package/dist/{impl-ULIJEGGC.cjs.map → impl-DS73OYLE.cjs.map} +1 -1
- package/dist/{impl-QHSBTADS.cjs → impl-FKXR7U4X.cjs} +2 -2
- package/dist/{impl-QHSBTADS.cjs.map → impl-FKXR7U4X.cjs.map} +1 -1
- package/dist/{impl-WX2ULFZZ.cjs → impl-FTSCECOZ.cjs} +2 -2
- package/dist/{impl-WX2ULFZZ.cjs.map → impl-FTSCECOZ.cjs.map} +1 -1
- package/dist/{impl-YLR5VYIP.cjs → impl-GJMVAL3N.cjs} +2 -2
- package/dist/{impl-YLR5VYIP.cjs.map → impl-GJMVAL3N.cjs.map} +1 -1
- package/dist/impl-IBOGAUVL.cjs +2 -0
- package/dist/{impl-XTRGFE33.cjs.map → impl-IBOGAUVL.cjs.map} +1 -1
- package/dist/{impl-XPEPCZ67.cjs → impl-IFHM4YOL.cjs} +2 -2
- package/dist/{impl-XPEPCZ67.cjs.map → impl-IFHM4YOL.cjs.map} +1 -1
- package/dist/{impl-PC5SSKN6.cjs → impl-IM22LNW5.cjs} +3 -3
- package/dist/{impl-PC5SSKN6.cjs.map → impl-IM22LNW5.cjs.map} +1 -1
- package/dist/{impl-XZYXPW67.cjs → impl-J62VZXDY.cjs} +2 -2
- package/dist/{impl-XZYXPW67.cjs.map → impl-J62VZXDY.cjs.map} +1 -1
- package/dist/{impl-ECHPUQTL.cjs → impl-KBVYLYIZ.cjs} +2 -2
- package/dist/{impl-ECHPUQTL.cjs.map → impl-KBVYLYIZ.cjs.map} +1 -1
- package/dist/{impl-NNSUFZJQ.cjs → impl-LMKJ6UBT.cjs} +2 -2
- package/dist/{impl-NNSUFZJQ.cjs.map → impl-LMKJ6UBT.cjs.map} +1 -1
- package/dist/{impl-CYS34PCP.cjs → impl-NEV6KDPU.cjs} +2 -2
- package/dist/{impl-CYS34PCP.cjs.map → impl-NEV6KDPU.cjs.map} +1 -1
- package/dist/{impl-KGPFOOKN.cjs → impl-OFB5I4S6.cjs} +2 -2
- package/dist/{impl-KGPFOOKN.cjs.map → impl-OFB5I4S6.cjs.map} +1 -1
- package/dist/{impl-J4AIXCOM.cjs → impl-Q5WCETP4.cjs} +2 -2
- package/dist/{impl-J4AIXCOM.cjs.map → impl-Q5WCETP4.cjs.map} +1 -1
- package/dist/{impl-XDFFTHEP.cjs → impl-RTZTJWMX.cjs} +2 -2
- package/dist/{impl-XDFFTHEP.cjs.map → impl-RTZTJWMX.cjs.map} +1 -1
- package/dist/{impl-YTBJQDU6.cjs → impl-T5V56TM5.cjs} +2 -2
- package/dist/{impl-YTBJQDU6.cjs.map → impl-T5V56TM5.cjs.map} +1 -1
- package/dist/{impl-TPG3AZ2K.cjs → impl-T7EOUHYL.cjs} +2 -2
- package/dist/{impl-TPG3AZ2K.cjs.map → impl-T7EOUHYL.cjs.map} +1 -1
- package/dist/{impl-FLUPS5AF.cjs → impl-U76PZBUK.cjs} +2 -2
- package/dist/{impl-FLUPS5AF.cjs.map → impl-U76PZBUK.cjs.map} +1 -1
- package/dist/{impl-ZAXHTVRF.cjs → impl-UMVE7IPO.cjs} +2 -2
- package/dist/{impl-ZAXHTVRF.cjs.map → impl-UMVE7IPO.cjs.map} +1 -1
- package/dist/{impl-5KE7PF4S.cjs → impl-UPDFANVR.cjs} +2 -2
- package/dist/{impl-5KE7PF4S.cjs.map → impl-UPDFANVR.cjs.map} +1 -1
- package/dist/{impl-EA6F65XG.cjs → impl-VBE4QUJN.cjs} +2 -2
- package/dist/{impl-EA6F65XG.cjs.map → impl-VBE4QUJN.cjs.map} +1 -1
- package/dist/impl-VHY4ALCB.cjs +2 -0
- package/dist/{impl-NA2AMJMD.cjs.map → impl-VHY4ALCB.cjs.map} +1 -1
- package/dist/{impl-P2XOCDM2.cjs → impl-VPUALIUR.cjs} +2 -2
- package/dist/{impl-P2XOCDM2.cjs.map → impl-VPUALIUR.cjs.map} +1 -1
- package/dist/{impl-HS3DVOVZ.cjs → impl-X6TORGVF.cjs} +2 -2
- package/dist/{impl-HS3DVOVZ.cjs.map → impl-X6TORGVF.cjs.map} +1 -1
- package/dist/{impl-O752JHWB.cjs → impl-XAZ6YY3R.cjs} +2 -2
- package/dist/{impl-O752JHWB.cjs.map → impl-XAZ6YY3R.cjs.map} +1 -1
- package/dist/{impl-ZXJQNHSF.cjs → impl-YEXEFJS7.cjs} +2 -2
- package/dist/{impl-ZXJQNHSF.cjs.map → impl-YEXEFJS7.cjs.map} +1 -1
- package/dist/{impl-SHD5SUBY.cjs → impl-Z3EAXTJV.cjs} +2 -2
- package/dist/{impl-SHD5SUBY.cjs.map → impl-Z3EAXTJV.cjs.map} +1 -1
- package/dist/{impl-MLVDLR4J.cjs → impl-Z5HT5JQU.cjs} +2 -2
- package/dist/{impl-MLVDLR4J.cjs.map → impl-Z5HT5JQU.cjs.map} +1 -1
- package/dist/{impl-XGCU7DCJ.cjs → impl-ZJ2L727T.cjs} +2 -2
- package/dist/{impl-XGCU7DCJ.cjs.map → impl-ZJ2L727T.cjs.map} +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.d.cts +1 -1
- package/package.json +1 -1
- package/dist/chunk-J5ZSDYK2.cjs +0 -4
- package/dist/chunk-J5ZSDYK2.cjs.map +0 -1
- package/dist/impl-NA2AMJMD.cjs +0 -2
- package/dist/impl-XTRGFE33.cjs +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkLU3DKRNKcjs = require('./chunk-LU3DKRNK.cjs');var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkLU3DKRNKcjs = require('./chunk-LU3DKRNK.cjs');var _chunkHTS7K7QDcjs = require('./chunk-HTS7K7QD.cjs');var _chunkZUNVPK23cjs = require('./chunk-ZUNVPK23.cjs');var _chunkOMVVROKBcjs = require('./chunk-OMVVROKB.cjs');var _privacytypes = require('@transcend-io/privacy-types');var _bluebird = require('bluebird');var _colors = require('colors'); var _colors2 = _interopRequireDefault(_colors);async function nt({auth:e,deploy:s=!1,transcendUrl:o=_chunkOMVVROKBcjs.r,bundleTypes:t=Object.values(_privacytypes.ConsentBundleType)}){let a=_chunkHTS7K7QDcjs.xc.call(void 0, o,e),n=await _chunkHTS7K7QDcjs.Rc.call(void 0, a);await _bluebird.mapSeries.call(void 0, t,async i=>{_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Update Consent Manager bundle with ID "${n}" and type "${i}" to latest version...`)),await _chunkHTS7K7QDcjs.Bc.call(void 0, a,{id:n,bundleType:i}),_chunkZUNVPK23cjs.a.info(_colors2.default.green(`Updated Consent Manager bundle with ID "${n}" and type "${i}" to latest version!`))}),s&&await _bluebird.mapSeries.call(void 0, t,async i=>{_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Deploying Consent Manager bundle with ID "${n}" and type "${i}"...`)),await _chunkHTS7K7QDcjs.Ac.call(void 0, a,{id:n,bundleType:i}),_chunkZUNVPK23cjs.a.info(_colors2.default.green(`Deployed Consent Manager bundle with ID "${n}" and type "${i}"!`))})}var F=["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 ft({auth:e,trackerStatus:s,file:o,classifyService:t=!1,transcendUrl:a=_chunkOMVVROKBcjs.r}){let n=_chunkHTS7K7QDcjs.xc.call(void 0, a,e);_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Reading "${o}" from disk`));let l=_chunkHTS7K7QDcjs.sc.call(void 0, o,_chunkLU3DKRNKcjs.ja).map(({Type:S,Notes:p,Service:m,Purpose:C,Status:f,Owners:E,Teams:T,"Connections Made To":A,...I})=>({value:A,type:S,description:p,trackingPurposes:_chunkHTS7K7QDcjs.pc.call(void 0, C),status:f||s,owners:E?_chunkHTS7K7QDcjs.pc.call(void 0, E):void 0,teams:T?_chunkHTS7K7QDcjs.pc.call(void 0, T):void 0,attributes:Object.entries(I).filter(([y])=>!F.includes(y)).map(([y,$])=>({key:y,values:_chunkHTS7K7QDcjs.pc.call(void 0, $)}))}));await _chunkHTS7K7QDcjs.Ye.call(void 0, n,l,t)||(_chunkZUNVPK23cjs.a.error(_colors2.default.red("Encountered error(s) syncing data flows from CSV, see logs above for more info. ")),process.exit(1))}var H=["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 Mt({auth:e,trackerStatus:s,file:o,transcendUrl:t=_chunkOMVVROKBcjs.r}){let a=_chunkHTS7K7QDcjs.xc.call(void 0, t,e);_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Reading "${o}" from disk`));let i=_chunkHTS7K7QDcjs.sc.call(void 0, o,_chunkLU3DKRNKcjs.ka).map(({"Is Regex?":c,Notes:S,Service:p,Purpose:m,Status:C,Owners:f,Teams:E,Name:T,...A})=>({...typeof c=="string"?{isRegex:c.toLowerCase()==="true"}:{},name:T,description:S,trackingPurposes:_chunkHTS7K7QDcjs.pc.call(void 0, m),status:C||s,owners:f?_chunkHTS7K7QDcjs.pc.call(void 0, f):void 0,teams:E?_chunkHTS7K7QDcjs.pc.call(void 0, E):void 0,attributes:Object.entries(A).filter(([I])=>!H.includes(I)).map(([I,y])=>({key:I,values:_chunkHTS7K7QDcjs.pc.call(void 0, y)}))}));await _chunkHTS7K7QDcjs.Se.call(void 0, a,i)||(_chunkZUNVPK23cjs.a.error(_colors2.default.red("Encountered error(s) syncing cookies from CSV, see logs above for more info. ")),process.exit(1))}var Y=1e3,j=60*Y,Q=60*j,V=24*Q,X=7*V;async function Rt(e,{bin:s,start:o,end:t=new Date}){let a=await _chunkHTS7K7QDcjs.Rc.call(void 0, e),n=Math.floor(o.getTime()/1e3),i=Math.floor(t.getTime()/1e3);if(n>i)throw new Error('Received "end" date that happened before "start" date');if(s==="1h"&&t.getTime()-o.getTime()>X*2)throw new Error("When using bin=1h, start and end time can be no more than 2 weeks apart");let l=o.toISOString(),c=t.toISOString(),[S,p,m]=await Promise.all([_chunkHTS7K7QDcjs.Uc.call(void 0, e,{dataSource:"PRIVACY_SIGNAL_TIMESERIES",startDate:l,endDate:c,forceRefetch:!0,airgapBundleId:a,binInterval:s,smoothTimeseries:!1}),_chunkHTS7K7QDcjs.Uc.call(void 0, e,{dataSource:"CONSENT_CHANGES_TIMESERIES",startDate:l,endDate:c,forceRefetch:!0,airgapBundleId:a,binInterval:s,smoothTimeseries:!1}),_chunkHTS7K7QDcjs.Uc.call(void 0, e,{dataSource:"CONSENT_SESSIONS_BY_REGIME",startDate:l,endDate:c,forceRefetch:!0,airgapBundleId:a,binInterval:s,smoothTimeseries:!1})]);return{PRIVACY_SIGNAL_TIMESERIES:S,CONSENT_CHANGES_TIMESERIES:p,CONSENT_SESSIONS_BY_REGIME:m}}var G=e=>new URL(`https://${e}`).hostname.split(".").slice(-2).join(".");var W=/^(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 Gt(e,{xdiLocation:s,transcendUrl:o=_chunkOMVVROKBcjs.r,removeIpAddresses:t=!0,domainBlockList:a=["localhost"],xdiAllowedCommands:n="ConsentManager:Sync"}){let i=Array.isArray(e)?e:[{apiKey:e,organizationId:"",organizationName:""}],l=await _bluebird.map.call(void 0, i,async p=>{_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Pulling consent metadata for organization - ${p.organizationName}`));let m=_chunkHTS7K7QDcjs.xc.call(void 0, o,p.apiKey);return await _chunkHTS7K7QDcjs.Qc.call(void 0, m)},{concurrency:5}),c={};return l.forEach(p=>{let m=_optionalChain([p, 'access', _2 => _2.partition, 'optionalAccess', _3 => _3.partition])||p.bundleURL.split("/").reverse()[1];c[m]||(c[m]=[]);let C=_chunkOMVVROKBcjs.c.call(void 0, p.configuration.domains.filter(f=>!t||!W.test(f)).map(f=>G(f)),a);c[m]=[...new Set([...c[m]||[],...C])]}),{html:`
|
|
2
2
|
<!DOCTYPE html>
|
|
3
3
|
<script
|
|
4
4
|
src="${s}"
|
|
@@ -9,4 +9,4 @@ data-xdi-commands="${n}"
|
|
|
9
9
|
|
|
10
10
|
~~~~~~~~~~~
|
|
11
11
|
Airgap scripts to host:`),s.forEach(({attributes:o,title:t},a)=>{_optionalChain([o, 'optionalAccess', _7 => _7.find, 'call', _8 => _8(n=>n.key==="Airgap Production URL"), 'optionalAccess', _9 => _9.values, 'optionalAccess', _10 => _10.forEach, 'call', _11 => _11(n=>{_chunkZUNVPK23cjs.a.info(`${a}) ${t} - ${n}`)})])}),s}exports.a = nt; exports.b = ft; exports.c = Mt; exports.d = Rt; exports.e = G; exports.f = W; exports.g = Gt; exports.h = Ft;
|
|
12
|
-
//# sourceMappingURL=chunk-
|
|
12
|
+
//# sourceMappingURL=chunk-LRADV5OI.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/cli/cli/dist/chunk-XURR4JGE.cjs","../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"],"names":["updateConsentManagerVersionToLatest","auth","deploy","transcendUrl","DEFAULT_TRANSCEND_API","bundleTypes","ConsentBundleType","client","buildTranscendGraphQLClient","consentManagerId","fetchConsentManagerId","mapSeries","bundleType","logger","colors","updateConsentManagerToLatest","deployConsentManager","OMIT_COLUMNS","uploadDataFlowsFromCsv","trackerStatus","file","classifyService","validatedDataFlowInputs","readCsv","DataFlowCsvInput","Type","Notes","Service","Purpose","Status","Owners","Teams","value","rest","splitCsvToList","key","syncDataFlows","uploadCookiesFromCsv","validatedCookieInputs","CookieCsvInput","isRegex","Name","syncCookies","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","ONE_WEEK","pullConsentManagerMetrics","bin","start","end","airgapBundleId","startTime","endTime","startDate","endDate","privacySignalData","consentChangesData","consentSessionsByRegimeData","fetchConsentManagerAnalyticsData","domainToHost","domain"],"mappings":"AAAA,quBAAiD,wDAAkH,wDAAyC,wDAAgD,2DCA1N,oCACR,gFAOP,MAUnB,SAAsBA,EAAAA,CAAoC,CACxD,IAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CAAS,CAAA,CAAA,CACT,YAAA,CAAAC,CAAAA,CAAeC,mBAAAA,CACf,WAAA,CAAAC,CAAAA,CAAc,MAAA,CAAO,MAAA,CAAOC,+BAAiB,CAC/C,CAAA,CASkB,CAEhB,IAAMC,CAAAA,CAASC,kCAAAA,CAA4BL,CAAcF,CAAI,CAAA,CAGvDQ,CAAAA,CAAmB,MAAMC,kCAAAA,CAA4B,CAAA,CAG3D,MAAMC,iCAAAA,CAAUN,CAAa,MAAOO,CAAAA,EAAe,CACjDC,mBAAAA,CAAO,IAAA,CACLC,gBAAAA,CAAO,OAAA,CACL,CAAA,uCAAA,EAA0CL,CAAgB,CAAA,YAAA,EAAeG,CAAU,CAAA,sBAAA,CACrF,CACF,CAAA,CACA,MAAMG,kCAAAA,CAA6BR,CAAQ,CACzC,EAAA,CAAIE,CAAAA,CACJ,UAAA,CAAAG,CACF,CAAC,CAAA,CACDC,mBAAAA,CAAO,IAAA,CACLC,gBAAAA,CAAO,KAAA,CACL,CAAA,wCAAA,EAA2CL,CAAgB,CAAA,YAAA,EAAeG,CAAU,CAAA,oBAAA,CACtF,CACF,CACF,CAAC,CAAA,CAGGV,CAAAA,EAEF,MAAMS,iCAAAA,CAAUN,CAAa,MAAOO,CAAAA,EAAe,CACjDC,mBAAAA,CAAO,IAAA,CACLC,gBAAAA,CAAO,OAAA,CACL,CAAA,0CAAA,EAA6CL,CAAgB,CAAA,YAAA,EAAeG,CAAU,CAAA,IAAA,CACxF,CACF,CAAA,CACA,MAAMI,kCAAAA,CAAqBT,CAAQ,CACjC,EAAA,CAAIE,CAAAA,CACJ,UAAA,CAAAG,CACF,CAAC,CAAA,CACDC,mBAAAA,CAAO,IAAA,CACLC,gBAAAA,CAAO,KAAA,CACL,CAAA,yCAAA,EAA4CL,CAAgB,CAAA,YAAA,EAAeG,CAAU,CAAA,EAAA,CACvF,CACF,CACF,CAAC,CAEL,CC7EA,IASMK,CAAAA,CAAe,CACnB,IAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,sCAAA,CACA,qBAAA,CACA,qBAAA,CACA,aAAA,CACA,0BACF,CAAA,CAOA,MAAA,SAAsBC,EAAAA,CAAuB,CAC3C,IAAA,CAAAjB,CAAAA,CACA,aAAA,CAAAkB,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CAAkB,CAAA,CAAA,CAClB,YAAA,CAAAlB,CAAAA,CAAeC,mBACjB,CAAA,CAWkB,CAEhB,IAAMG,CAAAA,CAASC,kCAAAA,CAA4BL,CAAcF,CAAI,CAAA,CAG7DY,mBAAAA,CAAO,IAAA,CAAKC,gBAAAA,CAAO,OAAA,CAAQ,CAAA,SAAA,EAAYM,CAAI,CAAA,WAAA,CAAa,CAAC,CAAA,CAIzD,IAAME,CAAAA,CAHiBC,kCAAAA,CAAQH,CAAMI,oBAAgB,CAAA,CAGN,GAAA,CAC7C,CAAC,CACC,IAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CAGA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,qBAAA,CAAuBC,CAAAA,CACvB,GAAGC,CACL,CAAA,CAAA,EAAA,CAAsB,CACpB,KAAA,CAAAD,CAAAA,CACA,IAAA,CAAMP,CAAAA,CACN,WAAA,CAAaC,CAAAA,CACb,gBAAA,CAAkBQ,kCAAAA,CAAsB,CAAA,CAKxC,MAAA,CAAQL,CAAAA,EAAUV,CAAAA,CAClB,MAAA,CAAQW,CAAAA,CAASI,kCAAAA,CAAqB,CAAA,CAAI,KAAA,CAAA,CAC1C,KAAA,CAAOH,CAAAA,CAAQG,kCAAAA,CAAoB,CAAA,CAAI,KAAA,CAAA,CAEvC,UAAA,CAAY,MAAA,CAAO,OAAA,CAAQD,CAAI,CAAA,CAG5B,MAAA,CAAO,CAAC,CAACE,CAAG,CAAA,CAAA,EAAM,CAAClB,CAAAA,CAAa,QAAA,CAASkB,CAAG,CAAC,CAAA,CAC7C,GAAA,CAAI,CAAC,CAACA,CAAAA,CAAKH,CAAK,CAAA,CAAA,EAAA,CAAO,CACtB,GAAA,CAAAG,CAAAA,CACA,MAAA,CAAQD,kCAAAA,CAAoB,CAC9B,CAAA,CAAE,CACN,CAAA,CACF,CAAA,CAGwB,MAAME,kCAAAA,CAC5B7B,CACAe,CAAAA,CACAD,CACF,CAAA,EAAA,CAIER,mBAAAA,CAAO,KAAA,CACLC,gBAAAA,CAAO,GAAA,CACL,kFACF,CACF,CAAA,CACA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAElB,CCzGA,IASMG,CAAAA,CAAe,CACnB,IAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,sCAAA,CACA,qBAAA,CACA,qBAAA,CACA,aAAA,CACA,0BACF,CAAA,CAOA,MAAA,SAAsBoB,EAAAA,CAAqB,CACzC,IAAA,CAAApC,CAAAA,CACA,aAAA,CAAAkB,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,YAAA,CAAAjB,CAAAA,CAAeC,mBACjB,CAAA,CASkB,CAEhB,IAAMG,CAAAA,CAASC,kCAAAA,CAA4BL,CAAcF,CAAI,CAAA,CAG7DY,mBAAAA,CAAO,IAAA,CAAKC,gBAAAA,CAAO,OAAA,CAAQ,CAAA,SAAA,EAAYM,CAAI,CAAA,WAAA,CAAa,CAAC,CAAA,CAIzD,IAAMkB,CAAAA,CAHef,kCAAAA,CAAQH,CAAMmB,oBAAc,CAAA,CAGN,GAAA,CACzC,CAAC,CACC,WAAA,CAAaC,CAAAA,CACb,KAAA,CAAAd,CAAAA,CAGA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,IAAA,CAAAU,CAAAA,CACA,GAAGR,CACL,CAAA,CAAA,EAAA,CAAoB,CAClB,GAAI,OAAOO,CAAAA,EAAY,QAAA,CACnB,CAAE,OAAA,CAASA,CAAAA,CAAQ,WAAA,CAAY,CAAA,GAAM,MAAO,CAAA,CAC5C,CAAC,CAAA,CACL,IAAA,CAAMC,CAAAA,CACN,WAAA,CAAaf,CAAAA,CACb,gBAAA,CAAkBQ,kCAAAA,CAAsB,CAAA,CAKxC,MAAA,CAAQL,CAAAA,EAAUV,CAAAA,CAClB,MAAA,CAAQW,CAAAA,CAASI,kCAAAA,CAAqB,CAAA,CAAI,KAAA,CAAA,CAC1C,KAAA,CAAOH,CAAAA,CAAQG,kCAAAA,CAAoB,CAAA,CAAI,KAAA,CAAA,CAEvC,UAAA,CAAY,MAAA,CAAO,OAAA,CAAQD,CAAI,CAAA,CAG5B,MAAA,CAAO,CAAC,CAACE,CAAG,CAAA,CAAA,EAAM,CAAClB,CAAAA,CAAa,QAAA,CAASkB,CAAG,CAAC,CAAA,CAC7C,GAAA,CAAI,CAAC,CAACA,CAAAA,CAAKH,CAAK,CAAA,CAAA,EAAA,CAAO,CACtB,GAAA,CAAAG,CAAAA,CACA,MAAA,CAAQD,kCAAAA,CAAoB,CAC9B,CAAA,CAAE,CACN,CAAA,CACF,CAAA,CAGsB,MAAMQ,kCAAAA,CAAYnC,CAAQ+B,CAAqB,CAAA,EAAA,CAInEzB,mBAAAA,CAAO,KAAA,CACLC,gBAAAA,CAAO,GAAA,CACL,+EACF,CACF,CAAA,CACA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAElB,CCzFA,IAAM6B,CAAAA,CAAa,GAAA,CACbC,CAAAA,CAAa,EAAA,CAAKD,CAAAA,CAClBE,CAAAA,CAAW,EAAA,CAAKD,CAAAA,CAChBE,CAAAA,CAAU,EAAA,CAAKD,CAAAA,CACfE,CAAAA,CAAW,CAAA,CAAID,CAAAA,CASrB,MAAA,SAAsBE,EAAAA,CACpBzC,CAAAA,CACA,CACE,GAAA,CAAA0C,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,GAAA,CAAAC,CAAAA,CAAM,IAAI,IACZ,CAAA,CAeC,CAED,IAAMC,CAAAA,CAAiB,MAAM1C,kCAAAA,CAA4B,CAAA,CAGnD2C,CAAAA,CAAY,IAAA,CAAK,KAAA,CAAMH,CAAAA,CAAM,OAAA,CAAQ,CAAA,CAAI,GAAI,CAAA,CAC7CI,CAAAA,CAAU,IAAA,CAAK,KAAA,CAAMH,CAAAA,CAAI,OAAA,CAAQ,CAAA,CAAI,GAAI,CAAA,CAC/C,EAAA,CAAIE,CAAAA,CAAYC,CAAAA,CACd,MAAM,IAAI,KAAA,CAAM,uDAAuD,CAAA,CAIzE,EAAA,CAAIL,CAAAA,GAAQ,IAAA,EAAQE,CAAAA,CAAI,OAAA,CAAQ,CAAA,CAAID,CAAAA,CAAM,OAAA,CAAQ,CAAA,CAAIH,CAAAA,CAAW,CAAA,CAC/D,MAAM,IAAI,KAAA,CACR,yEACF,CAAA,CAIF,IAAMQ,CAAAA,CAAYL,CAAAA,CAAM,WAAA,CAAY,CAAA,CAC9BM,CAAAA,CAAUL,CAAAA,CAAI,WAAA,CAAY,CAAA,CAC1B,CAACM,CAAAA,CAAmBC,CAAAA,CAAoBC,CAA2B,CAAA,CACvE,MAAM,OAAA,CAAQ,GAAA,CAAI,CAChBC,kCAAAA,CAAiCrD,CAAQ,CACvC,UAAA,CAAY,2BAAA,CACZ,SAAA,CAAAgD,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,YAAA,CAAc,CAAA,CAAA,CACd,cAAA,CAAAJ,CAAAA,CACA,WAAA,CAAaH,CAAAA,CACb,gBAAA,CAAkB,CAAA,CACpB,CAAC,CAAA,CACDW,kCAAAA,CAAiCrD,CAAQ,CACvC,UAAA,CAAY,4BAAA,CACZ,SAAA,CAAAgD,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,YAAA,CAAc,CAAA,CAAA,CACd,cAAA,CAAAJ,CAAAA,CACA,WAAA,CAAaH,CAAAA,CACb,gBAAA,CAAkB,CAAA,CACpB,CAAC,CAAA,CACDW,kCAAAA,CAAiCrD,CAAQ,CACvC,UAAA,CAAY,4BAAA,CACZ,SAAA,CAAAgD,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,YAAA,CAAc,CAAA,CAAA,CACd,cAAA,CAAAJ,CAAAA,CACA,WAAA,CAAaH,CAAAA,CACb,gBAAA,CAAkB,CAAA,CACpB,CAAC,CACH,CAAC,CAAA,CAEH,MAAO,CACL,yBAAA,CAA2BQ,CAAAA,CAC3B,0BAAA,CAA4BC,CAAAA,CAC5B,0BAAA,CAA4BC,CAC9B,CACF,CChGO,IAAME,CAAAA,CAAgBC,CAAAA,EAC3B,IAAI,GAAA,CAAI,CAAA,QAAA,EAAWA,CAAM,CAAA,CAAA;ACiHA;AAAA;AAGT,KAAA;AACqC,kBAAA;AAChB,mBAAA;AAAA;AC5DzB;AAAA;AAAA;AAUd,uBAAA","file":"/home/runner/work/cli/cli/dist/chunk-XURR4JGE.cjs","sourcesContent":[null,"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"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/cli/cli/dist/chunk-LRADV5OI.cjs","../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"],"names":["updateConsentManagerVersionToLatest","auth","deploy","transcendUrl","DEFAULT_TRANSCEND_API","bundleTypes","ConsentBundleType","client","buildTranscendGraphQLClient","consentManagerId","fetchConsentManagerId","mapSeries","bundleType","logger","colors","updateConsentManagerToLatest","deployConsentManager","OMIT_COLUMNS","uploadDataFlowsFromCsv","trackerStatus","file","classifyService","validatedDataFlowInputs","readCsv","DataFlowCsvInput","Type","Notes","Service","Purpose","Status","Owners","Teams","value","rest","splitCsvToList","key","syncDataFlows","uploadCookiesFromCsv","validatedCookieInputs","CookieCsvInput","isRegex","Name","syncCookies","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","ONE_WEEK","pullConsentManagerMetrics","bin","start","end","airgapBundleId","startTime","endTime","startDate","endDate","privacySignalData","consentChangesData","consentSessionsByRegimeData","fetchConsentManagerAnalyticsData","domainToHost","domain"],"mappings":"AAAA,quBAAiD,wDAAkH,wDAAyC,wDAAgD,2DCA1N,oCACR,gFAOP,MAUnB,SAAsBA,EAAAA,CAAoC,CACxD,IAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CAAS,CAAA,CAAA,CACT,YAAA,CAAAC,CAAAA,CAAeC,mBAAAA,CACf,WAAA,CAAAC,CAAAA,CAAc,MAAA,CAAO,MAAA,CAAOC,+BAAiB,CAC/C,CAAA,CASkB,CAEhB,IAAMC,CAAAA,CAASC,kCAAAA,CAA4BL,CAAcF,CAAI,CAAA,CAGvDQ,CAAAA,CAAmB,MAAMC,kCAAAA,CAA4B,CAAA,CAG3D,MAAMC,iCAAAA,CAAUN,CAAa,MAAOO,CAAAA,EAAe,CACjDC,mBAAAA,CAAO,IAAA,CACLC,gBAAAA,CAAO,OAAA,CACL,CAAA,uCAAA,EAA0CL,CAAgB,CAAA,YAAA,EAAeG,CAAU,CAAA,sBAAA,CACrF,CACF,CAAA,CACA,MAAMG,kCAAAA,CAA6BR,CAAQ,CACzC,EAAA,CAAIE,CAAAA,CACJ,UAAA,CAAAG,CACF,CAAC,CAAA,CACDC,mBAAAA,CAAO,IAAA,CACLC,gBAAAA,CAAO,KAAA,CACL,CAAA,wCAAA,EAA2CL,CAAgB,CAAA,YAAA,EAAeG,CAAU,CAAA,oBAAA,CACtF,CACF,CACF,CAAC,CAAA,CAGGV,CAAAA,EAEF,MAAMS,iCAAAA,CAAUN,CAAa,MAAOO,CAAAA,EAAe,CACjDC,mBAAAA,CAAO,IAAA,CACLC,gBAAAA,CAAO,OAAA,CACL,CAAA,0CAAA,EAA6CL,CAAgB,CAAA,YAAA,EAAeG,CAAU,CAAA,IAAA,CACxF,CACF,CAAA,CACA,MAAMI,kCAAAA,CAAqBT,CAAQ,CACjC,EAAA,CAAIE,CAAAA,CACJ,UAAA,CAAAG,CACF,CAAC,CAAA,CACDC,mBAAAA,CAAO,IAAA,CACLC,gBAAAA,CAAO,KAAA,CACL,CAAA,yCAAA,EAA4CL,CAAgB,CAAA,YAAA,EAAeG,CAAU,CAAA,EAAA,CACvF,CACF,CACF,CAAC,CAEL,CC7EA,IASMK,CAAAA,CAAe,CACnB,IAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,sCAAA,CACA,qBAAA,CACA,qBAAA,CACA,aAAA,CACA,0BACF,CAAA,CAOA,MAAA,SAAsBC,EAAAA,CAAuB,CAC3C,IAAA,CAAAjB,CAAAA,CACA,aAAA,CAAAkB,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CAAkB,CAAA,CAAA,CAClB,YAAA,CAAAlB,CAAAA,CAAeC,mBACjB,CAAA,CAWkB,CAEhB,IAAMG,CAAAA,CAASC,kCAAAA,CAA4BL,CAAcF,CAAI,CAAA,CAG7DY,mBAAAA,CAAO,IAAA,CAAKC,gBAAAA,CAAO,OAAA,CAAQ,CAAA,SAAA,EAAYM,CAAI,CAAA,WAAA,CAAa,CAAC,CAAA,CAIzD,IAAME,CAAAA,CAHiBC,kCAAAA,CAAQH,CAAMI,oBAAgB,CAAA,CAGN,GAAA,CAC7C,CAAC,CACC,IAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CAGA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,qBAAA,CAAuBC,CAAAA,CACvB,GAAGC,CACL,CAAA,CAAA,EAAA,CAAsB,CACpB,KAAA,CAAAD,CAAAA,CACA,IAAA,CAAMP,CAAAA,CACN,WAAA,CAAaC,CAAAA,CACb,gBAAA,CAAkBQ,kCAAAA,CAAsB,CAAA,CAKxC,MAAA,CAAQL,CAAAA,EAAUV,CAAAA,CAClB,MAAA,CAAQW,CAAAA,CAASI,kCAAAA,CAAqB,CAAA,CAAI,KAAA,CAAA,CAC1C,KAAA,CAAOH,CAAAA,CAAQG,kCAAAA,CAAoB,CAAA,CAAI,KAAA,CAAA,CAEvC,UAAA,CAAY,MAAA,CAAO,OAAA,CAAQD,CAAI,CAAA,CAG5B,MAAA,CAAO,CAAC,CAACE,CAAG,CAAA,CAAA,EAAM,CAAClB,CAAAA,CAAa,QAAA,CAASkB,CAAG,CAAC,CAAA,CAC7C,GAAA,CAAI,CAAC,CAACA,CAAAA,CAAKH,CAAK,CAAA,CAAA,EAAA,CAAO,CACtB,GAAA,CAAAG,CAAAA,CACA,MAAA,CAAQD,kCAAAA,CAAoB,CAC9B,CAAA,CAAE,CACN,CAAA,CACF,CAAA,CAGwB,MAAME,kCAAAA,CAC5B7B,CACAe,CAAAA,CACAD,CACF,CAAA,EAAA,CAIER,mBAAAA,CAAO,KAAA,CACLC,gBAAAA,CAAO,GAAA,CACL,kFACF,CACF,CAAA,CACA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAElB,CCzGA,IASMG,CAAAA,CAAe,CACnB,IAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,sCAAA,CACA,qBAAA,CACA,qBAAA,CACA,aAAA,CACA,0BACF,CAAA,CAOA,MAAA,SAAsBoB,EAAAA,CAAqB,CACzC,IAAA,CAAApC,CAAAA,CACA,aAAA,CAAAkB,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,YAAA,CAAAjB,CAAAA,CAAeC,mBACjB,CAAA,CASkB,CAEhB,IAAMG,CAAAA,CAASC,kCAAAA,CAA4BL,CAAcF,CAAI,CAAA,CAG7DY,mBAAAA,CAAO,IAAA,CAAKC,gBAAAA,CAAO,OAAA,CAAQ,CAAA,SAAA,EAAYM,CAAI,CAAA,WAAA,CAAa,CAAC,CAAA,CAIzD,IAAMkB,CAAAA,CAHef,kCAAAA,CAAQH,CAAMmB,oBAAc,CAAA,CAGN,GAAA,CACzC,CAAC,CACC,WAAA,CAAaC,CAAAA,CACb,KAAA,CAAAd,CAAAA,CAGA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,IAAA,CAAAU,CAAAA,CACA,GAAGR,CACL,CAAA,CAAA,EAAA,CAAoB,CAClB,GAAI,OAAOO,CAAAA,EAAY,QAAA,CACnB,CAAE,OAAA,CAASA,CAAAA,CAAQ,WAAA,CAAY,CAAA,GAAM,MAAO,CAAA,CAC5C,CAAC,CAAA,CACL,IAAA,CAAMC,CAAAA,CACN,WAAA,CAAaf,CAAAA,CACb,gBAAA,CAAkBQ,kCAAAA,CAAsB,CAAA,CAKxC,MAAA,CAAQL,CAAAA,EAAUV,CAAAA,CAClB,MAAA,CAAQW,CAAAA,CAASI,kCAAAA,CAAqB,CAAA,CAAI,KAAA,CAAA,CAC1C,KAAA,CAAOH,CAAAA,CAAQG,kCAAAA,CAAoB,CAAA,CAAI,KAAA,CAAA,CAEvC,UAAA,CAAY,MAAA,CAAO,OAAA,CAAQD,CAAI,CAAA,CAG5B,MAAA,CAAO,CAAC,CAACE,CAAG,CAAA,CAAA,EAAM,CAAClB,CAAAA,CAAa,QAAA,CAASkB,CAAG,CAAC,CAAA,CAC7C,GAAA,CAAI,CAAC,CAACA,CAAAA,CAAKH,CAAK,CAAA,CAAA,EAAA,CAAO,CACtB,GAAA,CAAAG,CAAAA,CACA,MAAA,CAAQD,kCAAAA,CAAoB,CAC9B,CAAA,CAAE,CACN,CAAA,CACF,CAAA,CAGsB,MAAMQ,kCAAAA,CAAYnC,CAAQ+B,CAAqB,CAAA,EAAA,CAInEzB,mBAAAA,CAAO,KAAA,CACLC,gBAAAA,CAAO,GAAA,CACL,+EACF,CACF,CAAA,CACA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAElB,CCzFA,IAAM6B,CAAAA,CAAa,GAAA,CACbC,CAAAA,CAAa,EAAA,CAAKD,CAAAA,CAClBE,CAAAA,CAAW,EAAA,CAAKD,CAAAA,CAChBE,CAAAA,CAAU,EAAA,CAAKD,CAAAA,CACfE,CAAAA,CAAW,CAAA,CAAID,CAAAA,CASrB,MAAA,SAAsBE,EAAAA,CACpBzC,CAAAA,CACA,CACE,GAAA,CAAA0C,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,GAAA,CAAAC,CAAAA,CAAM,IAAI,IACZ,CAAA,CAeC,CAED,IAAMC,CAAAA,CAAiB,MAAM1C,kCAAAA,CAA4B,CAAA,CAGnD2C,CAAAA,CAAY,IAAA,CAAK,KAAA,CAAMH,CAAAA,CAAM,OAAA,CAAQ,CAAA,CAAI,GAAI,CAAA,CAC7CI,CAAAA,CAAU,IAAA,CAAK,KAAA,CAAMH,CAAAA,CAAI,OAAA,CAAQ,CAAA,CAAI,GAAI,CAAA,CAC/C,EAAA,CAAIE,CAAAA,CAAYC,CAAAA,CACd,MAAM,IAAI,KAAA,CAAM,uDAAuD,CAAA,CAIzE,EAAA,CAAIL,CAAAA,GAAQ,IAAA,EAAQE,CAAAA,CAAI,OAAA,CAAQ,CAAA,CAAID,CAAAA,CAAM,OAAA,CAAQ,CAAA,CAAIH,CAAAA,CAAW,CAAA,CAC/D,MAAM,IAAI,KAAA,CACR,yEACF,CAAA,CAIF,IAAMQ,CAAAA,CAAYL,CAAAA,CAAM,WAAA,CAAY,CAAA,CAC9BM,CAAAA,CAAUL,CAAAA,CAAI,WAAA,CAAY,CAAA,CAC1B,CAACM,CAAAA,CAAmBC,CAAAA,CAAoBC,CAA2B,CAAA,CACvE,MAAM,OAAA,CAAQ,GAAA,CAAI,CAChBC,kCAAAA,CAAiCrD,CAAQ,CACvC,UAAA,CAAY,2BAAA,CACZ,SAAA,CAAAgD,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,YAAA,CAAc,CAAA,CAAA,CACd,cAAA,CAAAJ,CAAAA,CACA,WAAA,CAAaH,CAAAA,CACb,gBAAA,CAAkB,CAAA,CACpB,CAAC,CAAA,CACDW,kCAAAA,CAAiCrD,CAAQ,CACvC,UAAA,CAAY,4BAAA,CACZ,SAAA,CAAAgD,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,YAAA,CAAc,CAAA,CAAA,CACd,cAAA,CAAAJ,CAAAA,CACA,WAAA,CAAaH,CAAAA,CACb,gBAAA,CAAkB,CAAA,CACpB,CAAC,CAAA,CACDW,kCAAAA,CAAiCrD,CAAQ,CACvC,UAAA,CAAY,4BAAA,CACZ,SAAA,CAAAgD,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,YAAA,CAAc,CAAA,CAAA,CACd,cAAA,CAAAJ,CAAAA,CACA,WAAA,CAAaH,CAAAA,CACb,gBAAA,CAAkB,CAAA,CACpB,CAAC,CACH,CAAC,CAAA,CAEH,MAAO,CACL,yBAAA,CAA2BQ,CAAAA,CAC3B,0BAAA,CAA4BC,CAAAA,CAC5B,0BAAA,CAA4BC,CAC9B,CACF,CChGO,IAAME,CAAAA,CAAgBC,CAAAA,EAC3B,IAAI,GAAA,CAAI,CAAA,QAAA,EAAWA,CAAM,CAAA,CAAA;ACiHA;AAAA;AAGT,KAAA;AACqC,kBAAA;AAChB,mBAAA;AAAA;AC5DzB;AAAA;AAAA;AAUd,uBAAA","file":"/home/runner/work/cli/cli/dist/chunk-LRADV5OI.cjs","sourcesContent":[null,"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"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkHTS7K7QDcjs = require('./chunk-HTS7K7QD.cjs');var _chunkZUNVPK23cjs = require('./chunk-ZUNVPK23.cjs');var _chunkOMVVROKBcjs = require('./chunk-OMVVROKB.cjs');var _privacytypes = require('@transcend-io/privacy-types');var _cliprogress = require('cli-progress'); var _cliprogress2 = _interopRequireDefault(_cliprogress);var _graphqlrequest = require('graphql-request');var _colors = require('colors'); var _colors2 = _interopRequireDefault(_colors);var _bluebird = require('bluebird');async function q(u,{dataSiloIds:e=[],includeGuessedCategories:l,includeAttributes:a,parentCategories:c=[],subCategories:t=[],pageSize:p=1e3}={}){let n=[],m=new Date().getTime(),d=new _cliprogress2.default.SingleBar({},_cliprogress2.default.Presets.shades_classic),s={...c.length>0?{category:c}:{},...t.length>0?{subCategoryIds:t}:{},...c.length+t.length>0&&!l?{status:_privacytypes.SubDataPointDataSubCategoryGuessStatus.Approved}:{},...e.length>0?{dataSilos:e}:{}},{subDataPoints:{totalCount:o}}=await _chunkHTS7K7QDcjs.ug.call(void 0, u,_chunkHTS7K7QDcjs.d,{filterBy:s});_chunkZUNVPK23cjs.a.info(_colors2.default.magenta("[Step 1/3] Pulling in all subdatapoints")),d.start(o,0);let y=0,D=!1,r,b=0;do try{let{subDataPoints:{nodes:P}}=await _chunkHTS7K7QDcjs.ug.call(void 0, u,_graphqlrequest.gql`
|
|
2
2
|
query TranscendCliSubDataPointCsvExport(
|
|
3
3
|
$filterBy: SubDataPointFiltersInput
|
|
4
4
|
$first: Int!
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
-
`,{first:p,offset:b,filterBy:{...s}});r=_optionalChain([P, 'access', _2 => _2[P.length-1], 'optionalAccess', _3 => _3.id]),n.push(...P),D=P.length===p,y+=P.length,b+=P.length,d.update(y)}catch(P){throw _chunkZUNVPK23cjs.a.error(_colors2.default.red(`An error fetching subdatapoints for cursor ${r} and offset ${b}`)),P}while(D);d.stop();let C=new Date().getTime()-m,g=
|
|
44
|
+
`,{first:p,offset:b,filterBy:{...s}});r=_optionalChain([P, 'access', _2 => _2[P.length-1], 'optionalAccess', _3 => _3.id]),n.push(...P),D=P.length===p,y+=P.length,b+=P.length,d.update(y)}catch(P){throw _chunkZUNVPK23cjs.a.error(_colors2.default.red(`An error fetching subdatapoints for cursor ${r} and offset ${b}`)),P}while(D);d.stop();let C=new Date().getTime()-m,g=_chunkOMVVROKBcjs.g.call(void 0, n,"name");return _chunkZUNVPK23cjs.a.info(_colors2.default.green(`Successfully pulled in ${g.length} subdatapoints in ${C/1e3} seconds!`)),g}async function F(u,{dataPointIds:e=[],pageSize:l=100}){let a=[],c=new Date().getTime(),t=new _cliprogress2.default.SingleBar({},_cliprogress2.default.Presets.shades_classic);_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`[Step 2/3] Fetching metadata for ${e.length} datapoints`));let p=_chunkOMVVROKBcjs.b.call(void 0, e,l);t.start(e.length,0);let n=0;await _bluebird.mapSeries.call(void 0, p,async s=>{try{let{dataPoints:{nodes:o}}=await _chunkHTS7K7QDcjs.ug.call(void 0, u,_chunkHTS7K7QDcjs.g,{first:l,filterBy:{ids:s}});a.push(...o),n+=s.length,t.update(n)}catch(o){throw _chunkZUNVPK23cjs.a.error(_colors2.default.red(`An error fetching subdatapoints for IDs ${s.join(", ")}`)),o}}),t.stop();let d=new Date().getTime()-c;return _chunkZUNVPK23cjs.a.info(_colors2.default.green(`Successfully pulled in ${a.length} dataPoints in ${d/1e3} seconds!`)),a}async function Q(u,{dataSiloIds:e=[],pageSize:l=100}){let a=[],c=new Date().getTime(),t=new _cliprogress2.default.SingleBar({},_cliprogress2.default.Presets.shades_classic);_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`[Step 3/3] Fetching metadata for ${e.length} data silos`));let p=_chunkOMVVROKBcjs.b.call(void 0, e,l);t.start(e.length,0);let n=0;await _bluebird.mapSeries.call(void 0, p,async s=>{try{let{dataSilos:{nodes:o}}=await _chunkHTS7K7QDcjs.ug.call(void 0, u,_chunkHTS7K7QDcjs.j,{first:l,filterBy:{ids:s}});a.push(...o),n+=s.length,t.update(n)}catch(o){throw _chunkZUNVPK23cjs.a.error(_colors2.default.red(`An error fetching data silos for IDs ${s.join(", ")}`)),o}}),t.stop();let d=new Date().getTime()-c;return _chunkZUNVPK23cjs.a.info(_colors2.default.green(`Successfully pulled in ${a.length} data silos in ${d/1e3} seconds!`)),a}async function Y(u,{dataSiloIds:e=[],includeGuessedCategories:l,includeAttributes:a,parentCategories:c=[],subCategories:t=[],pageSize:p=1e3}={}){let n=await q(u,{dataSiloIds:e,includeGuessedCategories:l,includeAttributes:a,parentCategories:c,subCategories:t,pageSize:p}),m=_chunkOMVVROKBcjs.j.call(void 0, n.map(r=>r.dataPointId)),d=await F(u,{dataPointIds:m}),s=_chunkOMVVROKBcjs.e.call(void 0, d,"id"),o=_chunkOMVVROKBcjs.j.call(void 0, n.map(r=>r.dataSiloId)),y=await Q(u,{dataSiloIds:o}),D=_chunkOMVVROKBcjs.e.call(void 0, y,"id");return n.map(r=>({...r,dataPoint:s[r.dataPointId],dataSilo:D[r.dataSiloId]}))}async function nt(u,{dataSiloIds:e=[],status:l,subCategories:a=[],includeEncryptedSnippets:c,pageSize:t=100}={}){let p=[],n=new Date().getTime(),m=new _cliprogress2.default.SingleBar({},_cliprogress2.default.Presets.shades_classic),d={...a.length>0?{subCategoryIds:a}:{},...l?{status:l}:{},...e.length>0?{dataSilos:e}:{}},{unstructuredSubDataPointRecommendations:{totalCount:s}}=await _chunkHTS7K7QDcjs.ug.call(void 0, u,_chunkHTS7K7QDcjs.h,{filterBy:d});_chunkZUNVPK23cjs.a.info(_colors2.default.magenta("[Step 1/3] Pulling in all subdatapoints")),m.start(s,0);let o=0,y=!1,D,r=0;do try{let{unstructuredSubDataPointRecommendations:{nodes:g}}=await _chunkHTS7K7QDcjs.ug.call(void 0, u,_graphqlrequest.gql`
|
|
45
45
|
query TranscendCliUnstructuredSubDataPointRecommendationCsvExport(
|
|
46
46
|
$filterBy: UnstructuredSubDataPointRecommendationsFilterInput
|
|
47
47
|
$first: Int!
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
-
`,{first:t,offset:r,filterBy:{...d}});D=_optionalChain([g, 'access', _4 => _4[g.length-1], 'optionalAccess', _5 => _5.id]),p.push(...g),y=g.length===t,o+=g.length,r+=g.length,m.update(o)}catch(g){throw _chunkZUNVPK23cjs.a.error(_colors2.default.red(`An error fetching subdatapoints for cursor ${D} and offset ${r}`)),g}while(y);m.stop();let T=new Date().getTime()-n,C=
|
|
75
|
-
//# sourceMappingURL=chunk-
|
|
74
|
+
`,{first:t,offset:r,filterBy:{...d}});D=_optionalChain([g, 'access', _4 => _4[g.length-1], 'optionalAccess', _5 => _5.id]),p.push(...g),y=g.length===t,o+=g.length,r+=g.length,m.update(o)}catch(g){throw _chunkZUNVPK23cjs.a.error(_colors2.default.red(`An error fetching subdatapoints for cursor ${D} and offset ${r}`)),g}while(y);m.stop();let T=new Date().getTime()-n,C=_chunkOMVVROKBcjs.g.call(void 0, p,"name");return _chunkZUNVPK23cjs.a.info(_colors2.default.green(`Successfully pulled in ${C.length} subdatapoints in ${T/1e3} seconds!`)),C}exports.a = Y; exports.b = nt;
|
|
75
|
+
//# sourceMappingURL=chunk-LZA5Y4SB.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/cli/cli/dist/chunk-4WBBQCOV.cjs","../src/lib/data-inventory/pullAllDatapoints.ts","../src/lib/data-inventory/pullUnstructuredSubDataPointRecommendations.ts"],"names":["pullSubDatapoints","client","dataSiloIds","includeGuessedCategories","includeAttributes","parentCategories","subCategories","pageSize","subDataPoints","t0","progressBar","cliProgress","filterBy","SubDataPointDataSubCategoryGuessStatus","totalCount","makeGraphQLRequest","SUB_DATA_POINTS_COUNT","logger","colors","total","shouldContinue","cursor","offset","nodes","gql","err"],"mappings":"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","file":"/home/runner/work/cli/cli/dist/chunk-4WBBQCOV.cjs","sourcesContent":[null,"/* eslint-disable max-lines */\nimport { keyBy, uniq, chunk, sortBy } from 'lodash-es';\nimport {\n type DataCategoryType,\n SubDataPointDataSubCategoryGuessStatus,\n} from '@transcend-io/privacy-types';\nimport cliProgress from 'cli-progress';\nimport { gql } from 'graphql-request';\nimport colors from 'colors';\nimport type { GraphQLClient } from 'graphql-request';\nimport {\n DATAPOINT_EXPORT,\n DATA_SILO_EXPORT,\n type DataSiloAttributeValue,\n SUB_DATA_POINTS_COUNT,\n makeGraphQLRequest,\n} from '../graphql';\nimport { logger } from '../../logger';\nimport type { DataCategoryInput, ProcessingPurposeInput } from '../../codecs';\nimport { mapSeries } from 'bluebird';\n\nexport interface DataSiloCsvPreview {\n /** ID of dataSilo */\n id: string;\n /** Name of dataSilo */\n title: string;\n}\n\nexport interface DataPointCsvPreview {\n /** ID of dataPoint */\n id: string;\n /** The path to this data point */\n path: string[];\n /** Description */\n description: {\n /** Default message */\n defaultMessage: string;\n };\n /** Name */\n name: string;\n}\n\nexport interface SubDataPointCsvPreview {\n /** ID of subDatapoint */\n id: string;\n /** Name (or key) of the subdatapoint */\n name: string;\n /** The description */\n description?: string;\n /** Personal data category */\n categories: DataCategoryInput[];\n /** Data point ID */\n dataPointId: string;\n /** The data silo ID */\n dataSiloId: string;\n /** The processing purpose for this sub datapoint */\n purposes: ProcessingPurposeInput[];\n /** Attribute attached to subdatapoint */\n attributeValues?: DataSiloAttributeValue[];\n /** Data category guesses that are output by the classifier */\n pendingCategoryGuesses?: {\n /** Data category being guessed */\n category: DataCategoryInput;\n /** Status of guess */\n status: SubDataPointDataSubCategoryGuessStatus;\n /** classifier version that produced the guess */\n classifierVersion: number;\n }[];\n}\n\nexport interface DatapointFilterOptions {\n /** IDs of data silos to filter down */\n dataSiloIds?: string[];\n /** Whether to include guessed categories, defaults to only approved categories */\n includeGuessedCategories?: boolean;\n /** Whether or not to include attributes */\n includeAttributes?: boolean;\n /** Parent categories to filter down for */\n parentCategories?: DataCategoryType[];\n /** Sub categories to filter down for */\n subCategories?: string[]; // TODO: https://transcend.height.app/T-40482 - do by name not ID\n}\n\n/**\n * Pull subdatapoint information\n *\n * @param client - Client to use for the request\n * @param options - Options\n * @returns The subdatapoints\n */\nasync function pullSubDatapoints(\n client: GraphQLClient,\n {\n dataSiloIds = [],\n includeGuessedCategories,\n includeAttributes,\n parentCategories = [],\n subCategories = [],\n pageSize = 1000,\n }: DatapointFilterOptions & {\n /** Page size to pull in */\n pageSize?: number;\n } = {},\n): Promise<SubDataPointCsvPreview[]> {\n const subDataPoints: SubDataPointCsvPreview[] = [];\n\n // Time duration\n const t0 = new Date().getTime();\n\n // create a new progress bar instance and use shades_classic theme\n const progressBar = new cliProgress.SingleBar(\n {},\n cliProgress.Presets.shades_classic,\n );\n\n // Filters\n const filterBy = {\n ...(parentCategories.length > 0 ? { category: parentCategories } : {}),\n ...(subCategories.length > 0 ? { subCategoryIds: subCategories } : {}),\n // if parentCategories or subCategories and not includeGuessedCategories\n ...(parentCategories.length + subCategories.length > 0 &&\n !includeGuessedCategories\n ? // then only show data points with approved data categories\n { status: SubDataPointDataSubCategoryGuessStatus.Approved }\n : {}),\n ...(dataSiloIds.length > 0 ? { dataSilos: dataSiloIds } : {}),\n };\n\n // Build a GraphQL client\n const {\n subDataPoints: { totalCount },\n } = await makeGraphQLRequest<{\n /** Query response */\n subDataPoints: {\n /** Count */\n totalCount: number;\n };\n }>(client, SUB_DATA_POINTS_COUNT, {\n filterBy,\n });\n\n logger.info(colors.magenta('[Step 1/3] Pulling in all subdatapoints'));\n\n progressBar.start(totalCount, 0);\n let total = 0;\n let shouldContinue = false;\n let cursor: string | undefined;\n let offset = 0;\n do {\n try {\n const {\n subDataPoints: { nodes },\n } = await makeGraphQLRequest<{\n /** Query response */\n subDataPoints: {\n /** List of matches */\n nodes: SubDataPointCsvPreview[];\n };\n }>(\n client,\n gql`\n query TranscendCliSubDataPointCsvExport(\n $filterBy: SubDataPointFiltersInput\n $first: Int!\n $offset: Int!\n ) {\n subDataPoints(\n filterBy: $filterBy\n first: $first\n offset: $offset\n useMaster: false\n ) {\n nodes {\n id\n name\n description\n dataPointId\n dataSiloId\n purposes {\n name\n purpose\n }\n categories {\n name\n category\n }\n ${\n includeGuessedCategories\n ? `pendingCategoryGuesses {\n category {\n name\n category\n }\n status\n classifierVersion\n }`\n : ''\n }\n ${\n includeAttributes\n ? `attributeValues {\n attributeKey {\n name\n }\n name\n }`\n : ''\n }\n }\n }\n }\n `,\n {\n first: pageSize,\n offset,\n filterBy: {\n ...filterBy,\n // TODO: https://transcend.height.app/T-40484 - add cursor support\n // ...(cursor ? { cursor: { id: cursor } } : {}),\n },\n },\n );\n\n cursor = nodes[nodes.length - 1]?.id as string;\n subDataPoints.push(...nodes);\n shouldContinue = nodes.length === pageSize;\n total += nodes.length;\n offset += nodes.length;\n progressBar.update(total);\n } catch (err) {\n logger.error(\n colors.red(\n `An error fetching subdatapoints for cursor ${cursor} and offset ${offset}`,\n ),\n );\n throw err;\n }\n } while (shouldContinue);\n\n progressBar.stop();\n const t1 = new Date().getTime();\n const totalTime = t1 - t0;\n\n const sorted = sortBy(subDataPoints, 'name');\n\n logger.info(\n colors.green(\n `Successfully pulled in ${sorted.length} subdatapoints in ${\n totalTime / 1000\n } seconds!`,\n ),\n );\n return sorted;\n}\n\n/**\n * Pull datapoint information\n *\n * @param client - Client to use for the request\n * @param options - Options\n * @returns The datapoints\n */\nasync function pullDatapoints(\n client: GraphQLClient,\n {\n dataPointIds = [],\n pageSize = 100,\n }: {\n /** IDs of data points to filter down */\n dataPointIds: string[];\n /** Page size to pull in */\n pageSize?: number;\n },\n): Promise<DataPointCsvPreview[]> {\n const dataPoints: DataPointCsvPreview[] = [];\n\n // Time duration\n const t0 = new Date().getTime();\n\n // create a new progress bar instance and use shades_classic theme\n const progressBar = new cliProgress.SingleBar(\n {},\n cliProgress.Presets.shades_classic,\n );\n\n logger.info(\n colors.magenta(\n `[Step 2/3] Fetching metadata for ${dataPointIds.length} datapoints`,\n ),\n );\n\n // Group by 100\n const dataPointsGrouped = chunk(dataPointIds, pageSize);\n\n progressBar.start(dataPointIds.length, 0);\n let total = 0;\n await mapSeries(dataPointsGrouped, async (dataPointIdsGroup) => {\n try {\n const {\n dataPoints: { nodes },\n } = await makeGraphQLRequest<{\n /** Query response */\n dataPoints: {\n /** List of matches */\n nodes: DataPointCsvPreview[];\n };\n }>(client, DATAPOINT_EXPORT, {\n first: pageSize,\n filterBy: {\n ids: dataPointIdsGroup,\n },\n });\n\n dataPoints.push(...nodes);\n total += dataPointIdsGroup.length;\n progressBar.update(total);\n } catch (err) {\n logger.error(\n colors.red(\n `An error fetching subdatapoints for IDs ${dataPointIdsGroup.join(\n ', ',\n )}`,\n ),\n );\n throw err;\n }\n });\n\n progressBar.stop();\n const t1 = new Date().getTime();\n const totalTime = t1 - t0;\n\n logger.info(\n colors.green(\n `Successfully pulled in ${dataPoints.length} dataPoints in ${\n totalTime / 1000\n } seconds!`,\n ),\n );\n return dataPoints;\n}\n\n/**\n * Pull data silo information\n *\n * @param client - Client to use for the request\n * @param options - Options\n * @returns The data silos\n */\nasync function pullDataSilos(\n client: GraphQLClient,\n {\n dataSiloIds = [],\n pageSize = 100,\n }: {\n /** IDs of data silos to filter down */\n dataSiloIds: string[];\n /** Page size to pull in */\n pageSize?: number;\n },\n): Promise<DataSiloCsvPreview[]> {\n const dataSilos: DataSiloCsvPreview[] = [];\n\n // Time duration\n const t0 = new Date().getTime();\n\n // create a new progress bar instance and use shades_classic theme\n const progressBar = new cliProgress.SingleBar(\n {},\n cliProgress.Presets.shades_classic,\n );\n\n logger.info(\n colors.magenta(\n `[Step 3/3] Fetching metadata for ${dataSiloIds.length} data silos`,\n ),\n );\n\n // Group by 100\n const dataSilosGrouped = chunk(dataSiloIds, pageSize);\n\n progressBar.start(dataSiloIds.length, 0);\n let total = 0;\n await mapSeries(dataSilosGrouped, async (dataSiloIdsGroup) => {\n try {\n const {\n dataSilos: { nodes },\n } = await makeGraphQLRequest<{\n /** Query response */\n dataSilos: {\n /** List of matches */\n nodes: DataSiloCsvPreview[];\n };\n }>(client, DATA_SILO_EXPORT, {\n first: pageSize,\n filterBy: {\n ids: dataSiloIdsGroup,\n },\n });\n\n dataSilos.push(...nodes);\n total += dataSiloIdsGroup.length;\n progressBar.update(total);\n } catch (err) {\n logger.error(\n colors.red(\n `An error fetching data silos for IDs ${dataSiloIdsGroup.join(', ')}`,\n ),\n );\n throw err;\n }\n });\n\n progressBar.stop();\n const t1 = new Date().getTime();\n const totalTime = t1 - t0;\n\n logger.info(\n colors.green(\n `Successfully pulled in ${dataSilos.length} data silos in ${\n totalTime / 1000\n } seconds!`,\n ),\n );\n return dataSilos;\n}\n\n/**\n * Pull all datapoints from the data inventory.\n *\n * @param client - Client to use for the request\n * @param options - Options\n * @returns The datapoints and data silos\n */\nexport async function pullAllDatapoints(\n client: GraphQLClient,\n {\n dataSiloIds = [],\n includeGuessedCategories,\n includeAttributes,\n parentCategories = [],\n subCategories = [],\n pageSize = 1000,\n }: DatapointFilterOptions & {\n /** Page size to pull in */\n pageSize?: number;\n } = {},\n): Promise<\n (SubDataPointCsvPreview & {\n /** Data point information */\n dataPoint: DataPointCsvPreview;\n /** Data silo information */\n dataSilo: DataSiloCsvPreview;\n })[]\n> {\n // Subdatapoint information\n const subDatapoints = await pullSubDatapoints(client, {\n dataSiloIds,\n includeGuessedCategories,\n includeAttributes,\n parentCategories,\n subCategories,\n pageSize,\n });\n\n // The datapoint ids to grab\n const dataPointIds = uniq(subDatapoints.map((point) => point.dataPointId));\n const dataPoints = await pullDatapoints(client, {\n dataPointIds,\n });\n const dataPointById = keyBy(dataPoints, 'id');\n\n // The data silo IDs to grab\n const allDataSiloIds = uniq(subDatapoints.map((point) => point.dataSiloId));\n const dataSilos = await pullDataSilos(client, {\n dataSiloIds: allDataSiloIds,\n });\n const dataSiloById = keyBy(dataSilos, 'id');\n\n return subDatapoints.map((subDataPoint) => ({\n ...subDataPoint,\n dataPoint: dataPointById[subDataPoint.dataPointId],\n dataSilo: dataSiloById[subDataPoint.dataSiloId],\n }));\n}\n/* eslint-enable max-lines */\n","import type { UnstructuredSubDataPointRecommendationStatus } from '@transcend-io/privacy-types';\nimport cliProgress from 'cli-progress';\nimport colors from 'colors';\nimport { gql, type GraphQLClient } from 'graphql-request';\nimport { sortBy } from 'lodash-es';\nimport type { DataCategoryInput } from '../../codecs';\nimport { ENTRY_COUNT, makeGraphQLRequest } from '../graphql';\nimport { logger } from '../../logger';\n\ninterface UnstructuredSubDataPointRecommendationCsvPreview {\n /** ID of subDatapoint */\n id: string;\n /** Entry or Named Entity recognized by the classifier */\n name: string;\n /** Context snippet including entry */\n contextSnippet: string;\n /** Scanned object ID */\n scannedObjectId: string;\n /** Scanned object path ID */\n scannedObjectPathId: string;\n /** The data silo ID */\n dataSiloId: string;\n /** Personal data category */\n dataSubCategory: DataCategoryInput;\n /** Classification Status */\n status: UnstructuredSubDataPointRecommendationStatus;\n /** Confidence */\n confidence: number;\n /** Classification method */\n classificationMethod: string;\n /** Classifier version */\n classifierVersion: string;\n}\n\ninterface EntryFilterOptions {\n /** IDs of data silos to filter down */\n dataSiloIds?: string[];\n /** Parent categories to filter down for */\n status?: UnstructuredSubDataPointRecommendationStatus[];\n /** Sub categories to filter down for */\n subCategories?: string[]; // TODO: https://transcend.height.app/T-40482 - do by name not ID\n /** Include entry and snippet */\n includeEncryptedSnippets?: boolean;\n /** Include encryptedSamplesS3Key */\n includeEncryptedSamplesS3Key?: boolean;\n}\n/**\n * Pull unstructured subdatapoint information\n *\n * @param client - Client to use for the request\n * @param options - Options\n * @param options.dataSiloIds - IDs of data silos to filter down\n * @param options.status - Parent categories to filter down for\n * @param options.subCategories - Sub categories to filter down for\n * @param options.includeEncryptedSnippets - Include entry and snippet\n * @param options.includeEncryptedSamplesS3Key - Include encryptedSamplesS3Key\n * @param options.pageSize - Page size to pull in\n * @returns A promise that resolves to an array of unstructured subdatapoint recommendations\n */\nexport async function pullUnstructuredSubDataPointRecommendations(\n client: GraphQLClient,\n {\n dataSiloIds = [],\n status,\n subCategories = [],\n includeEncryptedSnippets,\n pageSize = 100,\n }: EntryFilterOptions & {\n /** Page size to pull in */\n pageSize?: number;\n } = {},\n): Promise<UnstructuredSubDataPointRecommendationCsvPreview[]> {\n const unstructuredSubDataPointRecommendations: UnstructuredSubDataPointRecommendationCsvPreview[] =\n [];\n\n // Time duration\n const t0 = new Date().getTime();\n\n // create a new progress bar instance and use shades_classic theme\n const progressBar = new cliProgress.SingleBar(\n {},\n cliProgress.Presets.shades_classic,\n );\n\n // Filters\n const filterBy = {\n ...(subCategories.length > 0 ? { subCategoryIds: subCategories } : {}),\n ...(status ? { status } : {}),\n ...(dataSiloIds.length > 0 ? { dataSilos: dataSiloIds } : {}),\n };\n\n // Build a GraphQL client\n const {\n unstructuredSubDataPointRecommendations: { totalCount },\n } = await makeGraphQLRequest<{\n /** Query response */\n unstructuredSubDataPointRecommendations: {\n /** Count */\n totalCount: number;\n };\n }>(client, ENTRY_COUNT, {\n filterBy,\n });\n\n logger.info(colors.magenta('[Step 1/3] Pulling in all subdatapoints'));\n\n progressBar.start(totalCount, 0);\n let total = 0;\n let shouldContinue = false;\n let cursor: string | undefined;\n let offset = 0;\n do {\n try {\n const {\n unstructuredSubDataPointRecommendations: { nodes },\n } = await makeGraphQLRequest<{\n /** Query response */\n unstructuredSubDataPointRecommendations: {\n /** List of matches */\n nodes: UnstructuredSubDataPointRecommendationCsvPreview[];\n };\n }>(\n client,\n gql`\n query TranscendCliUnstructuredSubDataPointRecommendationCsvExport(\n $filterBy: UnstructuredSubDataPointRecommendationsFilterInput\n $first: Int!\n $offset: Int!\n ) {\n unstructuredSubDataPointRecommendations(\n filterBy: $filterBy\n first: $first\n offset: $offset\n useMaster: false\n ) {\n nodes {\n id\n dataSiloId\n scannedObjectPathId\n scannedObjectId\n ${includeEncryptedSnippets ? 'name' : ''}\n ${includeEncryptedSnippets ? 'contextSnippet' : ''}\n dataSubCategory {\n name\n category\n }\n status\n confidence\n classificationMethod\n classifierVersion\n }\n }\n }\n `,\n {\n first: pageSize,\n offset,\n filterBy: {\n ...filterBy,\n },\n },\n );\n\n cursor = nodes[nodes.length - 1]?.id as string;\n unstructuredSubDataPointRecommendations.push(...nodes);\n shouldContinue = nodes.length === pageSize;\n total += nodes.length;\n offset += nodes.length;\n progressBar.update(total);\n } catch (err) {\n logger.error(\n colors.red(\n `An error fetching subdatapoints for cursor ${cursor} and offset ${offset}`,\n ),\n );\n throw err;\n }\n } while (shouldContinue);\n\n progressBar.stop();\n const t1 = new Date().getTime();\n const totalTime = t1 - t0;\n\n const sorted = sortBy(unstructuredSubDataPointRecommendations, 'name');\n\n logger.info(\n colors.green(\n `Successfully pulled in ${sorted.length} subdatapoints in ${\n totalTime / 1000\n } seconds!`,\n ),\n );\n return sorted;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/cli/cli/dist/chunk-LZA5Y4SB.cjs","../src/lib/data-inventory/pullAllDatapoints.ts","../src/lib/data-inventory/pullUnstructuredSubDataPointRecommendations.ts"],"names":["pullSubDatapoints","client","dataSiloIds","includeGuessedCategories","includeAttributes","parentCategories","subCategories","pageSize","subDataPoints","t0","progressBar","cliProgress","filterBy","SubDataPointDataSubCategoryGuessStatus","totalCount","makeGraphQLRequest","SUB_DATA_POINTS_COUNT","logger","colors","total","shouldContinue","cursor","offset","nodes","gql","err"],"mappings":"AAAA,quBAAqE,wDAAyC,wDAA8D,2DCKrK,qGACiB,iDACJ,gFACD,oCAWO,MAuE1B,SAAeA,CAAAA,CACbC,CAAAA,CACA,CACE,WAAA,CAAAC,CAAAA,CAAc,CAAC,CAAA,CACf,wBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CAAmB,CAAC,CAAA,CACpB,aAAA,CAAAC,CAAAA,CAAgB,CAAC,CAAA,CACjB,QAAA,CAAAC,CAAAA,CAAW,GACb,CAAA,CAGI,CAAC,CAAA,CAC8B,CACnC,IAAMC,CAAAA,CAA0C,CAAC,CAAA,CAG3CC,CAAAA,CAAK,IAAI,IAAA,CAAK,CAAA,CAAE,OAAA,CAAQ,CAAA,CAGxBC,CAAAA,CAAc,IAAIC,qBAAAA,CAAY,SAAA,CAClC,CAAC,CAAA,CACDA,qBAAAA,CAAY,OAAA,CAAQ,cACtB,CAAA,CAGMC,CAAAA,CAAW,CACf,GAAIP,CAAAA,CAAiB,MAAA,CAAS,CAAA,CAAI,CAAE,QAAA,CAAUA,CAAiB,CAAA,CAAI,CAAC,CAAA,CACpE,GAAIC,CAAAA,CAAc,MAAA,CAAS,CAAA,CAAI,CAAE,cAAA,CAAgBA,CAAc,CAAA,CAAI,CAAC,CAAA,CAEpE,GAAID,CAAAA,CAAiB,MAAA,CAASC,CAAAA,CAAc,MAAA,CAAS,CAAA,EACrD,CAACH,CAAAA,CAEG,CAAE,MAAA,CAAQU,oDAAAA,CAAuC,QAAS,CAAA,CAC1D,CAAC,CAAA,CACL,GAAIX,CAAAA,CAAY,MAAA,CAAS,CAAA,CAAI,CAAE,SAAA,CAAWA,CAAY,CAAA,CAAI,CAAC,CAC7D,CAAA,CAGM,CACJ,aAAA,CAAe,CAAE,UAAA,CAAAY,CAAW,CAC9B,CAAA,CAAI,MAAMC,kCAAAA,CAMPd,CAAQe,mBAAAA,CAAuB,CAChC,QAAA,CAAAJ,CACF,CAAC,CAAA,CAEDK,mBAAAA,CAAO,IAAA,CAAKC,gBAAAA,CAAO,OAAA,CAAQ,yCAAyC,CAAC,CAAA,CAErER,CAAAA,CAAY,KAAA,CAAMI,CAAAA,CAAY,CAAC,CAAA,CAC/B,IAAIK,CAAAA,CAAQ,CAAA,CACRC,CAAAA,CAAiB,CAAA,CAAA,CACjBC,CAAAA,CACAC,CAAAA,CAAS,CAAA,CACb,GACE,GAAI,CACF,GAAM,CACJ,aAAA,CAAe,CAAE,KAAA,CAAAC,CAAM,CACzB,CAAA,CAAI,MAAMR,kCAAAA,CAORd,CACAuB,mBAAAA,CAAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAA,EA2BUrB,CAAAA,CACI,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAA,CAAA,CAQA,EACN,CAAA;AAAA,gBAAA,EAEEC,CAAAA,CACI,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAA,CAAA,CAMA,EACN,CAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA,CAKR,CACE,KAAA,CAAOG,CAAAA,CACP,MAAA,CAAAe,CAAAA,CACA,QAAA,CAAU,CACR,GAAGV,CAGL,CACF,CACF,CAAA,CAEAS,CAAAA,iBAASE,CAAAA,qBAAMA,CAAAA,CAAM,MAAA,CAAS,CAAC,CAAA,6BAAG,IAAA,CAClCf,CAAAA,CAAc,IAAA,CAAK,GAAGe,CAAK,CAAA,CAC3BH,CAAAA,CAAiBG,CAAAA,CAAM,MAAA,GAAWhB,CAAAA,CAClCY,CAAAA,EAASI,CAAAA,CAAM,MAAA,CACfD,CAAAA,EAAUC,CAAAA,CAAM,MAAA,CAChBb,CAAAA,CAAY,MAAA,CAAOS,CAAK,CAC1B,CAAA,KAAA,CAASM,CAAAA,CAAK,CACZ,MAAAR,mBAAAA,CAAO,KAAA,CACLC,gBAAAA,CAAO,GAAA,CACL,CAAA,2CAAA,EAA8CG,CAAM,CAAA,YAAA,EAAeC,CAAM,CAAA,CAAA;AC7G3E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBgD,gBAAA;AACU,gBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BiB,QAAA","file":"/home/runner/work/cli/cli/dist/chunk-LZA5Y4SB.cjs","sourcesContent":[null,"/* eslint-disable max-lines */\nimport { keyBy, uniq, chunk, sortBy } from 'lodash-es';\nimport {\n type DataCategoryType,\n SubDataPointDataSubCategoryGuessStatus,\n} from '@transcend-io/privacy-types';\nimport cliProgress from 'cli-progress';\nimport { gql } from 'graphql-request';\nimport colors from 'colors';\nimport type { GraphQLClient } from 'graphql-request';\nimport {\n DATAPOINT_EXPORT,\n DATA_SILO_EXPORT,\n type DataSiloAttributeValue,\n SUB_DATA_POINTS_COUNT,\n makeGraphQLRequest,\n} from '../graphql';\nimport { logger } from '../../logger';\nimport type { DataCategoryInput, ProcessingPurposeInput } from '../../codecs';\nimport { mapSeries } from 'bluebird';\n\nexport interface DataSiloCsvPreview {\n /** ID of dataSilo */\n id: string;\n /** Name of dataSilo */\n title: string;\n}\n\nexport interface DataPointCsvPreview {\n /** ID of dataPoint */\n id: string;\n /** The path to this data point */\n path: string[];\n /** Description */\n description: {\n /** Default message */\n defaultMessage: string;\n };\n /** Name */\n name: string;\n}\n\nexport interface SubDataPointCsvPreview {\n /** ID of subDatapoint */\n id: string;\n /** Name (or key) of the subdatapoint */\n name: string;\n /** The description */\n description?: string;\n /** Personal data category */\n categories: DataCategoryInput[];\n /** Data point ID */\n dataPointId: string;\n /** The data silo ID */\n dataSiloId: string;\n /** The processing purpose for this sub datapoint */\n purposes: ProcessingPurposeInput[];\n /** Attribute attached to subdatapoint */\n attributeValues?: DataSiloAttributeValue[];\n /** Data category guesses that are output by the classifier */\n pendingCategoryGuesses?: {\n /** Data category being guessed */\n category: DataCategoryInput;\n /** Status of guess */\n status: SubDataPointDataSubCategoryGuessStatus;\n /** classifier version that produced the guess */\n classifierVersion: number;\n }[];\n}\n\nexport interface DatapointFilterOptions {\n /** IDs of data silos to filter down */\n dataSiloIds?: string[];\n /** Whether to include guessed categories, defaults to only approved categories */\n includeGuessedCategories?: boolean;\n /** Whether or not to include attributes */\n includeAttributes?: boolean;\n /** Parent categories to filter down for */\n parentCategories?: DataCategoryType[];\n /** Sub categories to filter down for */\n subCategories?: string[]; // TODO: https://transcend.height.app/T-40482 - do by name not ID\n}\n\n/**\n * Pull subdatapoint information\n *\n * @param client - Client to use for the request\n * @param options - Options\n * @returns The subdatapoints\n */\nasync function pullSubDatapoints(\n client: GraphQLClient,\n {\n dataSiloIds = [],\n includeGuessedCategories,\n includeAttributes,\n parentCategories = [],\n subCategories = [],\n pageSize = 1000,\n }: DatapointFilterOptions & {\n /** Page size to pull in */\n pageSize?: number;\n } = {},\n): Promise<SubDataPointCsvPreview[]> {\n const subDataPoints: SubDataPointCsvPreview[] = [];\n\n // Time duration\n const t0 = new Date().getTime();\n\n // create a new progress bar instance and use shades_classic theme\n const progressBar = new cliProgress.SingleBar(\n {},\n cliProgress.Presets.shades_classic,\n );\n\n // Filters\n const filterBy = {\n ...(parentCategories.length > 0 ? { category: parentCategories } : {}),\n ...(subCategories.length > 0 ? { subCategoryIds: subCategories } : {}),\n // if parentCategories or subCategories and not includeGuessedCategories\n ...(parentCategories.length + subCategories.length > 0 &&\n !includeGuessedCategories\n ? // then only show data points with approved data categories\n { status: SubDataPointDataSubCategoryGuessStatus.Approved }\n : {}),\n ...(dataSiloIds.length > 0 ? { dataSilos: dataSiloIds } : {}),\n };\n\n // Build a GraphQL client\n const {\n subDataPoints: { totalCount },\n } = await makeGraphQLRequest<{\n /** Query response */\n subDataPoints: {\n /** Count */\n totalCount: number;\n };\n }>(client, SUB_DATA_POINTS_COUNT, {\n filterBy,\n });\n\n logger.info(colors.magenta('[Step 1/3] Pulling in all subdatapoints'));\n\n progressBar.start(totalCount, 0);\n let total = 0;\n let shouldContinue = false;\n let cursor: string | undefined;\n let offset = 0;\n do {\n try {\n const {\n subDataPoints: { nodes },\n } = await makeGraphQLRequest<{\n /** Query response */\n subDataPoints: {\n /** List of matches */\n nodes: SubDataPointCsvPreview[];\n };\n }>(\n client,\n gql`\n query TranscendCliSubDataPointCsvExport(\n $filterBy: SubDataPointFiltersInput\n $first: Int!\n $offset: Int!\n ) {\n subDataPoints(\n filterBy: $filterBy\n first: $first\n offset: $offset\n useMaster: false\n ) {\n nodes {\n id\n name\n description\n dataPointId\n dataSiloId\n purposes {\n name\n purpose\n }\n categories {\n name\n category\n }\n ${\n includeGuessedCategories\n ? `pendingCategoryGuesses {\n category {\n name\n category\n }\n status\n classifierVersion\n }`\n : ''\n }\n ${\n includeAttributes\n ? `attributeValues {\n attributeKey {\n name\n }\n name\n }`\n : ''\n }\n }\n }\n }\n `,\n {\n first: pageSize,\n offset,\n filterBy: {\n ...filterBy,\n // TODO: https://transcend.height.app/T-40484 - add cursor support\n // ...(cursor ? { cursor: { id: cursor } } : {}),\n },\n },\n );\n\n cursor = nodes[nodes.length - 1]?.id as string;\n subDataPoints.push(...nodes);\n shouldContinue = nodes.length === pageSize;\n total += nodes.length;\n offset += nodes.length;\n progressBar.update(total);\n } catch (err) {\n logger.error(\n colors.red(\n `An error fetching subdatapoints for cursor ${cursor} and offset ${offset}`,\n ),\n );\n throw err;\n }\n } while (shouldContinue);\n\n progressBar.stop();\n const t1 = new Date().getTime();\n const totalTime = t1 - t0;\n\n const sorted = sortBy(subDataPoints, 'name');\n\n logger.info(\n colors.green(\n `Successfully pulled in ${sorted.length} subdatapoints in ${\n totalTime / 1000\n } seconds!`,\n ),\n );\n return sorted;\n}\n\n/**\n * Pull datapoint information\n *\n * @param client - Client to use for the request\n * @param options - Options\n * @returns The datapoints\n */\nasync function pullDatapoints(\n client: GraphQLClient,\n {\n dataPointIds = [],\n pageSize = 100,\n }: {\n /** IDs of data points to filter down */\n dataPointIds: string[];\n /** Page size to pull in */\n pageSize?: number;\n },\n): Promise<DataPointCsvPreview[]> {\n const dataPoints: DataPointCsvPreview[] = [];\n\n // Time duration\n const t0 = new Date().getTime();\n\n // create a new progress bar instance and use shades_classic theme\n const progressBar = new cliProgress.SingleBar(\n {},\n cliProgress.Presets.shades_classic,\n );\n\n logger.info(\n colors.magenta(\n `[Step 2/3] Fetching metadata for ${dataPointIds.length} datapoints`,\n ),\n );\n\n // Group by 100\n const dataPointsGrouped = chunk(dataPointIds, pageSize);\n\n progressBar.start(dataPointIds.length, 0);\n let total = 0;\n await mapSeries(dataPointsGrouped, async (dataPointIdsGroup) => {\n try {\n const {\n dataPoints: { nodes },\n } = await makeGraphQLRequest<{\n /** Query response */\n dataPoints: {\n /** List of matches */\n nodes: DataPointCsvPreview[];\n };\n }>(client, DATAPOINT_EXPORT, {\n first: pageSize,\n filterBy: {\n ids: dataPointIdsGroup,\n },\n });\n\n dataPoints.push(...nodes);\n total += dataPointIdsGroup.length;\n progressBar.update(total);\n } catch (err) {\n logger.error(\n colors.red(\n `An error fetching subdatapoints for IDs ${dataPointIdsGroup.join(\n ', ',\n )}`,\n ),\n );\n throw err;\n }\n });\n\n progressBar.stop();\n const t1 = new Date().getTime();\n const totalTime = t1 - t0;\n\n logger.info(\n colors.green(\n `Successfully pulled in ${dataPoints.length} dataPoints in ${\n totalTime / 1000\n } seconds!`,\n ),\n );\n return dataPoints;\n}\n\n/**\n * Pull data silo information\n *\n * @param client - Client to use for the request\n * @param options - Options\n * @returns The data silos\n */\nasync function pullDataSilos(\n client: GraphQLClient,\n {\n dataSiloIds = [],\n pageSize = 100,\n }: {\n /** IDs of data silos to filter down */\n dataSiloIds: string[];\n /** Page size to pull in */\n pageSize?: number;\n },\n): Promise<DataSiloCsvPreview[]> {\n const dataSilos: DataSiloCsvPreview[] = [];\n\n // Time duration\n const t0 = new Date().getTime();\n\n // create a new progress bar instance and use shades_classic theme\n const progressBar = new cliProgress.SingleBar(\n {},\n cliProgress.Presets.shades_classic,\n );\n\n logger.info(\n colors.magenta(\n `[Step 3/3] Fetching metadata for ${dataSiloIds.length} data silos`,\n ),\n );\n\n // Group by 100\n const dataSilosGrouped = chunk(dataSiloIds, pageSize);\n\n progressBar.start(dataSiloIds.length, 0);\n let total = 0;\n await mapSeries(dataSilosGrouped, async (dataSiloIdsGroup) => {\n try {\n const {\n dataSilos: { nodes },\n } = await makeGraphQLRequest<{\n /** Query response */\n dataSilos: {\n /** List of matches */\n nodes: DataSiloCsvPreview[];\n };\n }>(client, DATA_SILO_EXPORT, {\n first: pageSize,\n filterBy: {\n ids: dataSiloIdsGroup,\n },\n });\n\n dataSilos.push(...nodes);\n total += dataSiloIdsGroup.length;\n progressBar.update(total);\n } catch (err) {\n logger.error(\n colors.red(\n `An error fetching data silos for IDs ${dataSiloIdsGroup.join(', ')}`,\n ),\n );\n throw err;\n }\n });\n\n progressBar.stop();\n const t1 = new Date().getTime();\n const totalTime = t1 - t0;\n\n logger.info(\n colors.green(\n `Successfully pulled in ${dataSilos.length} data silos in ${\n totalTime / 1000\n } seconds!`,\n ),\n );\n return dataSilos;\n}\n\n/**\n * Pull all datapoints from the data inventory.\n *\n * @param client - Client to use for the request\n * @param options - Options\n * @returns The datapoints and data silos\n */\nexport async function pullAllDatapoints(\n client: GraphQLClient,\n {\n dataSiloIds = [],\n includeGuessedCategories,\n includeAttributes,\n parentCategories = [],\n subCategories = [],\n pageSize = 1000,\n }: DatapointFilterOptions & {\n /** Page size to pull in */\n pageSize?: number;\n } = {},\n): Promise<\n (SubDataPointCsvPreview & {\n /** Data point information */\n dataPoint: DataPointCsvPreview;\n /** Data silo information */\n dataSilo: DataSiloCsvPreview;\n })[]\n> {\n // Subdatapoint information\n const subDatapoints = await pullSubDatapoints(client, {\n dataSiloIds,\n includeGuessedCategories,\n includeAttributes,\n parentCategories,\n subCategories,\n pageSize,\n });\n\n // The datapoint ids to grab\n const dataPointIds = uniq(subDatapoints.map((point) => point.dataPointId));\n const dataPoints = await pullDatapoints(client, {\n dataPointIds,\n });\n const dataPointById = keyBy(dataPoints, 'id');\n\n // The data silo IDs to grab\n const allDataSiloIds = uniq(subDatapoints.map((point) => point.dataSiloId));\n const dataSilos = await pullDataSilos(client, {\n dataSiloIds: allDataSiloIds,\n });\n const dataSiloById = keyBy(dataSilos, 'id');\n\n return subDatapoints.map((subDataPoint) => ({\n ...subDataPoint,\n dataPoint: dataPointById[subDataPoint.dataPointId],\n dataSilo: dataSiloById[subDataPoint.dataSiloId],\n }));\n}\n/* eslint-enable max-lines */\n","import type { UnstructuredSubDataPointRecommendationStatus } from '@transcend-io/privacy-types';\nimport cliProgress from 'cli-progress';\nimport colors from 'colors';\nimport { gql, type GraphQLClient } from 'graphql-request';\nimport { sortBy } from 'lodash-es';\nimport type { DataCategoryInput } from '../../codecs';\nimport { ENTRY_COUNT, makeGraphQLRequest } from '../graphql';\nimport { logger } from '../../logger';\n\ninterface UnstructuredSubDataPointRecommendationCsvPreview {\n /** ID of subDatapoint */\n id: string;\n /** Entry or Named Entity recognized by the classifier */\n name: string;\n /** Context snippet including entry */\n contextSnippet: string;\n /** Scanned object ID */\n scannedObjectId: string;\n /** Scanned object path ID */\n scannedObjectPathId: string;\n /** The data silo ID */\n dataSiloId: string;\n /** Personal data category */\n dataSubCategory: DataCategoryInput;\n /** Classification Status */\n status: UnstructuredSubDataPointRecommendationStatus;\n /** Confidence */\n confidence: number;\n /** Classification method */\n classificationMethod: string;\n /** Classifier version */\n classifierVersion: string;\n}\n\ninterface EntryFilterOptions {\n /** IDs of data silos to filter down */\n dataSiloIds?: string[];\n /** Parent categories to filter down for */\n status?: UnstructuredSubDataPointRecommendationStatus[];\n /** Sub categories to filter down for */\n subCategories?: string[]; // TODO: https://transcend.height.app/T-40482 - do by name not ID\n /** Include entry and snippet */\n includeEncryptedSnippets?: boolean;\n /** Include encryptedSamplesS3Key */\n includeEncryptedSamplesS3Key?: boolean;\n}\n/**\n * Pull unstructured subdatapoint information\n *\n * @param client - Client to use for the request\n * @param options - Options\n * @param options.dataSiloIds - IDs of data silos to filter down\n * @param options.status - Parent categories to filter down for\n * @param options.subCategories - Sub categories to filter down for\n * @param options.includeEncryptedSnippets - Include entry and snippet\n * @param options.includeEncryptedSamplesS3Key - Include encryptedSamplesS3Key\n * @param options.pageSize - Page size to pull in\n * @returns A promise that resolves to an array of unstructured subdatapoint recommendations\n */\nexport async function pullUnstructuredSubDataPointRecommendations(\n client: GraphQLClient,\n {\n dataSiloIds = [],\n status,\n subCategories = [],\n includeEncryptedSnippets,\n pageSize = 100,\n }: EntryFilterOptions & {\n /** Page size to pull in */\n pageSize?: number;\n } = {},\n): Promise<UnstructuredSubDataPointRecommendationCsvPreview[]> {\n const unstructuredSubDataPointRecommendations: UnstructuredSubDataPointRecommendationCsvPreview[] =\n [];\n\n // Time duration\n const t0 = new Date().getTime();\n\n // create a new progress bar instance and use shades_classic theme\n const progressBar = new cliProgress.SingleBar(\n {},\n cliProgress.Presets.shades_classic,\n );\n\n // Filters\n const filterBy = {\n ...(subCategories.length > 0 ? { subCategoryIds: subCategories } : {}),\n ...(status ? { status } : {}),\n ...(dataSiloIds.length > 0 ? { dataSilos: dataSiloIds } : {}),\n };\n\n // Build a GraphQL client\n const {\n unstructuredSubDataPointRecommendations: { totalCount },\n } = await makeGraphQLRequest<{\n /** Query response */\n unstructuredSubDataPointRecommendations: {\n /** Count */\n totalCount: number;\n };\n }>(client, ENTRY_COUNT, {\n filterBy,\n });\n\n logger.info(colors.magenta('[Step 1/3] Pulling in all subdatapoints'));\n\n progressBar.start(totalCount, 0);\n let total = 0;\n let shouldContinue = false;\n let cursor: string | undefined;\n let offset = 0;\n do {\n try {\n const {\n unstructuredSubDataPointRecommendations: { nodes },\n } = await makeGraphQLRequest<{\n /** Query response */\n unstructuredSubDataPointRecommendations: {\n /** List of matches */\n nodes: UnstructuredSubDataPointRecommendationCsvPreview[];\n };\n }>(\n client,\n gql`\n query TranscendCliUnstructuredSubDataPointRecommendationCsvExport(\n $filterBy: UnstructuredSubDataPointRecommendationsFilterInput\n $first: Int!\n $offset: Int!\n ) {\n unstructuredSubDataPointRecommendations(\n filterBy: $filterBy\n first: $first\n offset: $offset\n useMaster: false\n ) {\n nodes {\n id\n dataSiloId\n scannedObjectPathId\n scannedObjectId\n ${includeEncryptedSnippets ? 'name' : ''}\n ${includeEncryptedSnippets ? 'contextSnippet' : ''}\n dataSubCategory {\n name\n category\n }\n status\n confidence\n classificationMethod\n classifierVersion\n }\n }\n }\n `,\n {\n first: pageSize,\n offset,\n filterBy: {\n ...filterBy,\n },\n },\n );\n\n cursor = nodes[nodes.length - 1]?.id as string;\n unstructuredSubDataPointRecommendations.push(...nodes);\n shouldContinue = nodes.length === pageSize;\n total += nodes.length;\n offset += nodes.length;\n progressBar.update(total);\n } catch (err) {\n logger.error(\n colors.red(\n `An error fetching subdatapoints for cursor ${cursor} and offset ${offset}`,\n ),\n );\n throw err;\n }\n } while (shouldContinue);\n\n progressBar.stop();\n const t1 = new Date().getTime();\n const totalTime = t1 - t0;\n\n const sorted = sortBy(unstructuredSubDataPointRecommendations, 'name');\n\n logger.info(\n colors.green(\n `Successfully pulled in ${sorted.length} subdatapoints in ${\n totalTime / 1000\n } seconds!`,\n ),\n );\n return sorted;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }function Jo(e,t,r){var o=-1,a=e.length;t<0&&(t=-t>a?0:a+t),r=r>a?a:r,r<0&&(r+=a),a=t>r?0:r-t>>>0,t>>>=0;for(var n=Array(a);++o<a;)n[o]=e[o+t];return n}var ye=Jo;function Yo(e,t){return e===t||e!==e&&t!==t}var k=Yo;var Xo=typeof global=="object"&&global&&global.Object===Object&&global,_e=Xo;var Qo=typeof self=="object"&&self&&self.Object===Object&&self,ea=_e||Qo||Function("return this")(),g=ea;var ta=g.Symbol,h=ta;var et=Object.prototype,ra=et.hasOwnProperty,oa=et.toString,de=h?h.toStringTag:void 0;function aa(e){var t=ra.call(e,de),r=e[de];try{e[de]=void 0;var o=!0}catch (e2){}var a=oa.call(e);return o&&(t?e[de]=r:delete e[de]),a}var tt=aa;var na=Object.prototype,fa=na.toString;function sa(e){return fa.call(e)}var rt=sa;var ia="[object Null]",pa="[object Undefined]",ot=h?h.toStringTag:void 0;function ua(e){return e==null?e===void 0?pa:ia:ot&&ot in Object(e)?tt(e):rt(e)}var v=ua;function ma(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var S=ma;var da="[object AsyncFunction]",la="[object Function]",ca="[object GeneratorFunction]",xa="[object Proxy]";function ga(e){if(!S(e))return!1;var t=v(e);return t==la||t==ca||t==da||t==xa}var Ae=ga;var ha=9007199254740991;function ba(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=ha}var z=ba;function ya(e){return e!=null&&z(e.length)&&!Ae(e)}var T=ya;var _a=9007199254740991,Aa=/^(?:0|[1-9]\d*)$/;function va(e,t){var r=typeof e;return t=_nullishCoalesce(t, () => (_a)),!!t&&(r=="number"||r!="symbol"&&Aa.test(e))&&e>-1&&e%1==0&&e<t}var K=va;function Sa(e,t,r){if(!S(r))return!1;var o=typeof t;return(o=="number"?T(r)&&K(t,r.length):o=="string"&&t in r)?k(r[t],e):!1}var le=Sa;var wa=/\s/;function Ta(e){for(var t=e.length;t--&&wa.test(e.charAt(t)););return t}var at=Ta;var Oa=/^\s+/;function Pa(e){return e&&e.slice(0,at(e)+1).replace(Oa,"")}var nt=Pa;function Ca(e){return e!=null&&typeof e=="object"}var y=Ca;var Ia="[object Symbol]";function Ma(e){return typeof e=="symbol"||y(e)&&v(e)==Ia}var w=Ma;var ft=NaN,Ea=/^[-+]0x[0-9a-f]+$/i,ja=/^0b[01]+$/i,Ra=/^0o[0-7]+$/i,Da=parseInt;function La(e){if(typeof e=="number")return e;if(w(e))return ft;if(S(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=S(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=nt(e);var r=ja.test(e);return r||Ra.test(e)?Da(e.slice(2),r?2:8):Ea.test(e)?ft:+e}var st=La;var it=1/0,Na=17976931348623157e292;function Fa(e){if(!e)return e===0?e:0;if(e=st(e),e===it||e===-it){var t=e<0?-1:1;return t*Na}return e===e?e:0}var pt=Fa;function Ua(e){var t=pt(e),r=t%1;return t===t?r?t-r:t:0}var ut=Ua;var Ba=Math.ceil,qa=Math.max;function Ga(e,t,r){(r?le(e,t,r):t===void 0)?t=1:t=qa(ut(t),0);var o=e==null?0:e.length;if(!o||t<1)return[];for(var a=0,n=0,f=Array(Ba(o/t));a<o;)f[n++]=ye(e,a,a+=t);return f}var Wa=Ga;var Va=g["__core-js_shared__"],ve=Va;var mt=function(){var e=/[^.]+$/.exec(ve&&ve.keys&&ve.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ha(e){return!!mt&&mt in e}var dt=Ha;var ka=Function.prototype,za=ka.toString;function Ka(e){if(e!=null){try{return za.call(e)}catch (e3){}try{return e+""}catch (e4){}}return""}var P=Ka;var Za=/[\\^$.*+?()[\]{}|]/g,$a=/^\[object .+?Constructor\]$/,Ja=Function.prototype,Ya=Object.prototype,Xa=Ja.toString,Qa=Ya.hasOwnProperty,en=RegExp("^"+Xa.call(Qa).replace(Za,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function tn(e){if(!S(e)||dt(e))return!1;var t=Ae(e)?en:$a;return t.test(P(e))}var lt=tn;function rn(e,t){return _optionalChain([e, 'optionalAccess', _2 => _2[t]])}var ct=rn;function on(e,t){var r=ct(e,t);return lt(r)?r:void 0}var b=on;var an=b(Object,"create"),C=an;function nn(){this.__data__=C?C(null):{},this.size=0}var xt=nn;function fn(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var gt=fn;var sn="__lodash_hash_undefined__",pn=Object.prototype,un=pn.hasOwnProperty;function mn(e){var t=this.__data__;if(C){var r=t[e];return r===sn?void 0:r}return un.call(t,e)?t[e]:void 0}var ht=mn;var dn=Object.prototype,ln=dn.hasOwnProperty;function cn(e){var t=this.__data__;return C?t[e]!==void 0:ln.call(t,e)}var bt=cn;var xn="__lodash_hash_undefined__";function gn(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=C&&t===void 0?xn:t,this}var yt=gn;function Z(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1])}}Z.prototype.clear=xt;Z.prototype.delete=gt;Z.prototype.get=ht;Z.prototype.has=bt;Z.prototype.set=yt;var Ge=Z;function hn(){this.__data__=[],this.size=0}var _t=hn;function bn(e,t){for(var r=e.length;r--;)if(k(e[r][0],t))return r;return-1}var M=bn;var yn=Array.prototype,_n=yn.splice;function An(e){var t=this.__data__,r=M(t,e);if(r<0)return!1;var o=t.length-1;return r==o?t.pop():_n.call(t,r,1),--this.size,!0}var At=An;function vn(e){var t=this.__data__,r=M(t,e);return r<0?void 0:t[r][1]}var vt=vn;function Sn(e){return M(this.__data__,e)>-1}var St=Sn;function wn(e,t){var r=this.__data__,o=M(r,e);return o<0?(++this.size,r.push([e,t])):r[o][1]=t,this}var wt=wn;function $(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1])}}$.prototype.clear=_t;$.prototype.delete=At;$.prototype.get=vt;$.prototype.has=St;$.prototype.set=wt;var E=$;var Tn=b(g,"Map"),j=Tn;function On(){this.size=0,this.__data__={hash:new Ge,map:new(j||E),string:new Ge}}var Tt=On;function Pn(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Ot=Pn;function Cn(e,t){var r=e.__data__;return Ot(t)?r[typeof t=="string"?"string":"hash"]:r.map}var R=Cn;function In(e){var t=R(this,e).delete(e);return this.size-=t?1:0,t}var Pt=In;function Mn(e){return R(this,e).get(e)}var Ct=Mn;function En(e){return R(this,e).has(e)}var It=En;function jn(e,t){var r=R(this,e),o=r.size;return r.set(e,t),this.size+=r.size==o?0:1,this}var Mt=jn;function J(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1])}}J.prototype.clear=Tt;J.prototype.delete=Pt;J.prototype.get=Ct;J.prototype.has=It;J.prototype.set=Mt;var V=J;var Rn="__lodash_hash_undefined__";function Dn(e){return this.__data__.set(e,Rn),this}var Et=Dn;function Ln(e){return this.__data__.has(e)}var jt=Ln;function Se(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new V;++t<r;)this.add(e[t])}Se.prototype.add=Se.prototype.push=Et;Se.prototype.has=jt;var Y=Se;function Nn(e,t,r,o){for(var a=e.length,n=r+(o?1:-1);o?n--:++n<a;)if(t(e[n],n,e))return n;return-1}var Rt=Nn;function Fn(e){return e!==e}var Dt=Fn;function Un(e,t,r){for(var o=r-1,a=e.length;++o<a;)if(e[o]===t)return o;return-1}var Lt=Un;function Bn(e,t,r){return t===t?Lt(e,t,r):Rt(e,Dt,r)}var Nt=Bn;function qn(e,t){var r=e==null?0:e.length;return!!r&&Nt(e,t,0)>-1}var we=qn;function Gn(e,t,r){for(var o=-1,a=e==null?0:e.length;++o<a;)if(r(t,e[o]))return!0;return!1}var Te=Gn;function Wn(e,t){for(var r=-1,o=e==null?0:e.length,a=Array(o);++r<o;)a[r]=t(e[r],r,e);return a}var D=Wn;function Vn(e){return function(t){return e(t)}}var X=Vn;function Hn(e,t){return e.has(t)}var Q=Hn;var kn=200;function zn(e,t,r,o){var a=-1,n=we,f=!0,i=e.length,p=[],u=t.length;if(!i)return p;r&&(t=D(t,X(r))),o?(n=Te,f=!1):t.length>=kn&&(n=Q,f=!1,t=new Y(t));e:for(;++a<i;){var m=e[a],d=r==null?m:r(m);if(m=o||m!==0?m:0,f&&d===d){for(var l=u;l--;)if(t[l]===d)continue e;p.push(m)}else n(t,d,o)||p.push(m)}return p}var Ft=zn;function Kn(e,t){for(var r=-1,o=t.length,a=e.length;++r<o;)e[a+r]=t[r];return e}var Oe=Kn;var Zn="[object Arguments]";function $n(e){return y(e)&&v(e)==Zn}var We=$n;var Ut=Object.prototype,Jn=Ut.hasOwnProperty,Yn=Ut.propertyIsEnumerable,Xn=We(function(){return arguments}())?We:function(e){return y(e)&&Jn.call(e,"callee")&&!Yn.call(e,"callee")},ee=Xn;var Qn=Array.isArray,x=Qn;var Bt=h?h.isConcatSpreadable:void 0;function ef(e){return x(e)||ee(e)||!!(Bt&&e&&e[Bt])}var qt=ef;function Gt(e,t,r,o,a){var n=-1,f=e.length;for(r||(r=qt),a||(a=[]);++n<f;){var i=e[n];t>0&&r(i)?t>1?Gt(i,t-1,r,o,a):Oe(a,i):o||(a[a.length]=i)}return a}var L=Gt;function tf(e){return e}var N=tf;function rf(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}var Wt=rf;var Vt=Math.max;function of(e,t,r){return t=Vt(t===void 0?e.length-1:t,0),function(){for(var o=arguments,a=-1,n=Vt(o.length-t,0),f=Array(n);++a<n;)f[a]=o[t+a];a=-1;for(var i=Array(t+1);++a<t;)i[a]=o[a];return i[t]=r(f),Wt(e,this,i)}}var Ht=of;function af(e){return function(){return e}}var kt=af;var nf=function(){try{var e=b(Object,"defineProperty");return e({},"",{}),e}catch (e5){}}(),te=nf;var ff=te?function(e,t){return te(e,"toString",{configurable:!0,enumerable:!1,value:kt(t),writable:!0})}:N,zt=ff;var sf=800,pf=16,uf=Date.now;function mf(e){var t=0,r=0;return function(){var o=uf(),a=pf-(o-r);if(r=o,a>0){if(++t>=sf)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var Kt=mf;var df=Kt(zt),Zt=df;function lf(e,t){return Zt(Ht(e,t,N),e+"")}var re=lf;function cf(e){return y(e)&&T(e)}var ce=cf;var xf=re(function(e,t){return ce(e)?Ft(e,L(t,1,ce,!0)):[]}),gf= exports.c =xf;function hf(e,t,r){t=="__proto__"&&te?te(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var oe=hf;function bf(e,t,r,o){for(var a=-1,n=e==null?0:e.length;++a<n;){var f=e[a];t(o,f,r(f),e)}return o}var $t=bf;function yf(e){return function(t,r,o){for(var a=-1,n=Object(t),f=o(t),i=f.length;i--;){var p=f[e?i:++a];if(r(n[p],p,n)===!1)break}return t}}var Jt=yf;var _f=Jt(),Yt=_f;function Af(e,t){for(var r=-1,o=Array(e);++r<e;)o[r]=t(r);return o}var Xt=Af;function vf(){return!1}var Qt=vf;var rr=typeof exports=="object"&&exports&&!exports.nodeType&&exports,er=rr&&typeof module=="object"&&module&&!module.nodeType&&module,Sf=er&&er.exports===rr,tr=Sf?g.Buffer:void 0,wf=tr?tr.isBuffer:void 0,Tf=wf||Qt,xe=Tf;var Of="[object Arguments]",Pf="[object Array]",Cf="[object Boolean]",If="[object Date]",Mf="[object Error]",Ef="[object Function]",jf="[object Map]",Rf="[object Number]",Df="[object Object]",Lf="[object RegExp]",Nf="[object Set]",Ff="[object String]",Uf="[object WeakMap]",Bf="[object ArrayBuffer]",qf="[object DataView]",Gf="[object Float32Array]",Wf="[object Float64Array]",Vf="[object Int8Array]",Hf="[object Int16Array]",kf="[object Int32Array]",zf="[object Uint8Array]",Kf="[object Uint8ClampedArray]",Zf="[object Uint16Array]",$f="[object Uint32Array]",c={};c[Gf]=c[Wf]=c[Vf]=c[Hf]=c[kf]=c[zf]=c[Kf]=c[Zf]=c[$f]=!0;c[Of]=c[Pf]=c[Bf]=c[Cf]=c[qf]=c[If]=c[Mf]=c[Ef]=c[jf]=c[Rf]=c[Df]=c[Lf]=c[Nf]=c[Ff]=c[Uf]=!1;function Jf(e){return y(e)&&z(e.length)&&!!c[v(e)]}var or=Jf;var ar=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ge=ar&&typeof module=="object"&&module&&!module.nodeType&&module,Yf=ge&&ge.exports===ar,Ve=Yf&&_e.process,Xf=function(){try{var e=ge&&ge.require&&ge.require("util").types;return e||Ve&&Ve.binding&&Ve.binding("util")}catch (e6){}}(),He=Xf;var nr=He&&He.isTypedArray,Qf=nr?X(nr):or,Pe=Qf;var es=Object.prototype,ts=es.hasOwnProperty;function rs(e,t){var r=x(e),o=!r&&ee(e),a=!r&&!o&&xe(e),n=!r&&!o&&!a&&Pe(e),f=r||o||a||n,i=f?Xt(e.length,String):[],p=i.length;for(var u in e)(t||ts.call(e,u))&&!(f&&(u=="length"||a&&(u=="offset"||u=="parent")||n&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||K(u,p)))&&i.push(u);return i}var fr=rs;var os=Object.prototype;function as(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||os;return e===r}var sr=as;function ns(e,t){return function(r){return e(t(r))}}var ir=ns;var fs=ir(Object.keys,Object),pr=fs;var ss=Object.prototype,is=ss.hasOwnProperty;function ps(e){if(!sr(e))return pr(e);var t=[];for(var r in Object(e))is.call(e,r)&&r!="constructor"&&t.push(r);return t}var ur=ps;function us(e){return T(e)?fr(e):ur(e)}var ae=us;function ms(e,t){return e&&Yt(e,t,ae)}var Ce=ms;function ds(e,t){return function(r,o){if(r==null)return r;if(!T(r))return e(r,o);for(var a=r.length,n=t?a:-1,f=Object(r);(t?n--:++n<a)&&o(f[n],n,f)!==!1;);return r}}var mr=ds;var ls=mr(Ce),Ie=ls;function cs(e,t,r,o){return Ie(e,function(a,n,f){t(o,a,r(a),f)}),o}var dr=cs;function xs(){this.__data__=new E,this.size=0}var lr=xs;function gs(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var cr=gs;function hs(e){return this.__data__.get(e)}var xr=hs;function bs(e){return this.__data__.has(e)}var gr=bs;var ys=200;function _s(e,t){var r=this.__data__;if(r instanceof E){var o=r.__data__;if(!j||o.length<ys-1)return o.push([e,t]),this.size=++r.size,this;r=this.__data__=new V(o)}return r.set(e,t),this.size=r.size,this}var hr=_s;function ne(e){var t=this.__data__=new E(e);this.size=t.size}ne.prototype.clear=lr;ne.prototype.delete=cr;ne.prototype.get=xr;ne.prototype.has=gr;ne.prototype.set=hr;var fe=ne;function As(e,t){for(var r=-1,o=e==null?0:e.length;++r<o;)if(t(e[r],r,e))return!0;return!1}var br=As;var vs=1,Ss=2;function ws(e,t,r,o,a,n){var f=r&vs,i=e.length,p=t.length;if(i!=p&&!(f&&p>i))return!1;var u=n.get(e),m=n.get(t);if(u&&m)return u==t&&m==e;var d=-1,l=!0,O=r&Ss?new Y:void 0;for(n.set(e,t),n.set(t,e);++d<i;){var _=e[d],A=t[d];if(o)var I=f?o(A,_,d,t,e,n):o(_,A,d,e,t,n);if(I!==void 0){if(I)continue;l=!1;break}if(O){if(!br(t,function(G,W){if(!Q(O,W)&&(_===G||a(_,G,r,o,n)))return O.push(W)})){l=!1;break}}else if(!(_===A||a(_,A,r,o,n))){l=!1;break}}return n.delete(e),n.delete(t),l}var Me=ws;var Ts=g.Uint8Array,ke=Ts;function Os(e){var t=-1,r=Array(e.size);return e.forEach(function(o,a){r[++t]=[a,o]}),r}var yr=Os;function Ps(e){var t=-1,r=Array(e.size);return e.forEach(function(o){r[++t]=o}),r}var se=Ps;var Cs=1,Is=2,Ms="[object Boolean]",Es="[object Date]",js="[object Error]",Rs="[object Map]",Ds="[object Number]",Ls="[object RegExp]",Ns="[object Set]",Fs="[object String]",Us="[object Symbol]",Bs="[object ArrayBuffer]",qs="[object DataView]",_r=h?h.prototype:void 0,ze=_r?_r.valueOf:void 0;function Gs(e,t,r,o,a,n,f){switch(r){case qs:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Bs:return!(e.byteLength!=t.byteLength||!n(new ke(e),new ke(t)));case Ms:case Es:case Ds:return k(+e,+t);case js:return e.name==t.name&&e.message==t.message;case Ls:case Fs:return e==t+"";case Rs:var i=yr;case Ns:var p=o&Cs;if(i||(i=se),e.size!=t.size&&!p)return!1;var u=f.get(e);if(u)return u==t;o|=Is,f.set(e,t);var m=Me(i(e),i(t),o,a,n,f);return f.delete(e),m;case Us:if(ze)return ze.call(e)==ze.call(t)}return!1}var Ar=Gs;function Ws(e,t,r){var o=t(e);return x(e)?o:Oe(o,r(e))}var vr=Ws;function Vs(e,t){for(var r=-1,o=e==null?0:e.length,a=0,n=[];++r<o;){var f=e[r];t(f,r,e)&&(n[a++]=f)}return n}var Sr=Vs;function Hs(){return[]}var wr=Hs;var ks=Object.prototype,zs=ks.propertyIsEnumerable,Tr=Object.getOwnPropertySymbols,Ks=Tr?function(e){return e==null?[]:(e=Object(e),Sr(Tr(e),function(t){return zs.call(e,t)}))}:wr,Or=Ks;function Zs(e){return vr(e,ae,Or)}var Ke=Zs;var $s=1,Js=Object.prototype,Ys=Js.hasOwnProperty;function Xs(e,t,r,o,a,n){var f=r&$s,i=Ke(e),p=i.length,u=Ke(t),m=u.length;if(p!=m&&!f)return!1;for(var d=p;d--;){var l=i[d];if(!(f?l in t:Ys.call(t,l)))return!1}var O=n.get(e),_=n.get(t);if(O&&_)return O==t&&_==e;var A=!0;n.set(e,t),n.set(t,e);for(var I=f;++d<p;){l=i[d];var G=e[l],W=t[l];if(o)var Qe=f?o(W,G,l,t,e,n):o(G,W,l,e,t,n);if(!(Qe===void 0?G===W||a(G,W,r,o,n):Qe)){A=!1;break}I||(I=l=="constructor")}if(A&&!I){var he=e.constructor,be=t.constructor;he!=be&&"constructor"in e&&"constructor"in t&&!(typeof he=="function"&&he instanceof he&&typeof be=="function"&&be instanceof be)&&(A=!1)}return n.delete(e),n.delete(t),A}var Pr=Xs;var Qs=b(g,"DataView"),Ee=Qs;var ei=b(g,"Promise"),je=ei;var ti=b(g,"Set"),F=ti;var ri=b(g,"WeakMap"),Re=ri;var Cr="[object Map]",oi="[object Object]",Ir="[object Promise]",Mr="[object Set]",Er="[object WeakMap]",jr="[object DataView]",ai=P(Ee),ni=P(j),fi=P(je),si=P(F),ii=P(Re),H=v;(Ee&&H(new Ee(new ArrayBuffer(1)))!=jr||j&&H(new j)!=Cr||je&&H(je.resolve())!=Ir||F&&H(new F)!=Mr||Re&&H(new Re)!=Er)&&(H=function(e){var t=v(e),r=t==oi?e.constructor:void 0,o=r?P(r):"";if(o)switch(o){case ai:return jr;case ni:return Cr;case fi:return Ir;case si:return Mr;case ii:return Er}return t});var Ze=H;var pi=1,Rr="[object Arguments]",Dr="[object Array]",De="[object Object]",ui=Object.prototype,Lr=ui.hasOwnProperty;function mi(e,t,r,o,a,n){var f=x(e),i=x(t),p=f?Dr:Ze(e),u=i?Dr:Ze(t);p=p==Rr?De:p,u=u==Rr?De:u;var m=p==De,d=u==De,l=p==u;if(l&&xe(e)){if(!xe(t))return!1;f=!0,m=!1}if(l&&!m)return n||(n=new fe),f||Pe(e)?Me(e,t,r,o,a,n):Ar(e,t,p,r,o,a,n);if(!(r&pi)){var O=m&&Lr.call(e,"__wrapped__"),_=d&&Lr.call(t,"__wrapped__");if(O||_){var A=O?e.value():e,I=_?t.value():t;return n||(n=new fe),a(A,I,r,o,n)}}return l?(n||(n=new fe),Pr(e,t,r,o,a,n)):!1}var Nr=mi;function Fr(e,t,r,o,a){return e===t?!0:e==null||t==null||!y(e)&&!y(t)?e!==e&&t!==t:Nr(e,t,r,o,Fr,a)}var Le=Fr;var di=1,li=2;function ci(e,t,r,o){var a=r.length,n=a,f=!o;if(e==null)return!n;for(e=Object(e);a--;){var i=r[a];if(f&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++a<n;){i=r[a];var p=i[0],u=e[p],m=i[1];if(f&&i[2]){if(u===void 0&&!(p in e))return!1}else{var d=new fe;if(o)var l=o(u,m,p,e,t,d);if(!(l===void 0?Le(m,u,di|li,o,d):l))return!1}}return!0}var Ur=ci;function xi(e){return e===e&&!S(e)}var Ne=xi;function gi(e){for(var t=ae(e),r=t.length;r--;){var o=t[r],a=e[o];t[r]=[o,a,Ne(a)]}return t}var Br=gi;function hi(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}var Fe=hi;function bi(e){var t=Br(e);return t.length==1&&t[0][2]?Fe(t[0][0],t[0][1]):function(r){return r===e||Ur(r,e,t)}}var qr=bi;var yi=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,_i=/^\w*$/;function Ai(e,t){if(x(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||w(e)?!0:_i.test(e)||!yi.test(e)||t!=null&&e in Object(t)}var ie=Ai;var vi="Expected a function";function $e(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(vi);var r=function(){var o=arguments,a=t?t.apply(this,o):o[0],n=r.cache;if(n.has(a))return n.get(a);var f=e.apply(this,o);return r.cache=n.set(a,f)||n,f};return r.cache=new($e.Cache||V),r}$e.Cache=V;var Gr=$e;var Si=500;function wi(e){var t=Gr(e,function(o){return r.size===Si&&r.clear(),o}),r=t.cache;return t}var Wr=wi;var Ti=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Oi=/\\(\\)?/g,Pi=Wr(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(Ti,function(r,o,a,n){t.push(a?n.replace(Oi,"$1"):o||r)}),t}),Vr=Pi;var Ci=1/0,Hr=h?h.prototype:void 0,kr=Hr?Hr.toString:void 0;function zr(e){if(typeof e=="string")return e;if(x(e))return D(e,zr)+"";if(w(e))return kr?kr.call(e):"";var t=e+"";return t=="0"&&1/e==-Ci?"-0":t}var Kr=zr;function Ii(e){return e==null?"":Kr(e)}var U=Ii;function Mi(e,t){return x(e)?e:ie(e,t)?[e]:Vr(U(e))}var Ue=Mi;var Ei=1/0;function ji(e){if(typeof e=="string"||w(e))return e;var t=e+"";return t=="0"&&1/e==-Ei?"-0":t}var B=ji;function Ri(e,t){t=Ue(t,e);for(var r=0,o=t.length;e!=null&&r<o;)e=e[B(t[r++])];return r&&r==o?e:void 0}var pe=Ri;function Di(e,t,r){var o=e==null?void 0:pe(e,t);return o===void 0?r:o}var Zr=Di;function Li(e,t){return e!=null&&t in Object(e)}var $r=Li;function Ni(e,t,r){t=Ue(t,e);for(var o=-1,a=t.length,n=!1;++o<a;){var f=B(t[o]);if(!(n=e!=null&&r(e,f)))break;e=e[f]}return n||++o!=a?n:(a=e==null?0:e.length,!!a&&z(a)&&K(f,a)&&(x(e)||ee(e)))}var Jr=Ni;function Fi(e,t){return e!=null&&Jr(e,t,$r)}var Yr=Fi;var Ui=1,Bi=2;function qi(e,t){return ie(e)&&Ne(t)?Fe(B(e),t):function(r){var o=Zr(r,e);return o===void 0&&o===t?Yr(r,e):Le(t,o,Ui|Bi)}}var Xr=qi;function Gi(e){return function(t){return _optionalChain([t, 'optionalAccess', _3 => _3[e]])}}var Qr=Gi;function Wi(e){return function(t){return pe(t,e)}}var eo=Wi;function Vi(e){return ie(e)?Qr(B(e)):eo(e)}var to=Vi;function Hi(e){return typeof e=="function"?e:e==null?N:typeof e=="object"?x(e)?Xr(e[0],e[1]):qr(e):to(e)}var q=Hi;function ki(e,t){return function(r,o){var a=x(r)?$t:dr,n=t?t():{};return a(r,e,q(o,2),n)}}var Be=ki;var zi=Object.prototype,Ki=zi.hasOwnProperty,Zi=Be(function(e,t,r){Ki.call(e,r)?e[r].push(t):oe(e,r,[t])}),$i= exports.d =Zi;function Ji(){}var ro=Ji;var Yi=1/0,Xi=F&&1/se(new F([,-0]))[1]==Yi?function(e){return new F(e)}:ro,oo=Xi;var Qi=200;function ep(e,t,r){var o=-1,a=we,n=e.length,f=!0,i=[],p=i;if(r)f=!1,a=Te;else if(n>=Qi){var u=t?null:oo(e);if(u)return se(u);f=!1,a=Q,p=new Y}else p=t?[]:i;e:for(;++o<n;){var m=e[o],d=t?t(m):m;if(m=r||m!==0?m:0,f&&d===d){for(var l=p.length;l--;)if(p[l]===d)continue e;t&&p.push(d),i.push(m)}else a(p,d,r)||(p!==i&&p.push(d),i.push(m))}return i}var ue=ep;function tp(e){return e&&e.length?ue(e):[]}var rp=tp;function op(e){var t=e==null?0:e.length;return t?L(e,1):[]}var ap=op;function np(e,t,r){var o=e.length;return r=r===void 0?o:r,!t&&r>=o?e:ye(e,t,r)}var ao=np;var fp="\\ud800-\\udfff",sp="\\u0300-\\u036f",ip="\\ufe20-\\ufe2f",pp="\\u20d0-\\u20ff",up=sp+ip+pp,mp="\\ufe0e\\ufe0f",dp="\\u200d",lp=RegExp("["+dp+fp+up+mp+"]");function cp(e){return lp.test(e)}var qe=cp;function xp(e){return e.split("")}var no=xp;var fo="\\ud800-\\udfff",gp="\\u0300-\\u036f",hp="\\ufe20-\\ufe2f",bp="\\u20d0-\\u20ff",yp=gp+hp+bp,_p="\\ufe0e\\ufe0f",Ap="["+fo+"]",Je="["+yp+"]",Ye="\\ud83c[\\udffb-\\udfff]",vp="(?:"+Je+"|"+Ye+")",so="[^"+fo+"]",io="(?:\\ud83c[\\udde6-\\uddff]){2}",po="[\\ud800-\\udbff][\\udc00-\\udfff]",Sp="\\u200d",uo=vp+"?",mo="["+_p+"]?",wp="(?:"+Sp+"(?:"+[so,io,po].join("|")+")"+mo+uo+")*",Tp=mo+uo+wp,Op="(?:"+[so+Je+"?",Je,io,po,Ap].join("|")+")",Pp=RegExp(Ye+"(?="+Ye+")|"+Op+Tp,"g");function Cp(e){return e.match(Pp)||[]}var lo=Cp;function Ip(e){return qe(e)?lo(e):no(e)}var co=Ip;function Mp(e){return function(t){t=U(t);var r=qe(t)?co(t):void 0,o=r?r[0]:t.charAt(0),a=r?ao(r,1).join(""):t.slice(1);return o[e]()+a}}var xo=Mp;var Ep=xo("toUpperCase"),go=Ep;function jp(e,t,r,o){var a=-1,n=e==null?0:e.length;for(o&&n&&(r=e[++a]);++a<n;)r=t(r,e[a],a,e);return r}var ho=jp;function Rp(e){return function(t){return _optionalChain([e, 'optionalAccess', _4 => _4[t]])}}var bo=Rp;var Dp={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},Lp=bo(Dp),yo=Lp;var Np=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Fp="\\u0300-\\u036f",Up="\\ufe20-\\ufe2f",Bp="\\u20d0-\\u20ff",qp=Fp+Up+Bp,Gp="["+qp+"]",Wp=RegExp(Gp,"g");function Vp(e){return e=U(e),e&&e.replace(Np,yo).replace(Wp,"")}var _o=Vp;var Hp=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function kp(e){return e.match(Hp)||[]}var Ao=kp;var zp=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function Kp(e){return zp.test(e)}var vo=Kp;var Po="\\ud800-\\udfff",Zp="\\u0300-\\u036f",$p="\\ufe20-\\ufe2f",Jp="\\u20d0-\\u20ff",Yp=Zp+$p+Jp,Co="\\u2700-\\u27bf",Io="a-z\\xdf-\\xf6\\xf8-\\xff",Xp="\\xac\\xb1\\xd7\\xf7",Qp="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",eu="\\u2000-\\u206f",tu=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Mo="A-Z\\xc0-\\xd6\\xd8-\\xde",ru="\\ufe0e\\ufe0f",Eo=Xp+Qp+eu+tu,jo="['\u2019]",So="["+Eo+"]",ou="["+Yp+"]",Ro="\\d+",au="["+Co+"]",Do="["+Io+"]",Lo="[^"+Po+Eo+Ro+Co+Io+Mo+"]",nu="\\ud83c[\\udffb-\\udfff]",fu="(?:"+ou+"|"+nu+")",su="[^"+Po+"]",No="(?:\\ud83c[\\udde6-\\uddff]){2}",Fo="[\\ud800-\\udbff][\\udc00-\\udfff]",me="["+Mo+"]",iu="\\u200d",wo="(?:"+Do+"|"+Lo+")",pu="(?:"+me+"|"+Lo+")",To="(?:"+jo+"(?:d|ll|m|re|s|t|ve))?",Oo="(?:"+jo+"(?:D|LL|M|RE|S|T|VE))?",Uo=fu+"?",Bo="["+ru+"]?",uu="(?:"+iu+"(?:"+[su,No,Fo].join("|")+")"+Bo+Uo+")*",mu="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",du="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",lu=Bo+Uo+uu,cu="(?:"+[au,No,Fo].join("|")+")"+lu,xu=RegExp([me+"?"+Do+"+"+To+"(?="+[So,me,"$"].join("|")+")",pu+"+"+Oo+"(?="+[So,me+wo,"$"].join("|")+")",me+"?"+wo+"+"+To,me+"+"+Oo,du,mu,Ro,cu].join("|"),"g");function gu(e){return e.match(xu)||[]}var qo=gu;function hu(e,t,r){return e=U(e),t=r?void 0:t,t===void 0?vo(e)?qo(e):Ao(e):e.match(t)||[]}var Go=hu;var bu="['\u2019]",yu=RegExp(bu,"g");function _u(e){return function(t){return ho(Go(_o(t).replace(yu,"")),e,"")}}var Wo=_u;function Au(e,t){var r=-1,o=T(e)?Array(e.length):[];return Ie(e,function(a,n,f){o[++r]=t(a,n,f)}),o}var Vo=Au;var vu=Be(function(e,t,r){oe(e,r,t)}),Xe= exports.e =vu;function Su(e,t){var r={};return t=q(t,3),Ce(e,function(o,a,n){oe(r,a,t(o,a,n))}),r}var wu=Su;function Tu(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}var Ho=Tu;function Ou(e,t){if(e!==t){var r=e!==void 0,o=e===null,a=e===e,n=w(e),f=t!==void 0,i=t===null,p=t===t,u=w(t);if(!i&&!u&&!n&&e>t||n&&f&&p&&!i&&!u||o&&f&&p||!r&&p||!a)return 1;if(!o&&!n&&!u&&e<t||u&&r&&a&&!o&&!n||i&&r&&a||!f&&a||!p)return-1}return 0}var ko=Ou;function Pu(e,t,r){for(var o=-1,a=e.criteria,n=t.criteria,f=a.length,i=r.length;++o<f;){var p=ko(a[o],n[o]);if(p){if(o>=i)return p;var u=r[o];return p*(u=="desc"?-1:1)}}return e.index-t.index}var zo=Pu;function Cu(e,t,r){t.length?t=D(t,function(n){return x(n)?function(f){return pe(f,n.length===1?n[0]:n)}:n}):t=[N];var o=-1;t=D(t,X(q));var a=Vo(e,function(n,f,i){var p=D(t,function(u){return u(n)});return{criteria:p,index:++o,value:n}});return Ho(a,function(n,f){return zo(n,f,r)})}var Ko=Cu;var Iu=re(function(e,t){if(e==null)return[];var r=t.length;return r>1&&le(e,t[0],t[1])?t=[]:r>2&&le(t[0],t[1],t[2])&&(t=[t[0]]),Ko(e,L(t,1),[])}),Mu= exports.g =Iu;var Eu=Wo(function(e,t,r){return e+(r?" ":"")+go(t)}),ju= exports.h =Eu;var Ru=re(function(e){return ue(L(e,1,ce,!0))}),Du= exports.i =Ru;function Lu(e,t){return e&&e.length?ue(e,q(t,2)):[]}var Nu=Lu;var Fu="A command line interface for programmatic operations across Transcend.",Uu= exports.m ="8.30.0";var _privacytypes = require('@transcend-io/privacy-types');var fy="transcend",$o= exports.o ="https://app.transcend.io",sy= exports.p =`${$o}/infrastructure/integrations`,iy= exports.q =`${$o}/data-map/data-inventory/data-points`,py= exports.r =process.env.TRANSCEND_API_URL||"https://api.transcend.io",uy= exports.s =process.env.TRANSCEND_CONSENT_API_URL||"https://consent.transcend.io",my= exports.t ={apiKeys:[_privacytypes.ScopeName.ViewApiKeys],templates:[_privacytypes.ScopeName.ManageEmailTemplates],dataSilos:[_privacytypes.ScopeName.ManageDataMap,_privacytypes.ScopeName.ConnectDataSilos],enrichers:[_privacytypes.ScopeName.ManageRequestIdentities],businessEntities:[_privacytypes.ScopeName.ManageDataInventory],processingActivities:[_privacytypes.ScopeName.ManageDataMap],identifiers:[_privacytypes.ScopeName.ManageRequestIdentities],customFields:[_privacytypes.ScopeName.ManageGlobalAttributes],dataFlows:[_privacytypes.ScopeName.ManageDataFlow],cookies:[_privacytypes.ScopeName.ManageDataFlow],consentManager:[_privacytypes.ScopeName.ManageConsentManagerDeveloperSettings],partitions:[_privacytypes.ScopeName.ManageConsentManagerDeveloperSettings],actions:[_privacytypes.ScopeName.ManageDataSubjectRequestSettings],dataSubjects:[_privacytypes.ScopeName.ManageDataSubjectRequestSettings],prompts:[_privacytypes.ScopeName.ManagePrompts],promptPartials:[_privacytypes.ScopeName.ManagePrompts],promptGroups:[_privacytypes.ScopeName.ManagePrompts],agents:[_privacytypes.ScopeName.ManagePathfinder],agentFunctions:[_privacytypes.ScopeName.ManagePathfinder],agentFiles:[_privacytypes.ScopeName.ManagePathfinder],vendors:[_privacytypes.ScopeName.ManageDataInventory],dataCategories:[_privacytypes.ScopeName.ManageDataInventory],processingPurposes:[_privacytypes.ScopeName.ManageDataInventory],actionItems:[_privacytypes.ScopeName.ManageAllActionItems,_privacytypes.ScopeName.ViewGlobalAttributes],actionItemCollections:[_privacytypes.ScopeName.ManageActionItemCollections],teams:[_privacytypes.ScopeName.ManageAccessControl],messages:[_privacytypes.ScopeName.ManageIntlMessages],privacyCenters:[_privacytypes.ScopeName.ManagePrivacyCenter],policies:[_privacytypes.ScopeName.ManagePolicies],assessments:[_privacytypes.ScopeName.ManageAssessments],assessmentTemplates:[_privacytypes.ScopeName.ManageAssessments],purposes:[_privacytypes.ScopeName.ManageConsentManager,_privacytypes.ScopeName.ManagePreferenceStoreSettings],siloDiscoveryResults:[_privacytypes.ScopeName.ManageDataMap]},dy= exports.u ={apiKeys:[_privacytypes.ScopeName.ViewApiKeys],templates:[_privacytypes.ScopeName.ViewEmailTemplates],dataSilos:[_privacytypes.ScopeName.ViewDataMap,_privacytypes.ScopeName.ViewDataSubjectRequestSettings],enrichers:[_privacytypes.ScopeName.ViewRequestIdentitySettings],businessEntities:[_privacytypes.ScopeName.ViewDataInventory],processingActivities:[_privacytypes.ScopeName.ViewDataInventory],identifiers:[_privacytypes.ScopeName.ViewRequestIdentitySettings],customFields:[_privacytypes.ScopeName.ViewGlobalAttributes],dataFlows:[_privacytypes.ScopeName.ViewDataFlow],cookies:[_privacytypes.ScopeName.ViewDataFlow],consentManager:[_privacytypes.ScopeName.ViewConsentManager],partitions:[_privacytypes.ScopeName.ViewConsentManager],actions:[_privacytypes.ScopeName.ViewDataSubjectRequestSettings],dataSubjects:[_privacytypes.ScopeName.ViewDataSubjectRequestSettings],prompts:[_privacytypes.ScopeName.ViewPrompts],promptPartials:[_privacytypes.ScopeName.ViewPrompts],promptGroups:[_privacytypes.ScopeName.ViewPrompts],agents:[_privacytypes.ScopeName.ViewPathfinder],agentFunctions:[_privacytypes.ScopeName.ViewPathfinder],agentFiles:[_privacytypes.ScopeName.ViewPathfinder],vendors:[_privacytypes.ScopeName.ViewDataInventory],dataCategories:[_privacytypes.ScopeName.ViewDataInventory],processingPurposes:[_privacytypes.ScopeName.ViewDataInventory],actionItemCollections:[_privacytypes.ScopeName.ViewAllActionItems],actionItems:[_privacytypes.ScopeName.ViewAllActionItems],teams:[_privacytypes.ScopeName.ViewScopes],messages:[_privacytypes.ScopeName.ViewIntlMessages],privacyCenters:[_privacytypes.ScopeName.ViewPrivacyCenter],policies:[_privacytypes.ScopeName.ViewPolicies],assessments:[_privacytypes.ScopeName.ViewAssessments],assessmentTemplates:[_privacytypes.ScopeName.ViewAssessments],purposes:[_privacytypes.ScopeName.ViewConsentManager,_privacytypes.ScopeName.ViewPreferenceStoreSettings],siloDiscoveryResults:[_privacytypes.ScopeName.ViewDataMap]},ly= exports.v ={apiKeys:"api-keys",customFields:"attributes",dataFlows:"data-flows",cookies:"cookies",consentManager:"consent-manager",partitions:"partitions",actions:"actions",dataSubjects:"data-subjects",businessEntities:"business-entities",processingActivities:"processing-activities",identifiers:"identifiers",enrichers:"enrichers",dataSilos:"data-silos",templates:"templates",prompts:"prompts",promptPartials:"prompt-partials",promptGroups:"prompt-groups",agents:"agents",agentFunctions:"agent-functions",agentFiles:"agent-files",vendors:"vendors",dataCategories:"data-categories",processingPurposes:"processing-purposes",actionItems:"action-items",actionItemCollections:"action-item-collections",teams:"teams",messages:"messages",privacyCenters:"privacy-center",policies:"policies",assessments:"assessments",assessmentTemplates:"assessment-templates",purposes:"purposes",siloDiscoveryResults:"siloDiscoveryResults"},qu= exports.w =Xe(Object.entries(_privacytypes.TRANSCEND_SCOPES).map(([e,t])=>({...t,name:e})),"title"),cy= exports.x =Object.keys(qu),xy= exports.y =new Set([429,502,500,504,329]),gy= exports.z =process.env.DEBUG==="1";exports.a = ap; exports.b = Wa; exports.c = gf; exports.d = $i; exports.e = Xe; exports.f = wu; exports.g = Mu; exports.h = ju; exports.i = Du; exports.j = rp; exports.k = Nu; exports.l = Fu; exports.m = Uu; exports.n = fy; exports.o = $o; exports.p = sy; exports.q = iy; exports.r = py; exports.s = uy; exports.t = my; exports.u = dy; exports.v = ly; exports.w = qu; exports.x = cy; exports.y = xy; exports.z = gy;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }function Jo(e,t,r){var o=-1,a=e.length;t<0&&(t=-t>a?0:a+t),r=r>a?a:r,r<0&&(r+=a),a=t>r?0:r-t>>>0,t>>>=0;for(var n=Array(a);++o<a;)n[o]=e[o+t];return n}var ye=Jo;function Yo(e,t){return e===t||e!==e&&t!==t}var k=Yo;var Xo=typeof global=="object"&&global&&global.Object===Object&&global,_e=Xo;var Qo=typeof self=="object"&&self&&self.Object===Object&&self,ea=_e||Qo||Function("return this")(),g=ea;var ta=g.Symbol,h=ta;var et=Object.prototype,ra=et.hasOwnProperty,oa=et.toString,de=h?h.toStringTag:void 0;function aa(e){var t=ra.call(e,de),r=e[de];try{e[de]=void 0;var o=!0}catch (e2){}var a=oa.call(e);return o&&(t?e[de]=r:delete e[de]),a}var tt=aa;var na=Object.prototype,fa=na.toString;function sa(e){return fa.call(e)}var rt=sa;var ia="[object Null]",pa="[object Undefined]",ot=h?h.toStringTag:void 0;function ua(e){return e==null?e===void 0?pa:ia:ot&&ot in Object(e)?tt(e):rt(e)}var v=ua;function ma(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var S=ma;var da="[object AsyncFunction]",la="[object Function]",ca="[object GeneratorFunction]",xa="[object Proxy]";function ga(e){if(!S(e))return!1;var t=v(e);return t==la||t==ca||t==da||t==xa}var Ae=ga;var ha=9007199254740991;function ba(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=ha}var z=ba;function ya(e){return e!=null&&z(e.length)&&!Ae(e)}var T=ya;var _a=9007199254740991,Aa=/^(?:0|[1-9]\d*)$/;function va(e,t){var r=typeof e;return t=_nullishCoalesce(t, () => (_a)),!!t&&(r=="number"||r!="symbol"&&Aa.test(e))&&e>-1&&e%1==0&&e<t}var K=va;function Sa(e,t,r){if(!S(r))return!1;var o=typeof t;return(o=="number"?T(r)&&K(t,r.length):o=="string"&&t in r)?k(r[t],e):!1}var le=Sa;var wa=/\s/;function Ta(e){for(var t=e.length;t--&&wa.test(e.charAt(t)););return t}var at=Ta;var Oa=/^\s+/;function Pa(e){return e&&e.slice(0,at(e)+1).replace(Oa,"")}var nt=Pa;function Ca(e){return e!=null&&typeof e=="object"}var y=Ca;var Ia="[object Symbol]";function Ma(e){return typeof e=="symbol"||y(e)&&v(e)==Ia}var w=Ma;var ft=NaN,Ea=/^[-+]0x[0-9a-f]+$/i,ja=/^0b[01]+$/i,Ra=/^0o[0-7]+$/i,Da=parseInt;function La(e){if(typeof e=="number")return e;if(w(e))return ft;if(S(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=S(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=nt(e);var r=ja.test(e);return r||Ra.test(e)?Da(e.slice(2),r?2:8):Ea.test(e)?ft:+e}var st=La;var it=1/0,Na=17976931348623157e292;function Fa(e){if(!e)return e===0?e:0;if(e=st(e),e===it||e===-it){var t=e<0?-1:1;return t*Na}return e===e?e:0}var pt=Fa;function Ua(e){var t=pt(e),r=t%1;return t===t?r?t-r:t:0}var ut=Ua;var Ba=Math.ceil,qa=Math.max;function Ga(e,t,r){(r?le(e,t,r):t===void 0)?t=1:t=qa(ut(t),0);var o=e==null?0:e.length;if(!o||t<1)return[];for(var a=0,n=0,f=Array(Ba(o/t));a<o;)f[n++]=ye(e,a,a+=t);return f}var Wa=Ga;var Va=g["__core-js_shared__"],ve=Va;var mt=function(){var e=/[^.]+$/.exec(ve&&ve.keys&&ve.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ha(e){return!!mt&&mt in e}var dt=Ha;var ka=Function.prototype,za=ka.toString;function Ka(e){if(e!=null){try{return za.call(e)}catch (e3){}try{return e+""}catch (e4){}}return""}var P=Ka;var Za=/[\\^$.*+?()[\]{}|]/g,$a=/^\[object .+?Constructor\]$/,Ja=Function.prototype,Ya=Object.prototype,Xa=Ja.toString,Qa=Ya.hasOwnProperty,en=RegExp("^"+Xa.call(Qa).replace(Za,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function tn(e){if(!S(e)||dt(e))return!1;var t=Ae(e)?en:$a;return t.test(P(e))}var lt=tn;function rn(e,t){return _optionalChain([e, 'optionalAccess', _2 => _2[t]])}var ct=rn;function on(e,t){var r=ct(e,t);return lt(r)?r:void 0}var b=on;var an=b(Object,"create"),C=an;function nn(){this.__data__=C?C(null):{},this.size=0}var xt=nn;function fn(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var gt=fn;var sn="__lodash_hash_undefined__",pn=Object.prototype,un=pn.hasOwnProperty;function mn(e){var t=this.__data__;if(C){var r=t[e];return r===sn?void 0:r}return un.call(t,e)?t[e]:void 0}var ht=mn;var dn=Object.prototype,ln=dn.hasOwnProperty;function cn(e){var t=this.__data__;return C?t[e]!==void 0:ln.call(t,e)}var bt=cn;var xn="__lodash_hash_undefined__";function gn(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=C&&t===void 0?xn:t,this}var yt=gn;function Z(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1])}}Z.prototype.clear=xt;Z.prototype.delete=gt;Z.prototype.get=ht;Z.prototype.has=bt;Z.prototype.set=yt;var Ge=Z;function hn(){this.__data__=[],this.size=0}var _t=hn;function bn(e,t){for(var r=e.length;r--;)if(k(e[r][0],t))return r;return-1}var M=bn;var yn=Array.prototype,_n=yn.splice;function An(e){var t=this.__data__,r=M(t,e);if(r<0)return!1;var o=t.length-1;return r==o?t.pop():_n.call(t,r,1),--this.size,!0}var At=An;function vn(e){var t=this.__data__,r=M(t,e);return r<0?void 0:t[r][1]}var vt=vn;function Sn(e){return M(this.__data__,e)>-1}var St=Sn;function wn(e,t){var r=this.__data__,o=M(r,e);return o<0?(++this.size,r.push([e,t])):r[o][1]=t,this}var wt=wn;function $(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1])}}$.prototype.clear=_t;$.prototype.delete=At;$.prototype.get=vt;$.prototype.has=St;$.prototype.set=wt;var E=$;var Tn=b(g,"Map"),j=Tn;function On(){this.size=0,this.__data__={hash:new Ge,map:new(j||E),string:new Ge}}var Tt=On;function Pn(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Ot=Pn;function Cn(e,t){var r=e.__data__;return Ot(t)?r[typeof t=="string"?"string":"hash"]:r.map}var R=Cn;function In(e){var t=R(this,e).delete(e);return this.size-=t?1:0,t}var Pt=In;function Mn(e){return R(this,e).get(e)}var Ct=Mn;function En(e){return R(this,e).has(e)}var It=En;function jn(e,t){var r=R(this,e),o=r.size;return r.set(e,t),this.size+=r.size==o?0:1,this}var Mt=jn;function J(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1])}}J.prototype.clear=Tt;J.prototype.delete=Pt;J.prototype.get=Ct;J.prototype.has=It;J.prototype.set=Mt;var V=J;var Rn="__lodash_hash_undefined__";function Dn(e){return this.__data__.set(e,Rn),this}var Et=Dn;function Ln(e){return this.__data__.has(e)}var jt=Ln;function Se(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new V;++t<r;)this.add(e[t])}Se.prototype.add=Se.prototype.push=Et;Se.prototype.has=jt;var Y=Se;function Nn(e,t,r,o){for(var a=e.length,n=r+(o?1:-1);o?n--:++n<a;)if(t(e[n],n,e))return n;return-1}var Rt=Nn;function Fn(e){return e!==e}var Dt=Fn;function Un(e,t,r){for(var o=r-1,a=e.length;++o<a;)if(e[o]===t)return o;return-1}var Lt=Un;function Bn(e,t,r){return t===t?Lt(e,t,r):Rt(e,Dt,r)}var Nt=Bn;function qn(e,t){var r=e==null?0:e.length;return!!r&&Nt(e,t,0)>-1}var we=qn;function Gn(e,t,r){for(var o=-1,a=e==null?0:e.length;++o<a;)if(r(t,e[o]))return!0;return!1}var Te=Gn;function Wn(e,t){for(var r=-1,o=e==null?0:e.length,a=Array(o);++r<o;)a[r]=t(e[r],r,e);return a}var D=Wn;function Vn(e){return function(t){return e(t)}}var X=Vn;function Hn(e,t){return e.has(t)}var Q=Hn;var kn=200;function zn(e,t,r,o){var a=-1,n=we,f=!0,i=e.length,p=[],u=t.length;if(!i)return p;r&&(t=D(t,X(r))),o?(n=Te,f=!1):t.length>=kn&&(n=Q,f=!1,t=new Y(t));e:for(;++a<i;){var m=e[a],d=r==null?m:r(m);if(m=o||m!==0?m:0,f&&d===d){for(var l=u;l--;)if(t[l]===d)continue e;p.push(m)}else n(t,d,o)||p.push(m)}return p}var Ft=zn;function Kn(e,t){for(var r=-1,o=t.length,a=e.length;++r<o;)e[a+r]=t[r];return e}var Oe=Kn;var Zn="[object Arguments]";function $n(e){return y(e)&&v(e)==Zn}var We=$n;var Ut=Object.prototype,Jn=Ut.hasOwnProperty,Yn=Ut.propertyIsEnumerable,Xn=We(function(){return arguments}())?We:function(e){return y(e)&&Jn.call(e,"callee")&&!Yn.call(e,"callee")},ee=Xn;var Qn=Array.isArray,x=Qn;var Bt=h?h.isConcatSpreadable:void 0;function ef(e){return x(e)||ee(e)||!!(Bt&&e&&e[Bt])}var qt=ef;function Gt(e,t,r,o,a){var n=-1,f=e.length;for(r||(r=qt),a||(a=[]);++n<f;){var i=e[n];t>0&&r(i)?t>1?Gt(i,t-1,r,o,a):Oe(a,i):o||(a[a.length]=i)}return a}var L=Gt;function tf(e){return e}var N=tf;function rf(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}var Wt=rf;var Vt=Math.max;function of(e,t,r){return t=Vt(t===void 0?e.length-1:t,0),function(){for(var o=arguments,a=-1,n=Vt(o.length-t,0),f=Array(n);++a<n;)f[a]=o[t+a];a=-1;for(var i=Array(t+1);++a<t;)i[a]=o[a];return i[t]=r(f),Wt(e,this,i)}}var Ht=of;function af(e){return function(){return e}}var kt=af;var nf=function(){try{var e=b(Object,"defineProperty");return e({},"",{}),e}catch (e5){}}(),te=nf;var ff=te?function(e,t){return te(e,"toString",{configurable:!0,enumerable:!1,value:kt(t),writable:!0})}:N,zt=ff;var sf=800,pf=16,uf=Date.now;function mf(e){var t=0,r=0;return function(){var o=uf(),a=pf-(o-r);if(r=o,a>0){if(++t>=sf)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var Kt=mf;var df=Kt(zt),Zt=df;function lf(e,t){return Zt(Ht(e,t,N),e+"")}var re=lf;function cf(e){return y(e)&&T(e)}var ce=cf;var xf=re(function(e,t){return ce(e)?Ft(e,L(t,1,ce,!0)):[]}),gf= exports.c =xf;function hf(e,t,r){t=="__proto__"&&te?te(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var oe=hf;function bf(e,t,r,o){for(var a=-1,n=e==null?0:e.length;++a<n;){var f=e[a];t(o,f,r(f),e)}return o}var $t=bf;function yf(e){return function(t,r,o){for(var a=-1,n=Object(t),f=o(t),i=f.length;i--;){var p=f[e?i:++a];if(r(n[p],p,n)===!1)break}return t}}var Jt=yf;var _f=Jt(),Yt=_f;function Af(e,t){for(var r=-1,o=Array(e);++r<e;)o[r]=t(r);return o}var Xt=Af;function vf(){return!1}var Qt=vf;var rr=typeof exports=="object"&&exports&&!exports.nodeType&&exports,er=rr&&typeof module=="object"&&module&&!module.nodeType&&module,Sf=er&&er.exports===rr,tr=Sf?g.Buffer:void 0,wf=tr?tr.isBuffer:void 0,Tf=wf||Qt,xe=Tf;var Of="[object Arguments]",Pf="[object Array]",Cf="[object Boolean]",If="[object Date]",Mf="[object Error]",Ef="[object Function]",jf="[object Map]",Rf="[object Number]",Df="[object Object]",Lf="[object RegExp]",Nf="[object Set]",Ff="[object String]",Uf="[object WeakMap]",Bf="[object ArrayBuffer]",qf="[object DataView]",Gf="[object Float32Array]",Wf="[object Float64Array]",Vf="[object Int8Array]",Hf="[object Int16Array]",kf="[object Int32Array]",zf="[object Uint8Array]",Kf="[object Uint8ClampedArray]",Zf="[object Uint16Array]",$f="[object Uint32Array]",c={};c[Gf]=c[Wf]=c[Vf]=c[Hf]=c[kf]=c[zf]=c[Kf]=c[Zf]=c[$f]=!0;c[Of]=c[Pf]=c[Bf]=c[Cf]=c[qf]=c[If]=c[Mf]=c[Ef]=c[jf]=c[Rf]=c[Df]=c[Lf]=c[Nf]=c[Ff]=c[Uf]=!1;function Jf(e){return y(e)&&z(e.length)&&!!c[v(e)]}var or=Jf;var ar=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ge=ar&&typeof module=="object"&&module&&!module.nodeType&&module,Yf=ge&&ge.exports===ar,Ve=Yf&&_e.process,Xf=function(){try{var e=ge&&ge.require&&ge.require("util").types;return e||Ve&&Ve.binding&&Ve.binding("util")}catch (e6){}}(),He=Xf;var nr=He&&He.isTypedArray,Qf=nr?X(nr):or,Pe=Qf;var es=Object.prototype,ts=es.hasOwnProperty;function rs(e,t){var r=x(e),o=!r&&ee(e),a=!r&&!o&&xe(e),n=!r&&!o&&!a&&Pe(e),f=r||o||a||n,i=f?Xt(e.length,String):[],p=i.length;for(var u in e)(t||ts.call(e,u))&&!(f&&(u=="length"||a&&(u=="offset"||u=="parent")||n&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||K(u,p)))&&i.push(u);return i}var fr=rs;var os=Object.prototype;function as(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||os;return e===r}var sr=as;function ns(e,t){return function(r){return e(t(r))}}var ir=ns;var fs=ir(Object.keys,Object),pr=fs;var ss=Object.prototype,is=ss.hasOwnProperty;function ps(e){if(!sr(e))return pr(e);var t=[];for(var r in Object(e))is.call(e,r)&&r!="constructor"&&t.push(r);return t}var ur=ps;function us(e){return T(e)?fr(e):ur(e)}var ae=us;function ms(e,t){return e&&Yt(e,t,ae)}var Ce=ms;function ds(e,t){return function(r,o){if(r==null)return r;if(!T(r))return e(r,o);for(var a=r.length,n=t?a:-1,f=Object(r);(t?n--:++n<a)&&o(f[n],n,f)!==!1;);return r}}var mr=ds;var ls=mr(Ce),Ie=ls;function cs(e,t,r,o){return Ie(e,function(a,n,f){t(o,a,r(a),f)}),o}var dr=cs;function xs(){this.__data__=new E,this.size=0}var lr=xs;function gs(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var cr=gs;function hs(e){return this.__data__.get(e)}var xr=hs;function bs(e){return this.__data__.has(e)}var gr=bs;var ys=200;function _s(e,t){var r=this.__data__;if(r instanceof E){var o=r.__data__;if(!j||o.length<ys-1)return o.push([e,t]),this.size=++r.size,this;r=this.__data__=new V(o)}return r.set(e,t),this.size=r.size,this}var hr=_s;function ne(e){var t=this.__data__=new E(e);this.size=t.size}ne.prototype.clear=lr;ne.prototype.delete=cr;ne.prototype.get=xr;ne.prototype.has=gr;ne.prototype.set=hr;var fe=ne;function As(e,t){for(var r=-1,o=e==null?0:e.length;++r<o;)if(t(e[r],r,e))return!0;return!1}var br=As;var vs=1,Ss=2;function ws(e,t,r,o,a,n){var f=r&vs,i=e.length,p=t.length;if(i!=p&&!(f&&p>i))return!1;var u=n.get(e),m=n.get(t);if(u&&m)return u==t&&m==e;var d=-1,l=!0,O=r&Ss?new Y:void 0;for(n.set(e,t),n.set(t,e);++d<i;){var _=e[d],A=t[d];if(o)var I=f?o(A,_,d,t,e,n):o(_,A,d,e,t,n);if(I!==void 0){if(I)continue;l=!1;break}if(O){if(!br(t,function(G,W){if(!Q(O,W)&&(_===G||a(_,G,r,o,n)))return O.push(W)})){l=!1;break}}else if(!(_===A||a(_,A,r,o,n))){l=!1;break}}return n.delete(e),n.delete(t),l}var Me=ws;var Ts=g.Uint8Array,ke=Ts;function Os(e){var t=-1,r=Array(e.size);return e.forEach(function(o,a){r[++t]=[a,o]}),r}var yr=Os;function Ps(e){var t=-1,r=Array(e.size);return e.forEach(function(o){r[++t]=o}),r}var se=Ps;var Cs=1,Is=2,Ms="[object Boolean]",Es="[object Date]",js="[object Error]",Rs="[object Map]",Ds="[object Number]",Ls="[object RegExp]",Ns="[object Set]",Fs="[object String]",Us="[object Symbol]",Bs="[object ArrayBuffer]",qs="[object DataView]",_r=h?h.prototype:void 0,ze=_r?_r.valueOf:void 0;function Gs(e,t,r,o,a,n,f){switch(r){case qs:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Bs:return!(e.byteLength!=t.byteLength||!n(new ke(e),new ke(t)));case Ms:case Es:case Ds:return k(+e,+t);case js:return e.name==t.name&&e.message==t.message;case Ls:case Fs:return e==t+"";case Rs:var i=yr;case Ns:var p=o&Cs;if(i||(i=se),e.size!=t.size&&!p)return!1;var u=f.get(e);if(u)return u==t;o|=Is,f.set(e,t);var m=Me(i(e),i(t),o,a,n,f);return f.delete(e),m;case Us:if(ze)return ze.call(e)==ze.call(t)}return!1}var Ar=Gs;function Ws(e,t,r){var o=t(e);return x(e)?o:Oe(o,r(e))}var vr=Ws;function Vs(e,t){for(var r=-1,o=e==null?0:e.length,a=0,n=[];++r<o;){var f=e[r];t(f,r,e)&&(n[a++]=f)}return n}var Sr=Vs;function Hs(){return[]}var wr=Hs;var ks=Object.prototype,zs=ks.propertyIsEnumerable,Tr=Object.getOwnPropertySymbols,Ks=Tr?function(e){return e==null?[]:(e=Object(e),Sr(Tr(e),function(t){return zs.call(e,t)}))}:wr,Or=Ks;function Zs(e){return vr(e,ae,Or)}var Ke=Zs;var $s=1,Js=Object.prototype,Ys=Js.hasOwnProperty;function Xs(e,t,r,o,a,n){var f=r&$s,i=Ke(e),p=i.length,u=Ke(t),m=u.length;if(p!=m&&!f)return!1;for(var d=p;d--;){var l=i[d];if(!(f?l in t:Ys.call(t,l)))return!1}var O=n.get(e),_=n.get(t);if(O&&_)return O==t&&_==e;var A=!0;n.set(e,t),n.set(t,e);for(var I=f;++d<p;){l=i[d];var G=e[l],W=t[l];if(o)var Qe=f?o(W,G,l,t,e,n):o(G,W,l,e,t,n);if(!(Qe===void 0?G===W||a(G,W,r,o,n):Qe)){A=!1;break}I||(I=l=="constructor")}if(A&&!I){var he=e.constructor,be=t.constructor;he!=be&&"constructor"in e&&"constructor"in t&&!(typeof he=="function"&&he instanceof he&&typeof be=="function"&&be instanceof be)&&(A=!1)}return n.delete(e),n.delete(t),A}var Pr=Xs;var Qs=b(g,"DataView"),Ee=Qs;var ei=b(g,"Promise"),je=ei;var ti=b(g,"Set"),F=ti;var ri=b(g,"WeakMap"),Re=ri;var Cr="[object Map]",oi="[object Object]",Ir="[object Promise]",Mr="[object Set]",Er="[object WeakMap]",jr="[object DataView]",ai=P(Ee),ni=P(j),fi=P(je),si=P(F),ii=P(Re),H=v;(Ee&&H(new Ee(new ArrayBuffer(1)))!=jr||j&&H(new j)!=Cr||je&&H(je.resolve())!=Ir||F&&H(new F)!=Mr||Re&&H(new Re)!=Er)&&(H=function(e){var t=v(e),r=t==oi?e.constructor:void 0,o=r?P(r):"";if(o)switch(o){case ai:return jr;case ni:return Cr;case fi:return Ir;case si:return Mr;case ii:return Er}return t});var Ze=H;var pi=1,Rr="[object Arguments]",Dr="[object Array]",De="[object Object]",ui=Object.prototype,Lr=ui.hasOwnProperty;function mi(e,t,r,o,a,n){var f=x(e),i=x(t),p=f?Dr:Ze(e),u=i?Dr:Ze(t);p=p==Rr?De:p,u=u==Rr?De:u;var m=p==De,d=u==De,l=p==u;if(l&&xe(e)){if(!xe(t))return!1;f=!0,m=!1}if(l&&!m)return n||(n=new fe),f||Pe(e)?Me(e,t,r,o,a,n):Ar(e,t,p,r,o,a,n);if(!(r&pi)){var O=m&&Lr.call(e,"__wrapped__"),_=d&&Lr.call(t,"__wrapped__");if(O||_){var A=O?e.value():e,I=_?t.value():t;return n||(n=new fe),a(A,I,r,o,n)}}return l?(n||(n=new fe),Pr(e,t,r,o,a,n)):!1}var Nr=mi;function Fr(e,t,r,o,a){return e===t?!0:e==null||t==null||!y(e)&&!y(t)?e!==e&&t!==t:Nr(e,t,r,o,Fr,a)}var Le=Fr;var di=1,li=2;function ci(e,t,r,o){var a=r.length,n=a,f=!o;if(e==null)return!n;for(e=Object(e);a--;){var i=r[a];if(f&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++a<n;){i=r[a];var p=i[0],u=e[p],m=i[1];if(f&&i[2]){if(u===void 0&&!(p in e))return!1}else{var d=new fe;if(o)var l=o(u,m,p,e,t,d);if(!(l===void 0?Le(m,u,di|li,o,d):l))return!1}}return!0}var Ur=ci;function xi(e){return e===e&&!S(e)}var Ne=xi;function gi(e){for(var t=ae(e),r=t.length;r--;){var o=t[r],a=e[o];t[r]=[o,a,Ne(a)]}return t}var Br=gi;function hi(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}var Fe=hi;function bi(e){var t=Br(e);return t.length==1&&t[0][2]?Fe(t[0][0],t[0][1]):function(r){return r===e||Ur(r,e,t)}}var qr=bi;var yi=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,_i=/^\w*$/;function Ai(e,t){if(x(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||w(e)?!0:_i.test(e)||!yi.test(e)||t!=null&&e in Object(t)}var ie=Ai;var vi="Expected a function";function $e(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(vi);var r=function(){var o=arguments,a=t?t.apply(this,o):o[0],n=r.cache;if(n.has(a))return n.get(a);var f=e.apply(this,o);return r.cache=n.set(a,f)||n,f};return r.cache=new($e.Cache||V),r}$e.Cache=V;var Gr=$e;var Si=500;function wi(e){var t=Gr(e,function(o){return r.size===Si&&r.clear(),o}),r=t.cache;return t}var Wr=wi;var Ti=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Oi=/\\(\\)?/g,Pi=Wr(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(Ti,function(r,o,a,n){t.push(a?n.replace(Oi,"$1"):o||r)}),t}),Vr=Pi;var Ci=1/0,Hr=h?h.prototype:void 0,kr=Hr?Hr.toString:void 0;function zr(e){if(typeof e=="string")return e;if(x(e))return D(e,zr)+"";if(w(e))return kr?kr.call(e):"";var t=e+"";return t=="0"&&1/e==-Ci?"-0":t}var Kr=zr;function Ii(e){return e==null?"":Kr(e)}var U=Ii;function Mi(e,t){return x(e)?e:ie(e,t)?[e]:Vr(U(e))}var Ue=Mi;var Ei=1/0;function ji(e){if(typeof e=="string"||w(e))return e;var t=e+"";return t=="0"&&1/e==-Ei?"-0":t}var B=ji;function Ri(e,t){t=Ue(t,e);for(var r=0,o=t.length;e!=null&&r<o;)e=e[B(t[r++])];return r&&r==o?e:void 0}var pe=Ri;function Di(e,t,r){var o=e==null?void 0:pe(e,t);return o===void 0?r:o}var Zr=Di;function Li(e,t){return e!=null&&t in Object(e)}var $r=Li;function Ni(e,t,r){t=Ue(t,e);for(var o=-1,a=t.length,n=!1;++o<a;){var f=B(t[o]);if(!(n=e!=null&&r(e,f)))break;e=e[f]}return n||++o!=a?n:(a=e==null?0:e.length,!!a&&z(a)&&K(f,a)&&(x(e)||ee(e)))}var Jr=Ni;function Fi(e,t){return e!=null&&Jr(e,t,$r)}var Yr=Fi;var Ui=1,Bi=2;function qi(e,t){return ie(e)&&Ne(t)?Fe(B(e),t):function(r){var o=Zr(r,e);return o===void 0&&o===t?Yr(r,e):Le(t,o,Ui|Bi)}}var Xr=qi;function Gi(e){return function(t){return _optionalChain([t, 'optionalAccess', _3 => _3[e]])}}var Qr=Gi;function Wi(e){return function(t){return pe(t,e)}}var eo=Wi;function Vi(e){return ie(e)?Qr(B(e)):eo(e)}var to=Vi;function Hi(e){return typeof e=="function"?e:e==null?N:typeof e=="object"?x(e)?Xr(e[0],e[1]):qr(e):to(e)}var q=Hi;function ki(e,t){return function(r,o){var a=x(r)?$t:dr,n=t?t():{};return a(r,e,q(o,2),n)}}var Be=ki;var zi=Object.prototype,Ki=zi.hasOwnProperty,Zi=Be(function(e,t,r){Ki.call(e,r)?e[r].push(t):oe(e,r,[t])}),$i= exports.d =Zi;function Ji(){}var ro=Ji;var Yi=1/0,Xi=F&&1/se(new F([,-0]))[1]==Yi?function(e){return new F(e)}:ro,oo=Xi;var Qi=200;function ep(e,t,r){var o=-1,a=we,n=e.length,f=!0,i=[],p=i;if(r)f=!1,a=Te;else if(n>=Qi){var u=t?null:oo(e);if(u)return se(u);f=!1,a=Q,p=new Y}else p=t?[]:i;e:for(;++o<n;){var m=e[o],d=t?t(m):m;if(m=r||m!==0?m:0,f&&d===d){for(var l=p.length;l--;)if(p[l]===d)continue e;t&&p.push(d),i.push(m)}else a(p,d,r)||(p!==i&&p.push(d),i.push(m))}return i}var ue=ep;function tp(e){return e&&e.length?ue(e):[]}var rp=tp;function op(e){var t=e==null?0:e.length;return t?L(e,1):[]}var ap=op;function np(e,t,r){var o=e.length;return r=r===void 0?o:r,!t&&r>=o?e:ye(e,t,r)}var ao=np;var fp="\\ud800-\\udfff",sp="\\u0300-\\u036f",ip="\\ufe20-\\ufe2f",pp="\\u20d0-\\u20ff",up=sp+ip+pp,mp="\\ufe0e\\ufe0f",dp="\\u200d",lp=RegExp("["+dp+fp+up+mp+"]");function cp(e){return lp.test(e)}var qe=cp;function xp(e){return e.split("")}var no=xp;var fo="\\ud800-\\udfff",gp="\\u0300-\\u036f",hp="\\ufe20-\\ufe2f",bp="\\u20d0-\\u20ff",yp=gp+hp+bp,_p="\\ufe0e\\ufe0f",Ap="["+fo+"]",Je="["+yp+"]",Ye="\\ud83c[\\udffb-\\udfff]",vp="(?:"+Je+"|"+Ye+")",so="[^"+fo+"]",io="(?:\\ud83c[\\udde6-\\uddff]){2}",po="[\\ud800-\\udbff][\\udc00-\\udfff]",Sp="\\u200d",uo=vp+"?",mo="["+_p+"]?",wp="(?:"+Sp+"(?:"+[so,io,po].join("|")+")"+mo+uo+")*",Tp=mo+uo+wp,Op="(?:"+[so+Je+"?",Je,io,po,Ap].join("|")+")",Pp=RegExp(Ye+"(?="+Ye+")|"+Op+Tp,"g");function Cp(e){return e.match(Pp)||[]}var lo=Cp;function Ip(e){return qe(e)?lo(e):no(e)}var co=Ip;function Mp(e){return function(t){t=U(t);var r=qe(t)?co(t):void 0,o=r?r[0]:t.charAt(0),a=r?ao(r,1).join(""):t.slice(1);return o[e]()+a}}var xo=Mp;var Ep=xo("toUpperCase"),go=Ep;function jp(e,t,r,o){var a=-1,n=e==null?0:e.length;for(o&&n&&(r=e[++a]);++a<n;)r=t(r,e[a],a,e);return r}var ho=jp;function Rp(e){return function(t){return _optionalChain([e, 'optionalAccess', _4 => _4[t]])}}var bo=Rp;var Dp={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},Lp=bo(Dp),yo=Lp;var Np=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Fp="\\u0300-\\u036f",Up="\\ufe20-\\ufe2f",Bp="\\u20d0-\\u20ff",qp=Fp+Up+Bp,Gp="["+qp+"]",Wp=RegExp(Gp,"g");function Vp(e){return e=U(e),e&&e.replace(Np,yo).replace(Wp,"")}var _o=Vp;var Hp=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function kp(e){return e.match(Hp)||[]}var Ao=kp;var zp=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function Kp(e){return zp.test(e)}var vo=Kp;var Po="\\ud800-\\udfff",Zp="\\u0300-\\u036f",$p="\\ufe20-\\ufe2f",Jp="\\u20d0-\\u20ff",Yp=Zp+$p+Jp,Co="\\u2700-\\u27bf",Io="a-z\\xdf-\\xf6\\xf8-\\xff",Xp="\\xac\\xb1\\xd7\\xf7",Qp="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",eu="\\u2000-\\u206f",tu=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Mo="A-Z\\xc0-\\xd6\\xd8-\\xde",ru="\\ufe0e\\ufe0f",Eo=Xp+Qp+eu+tu,jo="['\u2019]",So="["+Eo+"]",ou="["+Yp+"]",Ro="\\d+",au="["+Co+"]",Do="["+Io+"]",Lo="[^"+Po+Eo+Ro+Co+Io+Mo+"]",nu="\\ud83c[\\udffb-\\udfff]",fu="(?:"+ou+"|"+nu+")",su="[^"+Po+"]",No="(?:\\ud83c[\\udde6-\\uddff]){2}",Fo="[\\ud800-\\udbff][\\udc00-\\udfff]",me="["+Mo+"]",iu="\\u200d",wo="(?:"+Do+"|"+Lo+")",pu="(?:"+me+"|"+Lo+")",To="(?:"+jo+"(?:d|ll|m|re|s|t|ve))?",Oo="(?:"+jo+"(?:D|LL|M|RE|S|T|VE))?",Uo=fu+"?",Bo="["+ru+"]?",uu="(?:"+iu+"(?:"+[su,No,Fo].join("|")+")"+Bo+Uo+")*",mu="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",du="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",lu=Bo+Uo+uu,cu="(?:"+[au,No,Fo].join("|")+")"+lu,xu=RegExp([me+"?"+Do+"+"+To+"(?="+[So,me,"$"].join("|")+")",pu+"+"+Oo+"(?="+[So,me+wo,"$"].join("|")+")",me+"?"+wo+"+"+To,me+"+"+Oo,du,mu,Ro,cu].join("|"),"g");function gu(e){return e.match(xu)||[]}var qo=gu;function hu(e,t,r){return e=U(e),t=r?void 0:t,t===void 0?vo(e)?qo(e):Ao(e):e.match(t)||[]}var Go=hu;var bu="['\u2019]",yu=RegExp(bu,"g");function _u(e){return function(t){return ho(Go(_o(t).replace(yu,"")),e,"")}}var Wo=_u;function Au(e,t){var r=-1,o=T(e)?Array(e.length):[];return Ie(e,function(a,n,f){o[++r]=t(a,n,f)}),o}var Vo=Au;var vu=Be(function(e,t,r){oe(e,r,t)}),Xe= exports.e =vu;function Su(e,t){var r={};return t=q(t,3),Ce(e,function(o,a,n){oe(r,a,t(o,a,n))}),r}var wu=Su;function Tu(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}var Ho=Tu;function Ou(e,t){if(e!==t){var r=e!==void 0,o=e===null,a=e===e,n=w(e),f=t!==void 0,i=t===null,p=t===t,u=w(t);if(!i&&!u&&!n&&e>t||n&&f&&p&&!i&&!u||o&&f&&p||!r&&p||!a)return 1;if(!o&&!n&&!u&&e<t||u&&r&&a&&!o&&!n||i&&r&&a||!f&&a||!p)return-1}return 0}var ko=Ou;function Pu(e,t,r){for(var o=-1,a=e.criteria,n=t.criteria,f=a.length,i=r.length;++o<f;){var p=ko(a[o],n[o]);if(p){if(o>=i)return p;var u=r[o];return p*(u=="desc"?-1:1)}}return e.index-t.index}var zo=Pu;function Cu(e,t,r){t.length?t=D(t,function(n){return x(n)?function(f){return pe(f,n.length===1?n[0]:n)}:n}):t=[N];var o=-1;t=D(t,X(q));var a=Vo(e,function(n,f,i){var p=D(t,function(u){return u(n)});return{criteria:p,index:++o,value:n}});return Ho(a,function(n,f){return zo(n,f,r)})}var Ko=Cu;var Iu=re(function(e,t){if(e==null)return[];var r=t.length;return r>1&&le(e,t[0],t[1])?t=[]:r>2&&le(t[0],t[1],t[2])&&(t=[t[0]]),Ko(e,L(t,1),[])}),Mu= exports.g =Iu;var Eu=Wo(function(e,t,r){return e+(r?" ":"")+go(t)}),ju= exports.h =Eu;var Ru=re(function(e){return ue(L(e,1,ce,!0))}),Du= exports.i =Ru;function Lu(e,t){return e&&e.length?ue(e,q(t,2)):[]}var Nu=Lu;var Fu="A command line interface for programmatic operations across Transcend.",Uu= exports.m ="8.30.1";var _privacytypes = require('@transcend-io/privacy-types');var fy="transcend",$o= exports.o ="https://app.transcend.io",sy= exports.p =`${$o}/infrastructure/integrations`,iy= exports.q =`${$o}/data-map/data-inventory/data-points`,py= exports.r =process.env.TRANSCEND_API_URL||"https://api.transcend.io",uy= exports.s =process.env.TRANSCEND_CONSENT_API_URL||"https://consent.transcend.io",my= exports.t ={apiKeys:[_privacytypes.ScopeName.ViewApiKeys],templates:[_privacytypes.ScopeName.ManageEmailTemplates],dataSilos:[_privacytypes.ScopeName.ManageDataMap,_privacytypes.ScopeName.ConnectDataSilos],enrichers:[_privacytypes.ScopeName.ManageRequestIdentities],businessEntities:[_privacytypes.ScopeName.ManageDataInventory],processingActivities:[_privacytypes.ScopeName.ManageDataMap],identifiers:[_privacytypes.ScopeName.ManageRequestIdentities],customFields:[_privacytypes.ScopeName.ManageGlobalAttributes],dataFlows:[_privacytypes.ScopeName.ManageDataFlow],cookies:[_privacytypes.ScopeName.ManageDataFlow],consentManager:[_privacytypes.ScopeName.ManageConsentManagerDeveloperSettings],partitions:[_privacytypes.ScopeName.ManageConsentManagerDeveloperSettings],actions:[_privacytypes.ScopeName.ManageDataSubjectRequestSettings],dataSubjects:[_privacytypes.ScopeName.ManageDataSubjectRequestSettings],prompts:[_privacytypes.ScopeName.ManagePrompts],promptPartials:[_privacytypes.ScopeName.ManagePrompts],promptGroups:[_privacytypes.ScopeName.ManagePrompts],agents:[_privacytypes.ScopeName.ManagePathfinder],agentFunctions:[_privacytypes.ScopeName.ManagePathfinder],agentFiles:[_privacytypes.ScopeName.ManagePathfinder],vendors:[_privacytypes.ScopeName.ManageDataInventory],dataCategories:[_privacytypes.ScopeName.ManageDataInventory],processingPurposes:[_privacytypes.ScopeName.ManageDataInventory],actionItems:[_privacytypes.ScopeName.ManageAllActionItems,_privacytypes.ScopeName.ViewGlobalAttributes],actionItemCollections:[_privacytypes.ScopeName.ManageActionItemCollections],teams:[_privacytypes.ScopeName.ManageAccessControl],messages:[_privacytypes.ScopeName.ManageIntlMessages],privacyCenters:[_privacytypes.ScopeName.ManagePrivacyCenter],policies:[_privacytypes.ScopeName.ManagePolicies],assessments:[_privacytypes.ScopeName.ManageAssessments],assessmentTemplates:[_privacytypes.ScopeName.ManageAssessments],purposes:[_privacytypes.ScopeName.ManageConsentManager,_privacytypes.ScopeName.ManagePreferenceStoreSettings],siloDiscoveryResults:[_privacytypes.ScopeName.ManageDataMap]},dy= exports.u ={apiKeys:[_privacytypes.ScopeName.ViewApiKeys],templates:[_privacytypes.ScopeName.ViewEmailTemplates],dataSilos:[_privacytypes.ScopeName.ViewDataMap,_privacytypes.ScopeName.ViewDataSubjectRequestSettings],enrichers:[_privacytypes.ScopeName.ViewRequestIdentitySettings],businessEntities:[_privacytypes.ScopeName.ViewDataInventory],processingActivities:[_privacytypes.ScopeName.ViewDataInventory],identifiers:[_privacytypes.ScopeName.ViewRequestIdentitySettings],customFields:[_privacytypes.ScopeName.ViewGlobalAttributes],dataFlows:[_privacytypes.ScopeName.ViewDataFlow],cookies:[_privacytypes.ScopeName.ViewDataFlow],consentManager:[_privacytypes.ScopeName.ViewConsentManager],partitions:[_privacytypes.ScopeName.ViewConsentManager],actions:[_privacytypes.ScopeName.ViewDataSubjectRequestSettings],dataSubjects:[_privacytypes.ScopeName.ViewDataSubjectRequestSettings],prompts:[_privacytypes.ScopeName.ViewPrompts],promptPartials:[_privacytypes.ScopeName.ViewPrompts],promptGroups:[_privacytypes.ScopeName.ViewPrompts],agents:[_privacytypes.ScopeName.ViewPathfinder],agentFunctions:[_privacytypes.ScopeName.ViewPathfinder],agentFiles:[_privacytypes.ScopeName.ViewPathfinder],vendors:[_privacytypes.ScopeName.ViewDataInventory],dataCategories:[_privacytypes.ScopeName.ViewDataInventory],processingPurposes:[_privacytypes.ScopeName.ViewDataInventory],actionItemCollections:[_privacytypes.ScopeName.ViewAllActionItems],actionItems:[_privacytypes.ScopeName.ViewAllActionItems],teams:[_privacytypes.ScopeName.ViewScopes],messages:[_privacytypes.ScopeName.ViewIntlMessages],privacyCenters:[_privacytypes.ScopeName.ViewPrivacyCenter],policies:[_privacytypes.ScopeName.ViewPolicies],assessments:[_privacytypes.ScopeName.ViewAssessments],assessmentTemplates:[_privacytypes.ScopeName.ViewAssessments],purposes:[_privacytypes.ScopeName.ViewConsentManager,_privacytypes.ScopeName.ViewPreferenceStoreSettings],siloDiscoveryResults:[_privacytypes.ScopeName.ViewDataMap]},ly= exports.v ={apiKeys:"api-keys",customFields:"attributes",dataFlows:"data-flows",cookies:"cookies",consentManager:"consent-manager",partitions:"partitions",actions:"actions",dataSubjects:"data-subjects",businessEntities:"business-entities",processingActivities:"processing-activities",identifiers:"identifiers",enrichers:"enrichers",dataSilos:"data-silos",templates:"templates",prompts:"prompts",promptPartials:"prompt-partials",promptGroups:"prompt-groups",agents:"agents",agentFunctions:"agent-functions",agentFiles:"agent-files",vendors:"vendors",dataCategories:"data-categories",processingPurposes:"processing-purposes",actionItems:"action-items",actionItemCollections:"action-item-collections",teams:"teams",messages:"messages",privacyCenters:"privacy-center",policies:"policies",assessments:"assessments",assessmentTemplates:"assessment-templates",purposes:"purposes",siloDiscoveryResults:"siloDiscoveryResults"},qu= exports.w =Xe(Object.entries(_privacytypes.TRANSCEND_SCOPES).map(([e,t])=>({...t,name:e})),"title"),cy= exports.x =Object.keys(qu),xy= exports.y =new Set([429,502,500,504,329]),gy= exports.z =process.env.DEBUG==="1";exports.a = ap; exports.b = Wa; exports.c = gf; exports.d = $i; exports.e = Xe; exports.f = wu; exports.g = Mu; exports.h = ju; exports.i = Du; exports.j = rp; exports.k = Nu; exports.l = Fu; exports.m = Uu; exports.n = fy; exports.o = $o; exports.p = sy; exports.q = iy; exports.r = py; exports.s = uy; exports.t = my; exports.u = dy; exports.v = ly; exports.w = qu; exports.x = cy; exports.y = xy; exports.z = gy;
|
|
2
2
|
/*! Bundled license information:
|
|
3
3
|
|
|
4
4
|
lodash-es/lodash.js:
|
|
@@ -12,4 +12,4 @@ lodash-es/lodash.js:
|
|
|
12
12
|
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
13
13
|
*)
|
|
14
14
|
*/
|
|
15
|
-
//# sourceMappingURL=chunk-
|
|
15
|
+
//# sourceMappingURL=chunk-OMVVROKB.cjs.map
|