@web-to-figma/desktop 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/auth/captureSession.js +1 -1
- package/dist/auth/jwtSecret.d.ts +1 -1
- package/dist/auth/jwtSecret.js +1 -1
- package/dist/capture/browserPool.js +1 -1
- package/dist/capture/captureService.js +1 -1
- package/dist/capture/captureStatus.js +1 -1
- package/dist/capture/chromeDownloader.js +1 -1
- package/dist/capture/crxUtils.js +1 -1
- package/dist/capture/extensionPinPolicy.js +1 -1
- package/dist/capture/headedBrowserState.js +1 -1
- package/dist/capture/headedExtension.js +1 -1
- package/dist/capture/manualLaunch.js +1 -1
- package/dist/server/middleware/desktopJwt.js +1 -1
- package/dist/terminal/banner.js +3 -3
- package/dist/updater/runtime.js +3 -5
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function _0x2fcc(_0x5d7417,_0x3aefc0){_0x5d7417=_0x5d7417-0xe6;const _0x2a5db6=_0x2a5d();let _0x2fcc6a=_0x2a5db6[_0x5d7417];if(_0x2fcc['WVnqjm']===undefined){var _0x1df3d5=function(_0x447ab7){const _0x4d0d95='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2bf59c='',_0x24e2fb='';for(let _0x53cc29=0x0,_0x53a602,_0x1b5b00,_0x17b0a2=0x0;_0x1b5b00=_0x447ab7['charAt'](_0x17b0a2++);~_0x1b5b00&&(_0x53a602=_0x53cc29%0x4?_0x53a602*0x40+_0x1b5b00:_0x1b5b00,_0x53cc29++%0x4)?_0x2bf59c+=String['fromCharCode'](0xff&_0x53a602>>(-0x2*_0x53cc29&0x6)):0x0){_0x1b5b00=_0x4d0d95['indexOf'](_0x1b5b00);}for(let _0x34c954=0x0,_0x4b5c5a=_0x2bf59c['length'];_0x34c954<_0x4b5c5a;_0x34c954++){_0x24e2fb+='%'+('00'+_0x2bf59c['charCodeAt'](_0x34c954)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x24e2fb);};_0x2fcc['OZxGyF']=_0x1df3d5,_0x2fcc['nWJWCd']={},_0x2fcc['WVnqjm']=!![];}const _0x5b17d1=_0x2a5db6[0x0],_0x4d0fb8=_0x5d7417+_0x5b17d1,_0x276c2d=_0x2fcc['nWJWCd'][_0x4d0fb8];return!_0x276c2d?(_0x2fcc6a=_0x2fcc['OZxGyF'](_0x2fcc6a),_0x2fcc['nWJWCd'][_0x4d0fb8]=_0x2fcc6a):_0x2fcc6a=_0x276c2d,_0x2fcc6a;}(function(_0x4a3b16,_0x489ae3){const _0x1e2521=_0x2fcc,_0x4e52c9=_0x4a3b16();while(!![]){try{const _0x2ea0c2=parseInt(_0x1e2521(0xe9))/0x1+-parseInt(_0x1e2521(0xe6))/0x2*(-parseInt(_0x1e2521(0xf3))/0x3)+parseInt(_0x1e2521(0xe8))/0x4*(parseInt(_0x1e2521(0xee))/0x5)+-parseInt(_0x1e2521(0xe7))/0x6+parseInt(_0x1e2521(0xeb))/0x7+-parseInt(_0x1e2521(0xea))/0x8+-parseInt(_0x1e2521(0xec))/0x9;if(_0x2ea0c2===_0x489ae3)break;else _0x4e52c9['push'](_0x4e52c9['shift']());}catch(_0x152e72){_0x4e52c9['push'](_0x4e52c9['shift']());}}}(_0x2a5d,0x4efab));function _0x2a5d(){const _0x26725c=['mtm1mJqWm2DeuvDtza','AgvHzgvKvw5WywnRzwrfEhrLBNnPB25eAxi','mJG1rNnOzvn4','D2fYBG','zgvIDwC','vw5WywnRzwqGAgvHzgvKigv4DgvUC2LVBIb3AxrOihn0ywjSzsbRzxK','AgvHzgvKq3j4ugf0Aa','m3HUtwzmwq','nZuXmdiWsffir3vj','mtGWnZG3oefxzhPtza','mJaZotjpsLvJrwW','nJKXnZLmvM5iDvC','mtaYmJaYnhbsu2Hbra','mte3mJG5oxfxt05fuW'];_0x2a5d=function(){return _0x26725c;};return _0x2a5d();}import _0x2bf59c from'fs';import{extensionIdFromCrx,shouldRefreshUnpackedExtension,unpackCrxWithStableKey}from'./crxUtils.js';export function ensureHeadedExtensionUnpacked(_0x24e2fb,_0x53cc29){const _0x1c68d7=_0x2fcc;if(!_0x2bf59c['existsSync'](_0x24e2fb[_0x1c68d7(0xf2)]))return _0x53cc29[_0x1c68d7(0xef)]({'crxPath':_0x24e2fb[_0x1c68d7(0xf2)]},'Headed\x20extension\x20CRX\x20missing'),null;const _0x53a602=_0x24e2fb[_0x1c68d7(0xed)];let _0x1b5b00;return shouldRefreshUnpackedExtension(_0x24e2fb[_0x1c68d7(0xf2)],_0x53a602)?(_0x1b5b00=unpackCrxWithStableKey(_0x24e2fb[_0x1c68d7(0xf2)],_0x53a602),_0x53cc29[_0x1c68d7(0xf0)]({'unpackedDir':_0x53a602,'extensionId':_0x1b5b00},_0x1c68d7(0xf1))):_0x1b5b00=extensionIdFromCrx(_0x24e2fb[_0x1c68d7(0xf2)]),{'extensionId':_0x1b5b00,'unpackedDir':_0x53a602};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x52cca1,_0x5bebd1){const _0x33c4f7=_0x5761,_0x189b12=_0x52cca1();while(!![]){try{const _0x17d869=-parseInt(_0x33c4f7(0xd3))/0x1*(-parseInt(_0x33c4f7(0xda))/0x2)+-parseInt(_0x33c4f7(0xd2))/0x3*(parseInt(_0x33c4f7(0xd8))/0x4)+-parseInt(_0x33c4f7(0xdb))/0x5*(parseInt(_0x33c4f7(0xd9))/0x6)+-parseInt(_0x33c4f7(0xcf))/0x7+-parseInt(_0x33c4f7(0xd1))/0x8*(parseInt(_0x33c4f7(0xdc))/0x9)+-parseInt(_0x33c4f7(0xe1))/0xa+parseInt(_0x33c4f7(0xe0))/0xb;if(_0x17d869===_0x5bebd1)break;else _0x189b12['push'](_0x189b12['shift']());}catch(_0x2c8680){_0x189b12['push'](_0x189b12['shift']());}}}(_0xfdc0,0x50334));import{exportPersistedCookies,removeSessionDir}from'./headedBrowserState.js';const BROWSER_POLL_MS=0x1f4;function _0x5761(_0x4d6bd4,_0x5f8952){_0x4d6bd4=_0x4d6bd4-0xcf;const _0xfdc04c=_0xfdc0();let _0x5761e9=_0xfdc04c[_0x4d6bd4];if(_0x5761['TfXVrM']===undefined){var _0x174b90=function(_0x27a367){const _0x25f26a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3749d2='',_0x3cd9e6='';for(let _0x1ade3b=0x0,_0x4af6ab,_0x2b8f7b,_0x38dd2a=0x0;_0x2b8f7b=_0x27a367['charAt'](_0x38dd2a++);~_0x2b8f7b&&(_0x4af6ab=_0x1ade3b%0x4?_0x4af6ab*0x40+_0x2b8f7b:_0x2b8f7b,_0x1ade3b++%0x4)?_0x3749d2+=String['fromCharCode'](0xff&_0x4af6ab>>(-0x2*_0x1ade3b&0x6)):0x0){_0x2b8f7b=_0x25f26a['indexOf'](_0x2b8f7b);}for(let _0x47f0b9=0x0,_0x5df450=_0x3749d2['length'];_0x47f0b9<_0x5df450;_0x47f0b9++){_0x3cd9e6+='%'+('00'+_0x3749d2['charCodeAt'](_0x47f0b9)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3cd9e6);};_0x5761['IiEhiv']=_0x174b90,_0x5761['qwdgQL']={},_0x5761['TfXVrM']=!![];}const _0xd78f7=_0xfdc04c[0x0],_0x113cd2=_0x4d6bd4+_0xd78f7,_0x227cc6=_0x5761['qwdgQL'][_0x113cd2];return!_0x227cc6?(_0x5761e9=_0x5761['IiEhiv'](_0x5761e9),_0x5761['qwdgQL'][_0x113cd2]=_0x5761e9):_0x5761e9=_0x227cc6,_0x5761e9;}function _0xfdc0(){const _0x126896=['Bg9N','z2v0','nhbcC1Phvq','mtq4mtG3nhL0EKzoBa','mZq0mZzlrvDpq2u','mtbjwxbftw0','mtaZnJC0nLLis0fLBG','Bgf1BMnOsgvHzgvK','CMvTB3zLtgLZDgvUzxi','z2v0qwXSv2LUzg93sgfUzgXLCW','mJqXodGWnJv0EeXXAK0','mtuYmZi5mfPTD3rjEG','mZKXmJKWmNf4rwr0Ca','u0Lhsu5u','ndb1DKHpD3O','mZe5mtCWtuHHyMXh','mxv4D2nLsq','u0Lhvevstq','q2HYB21Lig9Wzw5LzcbMB3iGBwfUDwfSignHChr1CMuUienSB3nLihrOzsbICM93C2vYihDOzw4GzMLUAxnOzwqU'];_0xfdc0=function(){return _0x126896;};return _0xfdc0();}async function waitForBrowserClosed(_0x3749d2){await new Promise(_0x3cd9e6=>{const _0x4b4a24=_0x5761;let _0x1ade3b=![];const _0x4af6ab=()=>{const _0x3e282f=_0x5761;if(_0x1ade3b)return;_0x1ade3b=!![],process[_0x3e282f(0xde)]('SIGINT',_0x2b8f7b),process[_0x3e282f(0xde)](_0x3e282f(0xd4),_0x2b8f7b),_0x3cd9e6();},_0x2b8f7b=()=>_0x4af6ab();process['on'](_0x4b4a24(0xd0),_0x2b8f7b),process['on']('SIGTERM',_0x2b8f7b);const _0x38dd2a=async()=>{try{const _0x47f0b9=await _0x3749d2();if(_0x47f0b9['length']===0x0){_0x4af6ab();return;}setTimeout(()=>void _0x38dd2a(),BROWSER_POLL_MS);}catch{_0x4af6ab();}};void _0x38dd2a();});}export async function launchHeadedCapture(_0x5df450,_0x27ae5b){const _0x278ac6=_0x5761,{driver:_0x3adc62,sessionDir:_0x5f5c7b,cookiesPath:_0x366063}=await _0x5df450[_0x278ac6(0xdd)]();try{_0x27ae5b&&await _0x3adc62[_0x278ac6(0xd7)](_0x27ae5b),console[_0x278ac6(0xd6)](_0x278ac6(0xd5)),await waitForBrowserClosed(()=>_0x3adc62[_0x278ac6(0xdf)]());}finally{try{await exportPersistedCookies(_0x3adc62,_0x366063);}catch{}await _0x5df450['release'](_0x3adc62),removeSessionDir(_0x5f5c7b);}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x22231e,_0x19e60b){const _0x321fa3=_0x8bfe,_0x55119e=_0x22231e();while(!![]){try{const _0x2c01e7=-parseInt(_0x321fa3(0x15d))/0x1*(parseInt(_0x321fa3(0x13e))/0x2)+-parseInt(_0x321fa3(0x137))/0x3+-parseInt(_0x321fa3(0x158))/0x4*(parseInt(_0x321fa3(0x154))/0x5)+parseInt(_0x321fa3(0x155))/0x6*(parseInt(_0x321fa3(0x15c))/0x7)+-parseInt(_0x321fa3(0x156))/0x8*(parseInt(_0x321fa3(0x13b))/0x9)+parseInt(_0x321fa3(0x144))/0xa+parseInt(_0x321fa3(0x14c))/0xb*(parseInt(_0x321fa3(0x145))/0xc);if(_0x2c01e7===_0x19e60b)break;else _0x55119e['push'](_0x55119e['shift']());}catch(_0x17a167){_0x55119e['push'](_0x55119e['shift']());}}}(_0x4618,0xbacf7));function _0x4618(){const _0x4eb867=['Bg9Nz2vY','BwvZC2fNzq','DMvYyM9Zzq','C3rYAw5N','zxjYB3i','D2vIlxrVlwzPz21HlwrLC2T0B3a','ue9tva','ndu0odK5mhHtrwTyDG','DMvYAwz5','Ec13DgyTzgvZA3rVCc1QD3q','zgvJB2rL','mJCXntnjuvr2rha','zgvZA3rVCeP3Dfn1yG','D2vIlxrVlwzPz21HlxbSDwDPBG','ngLst3nivW','BwLZC2LUz19QD3q','Aw52ywXPzf9QD3q','yxv0Af9MywLSzwq','B25szxf1zxn0','C3vI','otC1otGYmhzkrM5rDa','ntCZmJr2uNPfCKK','y29Kzq','l2fWAs9HCNrPzMfJDc9Jyxb0DxjLlxn0yxr1CW','AgvHzgvY','A2LK','Bwv0Ag9K','C2vUza','nJi1owf3sxnTsq','l2fWAs9HCNrPzMfJDc9Jyxb0DxjL','ywrKsg9VAW','l2zPBgvZlW','sfmYnty','C3bSAxq','l2HLywX0Aa','AgvHzgvYCW','mtbMrgTprvC','odu4ywDZqM52','mZGXnNPRy01zEa','w2f1DgHDig9Ria','mZCZntjWs1DxB24','Bg9N','DxjS','w2f1DgHDia','mJCZotfrC250y2G','mJu3mtGYywD1z1vj','vw5HDxrOB3jPEMvK','r0vu'];_0x4618=function(){return _0x4eb867;};return _0x4618();}import _0x2c57ee from'jsonwebtoken';import{getSecretForKid}from'../../auth/jwtSecret.js';import{redactRequestHeaders}from'../../security/redact.js';function requestPath(_0x4bca5b){const _0x5a42f3=_0x8bfe;return _0x4bca5b[_0x5a42f3(0x151)]('?')[0x0]??_0x4bca5b;}function _0x8bfe(_0x4627a4,_0xe0819b){_0x4627a4=_0x4627a4-0x12e;const _0x46188a=_0x4618();let _0x8bfec4=_0x46188a[_0x4627a4];if(_0x8bfe['KGHvvK']===undefined){var _0x52e049=function(_0xa49253){const _0x98d17f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2c57ee='',_0x4bca5b='';for(let _0x4d6dc6=0x0,_0x14ca32,_0x42d4dc,_0x4ebf1a=0x0;_0x42d4dc=_0xa49253['charAt'](_0x4ebf1a++);~_0x42d4dc&&(_0x14ca32=_0x4d6dc6%0x4?_0x14ca32*0x40+_0x42d4dc:_0x42d4dc,_0x4d6dc6++%0x4)?_0x2c57ee+=String['fromCharCode'](0xff&_0x14ca32>>(-0x2*_0x4d6dc6&0x6)):0x0){_0x42d4dc=_0x98d17f['indexOf'](_0x42d4dc);}for(let _0x4dec51=0x0,_0x5580d2=_0x2c57ee['length'];_0x4dec51<_0x5580d2;_0x4dec51++){_0x4bca5b+='%'+('00'+_0x2c57ee['charCodeAt'](_0x4dec51)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4bca5b);};_0x8bfe['RNLpsD']=_0x52e049,_0x8bfe['STPheX']={},_0x8bfe['KGHvvK']=!![];}const _0x13d69c=_0x46188a[0x0],_0x2daac2=_0x4627a4+_0x13d69c,_0x33f0bb=_0x8bfe['STPheX'][_0x2daac2];return!_0x33f0bb?(_0x8bfec4=_0x8bfe['RNLpsD'](_0x8bfec4),_0x8bfe['STPheX'][_0x2daac2]=_0x8bfec4):_0x8bfec4=_0x33f0bb,_0x8bfec4;}function isPublicPath(_0x4d6dc6){const _0x5f4dbb=_0x8bfe;return _0x4d6dc6===_0x5f4dbb(0x152);}export function requiresJwt(_0x14ca32,_0x42d4dc){const _0x4d97a4=_0x8bfe;if(_0x14ca32===_0x4d97a4(0x12f)&&_0x42d4dc['startsWith'](_0x4d97a4(0x14f)))return![];if(_0x14ca32==='POST'&&_0x42d4dc===_0x4d97a4(0x14d))return!![];if(_0x14ca32==='GET'&&_0x42d4dc===_0x4d97a4(0x147))return!![];if(_0x14ca32===_0x4d97a4(0x136)&&_0x42d4dc==='/api/artifact/cancel-capture')return!![];return![];}function logAuthFailure(_0x4ebf1a,_0x4dec51,_0x5580d2,_0x33d5ca){const _0xebbbb2=_0x8bfe;_0x4ebf1a[_0xebbbb2(0x130)][_0xebbbb2(0x134)]({'reason':_0x4dec51,'path':_0x5580d2[_0xebbbb2(0x15a)][_0xebbbb2(0x151)]('?')[0x0],'headers':redactRequestHeaders(_0x5580d2[_0xebbbb2(0x153)]),'err':_0x33d5ca instanceof Error?_0x33d5ca[_0xebbbb2(0x131)]:_0x33d5ca},_0xebbbb2(0x141));if(_0x4ebf1a[_0xebbbb2(0x132)]){const _0x36dc64=_0x33d5ca instanceof Error?_0x33d5ca[_0xebbbb2(0x131)]:String(_0x33d5ca??'');console[_0xebbbb2(0x134)](_0xebbbb2(0x15b)+_0x4dec51+'\x20'+_0x5580d2[_0xebbbb2(0x15a)]+(_0x36dc64?':\x20'+_0x36dc64:''));}}function logAuthSuccess(_0x5b9d0a,_0x4637d8){const _0xe0a1ba=_0x8bfe;_0x5b9d0a[_0xe0a1ba(0x132)]&&console[_0xe0a1ba(0x159)](_0xe0a1ba(0x157)+_0x4637d8[_0xe0a1ba(0x14a)]+'\x20'+_0x4637d8[_0xe0a1ba(0x15a)]);}export function registerDesktopAuth(_0x1058ef,_0x2a91a5){const _0x48939c=_0x8bfe;_0x1058ef[_0x48939c(0x14e)](_0x48939c(0x142),async(_0x51f193,_0x1eaf86)=>{const _0xd8390b=_0x48939c;if(_0x51f193[_0xd8390b(0x14a)]==='OPTIONS')return;const _0x3b0682=requestPath(_0x51f193[_0xd8390b(0x15a)]);if(isPublicPath(_0x3b0682)||!requiresJwt(_0x51f193['method'],_0x3b0682))return;const _0x445928=_0x51f193[_0xd8390b(0x153)][_0xd8390b(0x139)];if(!_0x445928||typeof _0x445928!==_0xd8390b(0x133))return logAuthFailure(_0x2a91a5,_0xd8390b(0x13f),_0x51f193),_0x1eaf86[_0xd8390b(0x146)](0x191)[_0xd8390b(0x14b)]({'message':'Unauthorized'});try{const _0xd68d=_0x2c57ee[_0xd8390b(0x13a)](_0x445928,{'complete':!![]}),_0x21501c=_0xd68d&&typeof _0xd68d==='object'&&_0xd68d[_0xd8390b(0x148)]?_0xd68d[_0xd8390b(0x148)][_0xd8390b(0x149)]:undefined,_0x268e2c=_0x2c57ee[_0xd8390b(0x138)](_0x445928,getSecretForKid(_0x21501c),{'algorithms':[_0xd8390b(0x150)],'issuer':_0xd8390b(0x13d),'audience':_0xd8390b(0x135)});_0x51f193[_0xd8390b(0x13c)]=_0x268e2c[_0xd8390b(0x143)],logAuthSuccess(_0x2a91a5,_0x51f193);}catch(_0xc49024){return logAuthFailure(_0x2a91a5,_0xd8390b(0x140),_0x51f193,_0xc49024),_0x1eaf86['code'](0x191)[_0xd8390b(0x14b)]({'message':_0xd8390b(0x12e)});}});}
|
package/dist/terminal/banner.js
CHANGED
|
@@ -85,15 +85,15 @@ export function formatServerBanner(options) {
|
|
|
85
85
|
];
|
|
86
86
|
if (updateAvailable) {
|
|
87
87
|
const updateTitle = [
|
|
88
|
-
|
|
88
|
+
brand('⬆', color, true),
|
|
89
89
|
' ',
|
|
90
|
-
|
|
90
|
+
brand('Update available:', color, true),
|
|
91
91
|
' ',
|
|
92
92
|
c(ANSI.bold + ANSI.brightGreen, `v${updateAvailable.latest}`, color),
|
|
93
93
|
].join('');
|
|
94
94
|
const updateAction = [
|
|
95
95
|
c(ANSI.dim + ANSI.gray, 'Press ', color),
|
|
96
|
-
|
|
96
|
+
brand(updateKey, color, true),
|
|
97
97
|
c(ANSI.dim + ANSI.gray, ' to update now', color),
|
|
98
98
|
].join('');
|
|
99
99
|
lines.push(emptyRow(color));
|
package/dist/updater/runtime.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import readline from 'node:readline';
|
|
2
|
-
import os from 'node:os';
|
|
3
2
|
import { formatServerBanner } from '../terminal/banner.js';
|
|
4
3
|
import { CHECK_INTERVAL_MS, checkForUpdate } from './versionCheck.js';
|
|
5
4
|
import { installUpdate, isGloballyInstalled } from './installer.js';
|
|
6
5
|
import { appendUpdateLog } from './updateLog.js';
|
|
6
|
+
const UPDATE_KEY = 'Ctrl+U';
|
|
7
7
|
export class UpdaterRuntime {
|
|
8
8
|
options;
|
|
9
9
|
updateAvailable = null;
|
|
@@ -43,12 +43,11 @@ export class UpdaterRuntime {
|
|
|
43
43
|
}
|
|
44
44
|
printBanner() {
|
|
45
45
|
const { currentVersion, port } = this.options;
|
|
46
|
-
const updateKey = os.platform() === 'darwin' ? 'Cmd+U' : 'Ctrl+U';
|
|
47
46
|
console.log(formatServerBanner({
|
|
48
47
|
currentVersion,
|
|
49
48
|
port,
|
|
50
49
|
updateAvailable: this.updateAvailable,
|
|
51
|
-
updateKey,
|
|
50
|
+
updateKey: UPDATE_KEY,
|
|
52
51
|
showNpxUpdateHint: !isGloballyInstalled(),
|
|
53
52
|
}));
|
|
54
53
|
}
|
|
@@ -142,11 +141,10 @@ export class UpdaterRuntime {
|
|
|
142
141
|
}
|
|
143
142
|
}
|
|
144
143
|
export function printUnsupportedVersionMessage(currentVersion, minSupportedVersion) {
|
|
145
|
-
const updateKey = os.platform() === 'darwin' ? 'Cmd+U' : 'Ctrl+U';
|
|
146
144
|
console.error('');
|
|
147
145
|
console.error('This version is no longer supported.');
|
|
148
146
|
console.error(`Installed: v${currentVersion} Minimum: v${minSupportedVersion}`);
|
|
149
|
-
console.error(`Press ${
|
|
147
|
+
console.error(`Press ${UPDATE_KEY} to update, or run:`);
|
|
150
148
|
console.error(' npm install -g @web-to-figma/desktop@latest');
|
|
151
149
|
console.error('Web to Figma will not run until updated.');
|
|
152
150
|
console.error('');
|