diff --git a/.env b/.env index 42d5a52..4ee10e6 100644 --- a/.env +++ b/.env @@ -12,6 +12,5 @@ LOG_NET_PORT=21 DATABASE_HOST=localhost DATABASE_PORT=5432 DATABASE_DB=legolog -DATABASE_DB_DEV=legolog DATABASE_USER=postgres DATABASE_PASSWORD=postgres diff --git a/.gitignore b/.gitignore index 1041d2d..383e5ae 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules/ logs.log -db/image/*/ +db/image/ +db/img/ diff --git a/db/README.md b/db/README.md new file mode 100644 index 0000000..1fb9e2a --- /dev/null +++ b/db/README.md @@ -0,0 +1,3 @@ +# This mess + +This mess is to aggregate and condense a massive database of lego parts, bricks and photos into a much more managable dataset which i can generate meaningful SQL for. diff --git a/db/aggregator.js b/db/aggregator.js new file mode 100644 index 0000000..c6cf204 --- /dev/null +++ b/db/aggregator.js @@ -0,0 +1,74 @@ +// goes through most-common-lego-parts and most-common-lego-sets +// and adds them to parts & sets to include, then goes through +// every part for the related sets and adds them to the parts list +// then gets the photos for all of above and moves them to the img +// directory as opposed to the original directory + +const md5 = require('md5'); +const fs = require('fs'); + +// so no duplicates +const sets = new Set(); +const parts = new Set(); + +const commonSets = fs.readFileSync('db/res/most-common-lego-sets.txt').toString().split('\n'); +const setList = JSON.parse(fs.readFileSync('db/res/sets.json').toString()); +for (let i = 0; i < commonSets.length; i++) { + console.log('adding set ' + commonSets[i]); + sets.add(commonSets[i]); +} + +// go through each set and add all parts to the parts list +for (let i = 0; i < commonSets.length; i++) { + const setParts = setList[commonSets[i]]; + console.log(commonSets[i] + ' has ' + Object.keys(setParts).length + ' unique parts'); + for (const part of Object.keys(setParts)) { + parts.add(part); + } +} + +const commonParts = fs.readFileSync('db/res/most-common-lego-parts.txt').toString().split('\n'); +for (let i = 0; i < commonParts.length; i++) { + console.log('adding part ' + commonParts[i]); + parts.add(commonParts[i]); +} + +// image hash eveything + +// function copyFileAndCreateDirs(source, bucket, filename) { +// const filePath = `db/img/${bucket[0]}/${bucket[1]}/${bucket[2]}/${bucket[3]}/${filename}`; +// try { +// if (!fs.existsSync(filePath)) { +// fs.mkdirSync(`db/img/${bucket[0]}`, { recursive: true }); +// fs.mkdirSync(`db/img/${bucket[0]}/${bucket[1]}`, { recursive: true }); +// fs.mkdirSync(`db/img/${bucket[0]}/${bucket[1]}/${bucket[2]}`, { recursive: true }); +// fs.mkdirSync(`db/img/${bucket[0]}/${bucket[1]}/${bucket[2]}/${bucket[3]}`, { recursive: true }); +// fs.copyFileSync(source, filePath); +// } +// } catch (err) { +// console.error(err); +// } +// } + +// for (const set of sets) { +// const hash = md5(set); +// console.log(hash); +// const bucket = hash.substring(0, 4); +// const filename = set + '.png'; + +// const file = `db/image/${bucket[0]}/${bucket[1]}/${bucket[2]}/${bucket[3]}/${filename}`; +// copyFileAndCreateDirs(file, bucket, filename); +// } + +// for (const part of parts) { +// const hash = md5(part); +// console.log(hash); +// const bucket = hash.substring(0, 4); +// const filename = part + '.png'; + +// const file = `db/image/${bucket[0]}/${bucket[1]}/${bucket[2]}/${bucket[3]}/${filename}`; +// copyFileAndCreateDirs(file, bucket, filename); +// } + +fs.writeFileSync('db/sets-to-include', JSON.stringify(Array.from(sets))); +fs.writeFileSync('db/parts-to-include', JSON.stringify(Array.from(parts))); diff --git a/db/dump.sql b/db/dump.sql new file mode 100644 index 0000000..e69de29 diff --git a/db/mostpopularbricks.js b/db/mostpopularbricks.js new file mode 100644 index 0000000..5b26ba5 --- /dev/null +++ b/db/mostpopularbricks.js @@ -0,0 +1,35 @@ + +// get all the id's from this page +// https://brickarchitect.com/most-common-lego-parts/ + +const fs = require('fs'); +const axios = require('axios'); + +async function get(url) { + // axios return HTML from website + try { + const res = await axios.get(url, { + method: 'GET', + headers: { 'User-Agent': 'Chrome/96.0.4664.175' }, + }); + return res.data.toString(); + } catch (e) { + fs.appendFileSync('error-set.txt', `${url}\n`); + console.log(`Failed to download ${url}`); + } +} + +async function main() { + const regex = /https:\/\/brickarchitect\.com\/content\/parts\/(.*?)\.png/g; + const data = await get('https://brickarchitect.com/most-common-lego-parts/'); + + data.match(regex).forEach((element) => { + // get out the id + const id = element.split('/')[5].split('.')[0]; + console.log(id); + + fs.appendFileSync('db/res/most-common-lego-parts.txt', `${id}\n`); + }); +} + +main(); diff --git a/db/parts-to-include b/db/parts-to-include new file mode 100644 index 0000000..6c4ca29 --- /dev/null +++ b/db/parts-to-include @@ -0,0 +1 @@ +["476","2357","2420","2431","2445","2449","2450","2456","2489","2540","2555","2654","2730","2780","2877","2926","3001","3002","3003","3004","3005","3007","3008","3009","3010","3020","3021","3022","3023","3024","3028","3031","3032","3034","3035","3036","3037","3038","3039","3040","3176","3297","3299","3460","3622","3623","3660","3666","3700","3701","3703","3708","3710","3737","3738","3743","3749","3795","3832","3895","3937","3938","3941","3958","4032","4070","4073","4161","4162","4274","4282","4286","4287","4445","4519","4522","4600","4716","4735","4742","4871","6005","6106","6111","6134","6140","6179","6180","6187","6231","6536","6541","6558","6587","6629","6632","6636","10247","11090","11212","11455","11950","14769","15038","15100","15210","15458","18450","30043","30236","30355","30356","30363","30374","30382","30383","30413","30503","30552","30553","32000","32013","32016","32018","32028","32054","32062","32064","32140","32278","32316","32324","32523","32524","32525","32526","32532","32555","32557","40490","41239","41747","41748","41767","41768","41769","41770","42003","43093","43719","43722","43723","44126","44294","44301","44302","44676","44728","47397","47398","47457","48336","48989","49668","51739","54200","54383","54384","55013","55615","56908","59349","60208","60478","60479","60481","60581","60594","61252","62462","63864","63868","63965","85984","87079","87082","87087","87544","87615","87994","88293","90498","92013","92280","92593","92690","92908","92909","92912","92946","96874","98138","98313","98721","99206","99207","99780","99781","76023stk01a","76023stk02","4592c02","48729b","2436b","3245c","4865b","4081b","4085d","3794b","60470b","4623b","3678b","3747b","3070b","3069b","3068b","2429c01","57909b","3069bpb0030","2412b","3062b","553c","4599b","4265c","3070bp07","90498pb14","56908c03","15038c03","15210pb043","15210pb042","3068bpb1186","3068bpb1188","3068bpb1187","3068bpb1189","3068bpb1185","3068bpb1190","3937c01","92908c01","98138pb170","11950c01","14769pb237","4865pb084","76023stk01b","52","2335","2339","2343","2419","2454","2460","2462","2465","2508","2639","2921","3006","3027","3029","3030","3065","3456","3659","3665","3673","3676","3679","3680","3702","3857","3900","4332","4477","4490","4510","4595","4733","4740","6020","6091","6112","6154","6155","6191","6233","6254","11203","11211","11458","11477","11610","12885","13459","13965","14520","14704","14716","14718","14719","15068","15254","15332","15395","15397","15461","15533","15535","15573","15712","15745","16577","18041","18646","18671","18674","18677","18838","18980","20309","20310","20482","20953","21229","22885","22888","22890","22961","23422","23443","23950","23969","23986","24093","24122","24201","24246","24316","24324","24855","24866","25269","26047","26601","26603","26604","27150","27263","27507","27925","28192","28621","28974","29111","30099","30106","30134","30136","30150","30292","30357","30414","30505","30987","32017","32039","32063","32065","32124","32474","32530","32802","32803","32828","32952","33078","33909","34103","34173","35044","35459","35464","35480","35530","35787","36017","36840","36841","37352","37704","37762","37775","37776","38014","41539","41740","42445","43693","43708","43888","43898","44861","49307","50950","53451","58176","59230","60474","60477","60592","60596","60601","60608","60616","60623","61409","61485","62361","64451","64644","64647","65578","66857","67329","68504","69066","85080","85861","87552","87580","87609","88292","88646","88930","90258","90398","90981","91988","92438","92950","93061","93273","93274","93609","98100","98283","98374","99563","75978stk01","75978stk02","75978stk03","75978stk04","3957b","2714b","2453b","4589b","2599a","93094pb03","36752c01","4697b","10202pb018","3044c","4460b","4079b","3626c","36756pb01","49656pb02","60583b","30241b","4738a","4739a","4502a","92084pb01","60601pb020","92084pb05","3069bpb0649","3068bpb1156","46212pb020","59349pb186","67632pb01","3069bpb0436","6112pb018","2335pb236","24093pb039","59349pb244","13459pb011","50950pb155","50950pb140","2431pb732","26603pb172","87079pb0989","3680c02","60474c01","2335pb234","50950pb142","50950pb141","26603pb171","3937c02","59349pb243","59349pb229","37352pb007","2431pb730","60616pb066","6179pb206","88930pb144","3010pb323","3010pb325","3010pb321","3010pb326","3010pb324","3010pb322","3010pb327","3010pb328","3010pb329","87079pb0991","2335pb235","87079pb0919","35530pb03","87079pb0992","59349pb248","59349pb246","59349pb247","2454pb199","4738ac01","3004pb245","3004pb244","3004pb243","3003pb135","50950pb149","50950pb148","50950pb154","50950pb151","50950pb153","50950pb152","50950pb147","50950pb150","50950pb145","50950pb146","50950pb144","50950pb143","93273pb163","93273pb161","93273pb162","93273pb160","3004pb242","30292pb047","3068bpb1791","3068bpb1792","3068bpb1793","59349pb245","6636pb282","3068bpb1664","66857pb007","3900pb05","3900pb07","3900pb06","3068bpb1665","3003pb134","85984pb325","2431pb731","6636pb283","2413","2432","2618","2817","2825","3033","3298","3308","3705","3706","3713","3894","4095","4589","6019","6190","30042","30145","30162","30365","32059","32184","32531","41764","41765","41854","41862","42023","47405","64567","10175stk01","4151b","3039ps1","4285b","44302a","4085c","30350c","553b","44375apb03","44301a","75c10","75c14","3794a","3747a","4599a","2598pb01","2476","3043","3873","4349","6553","6589","10928","11213","11214","11478","13547","13971","14720","15456","15462","30000","30104","30237","30377","30395","32001","32009","32034","32073","32209","32249","32269","32270","32291","32449","32556","33299","41677","41678","44809","47456","47759","48496","50304","50305","60483","60484","60849","61184","61510","61780","62113","63082","63869","64799","64951","74698","75937","86208","87083","92099","92107","92907","92947","98280","98286","98585","75059stk01a","3943b","x77ac50","6538c","30350b","60581pb108","85984pb320","85984pb321","3069bpb0950","3068bpb1693L","3068bpb1693R","3068bpb1694L","3068bpb1694R","87079pb0961","30350bpb070","30350bpb071","6179pb142L","6179pb142R","6180pb113L","6180pb113R","6180pb114","75059stk01b","30237b","2444","2653","3045","3648","3707","3830","3831","3956","3960","4185","4515","4728","6222","6232","6588","11272","11833","13252","30193","32002","32056","32072","32348","41531","42022","42610","43720","43721","44300","45677","48933","50955","50956","56902","60485","61678","85941","87620","92582","94925","98281","10240stk01","10240stk02","3039pb048","3039pb041","44301b","30554b","731c06","6538b","30361c","3069bpb0386","90498pb01","48933pb012","4515pb049LL","4515pb049LR","4515pb049UL","4515pb049UR","2431pb319","13252pb01","3004pb115L","3004pb115R","3010pb175L","3010pb175R","4085b","2458","2958","3307","3647","3794","4150","6628","12939","32187","33243","43857","44359","50745","52107","53586","60476","10225stk01","x131c","x71","90498pb09","44","892","4175","4588","4590","4598","4861","6249","6583","10202","10258","11253","11399","11476","13349","16770","18649","18651","30165","30251","30504","30526","30565","30663","32125","32198","32529","41749","41750","42446","43711","43712","43713","47455","48169","48171","48183","52501","64651","72454","87408","88517","91501","92474","93606","95188","95199","95227","95347","99773","99784","76042stk01a","90498pb02","90498pb03","30359b","3709b","75902pb01","3684c","2431p52","87079pb0360","87079pb0359","90498pb06","14769pb156","14769pb157","48933pb022L","48933pb022R","10202pb003","76042stk01b","2423","2566","3633","3685","3688","3811","3836","3837","3899","4176","4218","4345","4346","4528","4529","4532","4533","4536","4865","6003","6564","10170","11062","11640","13548","13790","13793","13808","14413","15070","15208","15279","15439","15470","18653","18943","19119","20193","21445","22385","22484","22667","24482","28327","30044","30046","30153","30340","30586","33125","33183","33291","35394","57895","58181","60593","60602","60603","64727","75904","85975","87585","87989","90195","92589","95342","98549","60797c02","3839b","3940b","26603pb001","3068bpb0408","98138pb010","3069bpx7","44567b","44302b","12888pb01","25975pb01","98138pb021","3068bpb0699","3068bpb0674","14769pb133","25269pb001","98138pb037","30151b","60603pb007","44375b","3069bpb0382","3068bpb0431","98138pb013","14769pb001","27063pb01","60592c01","60592c04","60592c02","6154c03","98138pb175","3068bpb1105","14769pb356","2397","2417","3063","3185","3581","3741","3847","3848","3849","3957","4497","4523","4623","6041","6182","6256","30137","30154","30241","30258","33048","33051","33057","33172","33320","40234","40241","47905","60607","64566","64648","64847","76768","10193stk01","3048c","3852b","70501c01","4495b","44658c01","3742c01","3684a","2599c01","2453a","64452pb01","4032b","4489b","4493c01pb04","30258pb015","6179pb015","33048c01","33172c01","64452pb01c01","3068bpb0182","3068bpb0181","30350cpb007","30350cpb006","4869","11215","11290","15459","16477","32138","42060","42061","44567","47458","47994","58247","58846","60471","76766","85970","86652","87559","87618","92738","93604","75060stk01a","3069bps2","61190d","61190c","3046a","50990b","15068pb152L","15068pb152R","90498pb10b","90498pb10a","15068pb151","15068pb150L","15068pb150R","41748pb095","41748pb094","41747pb095","41747pb094","95188pb32","3068bpb1696","58846pb23L","58846pb23R","41750pb028","41749pb028","88930pb090L","88930pb090R","16477pb01","75060stk01c","75060stk01d","75060stk01b","6585","15571","18654","18946","22886","23949","25893","27448","32580","33492","39789","39794","41682","44865","50340","50945","53923","57360","57518","57520","61345","61408","64179","65509","68382","69729","69929","85943","90370","91405","99008","71374stk01","3710pb001","88930pb123","3070bpb167","63864pb115","2431pb637","2431pb638","6636pb228","4162pb226","3068bpb1391","87079pb0751","87079pb0756","14769pb340","63864pb116","3068bpb1389","63864pb114","63864pb113","4162pb225","3068bpb1390","3070bpb168","25269pb014","24246pb005","75c27","6636pb226","6636pb227","87079pb0752","25269pb013","3070bpb169","98138pb172","69729pb002","10202pb021","10202pb022","42610c02","4216","4596","6178","10197","13564","14418","14682","15082","15392","17485","18974","20105","24309","26599","29096","30031","30132","30157","30166","30228","30229","30364","30375","30541","32014","43710","45590","47996","48092","87081","93059","95344","98397","75192stk01","3960pb040","85984pb127","20952pb02a","50990pb06","75c16","75c20","x164","88930pb083","3069bps1","14769pb003","29096pb01","18675pb14","44375bpb08","78c26","mynock","Porg01b","Porg01a","20105c01","87081c03","3937c08","20952pb02b","2341","2526","2527","2530","2544","2561","2562","2736","3835","4342","6266","10172","10884","14417","14518","15534","21301","26287","29109","32015","32200","32606","32607","33085","33121","34316","34337","35700","38320","38583","40378","40902","48205","48208","50450","53119","55236","60621","61976","64390","64645","64807","69261","69263","69264","69265","92338","92584","95228","95343","95345","95354","98262","48002a","x127c11","x127c41","87621pb01","30350bpb107","87587pb01","98138pb014","x110c01","98138pb045","4790b","3069bpb0730","3068bpb0929","2335pb212","2525pb012","3069bpb0779","3626cpb1018","973c00","14518c01pb01","2436","3821","3822","6108","13591","30088","30176","46212","47720","92409","98139","10232stk01","75c09","30089b","3068bpb0655","3039pb062","3829c01","87081c01","42610c03","57895pb015","57895pb016","57895pb017","87079pb0117L","87079pb0117R","87079pb0118","6178pb009","2496","42511","61254","73590c03a","87552pb016a","3069bpb0289","3069bpb0287","3069bpb0288","42511c01","13971c01","87552pb016b","2516","3026","3846","4498","6060","6124","6259","11010","11437","15341","15403","18165","18920","19121","22411","24085","32192","33009","33322","45301","60808","87421","87601","87926","88393","89522","89523","93231","93789","98369","98383","99301","71040stk01a","17349pb01","3942c","98138pb057","20695pb01","15429pb04","24093pb008","3960pb037","59349pb117","3069bpb0507","14769pb086","87926pb017","87926pb018","87926pb019","3846pb052","3846pb051","3846pb053","59349pb216","59349pb217","59349pb218","45301pb048","45301pb049","45301pb050","15403c01","3068bpb1215","87079pb0862","71040stk01b","2340","2577","2637","2815","2819","2852","3675","15407","18910","18938","18939","18947","24299","24307","25214","28220","28326","29119","29120","30192","32494","43045","43056","44709","46413","50451","50943","52985","57585","65676","85489","92906","98834","76139stk01","3049c","2739a","3068bpb1281","14769pb294","98138pb111","4476b","56074pb01","3004pb247","30363pb047","3678bpb120","15068pb373","87079pb1008L","87079pb1008R","90498pb26","41750pb029","41749pb029","18653pb003","2462pb05","93606pb144","11203pb073","18939c01","3005pb050","2512","2569","2655","3961","6177","11402","14301","15303","19917","30386","30562","30602","32250","43892","44568","44570","57899","61482","63141","87407","90202","75159stk01","75c32","3039pb076","x77ac100","15301c01","78c02","78c06","3040pb010","3960pb013","18675pb03","59233pb01","30408pb06","dianoga2","2655c02","2614","3455","6081","6083","6126","6148","6215","6239","30033","30103","30115","30238","30240","30332","30464","41250","47755","47990","48724","52040","53989","59229","60032","61975","62713","7623stk01","75c22","3245b","6082pb01","3626bpb0001","32064b","58846pb01","59349pb011","59349pb010","4515pb022","30413pb010","19220","20595","23405","23421","30095","30126","57894","60599","88704","98368","75827stk01","75827stk02","10830c01","2654pb004","14769pb024","98138pb036","3069bpb0312","60797c03","75c12","98138pb033","93221pb03","3626cpb1473","3005pb016","3245cpb035","3068bpb0951","93549pb01","19861pb04","19861pb03","3039pb045","3069bp01","3068bpb0950","14769pb011","30541pb001","85984pb196","85984pb195","63864pb076","60797c03pb03","60797c03pb02","60797c03pb01","85984pb194","4162pb191","3068bpb1179","87552pb083","33009pb056","87079pb0512","2454pb134","2454pb135","59349pb147","4346pb36","60601pb018","3069bpb0666","3068bpb1170","3068bpb1175","3068bpb1176","3068bpb1172","3068bpb1171","3068bpb1173","87079pb0513","11203pb037","6565","15706","28802","39613","42862","42918","48165","50337","50373","54662","59895","61483","65635","66727","73230","73825","76797","76798","78267","87761","93348","10283stk01","10283stk02","75c08","54200pb106","93273pb157","3070bpb140","3070bpb174","3069bpb0847","6628a","76796pb01","3008pb171L","3008pb171R","3039p05","24309pb028","3069bpb0797","10202pb029","10202pb028","34337c01","4594","6183","10169","18853","22388","26066","28870","37695","41948","51270","54568","60658","60806","61506","65098","93095","98282","87079pb0672","87079pb0671","35787pb004","41835pb01","57763pb02","24093pb026","14419","17114","18587","18588","22410","27393","30261","36083","60212","64867","76128stk01","21560pb08","25893u","64867pb03","18588c01","15068pb208","15068pb206","15068pb207","6636pb203","63864pb085","30261pb040","11618","13770","28466","33303","62698","92692","93082","93092","93216","41314stk01","3069bpb0428","57895pb039","18852pb01","3069bpb0989","3068bpb0933","87079pb0623","3068bpb1421","3068bpb1422","62698pb14","87079pb0770","87079pb0769","87079pb0773","3297pb049","46212pb019","60581pb129","2454pb142","2454pb143","2454pb141","2454pb158","2454pb157","60623pb08","59349pb189","59349pb187","59349pb176","59349pb188","3068bpb1424","3068bpb1423","87079pb0768","2446","2447","18948","44661","48723","55982","92926","60581pb094","26603pb015","2431pb499","2431pb495","2431pb496","2431pb497","2431pb498","4006","87414","93106","30363pb021","34337c02","15469","25516","35563","35565","41154stk01","24183pb01","24183pb02","11241pb06","3960pb047","3069bpx40","60474c03","3068bpb1460","87079pb0746","87079pb0791L","87079pb0791R","87926pb015","87926pb016","14769pb349","4865pb088","6259pb048","60581pb151","35565pb001","22385pb202","35470","66787","66789","66790","66792","3068bpb1379","30350bpb111","3068bpb1380","68869pb002","66792pb001","3003pb118","3068bpb1359","18976","18977","51239","51266","60219","75957stk01","3626cpb2408","3069bpb0440","2431pb728","26603pb173","18976c01","3010pb318","15068pb369","87079pb0987","18789","19727pb001","3004pb122","minespider01","25386","27063","52031","93160","44567a","3068bpb0851","3070bpb089","3069bpb0279","3068bpb1141","3068bpb0819","98138pb007","20952","24947","25375","35574","39739","49577","54671","65473","68013","21326stk01","21326stk02","98374pb04","98138pb177","6636pb270","98138pb042","14769pb196","98138pb186","2435","2441","2473","3823","4488","18895","18896","21459","30028","36934","39893","50861","50862","51482","54661","66955","69958","70922","71771","71772","74967","87697","92262","92585","98130","60292stk01","71772pb01","87079pb0821","3070bpb180","3069bpb0855","6014b","69962pb01","14769pb160","6126b","15391c01","3040pb027","3039pb139","3068bpb1045","36934c04","50862c01","6014bc05","74967c01","18895c16","22889","24184","34816","35442","39262","40066","65426","65429","65700","73878","41447stk01","11568pb04","98138pb028","35700pb07","15396","18922","30841","35103","46303","67095","67338","93088pb09","65630c01","93568pb002","87079pb0913","14769pb392","66857pb005","15396c08","11267","15503","18854","18855","23187","32905","35183","38159","40243","40244","42205","46342","69900","69903","41450stk01","90370pb03","65080pb02","98138pb174","3069bp02","3069bpb0854","14769pb050","93094pb01","66965pb01","3069bpb0761","98138pb088","49661pb01","11213c02","11609","42509","93086","93096","41446stk01","69902pb01","98393b","98393f","98393g","98393c","98393j","98393e","98393a","98393i","98393d","69901pb01","76950c01pb02","98138pb055","27986pb03","98138pb183","49576pb01","4719","35485","93552","41682stk01","35809pb01","92851c01","3069bpb0538","4719c02","3878","4449","18675","37178","64000","65617","93555","41684stk01","34050pb02","40359c01","11575pb04","4094","11641","30055","30390","93081","41008stk01","60800a","x45","4150pb106","3068bpb0746","87079pb0129","30350pb023","14769pb002","18990","30222","47847","41325stk01","98138pb023","93088pb02","3960pb028","3069bpb0842","2454pb166","2454pb164","2454pb165","2454pb167","3069bpb0862","87079pb0805","16577pb01","3068bpb1430","3068bpb1431","3068bpb1432","3068bpb1433","3068bpb1434","87079pb1029","6192","38317","47543","90540","91884","94161","75969stk01","3062bpb065","98138pb118","3062bpb058","24093pb040","24093pb041","87552pb084","3245cpb177","2454pb208","3069bpb0959","3068bpb1789","11946","11947","18944","24116","27940","30699","32199","32202","44309","56145","56904","64393","64681","71682","87080","87086","42123stk01","x346","42531pb001L","42531pb001R","32523pb26L","32523pb26R","32316pb056","32316pb053","32316pb055","32316pb054","32524pb044","41239pb025","41239pb026","32140pb15L","32140pb15R","71682pb001","87086pb062","11946pb052","11946pb054","11946pb053","11946pb056","11946pb051","11946pb055","11947pb052","11947pb054","11947pb053","11947pb056","11947pb051","11947pb055","56145c01","56904c02","32524pb045L","32524pb045R","32526pb024L","32526pb024R","71682pb002L","71682pb002R","87080pb062","87086pb063","64681pb046","64393pb046","11946pb058","11947pb058","88930pb139","63869pb003","63869pb004","32523pb24","32523pb25","11946pb057","11947pb057","32123","4085","59443","48729","60470","88323","88072","2453","54657","298c02","15379","553","73562","4624","87747","55981","3678","3709","14395","36752a","59426","13731","14696","27261","99021","90194","18575","50951","2723","11208","64782","92402","15400","40344","11209","40345","40379","64225","32271","6157","15391","15209","92410","24375","53585","57909","70681","44375","50254","32126","3049","39793","15092","19807a","38585","23948","61903","24119","32932","60169","2853","49731","27256","56890","2739","60583","30089","41669","93594","3046","2599","3044","27928","58090","48170","66956","2850","65803","4863","64570","11291","49311","74261","89201","57697","2851","11954","24593","61072","87617","4739","93593","27965","66909","47753","64448","49283","55976","30385","18759","3464","44674","56891","44225","36451a","50949","85543","18945","15413","24599","44224","3228","14181","2415","15362","30093","18975","93595","98137","4083","2486","54672","68568","24946","62531","22391","18892","14137","35789","61800","4151","93571","62360","64683","60614","10187","27257","76537","64391","92842","15460","62743","92220","14226c11","35654","4727","18034","15540","3300","15064","53400","28588","3943","4489","26597","67737","24869","72869","67810","35443","2854","37341c","37341d","13269","37341b","37341a","37341e","19159","13608","55978","99009","64178","30592","78594","6070","64728","90397","46667","87693","57515","24504","57783","57878","18978a","18978b","99010","219","53454","32498","27262","15445","30361","78256"] \ No newline at end of file diff --git a/db/res/most-common-lego-parts.txt b/db/res/most-common-lego-parts.txt new file mode 100644 index 0000000..e546375 --- /dev/null +++ b/db/res/most-common-lego-parts.txt @@ -0,0 +1,1005 @@ +4073 +3023 +3024 +98138 +2780 +3069b +3710 +54200 +3004 +3005 +3020 +3022 +3070b +25269 +15573 +6558 +3021 +3623 +2412b +3666 +11477 +3010 +2431 +85984 +2420 +15068 +4274 +3001 +3003 +85861 +3062b +87079 +3795 +3068b +43093 +4032 +87580 +24866 +6636 +3040 +15712 +3622 +63864 +87087 +99780 +4070 +32062 +3460 +99207 +32028 +4589 +22885 +3009 +6091 +2877 +3941 +2357 +11211 +32123 +3034 +4162 +44728 +4085 +35480 +99206 +32054 +41740 +3039 +30136 +3660 +2654 +3700 +98283 +3665 +20482 +18654 +4519 +92280 +59443 +92946 +60478 +63868 +32952 +33909 +3713 +99781 +93273 +99563 +48336 +3245c +3031 +4477 +61252 +11214 +50950 +32064 +24201 +3673 +87994 +61409 +27925 +26601 +6541 +3002 +62462 +30414 +3032 +24246 +18674 +26603 +48729 +2540 +32523 +32316 +61678 +26047 +60483 +32000 +32607 +6536 +32140 +11476 +30374 +28192 +14769 +15100 +3832 +4865 +4286 +32524 +4740 +18677 +60470 +11090 +11458 +32526 +60592 +2456 +3008 +87552 +42003 +49307 +18651 +11212 +3749 +30241 +33291 +34103 +41677 +2454 +60474 +53451 +3705 +32013 +60479 +60481 +2429c01 +15535 +85080 +26604 +36840 +14719 +3937 +32828 +64567 +88323 +27263 +3701 +32803 +32073 +3065 +40490 +60601 +22388 +3035 +64644 +3958 +63965 +14704 +2436 +2450 +43722 +43723 +29120 +4599b +2445 +29119 +49668 +22385 +2432 +87083 +32278 +30413 +14716 +4081b +32525 +6134 +24309 +30357 +24316 +41769 +10247 +6628 +15070 +41770 +47457 +6632 +32184 +15392 +6005 +88072 +51739 +3659 +4282 +11203 +36841 +30565 +23443 +3037 +32556 +6231 +37352 +3747b +4460b +87620 +3176 +3298 +93274 +14417 +32034 +22961 +88646 +44865 +2453 +54657 +60596 +18653 +33183 +298c02 +15379 +60477 +32039 +92947 +3036 +2423 +27507 +93606 +32002 +87544 +24307 +4490 +14418 +48092 +6014b +3957 +15470 +23969 +3706 +60484 +24299 +4733 +30503 +30153 +41239 +44294 +553 +73562 +21459 +11215 +32270 +4624 +2449 +87747 +11478 +55981 +6179 +15571 +3894 +13547 +63869 +20310 +3030 +35787 +26287 +54383 +60581 +41682 +2465 +44301 +13965 +18980 +15462 +6111 +54384 +3678 +32124 +3709 +32016 +6589 +30237 +3702 +4287 +25214 +47905 +3033 +96874 +87697 +92950 +3029 +3680 +3684c +32449 +6112 +14395 +88292 +3007 +37762 +2417 +88930 +4510 +18649 +36752a +22888 +3045 +32606 +4079b +52107 +3829c01 +4697b +11253 +6232 +64647 +15208 +50340 +91988 +3703 +60593 +58176 +43888 +15403 +59349 +48989 +87082 +2476 +2817 +4216 +43898 +6003 +30236 +2921 +98100 +15706 +11833 +60594 +3899 +32192 +2460 +13548 +6587 +41539 +3028 +3895 +59426 +6126b +3839b +15303 +2419 +43857 +6180 +60849 +44567 +32291 +32009 +92582 +4871 +35464 +15533 +15458 +13731 +15254 +87081 +30137 +11609 +60602 +30383 +41678 +11213 +57360 +4185 +30363 +2736 +30350b +42610 +93095 +24855 +92438 +2653 +17485 +10197 +6553 +64179 +56145 +14696 +3633 +18646 +23950 +87609 +60476 +47455 +22890 +32474 +61184 +3938 +27940 +27261 +11610 +99021 +55013 +94925 +32530 +14419 +47456 +89522 +3679 +32063 +37775 +90194 +32014 +64799 +4600 +92013 +32056 +18575 +87414 +3942c +22667 +50951 +6106 +59895 +2730 +57895 +60485 +15395 +2723 +15461 +11208 +15332 +33320 +34816 +30028 +2496 +50745 +30099 +10928 +32015 +3707 +30176 +2343 +4488 +3830 +3831 +30165 +64782 +39739 +6081 +61485 +85943 +90195 +74967 +30162 +99008 +32018 +32001 +3297 +11946 +47398 +92402 +33078 +25893 +30000 +33243 +11947 +60616 +50304 +14718 +32348 +15456 +98282 +15400 +66792 +6629 +40344 +11209 +16577 +50305 +75937 +30031 +22886 +33299 +47397 +46212 +47458 +22484 +30166 +43719 +53923 +37695 +40345 +6215 +45590 +3038 +10202 +30044 +3738 +30602 +92690 +6182 +42023 +30145 +6191 +18041 +61482 +22889 +40379 +30157 +69729 +18853 +92907 +64225 +48171 +98834 +2639 +42022 +4345 +3708 +13971 +98585 +32271 +35044 +14720 +28326 +67329 +4346 +85975 +99773 +6157 +30562 +2462 +26599 +30526 +18976 +13564 +3006 +65578 +93160 +38320 +32059 +6060 +15391 +15209 +18977 +92338 +92410 +64648 +24375 +11618 +53585 +43045 +4590 +19220 +95344 +25375 +57909 +90258 +10884 +48169 +39789 +2447 +4175 +3743 +73825 +30663 +3960 +4006 +76766 +28870 +61780 +70681 +52501 +44375 +55982 +52031 +73230 +85941 +3648 +87618 +50254 +3737 +91405 +24482 +60032 +32126 +92099 +3049 +98721 +88293 +92738 +60603 +15397 +6254 +90540 +4349 +2655 +39793 +3675 +3676 +43713 +64727 +6259 +61254 +21445 +15092 +50861 +62113 +91501 +43710 +19807a +92409 +50862 +30586 +18946 +32555 +38585 +4218 +16770 +23948 +93555 +44568 +30504 +61903 +43892 +35459 +98397 +24119 +32072 +65509 +60608 +4595 +3685 +32932 +60169 +24116 +2853 +45677 +49731 +58247 +27256 +56890 +27393 +19119 +60219 +2739 +72454 +60583 +14413 +18948 +30089 +33085 +30150 +6020 +3027 +60212 +6187 +41669 +32802 +93594 +3046 +98139 +30340 +2599 +95347 +3044 +2569 +43711 +27928 +37776 +18854 +99784 +30505 +60208 +87989 +4735 +64867 +2825 +24122 +4445 +30046 +58090 +48170 +38014 +2489 +27448 +48208 +30355 +50943 +92692 +48205 +6233 +60623 +41854 +66956 +30356 +60607 +2850 +32324 +65803 +4863 +42446 +47847 +64570 +11291 +53119 +32557 +4528 +2926 +49311 +33172 +74261 +32250 +89201 +3940b +4533 +2852 +43056 +36017 +4536 +57697 +57585 +6222 +62361 +32249 +65098 +2851 +13349 +54662 +11954 +24593 +63082 +61072 +93604 +87617 +42918 +47759 +47755 +4739 +93593 +27965 +54671 +41948 +66909 +32065 +6190 +x346 +41748 +95188 +18974 +41747 +47753 +65617 +3837 +40378 +3956 +64448 +6239 +49283 +6249 +4738a +87408 +55976 +87407 +38583 +30385 +95228 +15279 +95199 +18759 +6183 +2815 +3852b +4176 +3464 +44126 +18920 +44674 +30151b +87080 +32017 +56891 +19121 +3823 +6583 +3822 +88704 +3456 +44225 +36451a +55236 +33492 +50949 +3821 +33051 +85543 +43712 +18945 +92585 +12885 +15413 +87421 +24599 +44224 +3228 +4522 +21229 +30395 +3185 +23405 +14181 +2415 +50337 +15362 +87086 +32187 +14682 +24093 +66789 +41531 +88393 +30093 +18975 +93595 +54661 +57520 +98137 +4083 +32529 +24947 +2486 +54672 +18944 +15745 +6565 +32198 +68568 +95343 +24946 +6192 +18910 +20309 +92107 +62531 +56904 +2340 +22391 +18892 +14137 +3043 +6564 +35789 +24324 +61800 +4151 +55615 +90370 +87585 +93571 +62360 +64683 +60614 +10187 +74698 +25386 +27257 +35442 +51270 +76537 +64391 +92842 +6154 +44809 +29109 +18838 +15460 +39794 +29111 +48933 +62743 +39613 +28974 +6124 +92220 +14226c11 +60599 +28327 +35654 +6256 +4727 +18034 +60808 +15540 +64951 +51239 +49577 +3300 +6148 +15064 +18588 +18587 +39893 +40066 +41862 +32200 +45301 +53400 +35470 +51266 +3900 +28588 +2714b +61408 +3943 +4489 +64847 +26597 +67737 +50956 +50955 +24869 +72869 +11010 +93789 +11399 +67810 +23949 +35443 +15469 +2854 +37341c +3836 +2819 +23986 +44300 +37341d +13269 +37341b +37341a +4161 +65426 +65429 +37341e +19159 +33121 +13608 +2530 +92589 +60621 +55978 +34173 +33322 +99009 +64178 +67095 +30592 +78594 +4515 +35700 +86208 +6070 +64728 +90397 +46667 +87693 +57515 +24504 +57783 +40243 +30043 +57878 +18978a +18978b +90202 +99010 +219 +28220 +30132 +53454 +98549 +30134 +32498 +27262 +98369 +30987 +33303 +15445 +30361 +78256 \ No newline at end of file diff --git a/db/res/most-common-lego-sets.txt b/db/res/most-common-lego-sets.txt new file mode 100644 index 0000000..832ff8d --- /dev/null +++ b/db/res/most-common-lego-sets.txt @@ -0,0 +1,43 @@ +76023-1 +75978-1 +10175-1 +75059-1 +10240-1 +10225-1 +76042-1 +10255-1 +10193-1 +75060-1 +71374-1 +75192-1 +21322-1 +10232-1 +21103-1 +71040-1 +76139-1 +75159-1 +7623-1 +75827-1 +10283-1 +10270-1 +76128-1 +41314-1 +21312-1 +70841-1 +41154-1 +71360-1 +75957-1 +21113-1 +31097-1 +21326-1 +60292-1 +41447-1 +41440-1 +41450-1 +41446-1 +41682-1 +41684-1 +41008-1 +41325-1 +75969-1 +42123-1 \ No newline at end of file diff --git a/db/schema.sql b/db/schema.sql index 8643897..4b1e126 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -1,5 +1,3 @@ -CREATE DATABASE IF NOT EXISTS `legolog`; -USE `legolog`; CREATE TABLE IF NOT EXISTS tag ( id INT NOT NULL PRIMARY KEY, @@ -26,7 +24,7 @@ CREATE TABLE IF NOT EXISTS lego_set ( date_released TIMESTAMP WITHOUT TIME ZONE, dimensions_x DECIMAL, dimensions_y DECIMAL, - dimensions_z DECIMAL, + dimensions_z DECIMAL ); CREATE TABLE IF NOT EXISTS lego_brick ( @@ -39,24 +37,24 @@ CREATE TABLE IF NOT EXISTS lego_brick ( dimensions_z INT, date_from TIMESTAMP WITHOUT TIME ZONE, date_to TIMESTAMP WITHOUT TIME ZONE, - FOREIGN KEY ( colour ) REFERENCES lego_brick_colour( id ), + FOREIGN KEY ( colour ) REFERENCES lego_brick_colour( id ) ); CREATE TABLE IF NOT EXISTS lego_brick_tag ( id VARCHAR (50) NOT NULL PRIMARY KEY, - brick_id VARCHAR (50) NOT NULL + brick_id VARCHAR (50) NOT NULL, tag INT NOT NULL, FOREIGN KEY ( brick_id ) REFERENCES lego_brick( id ), - FOREIGN KEY ( tag ) REFERENCES tag( id ), -) + FOREIGN KEY ( tag ) REFERENCES tag( id ) +); CREATE TABLE IF NOT EXISTS lego_set_tag ( id VARCHAR (50) NOT NULL PRIMARY KEY, - set_id VARCHAR (50) NOT NULL + set_id VARCHAR (50) NOT NULL, tag INT NOT NULL, FOREIGN KEY ( set_id ) REFERENCES lego_set( id ), - FOREIGN KEY ( tag ) REFERENCES tag( id ), -) + FOREIGN KEY ( tag ) REFERENCES tag( id ) +); CREATE TABLE IF NOT EXISTS set_descriptor ( set_id VARCHAR (50) NOT NULL, @@ -92,7 +90,7 @@ CREATE TABLE IF NOT EXISTS users ( address text NOT NULL, postcode text NOT NULL, date_created TIMESTAMP WITHOUT TIME ZONE NOT NULL, - date_updated TIMESTAMP WITHOUT TIME ZONE NOT NULL, + date_updated TIMESTAMP WITHOUT TIME ZONE NOT NULL ); CREATE TABLE IF NOT EXISTS orders ( @@ -108,6 +106,6 @@ CREATE TABLE IF NOT EXISTS order_items ( set_id VARCHAR (50), amount INT NOT NULL, FOREIGN KEY ( order_id ) REFERENCES orders( id ), - FOREIGN KEY ( brick_id ) REFERENCES lego_brick( id ) + FOREIGN KEY ( brick_id ) REFERENCES lego_brick( id ), FOREIGN KEY ( set_id ) REFERENCES lego_set( id ) ); diff --git a/db/sets-to-include b/db/sets-to-include new file mode 100644 index 0000000..1c95c44 --- /dev/null +++ b/db/sets-to-include @@ -0,0 +1 @@ +["76023-1","75978-1","10175-1","75059-1","10240-1","10225-1","76042-1","10255-1","10193-1","75060-1","71374-1","75192-1","21322-1","10232-1","21103-1","71040-1","76139-1","75159-1","7623-1","75827-1","10283-1","10270-1","76128-1","41314-1","21312-1","70841-1","41154-1","71360-1","75957-1","21113-1","31097-1","21326-1","60292-1","41447-1","41440-1","41450-1","41446-1","41682-1","41684-1","41008-1","41325-1","75969-1","42123-1"] \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4ddd23f..4818b26 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,11 +11,14 @@ "dependencies": { "axios": "^0.25.0", "cli-color": "^2.0.1", + "decompress": "^4.2.1", + "decompress-targz": "^4.1.1", "dotenv": "^10.0.0", "express": "^4.17.2", "express-oauth2-jwt-bearer": "^1.1.0", "jest": "^27.4.5", "jsdoc": "^3.6.10", + "md5": "^2.3.0", "moment": "^2.29.1", "npm": "^8.6.0", "pg": "^8.7.3", @@ -1331,6 +1334,25 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/bindings": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", @@ -1339,6 +1361,42 @@ "file-uri-to-path": "1.0.0" } }, + "node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/bl/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/bl/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -1432,6 +1490,56 @@ "node-int64": "^0.4.0" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -1521,6 +1629,14 @@ "node": ">=10" } }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "engines": { + "node": "*" + } + }, "node_modules/ci-info": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", @@ -1597,6 +1713,11 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1679,6 +1800,14 @@ "node": ">= 8" } }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "engines": { + "node": "*" + } + }, "node_modules/cssstyle": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", @@ -1725,6 +1854,150 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" }, + "node_modules/decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "dependencies": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dependencies": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tar/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dependencies": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2/node_modules/file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dependencies": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "dependencies": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip/node_modules/file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip/node_modules/get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress/node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress/node_modules/make-dir/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" + } + }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -1846,6 +2119,14 @@ "node": ">= 0.8" } }, + "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==", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/entities": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", @@ -2793,6 +3074,14 @@ "bser": "2.1.1" } }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dependencies": { + "pend": "~1.2.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -2805,6 +3094,14 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "engines": { + "node": ">=4" + } + }, "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -2917,6 +3214,11 @@ "node": ">= 0.6" } }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3161,6 +3463,25 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -3282,6 +3603,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, "node_modules/is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", @@ -3357,6 +3683,11 @@ "node": ">=0.10.0" } }, + "node_modules/is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" + }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -4578,6 +4909,16 @@ "node": ">= 12" } }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", @@ -6959,6 +7300,14 @@ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", @@ -7158,6 +7507,11 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, "node_modules/pg": { "version": "8.7.3", "resolved": "https://registry.npmjs.org/pg/-/pg-8.7.3.tgz", @@ -7278,6 +7632,33 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/pirates": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz", @@ -7365,6 +7746,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -7553,6 +7939,18 @@ "node": ">=10" } }, + "node_modules/seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "dependencies": { + "commander": "^2.8.1" + }, + "bin": { + "seek-bunzip": "bin/seek-bunzip", + "seek-table": "bin/seek-bzip-table" + } + }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -7796,6 +8194,14 @@ "node": ">=8" } }, + "node_modules/strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dependencies": { + "is-natural-number": "^4.0.1" + } + }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -7848,6 +8254,50 @@ "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=" }, + "node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dependencies": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/tar-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/tar-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -7887,6 +8337,11 @@ "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==" }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, "node_modules/timers-ext": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", @@ -7901,6 +8356,11 @@ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, + "node_modules/to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -8049,6 +8509,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, "node_modules/underscore": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", @@ -8079,6 +8548,11 @@ "punycode": "^2.1.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -8263,6 +8737,15 @@ "engines": { "node": ">=10" } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } } }, "dependencies": { @@ -9281,6 +9764,11 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, "bindings": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", @@ -9289,6 +9777,44 @@ "file-uri-to-path": "1.0.0" } }, + "bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -9368,6 +9894,39 @@ "node-int64": "^0.4.0" } }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -9430,6 +9989,11 @@ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + }, "ci-info": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", @@ -9493,6 +10057,11 @@ "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -9551,6 +10120,11 @@ "which": "^2.0.1" } }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" + }, "cssstyle": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", @@ -9588,6 +10162,123 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" }, + "decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "requires": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "dependencies": { + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + } + } + }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "requires": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + } + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "requires": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "requires": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + } + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "requires": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + } + } + }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -9676,6 +10367,14 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "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==", + "requires": { + "once": "^1.4.0" + } + }, "entities": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", @@ -10391,6 +11090,14 @@ "bser": "2.1.1" } }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -10400,6 +11107,11 @@ "flat-cache": "^3.0.4" } }, + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" + }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -10482,6 +11194,11 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -10650,6 +11367,11 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -10737,6 +11459,11 @@ "has-tostringtag": "^1.0.0" } }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, "is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", @@ -10785,6 +11512,11 @@ "is-extglob": "^2.1.1" } }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" + }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -11737,6 +12469,16 @@ "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz", "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==" }, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", @@ -13368,6 +14110,11 @@ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, "object-inspect": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", @@ -13510,6 +14257,11 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, "pg": { "version": "8.7.3", "resolved": "https://registry.npmjs.org/pg/-/pg-8.7.3.tgz", @@ -13604,6 +14356,24 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, "pirates": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz", @@ -13663,6 +14433,11 @@ } } }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -13800,6 +14575,14 @@ "xmlchars": "^2.2.0" } }, + "seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "requires": { + "commander": "^2.8.1" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -13996,6 +14779,14 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "requires": { + "is-natural-number": "^4.0.1" + } + }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -14033,6 +14824,49 @@ "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=" }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -14063,6 +14897,11 @@ "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==" }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, "timers-ext": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", @@ -14077,6 +14916,11 @@ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -14191,6 +15035,15 @@ "which-boxed-primitive": "^1.0.2" } }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, "underscore": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", @@ -14215,6 +15068,11 @@ "punycode": "^2.1.0" } }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -14359,6 +15217,15 @@ "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } } } } diff --git a/package.json b/package.json index 7bc28d8..be99a65 100644 --- a/package.json +++ b/package.json @@ -28,11 +28,14 @@ "dependencies": { "axios": "^0.25.0", "cli-color": "^2.0.1", + "decompress": "^4.2.1", + "decompress-targz": "^4.1.1", "dotenv": "^10.0.0", "express": "^4.17.2", "express-oauth2-jwt-bearer": "^1.1.0", "jest": "^27.4.5", "jsdoc": "^3.6.10", + "md5": "^2.3.0", "moment": "^2.29.1", "npm": "^8.6.0", "pg": "^8.7.3", diff --git a/src/database/database.js b/src/database/database.js index 0bc7fce..7db3d6a 100644 --- a/src/database/database.js +++ b/src/database/database.js @@ -44,6 +44,22 @@ class Database { await con; return this.connection; } + + async query(query, params, callback) { + if (!this.connection) { + await this.connect(); + } + + // debug moment + Logger.Database(`PSQL Query: ${query.substring(0, 100)}...`); + const result = await this.connection.query(query, params, callback); + return result; + } + + async destroy() { + await this.connection.end(); + this.connection = null; + } } module.exports = { diff --git a/src/first-time-run.js b/src/first-time-run.js index 1adbfce..32c1ea3 100644 --- a/src/first-time-run.js +++ b/src/first-time-run.js @@ -1,15 +1,77 @@ // Populate databaes, create admin user, etc +const Logger = require('./logger.js'); +const Config = require('./config.js'); const Database = require('./database/database.js'); +const decompress = require('decompress'); +const decompressTargz = require('decompress-targz'); + +const fs = require('fs'); + console.log('LegoLog Setting Up:tm:'); -async main() { - // connect to database - const Database = new Databse.IDatabase(); - await Database.connect(); - - // run setup script to create schema +async function main() { + Config.Load(); + await Logger.Init({ + logLevel: process.env.LOG_LEVEL, + logToConsole: process.env.LOG_CONSOLE, + logFile: process.env.LOG_FILE, + }); + + Logger.Info('DECOMPRESSING - DO NOT CLOSE, THIS MAY TAKE A WHILE...'); + Logger.Info('DECOMPRESSING - DO NOT CLOSE, THIS MAY TAKE A WHILE...'); + + // connect to database + const db = new Database.IDatabase(); + await db.connect(); + + // unzip images ASYNC + decompress('db/img.tar.gz', 'db/', { + plugins: [ + decompressTargz(), + ], + }).then(() => { + console.log('Files decompressed'); + }); + + + const tableQuery = fs.readFileSync('./db/schema.sql').toString(); + /* eslint-disable-next-line */ + await new Promise(async (resolve, reject) => { + // run setup script to create schema + await db.query(tableQuery, [], (err, res) => { + if (err) { + Logger.Error(err); + resolve(); + return; + } + for (const result of res) { + Logger.Database(result.command); + } + resolve(); + }); + }); + + // populate database + const dump = fs.readFileSync('./db/dump.sql').toString(); + /* eslint-disable-next-line */ + await new Promise(async (resolve, reject) => { + await db.query(dump, [], (err, res) => { + if (err) { + Logger.Error(err); + resolve(); + return; + } + // console.log(res); + resolve(); + }); + }); + + await db.destroy(); + + Logger.Info('DECOMPRESSING - DO NOT CLOSE, THIS MAY TAKE A WHILE...'); + Logger.Info('DECOMPRESSING - DO NOT CLOSE, THIS MAY TAKE A WHILE...'); } main(); diff --git a/src/index.js b/src/index.js index 9e826ed..cc55a64 100644 --- a/src/index.js +++ b/src/index.js @@ -3,7 +3,7 @@ const Config = require('./config.js'); const Server = require('./routes/server.js'); const API = require('./routes/api.js'); -const Databse = require('./database/database.js'); +const Database = require('./database/database.js'); async function main() { Config.Load(); @@ -17,8 +17,8 @@ async function main() { }); Logger.Info('Pre-Init Complete'); - const Database = new Databse.IDatabase(); - await Database.connect(); + const db = new Database.IDatabase(); + await db.connect(); Server.Listen(process.env.PORT); API.Init();