@rushstack/lockfile-explorer 0.1.1 → 0.1.3

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.
@@ -0,0 +1 @@
1
+ .HK80a6ZVkdxoTKzrP9Eq{background-color:#faf9f8;box-shadow:0 3.2px 7.2px 0 rgba(0,0,0,.132),0 .6px 1.8px 0 rgba(0,0,0,.108);padding:24px}.uXEYthi0e8fjYu_FisVm{display:flex;flex-direction:row;flex-wrap:nowrap}.uXEYthi0e8fjYu_FisVm>*{width:100%}.FFuReYR1pIswEW7Az6w9{flex-grow:1}.HqAzbQwu1zc9yH8ZQESI{display:flex;flex-direction:column;height:100vh;overflow-y:scroll}.yk7wrFMnnNyYLABMBhz_{height:calc(100% - 12px);padding-top:12px}.X00sOTmx1ir4Oc41DIvM{display:flex;flex-direction:column;max-height:calc(100% - 105px);min-height:calc(100% - 105px)}.ZcSkxw5an6poYOzXiz_9{border:1px solid #fff;cursor:pointer;padding:4px 8px}.ZcSkxw5an6poYOzXiz_9:hover{border:1px solid #000}.oq4FJVnF_fONdOKuiK0w{align-items:center;display:flex;margin-bottom:12px}.oq4FJVnF_fONdOKuiK0w input{border:1px solid #666;border-radius:4px;padding:.4em;width:100%}.oq4FJVnF_fONdOKuiK0w>*+*{margin-left:12px}.OcndyDBetZor3ptzTnTX h5{margin:0}.OcndyDBetZor3ptzTnTX>*+*{margin-top:4px}.Wg5pG3RVf6SQ51i0tVkd{cursor:pointer;padding:4px 8px}.Wg5pG3RVf6SQ51i0tVkd:hover{background:#dff6dd}.NBIr3yosJ9gX6LZcnC7T{background-color:#dff6dd}.PoJj8_8xv9BXiMVPKFVE{flex:1;overflow:scroll}.PoJj8_8xv9BXiMVPKFVE>*+*{margin-top:12px}.K6dDN5KzjLkbPPFWUaly{border-top:1px solid #000;padding-top:24px}.K6dDN5KzjLkbPPFWUaly>*+*{margin-top:4px}.IWEAxDEzQLw3g5TI_6up{align-items:center;cursor:pointer;display:flex}.IWEAxDEzQLw3g5TI_6up>*+*{margin-left:4px}.b1H6mzJXpxsG350hyeU_{box-shadow:0 3.2px 7.2px 0 rgba(0,0,0,.132),0 .6px 1.8px 0 rgba(0,0,0,.108);display:flex;width:-moz-fit-content;width:fit-content}.b1H6mzJXpxsG350hyeU_>*+*{border-left:1px solid #f3f2f1}.mWhs4CnCA0TKj6CRR8gk{background-color:#faf9f8;cursor:pointer;padding:6px 12px}.Q9WEwAuQb3UsVbcHr0oI{border-bottom:3px solid #107c10}.kzgyQkswpx6xUEo4zOa8{height:30%;margin-top:12px}.e2KEBfZCHwEMeH4j6wS7{height:calc(25vh - 35px);overflow:scroll}.nTIc62ACgp5xMWIvZ4cn{background-color:#107c10}.iavWjvHy9s5MhCZ_ncgb,.nTIc62ACgp5xMWIvZ4cn{border-radius:2px;color:#fff;padding:2px 4px}.iavWjvHy9s5MhCZ_ncgb{background-color:red}.I4A8ZZlpCL3Op0c53VjN{background-color:#b8860b;border-radius:2px;color:#fff;padding:2px 4px}.Ko0YQxSlY0hCIDTfmNlr h5{margin-bottom:12px}.Ko0YQxSlY0hCIDTfmNlr>*+*{margin-top:8px}.rXOH6AJQU2eYrNAXbp4V>*{display:inline}.rXOH6AJQU2eYrNAXbp4V>*+*{margin-left:12px}.hqNteMkwhYXuZqHE_8MJ{align-items:flex-start;display:flex}.hqNteMkwhYXuZqHE_8MJ>*+*{margin-left:12px}.hqNteMkwhYXuZqHE_8MJ div>*+*{margin-top:4px}.KWDuEbG1GmwLxFmPPppw{display:flex;height:30%;justify-content:space-between;padding-top:12px}.KWDuEbG1GmwLxFmPPppw>*{width:calc(50% - 60px)}.KWDuEbG1GmwLxFmPPppw h5{margin:0}._R50_3JsFs2FC9kVffQL{height:calc(25vh - 24px);margin-top:8px;overflow:scroll}.mRQWdzXzOM1NpFUpYnhP{border:1px solid #fff;cursor:pointer;margin-top:12px}.mRQWdzXzOM1NpFUpYnhP:hover{border:1px solid #107c10}.mRQWdzXzOM1NpFUpYnhP p{margin:0}.mRQWdzXzOM1NpFUpYnhP>*+*{margin-top:8px}.GbZbP1wHbcReGrxpZ3Ra{background-color:#dff6dd}.rIv2KvSZ0CKMbctSHL04{height:10%;margin-top:12px;overflow:scroll}.xSxHmjxIXTOSskLhma3A{height:4%;margin-top:12px;overflow:scroll}.wzeVrHi3oyOhEe6qD3PX{cursor:pointer;display:block}.wzeVrHi3oyOhEe6qD3PX:hover{color:#107c10;text-decoration:underline}.lGp34XdOFjHfZNwiilgC{align-items:center;display:flex}.lGp34XdOFjHfZNwiilgC span{font-size:12px;margin-left:4px}.aM5oGgiHs9rRHcHdAqFh{flex:1;margin:12px 0}.Ci1rEoM4eR29ZJcnvJJE{cursor:pointer;margin-top:8px;padding:4px 0}.Ci1rEoM4eR29ZJcnvJJE:hover{background:#dff6dd}.Ci1rEoM4eR29ZJcnvJJE>*+*{margin-top:8px}.dklLbMzvzbuzLd2XJh3W{background-color:#faf9f8;box-shadow:0 3.2px 7.2px 0 rgba(0,0,0,.132),0 .6px 1.8px 0 rgba(0,0,0,.108);height:8%;margin-top:12px;overflow:scroll;padding:12px 24px}.dklLbMzvzbuzLd2XJh3W p{font-size:12px}.dklLbMzvzbuzLd2XJh3W>*+*{margin-top:8px}.vJvmAdZ2VafvyXjc16Mz{display:flex;justify-content:space-between}.Hd2WYHIwrFrldD0I8qDj{align-items:center;display:flex}.Hd2WYHIwrFrldD0I8qDj>*+*{margin-left:8px}.LkGUkEuAC1lrNLYWXZAB{display:flex}.LkGUkEuAC1lrNLYWXZAB>*{height:21px}.LkGUkEuAC1lrNLYWXZAB>*+*{margin-left:8px}.mqcpXwTQfD4A2eS4QRMa{display:flex}.mqcpXwTQfD4A2eS4QRMa>*+*{margin-left:12px}.mqcpXwTQfD4A2eS4QRMa a{text-decoration:none}.gxAXHLK7j_oYpFDmIJLR{height:64px;padding-top:5px}.rHArsuIMBTbIFs5o2cuw{height:20px;padding-top:7px}.P6XzPBuW8Osze59RSui1{height:20px;padding-top:5px}.wR2C2OTixe7QR738j44h{height:100%;-o-object-fit:contain;object-fit:contain}.Oo_rkIqOkO0j8slDAm5V{color:#ab9e8e;font-family:Tahoma,sans-serif;font-size:14px;padding-top:4px}body,html{background-color:#f3f2f1;box-sizing:border-box;font-family:Tahoma,sans-serif;height:100%;margin:0}h5,p{font-size:14px;margin:0}
@@ -0,0 +1 @@
1
+ !function(){"use strict";var e,t={302:function(e,t,n){var a,r,c=n(823),s=n(998),l="HK80a6ZVkdxoTKzrP9Eq",o=n(201);!function(e){e[e.DEPENDENCY=0]="DEPENDENCY",e[e.DEV_DEPENDENCY=1]="DEV_DEPENDENCY",e[e.PEER_DEPENDENCY=2]="PEER_DEPENDENCY"}(a||(a={}));class i{constructor(e,t,n,r,c){if(this.entryId="",this.name=e,this.version=t,this.dependencyType=n,this.containingEntry=r,this.peerDependencyMeta={},this.version.startsWith("link:")){const t=this.version.substring("link:".length),n=new o.y(".").relative(new o.y(r.packageJsonFolderPath).concat(t));if(!n)return void console.error("No root relative path for dependency!",e);this.entryId="project:"+n.toString()}else this.version.startsWith("/")?this.entryId=this.version:this.dependencyType===a.PEER_DEPENDENCY?(null==c?void 0:c.peerDependencies)?(this.peerDependencyMeta={name:this.name,version:c.peerDependencies[this.name],optional:!(!c.peerDependenciesMeta||!c.peerDependenciesMeta[this.name])&&c.peerDependenciesMeta[this.name].optional},this.entryId="Peer: "+this.name):console.error("Peer dependencies info missing!",c):this.entryId="/"+this.name+"/"+this.version}static parseDependencies(e,t,n){if(n.dependencies)for(const[r,c]of Object.entries(n.dependencies))e.push(new i(r,c,a.DEPENDENCY,t));if(n.devDependencies)for(const[r,c]of Object.entries(n.devDependencies))e.push(new i(r,c,a.DEV_DEPENDENCY,t));if(n.peerDependencies)for(const[r,c]of Object.entries(n.peerDependencies))e.push(new i(r,c,a.PEER_DEPENDENCY,t,n));if(n.transitivePeerDependencies)for(const e of n.transitivePeerDependencies)t.transitivePeerDependencies.add(e)}}!function(e){e[e.Project=0]="Project",e[e.Package=1]="Package",e[e.SideBySide=2]="SideBySide",e[e.Doppelganger=3]="Doppelganger"}(r||(r={}));class d{constructor(e){this.entryId="",this.packageJsonFolderPath="",this.entryPackageName="",this.displayText="",this.dependencies=[],this.transitivePeerDependencies=new Set,this.referrers=[],this.entryPackageVersion="",this.entrySuffix="";const{rawEntryId:t,kind:n,rawYamlData:a}=e;if(this.rawEntryId=t,this.kind=n,"."!==t){if(n===r.Project){const e=new o.y("common/temp/package.json").dirname()||"",n=new o.y(".").relative(new o.y(e).concat(t)),a=new o.y(t).basename();if(!n||!a)return void console.error("Could not construct path for entry: ",t);this.packageJsonFolderPath=n.toString(),this.entryId="project:"+this.packageJsonFolderPath,this.entryPackageName=a.toString(),this.displayText="Project: "+this.entryPackageName}else{this.displayText=t;const e=d._packageEntryIdRegex.exec(t);if(e){const[,t,n]=e;this.entryPackageName=t;const a=n.indexOf("_");if(a>=0){const e=n.substring(0,a),r=n.substring(a+1);this.entryPackageVersion=e,this.entrySuffix=r,this.displayText=t+" "+e+" ("+r+")"}else this.entryPackageVersion=n,this.displayText=t+" "+n}this.packageJsonFolderPath="common/temp/node_modules/.pnpm/"+this.entryPackageName.replace("/","+")+"@"+this.entryPackageVersion+(this.entrySuffix?`_${this.entrySuffix}`:"")+"/node_modules/"+this.entryPackageName}i.parseDependencies(this.dependencies,this,a)}}}d._packageEntryIdRegex=new RegExp("/(.*)/([^/]+)$");const p=window.appContext.serviceUrl;var m="IWEAxDEzQLw3g5TI_6up";const E=null;var u=n(300);const y=u.I0,f=u.v9;var k=n(329);const h="LOCKFILE_EXPLORER_BOOKMARKS",g="LOCKFILE_EXPLORER_PROJECT_FILTER",v="LOCKFILE_EXPLORER_PACKAGE_FILTER",P=e=>e===r.Project?localStorage.getItem(g)||"":localStorage.getItem(v)||"",N={allEntries:[],filters:{[r.Project]:!1,[r.Package]:!0,[r.SideBySide]:!1,[r.Doppelganger]:!1},selectedEntryStack:[],selectedEntryForwardStack:[],bookmarkedEntries:[]},S=(0,k.oM)({name:"entry",initialState:N,reducers:{loadEntries:(e,t)=>{e.allEntries=t.payload;const n=(()=>{const e=JSON.parse(localStorage.getItem(h)||"{}"),t=new Set;for(const n of Object.keys(e))t.add(n);return t})();for(const a of t.payload)n.has(a.rawEntryId)&&e.bookmarkedEntries.push(a)},setFilter:(e,t)=>{e.filters[t.payload.filter]=t.payload.state},clearStackAndPush:(e,t)=>{e.selectedEntryStack=[t.payload],e.selectedEntryForwardStack=[]},pushToStack:(e,t)=>{e.selectedEntryStack.push(t.payload),e.selectedEntryForwardStack=[],t.payload.kind===r.Package?(e.filters[r.Project]=!1,e.filters[r.Package]=!0):(e.filters[r.Project]=!0,e.filters[r.Package]=!1)},popStack:e=>{if(e.selectedEntryStack.length>1){const t=e.selectedEntryStack.pop();e.selectedEntryForwardStack.push(t),e.selectedEntryStack.length>=1&&(e.selectedEntryStack[e.selectedEntryStack.length-1].kind===r.Package?(e.filters[r.Project]=!1,e.filters[r.Package]=!0):(e.filters[r.Project]=!0,e.filters[r.Package]=!1))}},forwardStack:e=>{if(e.selectedEntryForwardStack.length>0){const t=e.selectedEntryForwardStack.pop();e.selectedEntryStack.push(t),t.kind===r.Package?(e.filters[r.Project]=!1,e.filters[r.Package]=!0):(e.filters[r.Project]=!0,e.filters[r.Package]=!1)}},addBookmark:(e,t)=>{e.bookmarkedEntries.includes(t.payload)||(e.bookmarkedEntries.push(t.payload),(e=>{const t=e.rawEntryId,n=JSON.parse(localStorage.getItem(h)||"{}");n[t]=!0,localStorage.setItem(h,JSON.stringify(n))})(t.payload))},removeBookmark:(e,t)=>{e.bookmarkedEntries=e.bookmarkedEntries.filter((e=>e.rawEntryId!==t.payload.rawEntryId)),(e=>{const t=e.rawEntryId,n=JSON.parse(localStorage.getItem(h)||"{}");delete n[t],localStorage.setItem(h,JSON.stringify(n))})(t.payload)}}}),w=e=>e.entry.selectedEntryStack.length?e.entry.selectedEntryStack[e.entry.selectedEntryStack.length-1]:void 0,C=e=>{const t=[];return e.entry.filters[r.Package]?t.push(...e.entry.allEntries.filter((e=>e.kind===r.Package))):e.entry.filters[r.Project]&&t.push(...e.entry.allEntries.filter((e=>e.kind===r.Project))),t},{loadEntries:D,setFilter:b,clearStackAndPush:j,pushToStack:O,popStack:I,forwardStack:x,addBookmark:_,removeBookmark:A}=S.actions,T=S.reducer;const K=({options:e})=>c.createElement("div",{className:"b1H6mzJXpxsG350hyeU_"},e.map((e=>c.createElement("div",{key:e.text,className:"mWhs4CnCA0TKj6CRR8gk "+(e.active?"Q9WEwAuQb3UsVbcHr0oI":""),onClick:e.onClick},e.text)))),R=({group:e})=>{const t=f(w),n=y(),a=(0,c.useRef)(),r=(0,c.useCallback)((e=>()=>{n(O(e))}),[]);return(0,c.useEffect)((()=>{t&&t.entryPackageName===e.entryName&&a.current.scrollIntoView({behavior:"smooth"})}),[t,e]),c.createElement("div",{className:"OcndyDBetZor3ptzTnTX",ref:a},c.createElement("h5",null,e.entryName),e.versions.map((e=>c.createElement("div",{key:e.rawEntryId,onClick:r(e),className:"Wg5pG3RVf6SQ51i0tVkd "+((null==t?void 0:t.rawEntryId)===e.rawEntryId?"NBIr3yosJ9gX6LZcnC7T":"")},c.createElement("p",null,e.entryPackageVersion||e.entryPackageName," ",e.entrySuffix&&`[${e.entrySuffix}]`)))))},F=()=>{const e=y(),[t,n]=(0,c.useState)(""),[a,s]=(0,c.useState)(""),l=f(C),o=f((e=>e.entry.filters)),i=(0,c.useCallback)((e=>t=>{e===r.Project?n(t.target.value):s(t.target.value),((e,t)=>{t===r.Project?localStorage.setItem(g,e):localStorage.setItem(v,e)})(t.target.value,e)}),[]);if((0,c.useEffect)((()=>{n(P(r.Project)),s(P(r.Package))}),[]),!l)return E;const d=(0,c.useCallback)(((t,n)=>()=>{e(b({filter:t,state:n}))}),[]),p=(0,c.useCallback)((t=>()=>{t===r.Project?(e(b({filter:r.Project,state:!0})),e(b({filter:r.Package,state:!1}))):(e(b({filter:r.Package,state:!0})),e(b({filter:r.Project,state:!1})))}),[o]);return c.createElement("div",{className:"yk7wrFMnnNyYLABMBhz_"},c.createElement(K,{options:[{text:"Projects",active:o[r.Project],onClick:p(r.Project)},{text:"Packages",active:o[r.Package],onClick:p(r.Package)}]}),c.createElement("div",{className:"X00sOTmx1ir4Oc41DIvM HK80a6ZVkdxoTKzrP9Eq"},c.createElement("div",{className:"oq4FJVnF_fONdOKuiK0w"},c.createElement("input",{type:"search",placeholder:"Filter...",value:o[r.Project]?t:a,onChange:i(o[r.Project]?r.Project:r.Package)})),c.createElement("div",{className:"PoJj8_8xv9BXiMVPKFVE"},(()=>{let e=l;t&&o[r.Project]?e=l.filter((e=>-1!==e.entryPackageName.indexOf(t))):a&&o[r.Package]&&(e=l.filter((e=>-1!==e.entryPackageName.indexOf(a))));const n=e.reduce(((e,t)=>{const n=e[t.entryPackageName]||[];return n.push(t),e[t.entryPackageName]=n,e}),{});let c=[];for(const[e,t]of Object.entries(n))c.push({entryName:e,versions:t});return o[r.SideBySide]&&(c=c.filter((e=>e.versions.length>1))),o[r.Doppelganger]&&(c=c.filter((e=>(e=>{const t=new Set;for(const n of e){if(t.has(n.entryPackageVersion))return!0;t.add(n.entryPackageVersion)}return!1})(e.versions)))),c})().map((e=>c.createElement(R,{group:e,key:e.entryName})))),o[r.Package]?c.createElement("div",{className:"K6dDN5KzjLkbPPFWUaly"},c.createElement("h5",null,"Filters"),c.createElement("div",{className:m,onClick:d(r.SideBySide,!o[r.SideBySide])},c.createElement("input",{type:"checkbox",checked:o[r.SideBySide],readOnly:!0}),c.createElement("h5",null,"Must have side-by-side versions")),c.createElement("div",{className:m,onClick:d(r.Doppelganger,!o[r.Doppelganger])},c.createElement("input",{type:"checkbox",checked:o[r.Doppelganger],readOnly:!0}),c.createElement("h5",null,"Must have doppelgangers"))):null))},J=window.appContext.serviceUrl;var M="rXOH6AJQU2eYrNAXbp4V";const H={specChanges:new Map},V=(0,k.oM)({name:"workspace",initialState:H,reducers:{loadSpecChanges:(e,t)=>{e.specChanges=t.payload}}}),{loadSpecChanges:z}=V.actions,Y=V.reducer,G=(e,t)=>{var n;switch(null===(n=e.get(t))||void 0===n?void 0:n.type){case"add":return"[Added by .pnpmfile.cjs]";case"diff":return"[Changed from {specChanges.get(dep)?.from}]";case"remove":return"[Deleted by .pnpmfile.cjs]";default:return"No Change"}},L=(e,t)=>{if(!e)return!1;for(const n of e.dependencies)if(t.has(n.name))return!0;return!1};var Z;!function(e){e[e.PACKAGE_JSON=0]="PACKAGE_JSON",e[e.PACKAGE_SPEC=1]="PACKAGE_SPEC",e[e.PARSED_PACKAGE_JSON=2]="PARSED_PACKAGE_JSON"}(Z||(Z={}));const B=()=>{const e=y(),[t,n]=(0,c.useState)(void 0),[a,r]=(0,c.useState)(void 0),[s,o]=(0,c.useState)(""),i=f(w),d=f((e=>e.workspace.specChanges)),[p,m]=(0,c.useState)(Z.PARSED_PACKAGE_JSON),E=(0,c.useCallback)((e=>()=>m(e)),[]);(0,c.useEffect)((()=>{(async function(){const e=await(async()=>{try{const e=await fetch(`${J}/api/pnpmfile`);return await e.text()}catch(e){return console.error("Could not load cjs file: ",e),"Missing CJS"}})();o(e)})().catch((e=>{console.error(`Failed to load project's pnpm file: ${e}`)}))}),[]),(0,c.useEffect)((()=>{i&&(i.entryPackageName?async function(t){const a=await(async e=>{try{const t=await fetch(`${J}/api/package-json`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectPath:e})});return await t.json()}catch(e){return void console.error("Could not load package json file: ",e)}})(t);n(a);const c=await(async e=>{try{const t=await fetch(`${J}/api/package-spec`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectPath:e})});return await t.json()}catch(e){return void console.error("Could not load cjs file: ",e)}})(t);if(r(c),a&&c){const t=((e,t)=>{const n=new Map,a=new Map;for(const[t,a]of Object.entries(Object.assign(Object.assign(Object.assign({},e.dependencies),e.devDependencies),e.peerDependencies)))n.set(t,a);for(const[e,n]of Object.entries(Object.assign(Object.assign(Object.assign({},t.dependencies),t.devDependencies),t.peerDependencies)))a.set(e,n);const r=new Map;for(const e of n.keys())a.has(e)?a.get(e)!==n.get(e)&&r.set(e,{type:"diff",packageName:e,from:n.get(e),to:a.get(e)}):r.set(e,{type:"remove",packageName:e});for(const e of a.keys())n.has(e)||r.set(e,{type:"add",packageName:e});return r})(a,c);e(z(t))}}(i.packageJsonFolderPath).catch((e=>{console.error(`Failed to load project information: ${e}`)})):console.log("The selected entry has no entry name: ",i.entryPackageName))}),[i]);const u=e=>t=>{var n;const[a,r]=t;if(!d.has(a))return e?c.createElement("p",{key:a},a,":"):c.createElement("p",{key:a},r);switch(null===(n=d.get(a))||void 0===n?void 0:n.type){case"add":return e?c.createElement("p",{key:a},c.createElement("span",{className:"nTIc62ACgp5xMWIvZ4cn"},a)):c.createElement("p",{key:a},r," ",G(d,a));case"diff":return e?c.createElement("p",{key:a},c.createElement("span",{className:"I4A8ZZlpCL3Op0c53VjN"},a)):c.createElement("p",{key:a},r," ",G(d,a));case"remove":return e?c.createElement("p",{key:a},c.createElement("span",{className:"iavWjvHy9s5MhCZ_ncgb"},a)):c.createElement("p",{key:a},r," ",G(d,a));default:return e?c.createElement("p",{key:a},a,":"):c.createElement("p",{key:a},r)}};return c.createElement("div",{className:"kzgyQkswpx6xUEo4zOa8"},c.createElement(K,{options:[{text:"package spec "+(L(i,d)?"*":""),active:p===Z.PARSED_PACKAGE_JSON,onClick:E(Z.PARSED_PACKAGE_JSON)},{text:"package.json",active:p===Z.PACKAGE_JSON,onClick:E(Z.PACKAGE_JSON)},{text:".pnpmfile.cjs",active:p===Z.PACKAGE_SPEC,onClick:E(Z.PACKAGE_SPEC)}]}),c.createElement("div",{className:l},c.createElement("div",{className:"e2KEBfZCHwEMeH4j6wS7"},(()=>{switch(p){case Z.PACKAGE_JSON:return t?c.createElement("pre",null,JSON.stringify(t,null,2)):c.createElement("h5",null,"Please select a Project or Package to view it's package.json");case Z.PACKAGE_SPEC:return s?c.createElement("pre",null,s):c.createElement("h5",null,"Couldn't load the pnpmfile.cjs file - does it exist in the expected location? (/common/config/rush/.pnpmfile.cjs)");case Z.PARSED_PACKAGE_JSON:return a?c.createElement("div",{className:"Ko0YQxSlY0hCIDTfmNlr"},c.createElement("div",{className:M},c.createElement("h5",null,"Package Name:"),c.createElement("p",null,null==i?void 0:i.displayText)),c.createElement("div",{className:M},c.createElement("h5",null,"Version:"),c.createElement("p",null,null==i?void 0:i.entryPackageVersion)),c.createElement("div",{className:"hqNteMkwhYXuZqHE_8MJ"},c.createElement("div",null,c.createElement("h5",null,"Dependencies"),a.dependencies&&Object.entries(a.dependencies).map(u(!0)),c.createElement("h5",null,"Dev Dependencies"),a.devDependencies&&Object.entries(a.devDependencies).map(u(!0)),c.createElement("h5",null,"Peer Dependencies"),a.peerDependencies&&Object.entries(a.peerDependencies).map(u(!0))),c.createElement("div",null,c.createElement("h5",null," "),a.dependencies&&Object.entries(a.dependencies).map(u(!1)),c.createElement("h5",null," "),a.devDependencies&&Object.entries(a.devDependencies).map(u(!1)),c.createElement("h5",null," "),a.peerDependencies&&Object.entries(a.peerDependencies).map(u(!1))))):c.createElement("h5",null,"Please select a Project or Package to view the parsed package.json");default:return null}})())))};var X,q="_R50_3JsFs2FC9kVffQL",Q="mRQWdzXzOM1NpFUpYnhP",W="wzeVrHi3oyOhEe6qD3PX",$="lGp34XdOFjHfZNwiilgC";!function(e){e[e.Determinant=0]="Determinant",e[e.TransitiveReferrer=1]="TransitiveReferrer"}(X||(X={}));const U=()=>{var e,t;const n=f(w),r=f((e=>e.workspace.specChanges)),s=y(),[o,i]=(0,c.useState)(null),[d,p]=(0,c.useState)([]);(0,c.useEffect)((()=>{n&&i(null)}),[n]);const m=(0,c.useCallback)((e=>()=>{if(o&&o.entryId===e.entryId)e.resolvedEntry?s(O(e.resolvedEntry)):((...e)=>{window.appContext.debugMode&&console.log("Diagnostic: ",...e)})("No resolved entry for dependency:",e);else if(n){if(console.log("dependency to trace: ",e),i(e),e.dependencyType!==a.PEER_DEPENDENCY)return;const t=[n],r=new Set,c=new Set,s=new Set;for(s.add(n);t.length;){const n=t.pop();if(n)for(const a of n.referrers){let l=!1;for(const t of a.dependencies)if(t.name===e.name){r.add(a),l=!0;break}if(!l){a.transitivePeerDependencies.has(e.name)?c.add(a):console.error('Error analyzing influencers: A referrer appears to be missing its "transitivePeerDependencies" field in the YAML file: ',e,a,n);for(const e of n.referrers)s.has(e)||(t.push(e),s.add(e))}}}const l=[];for(const e of r.values())l.push({entry:e,type:X.Determinant});for(const e of c.values())l.push({entry:e,type:X.TransitiveReferrer});p(l)}}),[n,o]),u=(0,c.useCallback)((e=>()=>{console.log("going to entry: ",e),s(O(e))}),[n]);return n?c.createElement(c.Fragment,null,c.createElement("div",{className:"KWDuEbG1GmwLxFmPPppw"},c.createElement("div",{className:l},c.createElement("h5",null,"Direct Referrers"),c.createElement("div",{className:q},null===(e=n.referrers)||void 0===e?void 0:e.map((e=>c.createElement("div",{className:Q,key:e.rawEntryId,onClick:u(e)},c.createElement("h5",null,"Name: ",e.displayText),c.createElement("div",null,c.createElement("p",null,"Entry ID: ",e.rawEntryId))))))),c.createElement("div",{className:l},c.createElement("h5",null,"Direct Dependencies"),c.createElement("div",{className:q},null===(t=n.dependencies)||void 0===t?void 0:t.map((e=>c.createElement("div",{className:`mRQWdzXzOM1NpFUpYnhP ${(null==o?void 0:o.entryId)===e.entryId&&"GbZbP1wHbcReGrxpZ3Ra"}`,key:e.entryId||e.name,onClick:m(e)},c.createElement("h5",null,"Name: ",e.name," ",e.dependencyType===a.PEER_DEPENDENCY?(e.peerDependencyMeta.optional?"(Optional)":"(Non-optional)")+" Peer Dependency":""),c.createElement("div",null,c.createElement("p",null,"Version: ",e.version),c.createElement("p",null,"Entry ID: ",e.entryId)))))))),o?c.createElement("div",{className:"HK80a6ZVkdxoTKzrP9Eq xSxHmjxIXTOSskLhma3A"},c.createElement("div",{className:$},c.createElement("h5",null,"Selected Dependency: "),c.createElement("span",null,o.name,": ",o.version)),c.createElement("div",{className:$},c.createElement("h5",null,"package.json spec: "),c.createElement("span",null,o.dependencyType===a.PEER_DEPENDENCY?`"${o.peerDependencyMeta.version}" ${o.peerDependencyMeta.optional?"Optional":"Required"} Peer`:o.version)),c.createElement("div",{className:$},c.createElement("h5",null,".pnpmfile.cjs: "),c.createElement("span",null,r.has(o.name)?G(r,o.name):"No Effect"))):E,n?n.dependencies.filter((e=>e.dependencyType===a.PEER_DEPENDENCY)).length?o&&o.dependencyType===a.PEER_DEPENDENCY?c.createElement("div",{className:"HK80a6ZVkdxoTKzrP9Eq rIv2KvSZ0CKMbctSHL04"},c.createElement("h5",null,"Determinants:"),d.filter((e=>e.type===X.Determinant)).map((({entry:e})=>c.createElement("a",{className:W,key:e.rawEntryId,onClick:u(e)},e.displayText))),c.createElement("h5",null,"Transitive Referencers:"),d.filter((e=>e.type===X.TransitiveReferrer)).map((({entry:e})=>c.createElement("a",{className:W,key:e.rawEntryId,onClick:u(e)},e.displayText)))):c.createElement("div",{className:"HK80a6ZVkdxoTKzrP9Eq rIv2KvSZ0CKMbctSHL04"},c.createElement("h5",null,"Select a peer dependency to view its influencers")):c.createElement("div",{className:"HK80a6ZVkdxoTKzrP9Eq rIv2KvSZ0CKMbctSHL04"},c.createElement("h5",null,"No peer dependencies.")):E):c.createElement("div",{className:"HK80a6ZVkdxoTKzrP9Eq rIv2KvSZ0CKMbctSHL04"},c.createElement("h5",null,"Select an entry to view its details"))};const ee=()=>{const e=f((e=>e.entry.bookmarkedEntries)),t=y(),n=(0,c.useCallback)((e=>()=>{t(j(e))}),[]),a=(0,c.useCallback)((e=>()=>{t(A(e))}),[]);return c.createElement("div",{className:"HK80a6ZVkdxoTKzrP9Eq aM5oGgiHs9rRHcHdAqFh"},c.createElement("h5",null,"Bookmarks"),c.createElement("hr",null),e.map((e=>c.createElement("div",{key:e.rawEntryId,className:"Ci1rEoM4eR29ZJcnvJJE"},c.createElement("p",{onClick:n(e)},e.displayText),c.createElement("button",{onClick:a(e)},"Remove")))))};var te="dklLbMzvzbuzLd2XJh3W",ne="vJvmAdZ2VafvyXjc16Mz";const ae=()=>{const e=f(w),t=f((t=>!!e&&t.entry.bookmarkedEntries.includes(e))),n=f((e=>e.entry.selectedEntryStack)),a=f((e=>e.entry.selectedEntryForwardStack)),r=y(),s=(0,c.useCallback)((()=>{e&&r(_(e))}),[e]),l=(0,c.useCallback)((()=>{e&&r(A(e))}),[e]),o=(0,c.useCallback)((()=>{r(I())}),[]),i=(0,c.useCallback)((()=>{r(x())}),[]),d=()=>c.createElement("div",{className:"LkGUkEuAC1lrNLYWXZAB"},c.createElement("button",{disabled:n.length<=1,onClick:o},"Back"),c.createElement("button",{disabled:0===a.length,onClick:i},"Forward"),t?c.createElement("button",{onClick:l,disabled:!e},"Remove Bookmark"):c.createElement("button",{onClick:s,disabled:!e},"Add Bookmark"));return e?c.createElement("div",{className:te},c.createElement("div",{className:ne},c.createElement("div",{className:"Hd2WYHIwrFrldD0I8qDj"},c.createElement("h5",null,"Selected entry:"),c.createElement("span",null,e.displayText)),d()),c.createElement("div",null,c.createElement("p",null,"Package Entry: ",e.rawEntryId),c.createElement("p",null,"Package JSON path: ",e.packageJsonFolderPath))):c.createElement("div",{className:te},c.createElement("div",{className:ne},c.createElement("h5",null,"No Entry Selected"),d()))};var re="wR2C2OTixe7QR738j44h",ce="Oo_rkIqOkO0j8slDAm5V";const se=()=>{const e=window.appContext.appVersion;return c.createElement("div",{className:"mqcpXwTQfD4A2eS4QRMa"},c.createElement("div",{className:"gxAXHLK7j_oYpFDmIJLR"},c.createElement("img",{className:re,src:n(769)})),c.createElement("div",null,c.createElement("a",{href:"https://www.npmjs.com/package/@rushstack/lockfile-explorer",target:"_blank",rel:"noreferrer"},c.createElement("div",{className:"rHArsuIMBTbIFs5o2cuw"},c.createElement("img",{className:re,src:n(500)})),c.createElement("div",{className:"P6XzPBuW8Osze59RSui1"},c.createElement("img",{className:re,src:n(126)})),c.createElement("div",{className:ce},e)),c.createElement("a",{href:"https://rushstack.io/",target:"_blank",rel:"noreferrer"},c.createElement("div",{className:ce},"rushstack.io"))))},le=(0,k.xC)({reducer:{entry:T,workspace:Y},middleware:e=>e({serializableCheck:!1})}),oe=document.getElementById("root");s.render(c.createElement(u.zt,{store:le},c.createElement((()=>{const e=y();return(0,c.useEffect)((()=>{(async function(){const t=await(async()=>{const e=await fetch(`${p}/`);return(e=>{const t=[],n={},c=[];if(e.importers)for(const[a,s]of Object.entries(e.importers)){const e=new d({rawEntryId:a,kind:r.Project,rawYamlData:s});c.push(e),t.push(e),n[e.entryId]=e}const s=[];if(e.packages)for(const[a,c]of Object.entries(e.packages)){const e=new d({rawEntryId:a,kind:r.Package,rawYamlData:c});s.push(e),t.push(e),n[a]=e}for(const e of t)for(const t of e.dependencies){if(t.dependencyType===a.PEER_DEPENDENCY)continue;const r=n[t.entryId];r?(t.resolvedEntry=r,r.referrers.push(e)):console.error("Could not resolve dependency entryId: ",t.entryId)}return t})(await e.json())})();e(D(t))})().catch((e=>{console.log(`Failed to read lockfile: ${e}`)}))}),[]),c.createElement("div",{className:"uXEYthi0e8fjYu_FisVm"},c.createElement("div",{className:"ms-Grid",dir:"ltr"},c.createElement("div",{className:"ms-Grid-row"},c.createElement("div",{className:"ms-Grid-col ms-sm3 HqAzbQwu1zc9yH8ZQESI"},c.createElement(F,null)),c.createElement("div",{className:"ms-Grid-col ms-sm7 HqAzbQwu1zc9yH8ZQESI"},c.createElement(ae,null),c.createElement(B,null),c.createElement(U,null)),c.createElement("div",{className:"ms-Grid-col ms-sm2 HqAzbQwu1zc9yH8ZQESI"},c.createElement(se,null),c.createElement(ee,null)))))}),null)),oe)},769:function(e,t,n){e.exports=n.p+"d39919ddc699d58b84ba.svg"},500:function(e,t,n){e.exports=n.p+"d13d30e9b42faf842d2f.svg"},126:function(e,t,n){e.exports=n.p+"510f03f81080fd3cfd63.svg"}},n={};function a(e){var r=n[e];if(void 0!==r)return r.exports;var c=n[e]={exports:{}};return t[e](c,c.exports,a),c.exports}a.m=t,e=[],a.O=function(t,n,r,c){if(!n){var s=1/0;for(d=0;d<e.length;d++){n=e[d][0],r=e[d][1],c=e[d][2];for(var l=!0,o=0;o<n.length;o++)(!1&c||s>=c)&&Object.keys(a.O).every((function(e){return a.O[e](n[o])}))?n.splice(o--,1):(l=!1,c<s&&(s=c));if(l){e.splice(d--,1);var i=r();void 0!==i&&(t=i)}}return t}c=c||0;for(var d=e.length;d>0&&e[d-1][2]>c;d--)e[d]=e[d-1];e[d]=[n,r,c]},a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");n.length&&(e=n[n.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e}(),function(){var e={143:0};a.O.j=function(t){return 0===e[t]};var t=function(t,n){var r,c,s=n[0],l=n[1],o=n[2],i=0;if(s.some((function(t){return 0!==e[t]}))){for(r in l)a.o(l,r)&&(a.m[r]=l[r]);if(o)var d=o(a)}for(t&&t(n);i<s.length;i++)c=s[i],a.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return a.O(d)},n=self.webpackChunk_rushstack_lockfile_explorer_web=self.webpackChunk_rushstack_lockfile_explorer_web||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var r=a.O(void 0,[671],(function(){return a(302)}));r=a.O(r)}();
package/dist/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>Lockfile Explorer</title><link rel="stylesheet" href="https://static2.sharepointonline.com/files/fabric/office-ui-fabric-core/11.0.0/css/fabric.min.css"/><script defer="defer" src="initappcontext.js"></script><script defer="defer" src="671.7d28fb3bed4d33f53049.js"></script><script defer="defer" src="app.d95bf1e71ba0734b9b85.js"></script><link href="app.f193c3b9231f507f3e67.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>Lockfile Explorer</title><link rel="stylesheet" href="https://static2.sharepointonline.com/files/fabric/office-ui-fabric-core/11.0.0/css/fabric.min.css"/><script defer="defer" src="initappcontext.js"></script><script defer="defer" src="671.7d28fb3bed4d33f53049.js"></script><script defer="defer" src="app.48f7b68cf05abead55be.js"></script><link href="app.2b5b5aa7d1365fb07d47.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rushstack/lockfile-explorer",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Rush Lockfile Explorer: The UI for solving version conflicts quickly in a large monorepo",
5
5
  "keywords": [
6
6
  "conflict",
@@ -28,8 +28,8 @@
28
28
  },
