imean-inspector-sdk
Advanced tools
Comparing version 1.1.0 to 1.2.0
@@ -93,3 +93,3 @@ var f = Object.defineProperty; | ||
n(this, "metadata", null); | ||
n(this, "version", "1.0.0"); | ||
n(this, "version", "1.1.0"); | ||
n(this, "handleStartScreencast", () => { | ||
@@ -96,0 +96,0 @@ const e = document.createElement("canvas"); |
@@ -1,1 +0,1 @@ | ||
(function(r,c){typeof exports=="object"&&typeof module<"u"?c(exports):typeof define=="function"&&define.amd?define(["exports"],c):(r=typeof globalThis<"u"?globalThis:r||self,c(r.InspectorSDK={}))})(this,function(r){"use strict";var S=Object.defineProperty;var L=(r,c,u)=>c in r?S(r,c,{enumerable:!0,configurable:!0,writable:!0,value:u}):r[c]=u;var n=(r,c,u)=>L(r,typeof c!="symbol"?c+"":c,u);var c=Object.defineProperty,u=(a,i,e)=>i in a?c(a,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[i]=e,E=(a,i,e)=>(u(a,i+"",e),e),k=(a,i,e)=>new Promise((s,t)=>{var o=d=>{try{h(e.next(d))}catch(m){t(m)}},l=d=>{try{h(e.throw(d))}catch(m){t(m)}},h=d=>d.done?s(d.value):Promise.resolve(d.value).then(o,l);h((e=e.apply(a,i)).next())}),C=class b{constructor(){E(this,"callbackMap",{})}static createEvent(){return new b}on(i,e){var s;return this.callbackMap[i]||(this.callbackMap[i]=[]),(s=this.callbackMap[i])==null||s.push(e),e}off(i,e){var s;this.callbackMap[i]&&(this.callbackMap[i]=(s=this==null?void 0:this.callbackMap[i])==null?void 0:s.filter(t=>t!==e))}once(i,e){const s=(...t)=>{this.off(i,s),e(...t)};return this.on(i,s)}emit(i,...e){return k(this,null,function*(){if(!this.callbackMap[i])return;const s=this.callbackMap[i];s&&(yield Promise.all(s.map(t=>t(...e))))})}},v=(a=>(a.KeyDown="keyDown",a.KeyUp="keyUp",a.RawKeyDown="rawKeyDown",a.Char="char",a))(v||{});function K(a,i){let e;return function(...s){clearTimeout(e),e=setTimeout(()=>a.apply(this,s),i)}}class p extends C{constructor(e,s,t){super();n(this,"url");n(this,"ws");n(this,"messageId");n(this,"img");n(this,"canvas");n(this,"viewContainer");n(this,"zoom",devicePixelRatio);n(this,"disconnectTimeout");n(this,"disconnectDelay");n(this,"metadata",null);n(this,"version","1.0.0");n(this,"handleStartScreencast",()=>{const e=document.createElement("canvas");e.id="inspectorSDK-canvas",this.canvas=e,this.img=new Image,this.canvas.style.display="none",this.viewContainer.appendChild(this.canvas)});n(this,"canvasDrawImage",()=>{const e=this.canvas.getContext("2d");if(!e||!this.metadata)return;const{width:s,height:t}=this.viewContainer.getBoundingClientRect();this.canvas.style.display="inline";const o=s||this.metadata.deviceWidth,l=t||this.metadata.deviceHeight,h=this.metadata.deviceWidth,d=this.metadata.deviceHeight,m=o/h,y=l/d,f=Math.min(m,y);this.zoom=f;const w=h*f,g=d*f;this.canvas.width=w*devicePixelRatio,this.canvas.height=g*devicePixelRatio,this.canvas.style.width=`${w}px`,this.canvas.style.height=`${g}px`,e.scale(devicePixelRatio,devicePixelRatio),e.drawImage(this.img,0,0,w,g)});n(this,"handleScreencastFrame",e=>{const{data:s,metadata:t}=e;this.metadata=t;try{this.img.onload=()=>{this.canvasDrawImage(),this.emit("drawComplete",{status:!0})},this.img.src="data:image/jpeg;base64,"+s}catch{this.emit("drawComplete",{status:!1})}});n(this,"emitMouse",e=>{const s={0:"none",1:"left",2:"middle",3:"right"},t=e.type==="mousewheel"&&window.event||e,o={mousedown:"mousePressed",mouseup:"mouseReleased",mousewheel:"mouseWheel",touchstart:"mousePressed",touchend:"mouseReleased",touchmove:"mouseWheel",mousemove:"mouseMoved"};if(!(t.type in o)||t.type!=="mousewheel"&&s[t.which]==="none"&&t.type!=="mousemove")return;const h=o[t.type].indexOf("wheel")!==-1,d=(h?t.clientX:t.offsetX)*(1/this.zoom),m=(h?t.clientY:t.offsetY)*(1/this.zoom),y={type:o[t.type],x:d,y:m,modifiers:p.getModifiersForEvent(t),button:t.type==="mousewheel"?"none":s[t.which],clickCount:1};t.type==="mousewheel"&&(y.deltaX=(t.wheelDeltaX||0)*(1/this.zoom),y.deltaY=(t.wheelDeltaY||t.wheelDelta)*(1/this.zoom)),this.ws.send(JSON.stringify({id:++this.messageId,method:"Input.dispatchMouseEvent",params:y}))});n(this,"emitKeyEvent",e=>{let s;switch(e.keyCode===8&&e.preventDefault(),e.type){case"keydown":s=v.KeyDown;break;case"keyup":s=v.KeyUp;break;case"keypress":s=v.Char;break;default:return}const t=s==="char"?String.fromCharCode(e.charCode):void 0,o={type:s,text:t,unmodifiedText:t?t.toLowerCase():void 0,keyIdentifier:e.keyIdentifier,code:e.code,key:e.key,windowsVirtualKeyCode:e.keyCode,nativeVirtualKeyCode:e.keyCode,autoRepeat:!1,isKeypad:!1,isSystemKey:!1};this.ws.send(JSON.stringify({id:++this.messageId,method:"Input.dispatchKeyEvent",params:o}))});n(this,"bindKeyEvents",()=>{document.body.addEventListener("keydown",this.emitKeyEvent,!0),document.body.addEventListener("keyup",this.emitKeyEvent,!0),document.body.addEventListener("keypress",this.emitKeyEvent,!0)});n(this,"unbindKeyEvents",()=>{document.body.removeEventListener("keydown",this.emitKeyEvent,!0),document.body.removeEventListener("keyup",this.emitKeyEvent,!0),document.body.removeEventListener("keypress",this.emitKeyEvent,!0)});n(this,"handleVisibilityChange",()=>{document.visibilityState==="hidden"?this.disconnectTimeout=window.setTimeout(()=>{this.close()},this.disconnectDelay):this.disconnectTimeout&&(clearTimeout(this.disconnectTimeout),this.disconnectTimeout=null)});n(this,"deleteCanvasElement",()=>{var s;const e=document.querySelector("#inspectorSDK-canvas");(s=e==null?void 0:e.parentElement)==null||s.removeChild(e)});n(this,"onResizeViewContainer",()=>{const e=new ResizeObserver(K(()=>{this.canvasDrawImage(),this.emit("drawComplete",{status:!0})},200));this.viewContainer&&e.observe(this.viewContainer)});n(this,"removeEventListeners",()=>{this.canvas.removeEventListener("mousedown",this.emitMouse,!1),this.canvas.removeEventListener("mouseup",this.emitMouse,!1),this.canvas.removeEventListener("mousewheel",this.emitMouse,!1),this.canvas.removeEventListener("mousemove",this.emitMouse,!1),this.canvas.removeEventListener("mouseenter",this.bindKeyEvents,!1),this.canvas.removeEventListener("mouseleave",this.unbindKeyEvents,!1)});n(this,"connect",(e=!1)=>(this.ws=new WebSocket(this.url),new Promise((s,t)=>{this.ws.onopen=()=>{console.log("WebSocket connection opened"),this.ws.send(JSON.stringify({id:1,method:"Page.startScreencast",params:{format:"jpeg",quality:80,everyNthFrame:1}})),this.handleStartScreencast(),this.onResizeViewContainer(),e&&this.addEventListeners(),document.addEventListener("visibilitychange",this.handleVisibilityChange),s()},this.ws.onmessage=o=>{const l=JSON.parse(o.data);if(l.method==="Page.screencastFrame"){const h=l.params;this.handleScreencastFrame(h),this.ws.send(JSON.stringify({id:++this.messageId,method:"Page.screencastFrameAck",params:{sessionId:l.params.sessionId}}))}},this.ws.onclose=()=>{console.log("WebSocket connection closed"),document.removeEventListener("visibilitychange",this.handleVisibilityChange),this.emit("close")},this.ws.onerror=o=>{console.error("WebSocket error:",o),t(o)}})));this.url=e,this.messageId=0,this.viewContainer=s,this.disconnectTimeout=null,this.disconnectDelay=t??6e4*5}static getModifiersForEvent(e){return(e.altKey?1:0)|(e.ctrlKey?2:0)|(e.metaKey?4:0)|(e.shiftKey?8:0)}addEventListeners(){this.canvas.addEventListener("mousedown",this.emitMouse,!1),this.canvas.addEventListener("mouseup",this.emitMouse,!1),this.canvas.addEventListener("mousewheel",this.emitMouse,!1),this.canvas.addEventListener("mousemove",this.emitMouse,!1),this.canvas.addEventListener("mouseenter",this.bindKeyEvents,!1),this.canvas.addEventListener("mouseleave",this.unbindKeyEvents,!1)}close(){this.ws.close(),this.removeEventListeners(),this.deleteCanvasElement()}}r.DispatchKeyEventRequestType=v,r.default=p,Object.defineProperties(r,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}); | ||
(function(r,c){typeof exports=="object"&&typeof module<"u"?c(exports):typeof define=="function"&&define.amd?define(["exports"],c):(r=typeof globalThis<"u"?globalThis:r||self,c(r.InspectorSDK={}))})(this,function(r){"use strict";var S=Object.defineProperty;var L=(r,c,u)=>c in r?S(r,c,{enumerable:!0,configurable:!0,writable:!0,value:u}):r[c]=u;var n=(r,c,u)=>L(r,typeof c!="symbol"?c+"":c,u);var c=Object.defineProperty,u=(a,i,e)=>i in a?c(a,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[i]=e,E=(a,i,e)=>(u(a,i+"",e),e),k=(a,i,e)=>new Promise((s,t)=>{var o=d=>{try{h(e.next(d))}catch(m){t(m)}},l=d=>{try{h(e.throw(d))}catch(m){t(m)}},h=d=>d.done?s(d.value):Promise.resolve(d.value).then(o,l);h((e=e.apply(a,i)).next())}),C=class b{constructor(){E(this,"callbackMap",{})}static createEvent(){return new b}on(i,e){var s;return this.callbackMap[i]||(this.callbackMap[i]=[]),(s=this.callbackMap[i])==null||s.push(e),e}off(i,e){var s;this.callbackMap[i]&&(this.callbackMap[i]=(s=this==null?void 0:this.callbackMap[i])==null?void 0:s.filter(t=>t!==e))}once(i,e){const s=(...t)=>{this.off(i,s),e(...t)};return this.on(i,s)}emit(i,...e){return k(this,null,function*(){if(!this.callbackMap[i])return;const s=this.callbackMap[i];s&&(yield Promise.all(s.map(t=>t(...e))))})}},v=(a=>(a.KeyDown="keyDown",a.KeyUp="keyUp",a.RawKeyDown="rawKeyDown",a.Char="char",a))(v||{});function K(a,i){let e;return function(...s){clearTimeout(e),e=setTimeout(()=>a.apply(this,s),i)}}class p extends C{constructor(e,s,t){super();n(this,"url");n(this,"ws");n(this,"messageId");n(this,"img");n(this,"canvas");n(this,"viewContainer");n(this,"zoom",devicePixelRatio);n(this,"disconnectTimeout");n(this,"disconnectDelay");n(this,"metadata",null);n(this,"version","1.1.0");n(this,"handleStartScreencast",()=>{const e=document.createElement("canvas");e.id="inspectorSDK-canvas",this.canvas=e,this.img=new Image,this.canvas.style.display="none",this.viewContainer.appendChild(this.canvas)});n(this,"canvasDrawImage",()=>{const e=this.canvas.getContext("2d");if(!e||!this.metadata)return;const{width:s,height:t}=this.viewContainer.getBoundingClientRect();this.canvas.style.display="inline";const o=s||this.metadata.deviceWidth,l=t||this.metadata.deviceHeight,h=this.metadata.deviceWidth,d=this.metadata.deviceHeight,m=o/h,y=l/d,f=Math.min(m,y);this.zoom=f;const w=h*f,g=d*f;this.canvas.width=w*devicePixelRatio,this.canvas.height=g*devicePixelRatio,this.canvas.style.width=`${w}px`,this.canvas.style.height=`${g}px`,e.scale(devicePixelRatio,devicePixelRatio),e.drawImage(this.img,0,0,w,g)});n(this,"handleScreencastFrame",e=>{const{data:s,metadata:t}=e;this.metadata=t;try{this.img.onload=()=>{this.canvasDrawImage(),this.emit("drawComplete",{status:!0})},this.img.src="data:image/jpeg;base64,"+s}catch{this.emit("drawComplete",{status:!1})}});n(this,"emitMouse",e=>{const s={0:"none",1:"left",2:"middle",3:"right"},t=e.type==="mousewheel"&&window.event||e,o={mousedown:"mousePressed",mouseup:"mouseReleased",mousewheel:"mouseWheel",touchstart:"mousePressed",touchend:"mouseReleased",touchmove:"mouseWheel",mousemove:"mouseMoved"};if(!(t.type in o)||t.type!=="mousewheel"&&s[t.which]==="none"&&t.type!=="mousemove")return;const h=o[t.type].indexOf("wheel")!==-1,d=(h?t.clientX:t.offsetX)*(1/this.zoom),m=(h?t.clientY:t.offsetY)*(1/this.zoom),y={type:o[t.type],x:d,y:m,modifiers:p.getModifiersForEvent(t),button:t.type==="mousewheel"?"none":s[t.which],clickCount:1};t.type==="mousewheel"&&(y.deltaX=(t.wheelDeltaX||0)*(1/this.zoom),y.deltaY=(t.wheelDeltaY||t.wheelDelta)*(1/this.zoom)),this.ws.send(JSON.stringify({id:++this.messageId,method:"Input.dispatchMouseEvent",params:y}))});n(this,"emitKeyEvent",e=>{let s;switch(e.keyCode===8&&e.preventDefault(),e.type){case"keydown":s=v.KeyDown;break;case"keyup":s=v.KeyUp;break;case"keypress":s=v.Char;break;default:return}const t=s==="char"?String.fromCharCode(e.charCode):void 0,o={type:s,text:t,unmodifiedText:t?t.toLowerCase():void 0,keyIdentifier:e.keyIdentifier,code:e.code,key:e.key,windowsVirtualKeyCode:e.keyCode,nativeVirtualKeyCode:e.keyCode,autoRepeat:!1,isKeypad:!1,isSystemKey:!1};this.ws.send(JSON.stringify({id:++this.messageId,method:"Input.dispatchKeyEvent",params:o}))});n(this,"bindKeyEvents",()=>{document.body.addEventListener("keydown",this.emitKeyEvent,!0),document.body.addEventListener("keyup",this.emitKeyEvent,!0),document.body.addEventListener("keypress",this.emitKeyEvent,!0)});n(this,"unbindKeyEvents",()=>{document.body.removeEventListener("keydown",this.emitKeyEvent,!0),document.body.removeEventListener("keyup",this.emitKeyEvent,!0),document.body.removeEventListener("keypress",this.emitKeyEvent,!0)});n(this,"handleVisibilityChange",()=>{document.visibilityState==="hidden"?this.disconnectTimeout=window.setTimeout(()=>{this.close()},this.disconnectDelay):this.disconnectTimeout&&(clearTimeout(this.disconnectTimeout),this.disconnectTimeout=null)});n(this,"deleteCanvasElement",()=>{var s;const e=document.querySelector("#inspectorSDK-canvas");(s=e==null?void 0:e.parentElement)==null||s.removeChild(e)});n(this,"onResizeViewContainer",()=>{const e=new ResizeObserver(K(()=>{this.canvasDrawImage(),this.emit("drawComplete",{status:!0})},200));this.viewContainer&&e.observe(this.viewContainer)});n(this,"removeEventListeners",()=>{this.canvas.removeEventListener("mousedown",this.emitMouse,!1),this.canvas.removeEventListener("mouseup",this.emitMouse,!1),this.canvas.removeEventListener("mousewheel",this.emitMouse,!1),this.canvas.removeEventListener("mousemove",this.emitMouse,!1),this.canvas.removeEventListener("mouseenter",this.bindKeyEvents,!1),this.canvas.removeEventListener("mouseleave",this.unbindKeyEvents,!1)});n(this,"connect",(e=!1)=>(this.ws=new WebSocket(this.url),new Promise((s,t)=>{this.ws.onopen=()=>{console.log("WebSocket connection opened"),this.ws.send(JSON.stringify({id:1,method:"Page.startScreencast",params:{format:"jpeg",quality:80,everyNthFrame:1}})),this.handleStartScreencast(),this.onResizeViewContainer(),e&&this.addEventListeners(),document.addEventListener("visibilitychange",this.handleVisibilityChange),s()},this.ws.onmessage=o=>{const l=JSON.parse(o.data);if(l.method==="Page.screencastFrame"){const h=l.params;this.handleScreencastFrame(h),this.ws.send(JSON.stringify({id:++this.messageId,method:"Page.screencastFrameAck",params:{sessionId:l.params.sessionId}}))}},this.ws.onclose=()=>{console.log("WebSocket connection closed"),document.removeEventListener("visibilitychange",this.handleVisibilityChange),this.emit("close")},this.ws.onerror=o=>{console.error("WebSocket error:",o),t(o)}})));this.url=e,this.messageId=0,this.viewContainer=s,this.disconnectTimeout=null,this.disconnectDelay=t??6e4*5}static getModifiersForEvent(e){return(e.altKey?1:0)|(e.ctrlKey?2:0)|(e.metaKey?4:0)|(e.shiftKey?8:0)}addEventListeners(){this.canvas.addEventListener("mousedown",this.emitMouse,!1),this.canvas.addEventListener("mouseup",this.emitMouse,!1),this.canvas.addEventListener("mousewheel",this.emitMouse,!1),this.canvas.addEventListener("mousemove",this.emitMouse,!1),this.canvas.addEventListener("mouseenter",this.bindKeyEvents,!1),this.canvas.addEventListener("mouseleave",this.unbindKeyEvents,!1)}close(){this.ws.close(),this.removeEventListeners(),this.deleteCanvasElement()}}r.DispatchKeyEventRequestType=v,r.default=p,Object.defineProperties(r,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}); |
{ | ||
"name": "imean-inspector-sdk", | ||
"private": false, | ||
"version": "1.1.0", | ||
"version": "1.2.0", | ||
"description": "iMean inspector sdk", | ||
@@ -25,3 +25,5 @@ "repository": "https://git.imean.tech/imean/inspector-sdk.git", | ||
"semantic-release": "npx semantic-release", | ||
"commit": "git-cz" | ||
"commit": "git-cz", | ||
"test": "npx playwright test", | ||
"serve": "serve -s dist/ -l 3000" | ||
}, | ||
@@ -73,6 +75,11 @@ "config": { | ||
"@imean/event": "^0.1.4", | ||
"@playwright/test": "^1.46.0", | ||
"react": "^18.3.1", | ||
"react-dom": "^18.3.1" | ||
"react-dom": "^18.3.1", | ||
"serve": "^14.2.3" | ||
}, | ||
"devDependencies": { | ||
"@semantic-release/git": "^10.0.1", | ||
"@semantic-release/gitlab": "^12.0.4", | ||
"@semantic-release/npm": "^10.0.4", | ||
"@types/chrome": "^0.0.244", | ||
@@ -86,2 +93,4 @@ "@types/node": "^20.4.9", | ||
"@vitejs/plugin-react-swc": "^3.7.0", | ||
"commitizen": "^4.3.0", | ||
"cz-conventional-changelog": "^3.3.0", | ||
"devtools-protocol": "^0.0.1333880", | ||
@@ -91,2 +100,4 @@ "eslint": "^8.57.0", | ||
"eslint-plugin-react-refresh": "^0.4.7", | ||
"semantic-release": "^21.0.7", | ||
"semantic-release-gitmoji": "^1.6.5", | ||
"ts-node": "^10.9.2", | ||
@@ -96,11 +107,4 @@ "typescript": "^5.5.4", | ||
"vite-plugin-compression": "^0.5.1", | ||
"vite-plugin-dts": "3.9.1", | ||
"semantic-release": "^21.0.7", | ||
"semantic-release-gitmoji": "^1.6.5", | ||
"@semantic-release/git": "^10.0.1", | ||
"@semantic-release/gitlab": "^12.0.4", | ||
"@semantic-release/npm": "^10.0.4", | ||
"commitizen": "^4.3.0", | ||
"cz-conventional-changelog": "^3.3.0" | ||
"vite-plugin-dts": "3.9.1" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
36232
5
+ Added@playwright/test@^1.46.0
+ Addedserve@^14.2.3
+ Added@playwright/test@1.49.1(transitive)
+ Added@zeit/schemas@2.36.0(transitive)
+ Addedaccepts@1.3.8(transitive)
+ Addedajv@8.12.0(transitive)
+ Addedansi-align@3.0.1(transitive)
+ Addedansi-regex@5.0.16.1.0(transitive)
+ Addedansi-styles@4.3.06.2.1(transitive)
+ Addedarch@2.2.0(transitive)
+ Addedarg@5.0.2(transitive)
+ Addedbalanced-match@1.0.2(transitive)
+ Addedboxen@7.0.0(transitive)
+ Addedbrace-expansion@1.1.11(transitive)
+ Addedbytes@3.0.0(transitive)
+ Addedcamelcase@7.0.1(transitive)
+ Addedchalk@4.1.25.0.1(transitive)
+ Addedchalk-template@0.4.0(transitive)
+ Addedcli-boxes@3.0.0(transitive)
+ Addedclipboardy@3.0.0(transitive)
+ Addedcolor-convert@2.0.1(transitive)
+ Addedcolor-name@1.1.4(transitive)
+ Addedcompressible@2.0.18(transitive)
+ Addedcompression@1.7.4(transitive)
+ Addedconcat-map@0.0.1(transitive)
+ Addedcontent-disposition@0.5.2(transitive)
+ Addedcross-spawn@7.0.6(transitive)
+ Addeddebug@2.6.9(transitive)
+ Addeddeep-extend@0.6.0(transitive)
+ Addedeastasianwidth@0.2.0(transitive)
+ Addedemoji-regex@8.0.09.2.2(transitive)
+ Addedexeca@5.1.1(transitive)
+ Addedfast-deep-equal@3.1.3(transitive)
+ Addedfsevents@2.3.2(transitive)
+ Addedget-stream@6.0.1(transitive)
+ Addedhas-flag@4.0.0(transitive)
+ Addedhuman-signals@2.1.0(transitive)
+ Addedini@1.3.8(transitive)
+ Addedis-docker@2.2.1(transitive)
+ Addedis-fullwidth-code-point@3.0.0(transitive)
+ Addedis-port-reachable@4.0.0(transitive)
+ Addedis-stream@2.0.1(transitive)
+ Addedis-wsl@2.2.0(transitive)
+ Addedisexe@2.0.0(transitive)
+ Addedjson-schema-traverse@1.0.0(transitive)
+ Addedmerge-stream@2.0.0(transitive)
+ Addedmime-db@1.33.01.52.01.53.0(transitive)
+ Addedmime-types@2.1.182.1.35(transitive)
+ Addedmimic-fn@2.1.0(transitive)
+ Addedminimatch@3.1.2(transitive)
+ Addedminimist@1.2.8(transitive)
+ Addedms@2.0.0(transitive)
+ Addednegotiator@0.6.3(transitive)
+ Addednpm-run-path@4.0.1(transitive)
+ Addedon-headers@1.0.2(transitive)
+ Addedonetime@5.1.2(transitive)
+ Addedpath-is-inside@1.0.2(transitive)
+ Addedpath-key@3.1.1(transitive)
+ Addedpath-to-regexp@3.3.0(transitive)
+ Addedplaywright@1.49.1(transitive)
+ Addedplaywright-core@1.49.1(transitive)
+ Addedpunycode@2.3.1(transitive)
+ Addedrange-parser@1.2.0(transitive)
+ Addedrc@1.2.8(transitive)
+ Addedregistry-auth-token@3.3.2(transitive)
+ Addedregistry-url@3.1.0(transitive)
+ Addedrequire-from-string@2.0.2(transitive)
+ Addedsafe-buffer@5.1.2(transitive)
+ Addedserve@14.2.4(transitive)
+ Addedserve-handler@6.1.6(transitive)
+ Addedshebang-command@2.0.0(transitive)
+ Addedshebang-regex@3.0.0(transitive)
+ Addedsignal-exit@3.0.7(transitive)
+ Addedstring-width@4.2.35.1.2(transitive)
+ Addedstrip-ansi@6.0.17.1.0(transitive)
+ Addedstrip-final-newline@2.0.0(transitive)
+ Addedstrip-json-comments@2.0.1(transitive)
+ Addedsupports-color@7.2.0(transitive)
+ Addedtype-fest@2.19.0(transitive)
+ Addedupdate-check@1.5.4(transitive)
+ Addeduri-js@4.4.1(transitive)
+ Addedvary@1.1.2(transitive)
+ Addedwhich@2.0.2(transitive)
+ Addedwidest-line@4.0.1(transitive)
+ Addedwrap-ansi@8.1.0(transitive)