29
29
  "devDependencies": {
30
30
  "@rushstack/eslint-config": "3.1.1",
31
- "@rushstack/heft-node-rig": "1.11.8",
32
- "@rushstack/heft": "0.48.8",
31
+ "@rushstack/heft-node-rig": "1.11.10",
32
+ "@rushstack/heft": "0.48.9",
33
33
  "@rushstack/lockfile-explorer-web": "0.0.0",
34
34
  "@types/express": "4.17.13",
35
35
  "@types/heft-jest": "1.0.1",
@@ -1 +0,0 @@
1
- !function(){"use strict";var e,t={302:function(e,t,n){var a,r,c=n(823),s=n(998),l="HK80a6ZVkdxoTKzrP9Eq",o=n(201);!function(e){e[e.DEPENDENCY=0]="DEPENDENCY",e[e.DEV_DEPENDENCY=1]="DEV_DEPENDENCY",e[e.PEER_DEPENDENCY=2]="PEER_DEPENDENCY"}(a||(a={}));class i{constructor(e,t,n,r,c){if(this.entryId="",this.name=e,this.version=t,this.dependencyType=n,this.containingEntry=r,this.peerDependencyMeta={},this.version.startsWith("link:")){const t=this.version.substring("link:".length),n=new o.y(".").relative(new o.y(r.packageJsonFolderPath).concat(t));if(!n)return void console.error("No root relative path for dependency!",e);this.entryId="project:"+n.toString()}else this.version.startsWith("/")?this.entryId=this.version:this.dependencyType===a.PEER_DEPENDENCY?(null==c?void 0:c.peerDependencies)?(this.peerDependencyMeta={name:this.name,version:c.peerDependencies[this.name],optional:!(!c.peerDependenciesMeta||!c.peerDependenciesMeta[this.name])&&c.peerDependenciesMeta[this.name].optional},this.entryId="Peer: "+this.name):console.error("Peer dependencies info missing!",c):this.entryId="/"+this.name+"/"+this.version}static parseDependencies(e,t,n){if(n.dependencies)for(const[r,c]of Object.entries(n.dependencies))e.push(new i(r,c,a.DEPENDENCY,t));if(n.devDependencies)for(const[r,c]of Object.entries(n.devDependencies))e.push(new i(r,c,a.DEV_DEPENDENCY,t));if(n.peerDependencies)for(const[r,c]of Object.entries(n.peerDependencies))e.push(new i(r,c,a.PEER_DEPENDENCY,t,n));if(n.transitivePeerDependencies)for(const e of n.transitivePeerDependencies)t.transitivePeerDependencies.add(e)}}!function(e){e[e.Project=0]="Project",e[e.Package=1]="Package",e[e.SideBySide=2]="SideBySide",e[e.Doppelganger=3]="Doppelganger"}(r||(r={}));class d{constructor(e){this.entryId="",this.packageJsonFolderPath="",this.entryPackageName="",this.displayText="",this.dependencies=[],this.transitivePeerDependencies=new Set,this.referrers=[],this.entryPackageVersion="",this.entrySuffix="";const{rawEntryId:t,kind:n,rawYamlData:a}=e;if(this.rawEntryId=t,this.kind=n,"."!==t){if(n===r.Project){const e=new o.y("common/temp/package.json").dirname()||"",n=new o.y(".").relative(new o.y(e).concat(t)),a=new o.y(t).basename();if(!n||!a)return void console.error("Could not construct path for entry: ",t);this.packageJsonFolderPath=n.toString(),this.entryId="project:"+this.packageJsonFolderPath,this.entryPackageName=a.toString(),this.displayText="Project: "+this.entryPackageName}else{this.displayText=t;const e=d._packageEntryIdRegex.exec(t);if(e){const[,t,n]=e;this.entryPackageName=t;const a=n.indexOf("_");if(a>=0){const e=n.substring(0,a),r=n.substring(a+1);this.entryPackageVersion=e,this.entrySuffix=r,this.displayText=t+" "+e+" ("+r+")"}else this.entryPackageVersion=n,this.displayText=t+" "+n}this.packageJsonFolderPath="common/temp/node_modules/.pnpm/"+this.entryPackageName.replace("/","+")+"@"+this.entryPackageVersion+(this.entrySuffix?`_${this.entrySuffix}`:"")+"/node_modules/"+this.entryPackageName}i.parseDependencies(this.dependencies,this,a)}}}d._packageEntryIdRegex=new RegExp("/(.*)/([^/]+)$");const p=window.appContext.serviceUrl;var m="IWEAxDEzQLw3g5TI_6up";const E=null;var u=n(300);const y=u.I0,f=u.v9;var k=n(329);const h="LOCKFILE_EXPLORER_BOOKMARKS",g="LOCKFILE_EXPLORER_PROJECT_FILTER",v="LOCKFILE_EXPLORER_PACKAGE_FILTER",P=e=>e===r.Project?localStorage.getItem(g)||"":localStorage.getItem(v)||"",N={allEntries:[],filters:{[r.Project]:!1,[r.Package]:!0,[r.SideBySide]:!1,[r.Doppelganger]:!1},selectedEntryStack:[],selectedEntryForwardStack:[],bookmarkedEntries:[]},S=(0,k.oM)({name:"entry",initialState:N,reducers:{loadEntries:(e,t)=>{e.allEntries=t.payload;const n=(()=>{const e=JSON.parse(localStorage.getItem(h)||"{}"),t=new Set;for(const n of Object.keys(e))t.add(n);return t})();for(const a of t.payload)n.has(a.rawEntryId)&&e.bookmarkedEntries.push(a)},setFilter:(e,t)=>{e.filters[t.payload.filter]=t.payload.state},clearStackAndPush:(e,t)=>{e.selectedEntryStack=[t.payload],e.selectedEntryForwardStack=[]},pushToStack:(e,t)=>{e.selectedEntryStack.push(t.payload),e.selectedEntryForwardStack=[],t.payload.kind===r.Package?(e.filters[r.Project]=!1,e.filters[r.Package]=!0):(e.filters[r.Project]=!0,e.filters[r.Package]=!1)},popStack:e=>{if(e.selectedEntryStack.length>1){const t=e.selectedEntryStack.pop();e.selectedEntryForwardStack.push(t),e.selectedEntryStack.length>=1&&(e.selectedEntryStack[e.selectedEntryStack.length-1].kind===r.Package?(e.filters[r.Project]=!1,e.filters[r.Package]=!0):(e.filters[r.Project]=!0,e.filters[r.Package]=!1))}},forwardStack:e=>{if(e.selectedEntryForwardStack.length>0){const t=e.selectedEntryForwardStack.pop();e.selectedEntryStack.push(t),t.kind===r.Package?(e.filters[r.Project]=!1,e.filters[r.Package]=!0):(e.filters[r.Project]=!0,e.filters[r.Package]=!1)}},addBookmark:(e,t)=>{e.bookmarkedEntries.includes(t.payload)||(e.bookmarkedEntries.push(t.payload),(e=>{const t=e.rawEntryId,n=JSON.parse(localStorage.getItem(h)||"{}");n[t]=!0,localStorage.setItem(h,JSON.stringify(n))})(t.payload))},removeBookmark:(e,t)=>{e.bookmarkedEntries=e.bookmarkedEntries.filter((e=>e.rawEntryId!==t.payload.rawEntryId)),(e=>{const t=e.rawEntryId,n=JSON.parse(localStorage.getItem(h)||"{}");delete n[t],localStorage.setItem(h,JSON.stringify(n))})(t.payload)}}}),w=e=>e.entry.selectedEntryStack.length?e.entry.selectedEntryStack[e.entry.selectedEntryStack.length-1]:void 0,C=e=>{const t=[];return e.entry.filters[r.Package]?t.push(...e.entry.allEntries.filter((e=>e.kind===r.Package))):e.entry.filters[r.Project]&&t.push(...e.entry.allEntries.filter((e=>e.kind===r.Project))),t},{loadEntries:D,setFilter:b,clearStackAndPush:j,pushToStack:O,popStack:I,forwardStack:x,addBookmark:_,removeBookmark:A}=S.actions,T=S.reducer;const K=({options:e})=>c.createElement("div",{className:"b1H6mzJXpxsG350hyeU_"},e.map((e=>c.createElement("div",{key:e.text,className:"mWhs4CnCA0TKj6CRR8gk "+(e.active?"Q9WEwAuQb3UsVbcHr0oI":""),onClick:e.onClick},e.text)))),R=({group:e})=>{const t=f(w),n=y(),a=(0,c.useRef)(),r=(0,c.useCallback)((e=>()=>{n(O(e))}),[]);return(0,c.useEffect)((()=>{t&&t.entryPackageName===e.entryName&&a.current.scrollIntoView({behavior:"smooth"})}),[t,e]),c.createElement("div",{className:"OcndyDBetZor3ptzTnTX",ref:a},c.createElement("h5",null,e.entryName),e.versions.map((e=>c.createElement("div",{key:e.rawEntryId,onClick:r(e),className:"Wg5pG3RVf6SQ51i0tVkd "+((null==t?void 0:t.rawEntryId)===e.rawEntryId?"NBIr3yosJ9gX6LZcnC7T":"")},c.createElement("p",null,e.entryPackageVersion||e.entryPackageName," ",e.entrySuffix&&`[${e.entrySuffix}]`)))))},F=()=>{const e=y(),[t,n]=(0,c.useState)(""),[a,s]=(0,c.useState)(""),l=f(C),o=f((e=>e.entry.filters)),i=(0,c.useCallback)((e=>t=>{e===r.Project?n(t.target.value):s(t.target.value),((e,t)=>{t===r.Project?localStorage.setItem(g,e):localStorage.setItem(v,e)})(t.target.value,e)}),[]);if((0,c.useEffect)((()=>{n(P(r.Project)),s(P(r.Package))}),[]),!l)return E;const d=(0,c.useCallback)(((t,n)=>()=>{e(b({filter:t,state:n}))}),[]),p=(0,c.useCallback)((t=>()=>{t===r.Project?(e(b({filter:r.Project,state:!0})),e(b({filter:r.Package,state:!1}))):(e(b({filter:r.Package,state:!0})),e(b({filter:r.Project,state:!1})))}),[o]);return c.createElement("div",{className:"yk7wrFMnnNyYLABMBhz_"},c.createElement(K,{options:[{text:"Projects",active:o[r.Project],onClick:p(r.Project)},{text:"Packages",active:o[r.Package],onClick:p(r.Package)}]}),c.createElement("div",{className:"X00sOTmx1ir4Oc41DIvM HK80a6ZVkdxoTKzrP9Eq"},c.createElement("div",{className:"oq4FJVnF_fONdOKuiK0w"},c.createElement("h5",null,"Filter:"),c.createElement("input",{type:"text",value:o[r.Project]?t:a,onChange:i(o[r.Project]?r.Project:r.Package)})),c.createElement("div",{className:"PoJj8_8xv9BXiMVPKFVE"},(()=>{let e=l;t&&o[r.Project]?e=l.filter((e=>-1!==e.entryPackageName.indexOf(t))):a&&o[r.Package]&&(e=l.filter((e=>-1!==e.entryPackageName.indexOf(a))));const n=e.reduce(((e,t)=>{const n=e[t.entryPackageName]||[];return n.push(t),e[t.entryPackageName]=n,e}),{});let c=[];for(const[e,t]of Object.entries(n))c.push({entryName:e,versions:t});return o[r.SideBySide]&&(c=c.filter((e=>e.versions.length>1))),o[r.Doppelganger]&&(c=c.filter((e=>(e=>{const t=new Set;for(const n of e){if(t.has(n.entryPackageVersion))return!0;t.add(n.entryPackageVersion)}return!1})(e.versions)))),c})().map((e=>c.createElement(R,{group:e,key:e.entryName})))),o[r.Package]?c.createElement("div",{className:"K6dDN5KzjLkbPPFWUaly"},c.createElement("h5",null,"Filters"),c.createElement("div",{className:m,onClick:d(r.SideBySide,!o[r.SideBySide])},c.createElement("input",{type:"checkbox",checked:o[r.SideBySide],readOnly:!0}),c.createElement("h5",null,"Must have side-by-side versions")),c.createElement("div",{className:m,onClick:d(r.Doppelganger,!o[r.Doppelganger])},c.createElement("input",{type:"checkbox",checked:o[r.Doppelganger],readOnly:!0}),c.createElement("h5",null,"Must have doppelgangers"))):null))},J=window.appContext.serviceUrl;var M="rXOH6AJQU2eYrNAXbp4V";const H={specChanges:new Map},V=(0,k.oM)({name:"workspace",initialState:H,reducers:{loadSpecChanges:(e,t)=>{e.specChanges=t.payload}}}),{loadSpecChanges:z}=V.actions,Y=V.reducer,G=(e,t)=>{var n;switch(null===(n=e.get(t))||void 0===n?void 0:n.type){case"add":return"[Added by .pnpmfile.cjs]";case"diff":return"[Changed from {specChanges.get(dep)?.from}]";case"remove":return"[Deleted by .pnpmfile.cjs]";default:return"No Change"}},L=(e,t)=>{if(!e)return!1;for(const n of e.dependencies)if(t.has(n.name))return!0;return!1};var Z;!function(e){e[e.PACKAGE_JSON=0]="PACKAGE_JSON",e[e.PACKAGE_SPEC=1]="PACKAGE_SPEC",e[e.PARSED_PACKAGE_JSON=2]="PARSED_PACKAGE_JSON"}(Z||(Z={}));const B=()=>{const e=y(),[t,n]=(0,c.useState)(void 0),[a,r]=(0,c.useState)(void 0),[s,o]=(0,c.useState)(""),i=f(w),d=f((e=>e.workspace.specChanges)),[p,m]=(0,c.useState)(Z.PARSED_PACKAGE_JSON),E=(0,c.useCallback)((e=>()=>m(e)),[]);(0,c.useEffect)((()=>{(async function(){const e=await(async()=>{try{const e=await fetch(`${J}/api/pnpmfile`);return await e.text()}catch(e){return console.error("Could not load cjs file: ",e),"Missing CJS"}})();o(e)})().catch((e=>{console.error(`Failed to load project's pnpm file: ${e}`)}))}),[]),(0,c.useEffect)((()=>{i&&(i.entryPackageName?async function(t){const a=await(async e=>{try{const t=await fetch(`${J}/api/package-json`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectPath:e})});return await t.json()}catch(e){return void console.error("Could not load package json file: ",e)}})(t);n(a);const c=await(async e=>{try{const t=await fetch(`${J}/api/package-spec`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectPath:e})});return await t.json()}catch(e){return void console.error("Could not load cjs file: ",e)}})(t);if(r(c),a&&c){const t=((e,t)=>{const n=new Map,a=new Map;for(const[t,a]of Object.entries(Object.assign(Object.assign(Object.assign({},e.dependencies),e.devDependencies),e.peerDependencies)))n.set(t,a);for(const[e,n]of Object.entries(Object.assign(Object.assign(Object.assign({},t.dependencies),t.devDependencies),t.peerDependencies)))a.set(e,n);const r=new Map;for(const e of n.keys())a.has(e)?a.get(e)!==n.get(e)&&r.set(e,{type:"diff",packageName:e,from:n.get(e),to:a.get(e)}):r.set(e,{type:"remove",packageName:e});for(const e of a.keys())n.has(e)||r.set(e,{type:"add",packageName:e});return r})(a,c);e(z(t))}}(i.packageJsonFolderPath).catch((e=>{console.error(`Failed to load project information: ${e}`)})):console.log("The selected entry has no entry name: ",i.entryPackageName))}),[i]);const u=e=>t=>{var n;const[a,r]=t;if(!d.has(a))return e?c.createElement("p",{key:a},a,":"):c.createElement("p",{key:a},r);switch(null===(n=d.get(a))||void 0===n?void 0:n.type){case"add":return e?c.createElement("p",{key:a},c.createElement("span",{className:"nTIc62ACgp5xMWIvZ4cn"},a)):c.createElement("p",{key:a},r," ",G(d,a));case"diff":return e?c.createElement("p",{key:a},c.createElement("span",{className:"I4A8ZZlpCL3Op0c53VjN"},a)):c.createElement("p",{key:a},r," ",G(d,a));case"remove":return e?c.createElement("p",{key:a},c.createElement("span",{className:"iavWjvHy9s5MhCZ_ncgb"},a)):c.createElement("p",{key:a},r," ",G(d,a));default:return e?c.createElement("p",{key:a},a,":"):c.createElement("p",{key:a},r)}};return c.createElement("div",{className:"kzgyQkswpx6xUEo4zOa8"},c.createElement(K,{options:[{text:"package spec "+(L(i,d)?"*":""),active:p===Z.PARSED_PACKAGE_JSON,onClick:E(Z.PARSED_PACKAGE_JSON)},{text:"package.json",active:p===Z.PACKAGE_JSON,onClick:E(Z.PACKAGE_JSON)},{text:".pnpmfile.cjs",active:p===Z.PACKAGE_SPEC,onClick:E(Z.PACKAGE_SPEC)}]}),c.createElement("div",{className:l},c.createElement("div",{className:"e2KEBfZCHwEMeH4j6wS7"},(()=>{switch(p){case Z.PACKAGE_JSON:return t?c.createElement("pre",null,JSON.stringify(t,null,2)):c.createElement("h5",null,"Please select a Project or Package to view it's package.json");case Z.PACKAGE_SPEC:return s?c.createElement("pre",null,s):c.createElement("h5",null,"Couldn't load the pnpmfile.cjs file - does it exist in the expected location? (/common/config/rush/.pnpmfile.cjs)");case Z.PARSED_PACKAGE_JSON:return a?c.createElement("div",{className:"Ko0YQxSlY0hCIDTfmNlr"},c.createElement("div",{className:M},c.createElement("h5",null,"Package Name:"),c.createElement("p",null,null==i?void 0:i.displayText)),c.createElement("div",{className:M},c.createElement("h5",null,"Version:"),c.createElement("p",null,null==i?void 0:i.entryPackageVersion)),c.createElement("div",{className:"hqNteMkwhYXuZqHE_8MJ"},c.createElement("div",null,c.createElement("h5",null,"Dependencies"),a.dependencies&&Object.entries(a.dependencies).map(u(!0)),c.createElement("h5",null,"Dev Dependencies"),a.devDependencies&&Object.entries(a.devDependencies).map(u(!0)),c.createElement("h5",null,"Peer Dependencies"),a.peerDependencies&&Object.entries(a.peerDependencies).map(u(!0))),c.createElement("div",null,c.createElement("h5",null," "),a.dependencies&&Object.entries(a.dependencies).map(u(!1)),c.createElement("h5",null," "),a.devDependencies&&Object.entries(a.devDependencies).map(u(!1)),c.createElement("h5",null," "),a.peerDependencies&&Object.entries(a.peerDependencies).map(u(!1))))):c.createElement("h5",null,"Please select a Project or Package to view the parsed package.json");default:return null}})())))};var X,q="_R50_3JsFs2FC9kVffQL",Q="mRQWdzXzOM1NpFUpYnhP",W="wzeVrHi3oyOhEe6qD3PX",$="lGp34XdOFjHfZNwiilgC";!function(e){e[e.Determinant=0]="Determinant",e[e.TransitiveReferrer=1]="TransitiveReferrer"}(X||(X={}));const U=()=>{var e,t;const n=f(w),r=f((e=>e.workspace.specChanges)),s=y(),[o,i]=(0,c.useState)(null),[d,p]=(0,c.useState)([]);(0,c.useEffect)((()=>{n&&i(null)}),[n]);const m=(0,c.useCallback)((e=>()=>{if(o&&o.entryId===e.entryId)e.resolvedEntry?s(O(e.resolvedEntry)):((...e)=>{window.appContext.debugMode&&console.log("Diagnostic: ",...e)})("No resolved entry for dependency:",e);else if(n){if(console.log("dependency to trace: ",e),i(e),e.dependencyType!==a.PEER_DEPENDENCY)return;const t=[n],r=new Set,c=new Set,s=new Set;for(s.add(n);t.length;){const n=t.pop();if(n)for(const a of n.referrers){let l=!1;for(const t of a.dependencies)if(t.name===e.name){r.add(a),l=!0;break}if(!l){a.transitivePeerDependencies.has(e.name)?c.add(a):console.error('Error analyzing influencers: A referrer appears to be missing its "transitivePeerDependencies" field in the YAML file: ',e,a,n);for(const e of n.referrers)s.has(e)||(t.push(e),s.add(e))}}}const l=[];for(const e of r.values())l.push({entry:e,type:X.Determinant});for(const e of c.values())l.push({entry:e,type:X.TransitiveReferrer});p(l)}}),[n,o]),u=(0,c.useCallback)((e=>()=>{console.log("going to entry: ",e),s(O(e))}),[n]);return n?c.createElement(c.Fragment,null,c.createElement("div",{className:"KWDuEbG1GmwLxFmPPppw"},c.createElement("div",{className:l},c.createElement("h5",null,"Direct Referrers"),c.createElement("div",{className:q},null===(e=n.referrers)||void 0===e?void 0:e.map((e=>c.createElement("div",{className:Q,key:e.rawEntryId,onClick:u(e)},c.createElement("h5",null,"Name: ",e.displayText),c.createElement("div",null,c.createElement("p",null,"Entry ID: ",e.rawEntryId))))))),c.createElement("div",{className:l},c.createElement("h5",null,"Direct Dependencies"),c.createElement("div",{className:q},null===(t=n.dependencies)||void 0===t?void 0:t.map((e=>c.createElement("div",{className:`mRQWdzXzOM1NpFUpYnhP ${(null==o?void 0:o.entryId)===e.entryId&&"GbZbP1wHbcReGrxpZ3Ra"}`,key:e.entryId||e.name,onClick:m(e)},c.createElement("h5",null,"Name: ",e.name," ",e.dependencyType===a.PEER_DEPENDENCY?(e.peerDependencyMeta.optional?"(Optional)":"(Non-optional)")+" Peer Dependency":""),c.createElement("div",null,c.createElement("p",null,"Version: ",e.version),c.createElement("p",null,"Entry ID: ",e.entryId)))))))),o?c.createElement("div",{className:"HK80a6ZVkdxoTKzrP9Eq xSxHmjxIXTOSskLhma3A"},c.createElement("div",{className:$},c.createElement("h5",null,"Selected Dependency: "),c.createElement("span",null,o.name,": ",o.version)),c.createElement("div",{className:$},c.createElement("h5",null,"package.json spec: "),c.createElement("span",null,o.dependencyType===a.PEER_DEPENDENCY?`"${o.peerDependencyMeta.version}" ${o.peerDependencyMeta.optional?"Optional":"Required"} Peer`:o.version)),c.createElement("div",{className:$},c.createElement("h5",null,".pnpmfile.cjs: "),c.createElement("span",null,r.has(o.name)?G(r,o.name):"No Effect"))):E,n?n.dependencies.filter((e=>e.dependencyType===a.PEER_DEPENDENCY)).length?o&&o.dependencyType===a.PEER_DEPENDENCY?c.createElement("div",{className:"HK80a6ZVkdxoTKzrP9Eq rIv2KvSZ0CKMbctSHL04"},c.createElement("h5",null,"Determinants:"),d.filter((e=>e.type===X.Determinant)).map((({entry:e})=>c.createElement("a",{className:W,key:e.rawEntryId,onClick:u(e)},e.displayText))),c.createElement("h5",null,"Transitive Referencers:"),d.filter((e=>e.type===X.TransitiveReferrer)).map((({entry:e})=>c.createElement("a",{className:W,key:e.rawEntryId,onClick:u(e)},e.displayText)))):c.createElement("div",{className:"HK80a6ZVkdxoTKzrP9Eq rIv2KvSZ0CKMbctSHL04"},c.createElement("h5",null,"Select a peer dependency to view its influencers")):c.createElement("div",{className:"HK80a6ZVkdxoTKzrP9Eq rIv2KvSZ0CKMbctSHL04"},c.createElement("h5",null,"No peer dependencies.")):E):c.createElement("div",{className:"HK80a6ZVkdxoTKzrP9Eq rIv2KvSZ0CKMbctSHL04"},c.createElement("h5",null,"Select an entry to view its details"))};const ee=()=>{const e=f((e=>e.entry.bookmarkedEntries)),t=y(),n=(0,c.useCallback)((e=>()=>{t(j(e))}),[]),a=(0,c.useCallback)((e=>()=>{t(A(e))}),[]);return c.createElement("div",{className:"HK80a6ZVkdxoTKzrP9Eq aM5oGgiHs9rRHcHdAqFh"},c.createElement("h5",null,"Bookmarks"),c.createElement("hr",null),e.map((e=>c.createElement("div",{key:e.rawEntryId,className:"Ci1rEoM4eR29ZJcnvJJE"},c.createElement("p",{onClick:n(e)},e.displayText),c.createElement("button",{onClick:a(e)},"Remove")))))};var te="dklLbMzvzbuzLd2XJh3W",ne="vJvmAdZ2VafvyXjc16Mz";const ae=()=>{const e=f(w),t=f((t=>!!e&&t.entry.bookmarkedEntries.includes(e))),n=f((e=>e.entry.selectedEntryStack)),a=f((e=>e.entry.selectedEntryForwardStack)),r=y(),s=(0,c.useCallback)((()=>{e&&r(_(e))}),[e]),l=(0,c.useCallback)((()=>{e&&r(A(e))}),[e]),o=(0,c.useCallback)((()=>{r(I())}),[]),i=(0,c.useCallback)((()=>{r(x())}),[]),d=()=>c.createElement("div",{className:"LkGUkEuAC1lrNLYWXZAB"},c.createElement("button",{disabled:n.length<=1,onClick:o},"Back"),c.createElement("button",{disabled:0===a.length,onClick:i},"Forward"),t?c.createElement("button",{onClick:l,disabled:!e},"Remove Bookmark"):c.createElement("button",{onClick:s,disabled:!e},"Add Bookmark"));return e?c.createElement("div",{className:te},c.createElement("div",{className:ne},c.createElement("div",{className:"Hd2WYHIwrFrldD0I8qDj"},c.createElement("h5",null,"Selected entry:"),c.createElement("span",null,e.displayText)),d()),c.createElement("div",null,c.createElement("p",null,"Package Entry: ",e.rawEntryId),c.createElement("p",null,"Package JSON path: ",e.packageJsonFolderPath))):c.createElement("div",{className:te},c.createElement("div",{className:ne},c.createElement("h5",null,"No Entry Selected"),d()))};var re="wR2C2OTixe7QR738j44h",ce="Oo_rkIqOkO0j8slDAm5V";const se=()=>{const e=window.appContext.appVersion;return c.createElement("div",{className:"mqcpXwTQfD4A2eS4QRMa"},c.createElement("div",{className:"gxAXHLK7j_oYpFDmIJLR"},c.createElement("img",{className:re,src:n(769)})),c.createElement("div",null,c.createElement("a",{href:"https://www.npmjs.com/package/@rushstack/lockfile-explorer",target:"_blank",rel:"noreferrer"},c.createElement("div",{className:"rHArsuIMBTbIFs5o2cuw"},c.createElement("img",{className:re,src:n(500)})),c.createElement("div",{className:"P6XzPBuW8Osze59RSui1"},c.createElement("img",{className:re,src:n(126)})),c.createElement("div",{className:ce},e)),c.createElement("a",{href:"https://rushstack.io/",target:"_blank",rel:"noreferrer"},c.createElement("div",{className:ce},"rushstack.io"))))},le=(0,k.xC)({reducer:{entry:T,workspace:Y},middleware:e=>e({serializableCheck:!1})}),oe=document.getElementById("root");s.render(c.createElement(u.zt,{store:le},c.createElement((()=>{const e=y();return(0,c.useEffect)((()=>{(async function(){const t=await(async()=>{const e=await fetch(`${p}/`);return(e=>{const t=[],n={},c=[];if(e.importers)for(const[a,s]of Object.entries(e.importers)){const e=new d({rawEntryId:a,kind:r.Project,rawYamlData:s});c.push(e),t.push(e),n[e.entryId]=e}const s=[];if(e.packages)for(const[a,c]of Object.entries(e.packages)){const e=new d({rawEntryId:a,kind:r.Package,rawYamlData:c});s.push(e),t.push(e),n[a]=e}for(const e of t)for(const t of e.dependencies){if(t.dependencyType===a.PEER_DEPENDENCY)continue;const r=n[t.entryId];r?(t.resolvedEntry=r,r.referrers.push(e)):console.error("Could not resolve dependency entryId: ",t.entryId)}return t})(await e.json())})();e(D(t))})().catch((e=>{console.log(`Failed to read lockfile: ${e}`)}))}),[]),c.createElement("div",{className:"uXEYthi0e8fjYu_FisVm"},c.createElement("div",{className:"ms-Grid",dir:"ltr"},c.createElement("div",{className:"ms-Grid-row"},c.createElement("div",{className:"ms-Grid-col ms-sm3 HqAzbQwu1zc9yH8ZQESI"},c.createElement(F,null)),c.createElement("div",{className:"ms-Grid-col ms-sm7 HqAzbQwu1zc9yH8ZQESI"},c.createElement(ae,null),c.createElement(B,null),c.createElement(U,null)),c.createElement("div",{className:"ms-Grid-col ms-sm2 HqAzbQwu1zc9yH8ZQESI"},c.createElement(se,null),c.createElement(ee,null)))))}),null)),oe)},769:function(e,t,n){e.exports=n.p+"d39919ddc699d58b84ba.svg"},500:function(e,t,n){e.exports=n.p+"d13d30e9b42faf842d2f.svg"},126:function(e,t,n){e.exports=n.p+"510f03f81080fd3cfd63.svg"}},n={};function a(e){var r=n[e];if(void 0!==r)return r.exports;var c=n[e]={exports:{}};return t[e](c,c.exports,a),c.exports}a.m=t,e=[],a.O=function(t,n,r,c){if(!n){var s=1/0;for(d=0;d<e.length;d++){n=e[d][0],r=e[d][1],c=e[d][2];for(var l=!0,o=0;o<n.length;o++)(!1&c||s>=c)&&Object.keys(a.O).every((function(e){return a.O[e](n[o])}))?n.splice(o--,1):(l=!1,c<s&&(s=c));if(l){e.splice(d--,1);var i=r();void 0!==i&&(t=i)}}return t}c=c||0;for(var d=e.length;d>0&&e[d-1][2]>c;d--)e[d]=e[d-1];e[d]=[n,r,c]},a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");n.length&&(e=n[n.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e}(),function(){var e={143:0};a.O.j=function(t){return 0===e[t]};var t=function(t,n){var r,c,s=n[0],l=n[1],o=n[2],i=0;if(s.some((function(t){return 0!==e[t]}))){for(r in l)a.o(l,r)&&(a.m[r]=l[r]);if(o)var d=o(a)}for(t&&t(n);i<s.length;i++)c=s[i],a.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return a.O(d)},n=self.webpackChunk_rushstack_lockfile_explorer_web=self.webpackChunk_rushstack_lockfile_explorer_web||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var r=a.O(void 0,[671],(function(){return a(302)}));r=a.O(r)}();
@@ -1 +0,0 @@
1
- .HK80a6ZVkdxoTKzrP9Eq{background-color:#faf9f8;box-shadow:0 3.2px 7.2px 0 rgba(0,0,0,.132),0 .6px 1.8px 0 rgba(0,0,0,.108);padding:24px}.uXEYthi0e8fjYu_FisVm{display:flex;flex-direction:row;flex-wrap:nowrap}.uXEYthi0e8fjYu_FisVm>*{width:100%}.FFuReYR1pIswEW7Az6w9{flex-grow:1}.HqAzbQwu1zc9yH8ZQESI{display:flex;flex-direction:column;height:100vh;overflow-y:scroll}.yk7wrFMnnNyYLABMBhz_{height:calc(100% - 12px);padding-top:12px}.X00sOTmx1ir4Oc41DIvM{display:flex;flex-direction:column;max-height:calc(100% - 105px);min-height:calc(100% - 105px)}.ZcSkxw5an6poYOzXiz_9{border:1px solid #fff;cursor:pointer;padding:4px 8px}.ZcSkxw5an6poYOzXiz_9:hover{border:1px solid #000}.oq4FJVnF_fONdOKuiK0w{align-items:center;display:flex;margin-bottom:12px}.oq4FJVnF_fONdOKuiK0w input{width:100%}.oq4FJVnF_fONdOKuiK0w>*+*{margin-left:12px}.OcndyDBetZor3ptzTnTX h5{margin:0}.OcndyDBetZor3ptzTnTX>*+*{margin-top:4px}.Wg5pG3RVf6SQ51i0tVkd{cursor:pointer;padding:4px 8px}.Wg5pG3RVf6SQ51i0tVkd:hover{background:#dff6dd}.NBIr3yosJ9gX6LZcnC7T{background-color:#dff6dd}.PoJj8_8xv9BXiMVPKFVE{flex:1;overflow:scroll}.PoJj8_8xv9BXiMVPKFVE>*+*{margin-top:12px}.K6dDN5KzjLkbPPFWUaly{border-top:1px solid #000;padding-top:24px}.K6dDN5KzjLkbPPFWUaly>*+*{margin-top:4px}.IWEAxDEzQLw3g5TI_6up{align-items:center;cursor:pointer;display:flex}.IWEAxDEzQLw3g5TI_6up>*+*{margin-left:4px}.b1H6mzJXpxsG350hyeU_{box-shadow:0 3.2px 7.2px 0 rgba(0,0,0,.132),0 .6px 1.8px 0 rgba(0,0,0,.108);display:flex;width:-moz-fit-content;width:fit-content}.b1H6mzJXpxsG350hyeU_>*+*{border-left:1px solid #f3f2f1}.mWhs4CnCA0TKj6CRR8gk{background-color:#faf9f8;cursor:pointer;padding:6px 12px}.Q9WEwAuQb3UsVbcHr0oI{border-bottom:3px solid #107c10}.kzgyQkswpx6xUEo4zOa8{height:30%;margin-top:12px}.e2KEBfZCHwEMeH4j6wS7{height:calc(25vh - 35px);overflow:scroll}.nTIc62ACgp5xMWIvZ4cn{background-color:#107c10}.iavWjvHy9s5MhCZ_ncgb,.nTIc62ACgp5xMWIvZ4cn{border-radius:2px;color:#fff;padding:2px 4px}.iavWjvHy9s5MhCZ_ncgb{background-color:red}.I4A8ZZlpCL3Op0c53VjN{background-color:#b8860b;border-radius:2px;color:#fff;padding:2px 4px}.Ko0YQxSlY0hCIDTfmNlr h5{margin-bottom:12px}.Ko0YQxSlY0hCIDTfmNlr>*+*{margin-top:8px}.rXOH6AJQU2eYrNAXbp4V>*{display:inline}.rXOH6AJQU2eYrNAXbp4V>*+*{margin-left:12px}.hqNteMkwhYXuZqHE_8MJ{align-items:flex-start;display:flex}.hqNteMkwhYXuZqHE_8MJ>*+*{margin-left:12px}.hqNteMkwhYXuZqHE_8MJ div>*+*{margin-top:4px}.KWDuEbG1GmwLxFmPPppw{display:flex;height:30%;justify-content:space-between;padding-top:12px}.KWDuEbG1GmwLxFmPPppw>*{width:calc(50% - 60px)}.KWDuEbG1GmwLxFmPPppw h5{margin:0}._R50_3JsFs2FC9kVffQL{height:calc(25vh - 24px);margin-top:8px;overflow:scroll}.mRQWdzXzOM1NpFUpYnhP{border:1px solid #fff;cursor:pointer;margin-top:12px}.mRQWdzXzOM1NpFUpYnhP:hover{border:1px solid #107c10}.mRQWdzXzOM1NpFUpYnhP p{margin:0}.mRQWdzXzOM1NpFUpYnhP>*+*{margin-top:8px}.GbZbP1wHbcReGrxpZ3Ra{background-color:#dff6dd}.rIv2KvSZ0CKMbctSHL04{height:10%;margin-top:12px;overflow:scroll}.xSxHmjxIXTOSskLhma3A{height:4%;margin-top:12px;overflow:scroll}.wzeVrHi3oyOhEe6qD3PX{cursor:pointer;display:block}.wzeVrHi3oyOhEe6qD3PX:hover{color:#107c10;text-decoration:underline}.lGp34XdOFjHfZNwiilgC{align-items:center;display:flex}.lGp34XdOFjHfZNwiilgC span{font-size:12px;margin-left:4px}.aM5oGgiHs9rRHcHdAqFh{flex:1;margin:12px 0}.Ci1rEoM4eR29ZJcnvJJE{cursor:pointer;margin-top:8px;padding:4px 0}.Ci1rEoM4eR29ZJcnvJJE:hover{background:#dff6dd}.Ci1rEoM4eR29ZJcnvJJE>*+*{margin-top:8px}.dklLbMzvzbuzLd2XJh3W{background-color:#faf9f8;box-shadow:0 3.2px 7.2px 0 rgba(0,0,0,.132),0 .6px 1.8px 0 rgba(0,0,0,.108);height:8%;margin-top:12px;overflow:scroll;padding:12px 24px}.dklLbMzvzbuzLd2XJh3W p{font-size:12px}.dklLbMzvzbuzLd2XJh3W>*+*{margin-top:8px}.vJvmAdZ2VafvyXjc16Mz{display:flex;justify-content:space-between}.Hd2WYHIwrFrldD0I8qDj{align-items:center;display:flex}.Hd2WYHIwrFrldD0I8qDj>*+*{margin-left:8px}.LkGUkEuAC1lrNLYWXZAB{display:flex}.LkGUkEuAC1lrNLYWXZAB>*{height:21px}.LkGUkEuAC1lrNLYWXZAB>*+*{margin-left:8px}.mqcpXwTQfD4A2eS4QRMa{display:flex}.mqcpXwTQfD4A2eS4QRMa>*+*{margin-left:12px}.mqcpXwTQfD4A2eS4QRMa a{text-decoration:none}.gxAXHLK7j_oYpFDmIJLR{height:64px;padding-top:5px}.rHArsuIMBTbIFs5o2cuw{height:20px;padding-top:7px}.P6XzPBuW8Osze59RSui1{height:20px;padding-top:5px}.wR2C2OTixe7QR738j44h{height:100%;-o-object-fit:contain;object-fit:contain}.Oo_rkIqOkO0j8slDAm5V{color:#ab9e8e;font-family:Tahoma,sans-serif;font-size:14px;padding-top:4px}body,html{background-color:#f3f2f1;box-sizing:border-box;font-family:Tahoma,sans-serif;height:100%;margin:0}h5,p{font-size:14px;margin:0}