From c7ebbf78476855ed53b2a92891710b022d336a77 Mon Sep 17 00:00:00 2001 From: matlem037 Date: Tue, 5 Jan 2021 13:44:47 +0100 Subject: [PATCH 01/39] Create fr.json Translation fr --- translations/fr.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 translations/fr.json diff --git a/translations/fr.json b/translations/fr.json new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/translations/fr.json @@ -0,0 +1 @@ + From bd44b29e2b38e7f25f923d3259c339428e976e6d Mon Sep 17 00:00:00 2001 From: matlem037 Date: Tue, 5 Jan 2021 13:47:04 +0100 Subject: [PATCH 02/39] Update fr.json --- translations/fr.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/translations/fr.json b/translations/fr.json index 8b137891..46a308ff 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -1 +1,16 @@ - +{ + "LOADING": "Chargement...", + "HOME": "Domicile", + "AWAY": "Visiteur", + "PRE_GAME": "Warm Up", + "1ST_PERIOD": "1ere Period", + "2ND_PERIOD": "2nd Period", + "3RD_PERIOD": "3eme Period", + "OVER_TIME": "Prolongation", + "SHOOTOUT": "Tir au but", + "FINAL": "Final", + "FINAL_OVERTIME": "Final Apres prolongation", + "FINAL_SHOOTOUT": "Final Apres tir au but", + "UNKNOWN": "Inconnu", + "TIME_LEFT": "Temps restant" +} From 4c5a4a1181077607a03679e59603d7c5f4eebb92 Mon Sep 17 00:00:00 2001 From: matlem037 Date: Tue, 5 Jan 2021 17:30:43 +0100 Subject: [PATCH 03/39] Update MMM-NHL.js --- MMM-NHL.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MMM-NHL.js b/MMM-NHL.js index ee70d574..0dd7302f 100644 --- a/MMM-NHL.js +++ b/MMM-NHL.js @@ -80,7 +80,8 @@ Module.register('MMM-NHL', { getTranslations() { return { en: 'translations/en.json', - de: 'translations/de.json' + de: 'translations/de.json', + fr: 'translations/fr.json' }; }, From 28a3cec14fc2bcb2d758cd2d5aaa429f7a4e38bf Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Sun, 10 Jan 2021 14:06:31 +0100 Subject: [PATCH 04/39] rewrite --- MMM-NHL.css | 5 + MMM-NHL.js | 245 +--- icons/ANA.png | Bin 17151 -> 0 bytes icons/ARI.png | Bin 16722 -> 0 bytes icons/BOS.png | Bin 16727 -> 0 bytes icons/BUF.png | Bin 16835 -> 0 bytes icons/CAR.png | Bin 17747 -> 0 bytes icons/CBJ.png | Bin 17194 -> 0 bytes icons/CGY.png | Bin 17237 -> 0 bytes icons/CHI.png | Bin 17310 -> 0 bytes icons/COL.png | Bin 17172 -> 0 bytes icons/DAL.png | Bin 16831 -> 0 bytes icons/DET.png | Bin 17181 -> 0 bytes icons/EDM.png | Bin 17012 -> 0 bytes icons/FLA.png | Bin 16619 -> 0 bytes icons/LAK.png | Bin 16237 -> 0 bytes icons/MIN.png | Bin 4830 -> 0 bytes icons/MTL.png | Bin 5387 -> 0 bytes icons/NJD.png | Bin 17015 -> 0 bytes icons/NSH.png | Bin 4916 -> 0 bytes icons/NYI.png | Bin 16991 -> 0 bytes icons/NYR.png | Bin 16769 -> 0 bytes icons/OTT.png | Bin 16759 -> 0 bytes icons/PHI.png | Bin 4531 -> 0 bytes icons/PIT.png | Bin 17038 -> 0 bytes icons/SJS.png | Bin 16713 -> 0 bytes icons/STL.png | Bin 16794 -> 0 bytes icons/TBL.png | Bin 17275 -> 0 bytes icons/TOR.png | Bin 16660 -> 0 bytes icons/VAN.png | Bin 17066 -> 0 bytes icons/VGK.png | Bin 1146 -> 0 bytes icons/WPG.png | Bin 16975 -> 0 bytes icons/WSH.png | Bin 16907 -> 0 bytes node_helper.js | 234 +-- package-lock.json | 3220 +++++++++++++++++++++++++++++++++++++++++ package.json | 11 +- templates/MMM-NHL.njk | 29 + 37 files changed, 3451 insertions(+), 293 deletions(-) delete mode 100644 icons/ANA.png delete mode 100644 icons/ARI.png delete mode 100644 icons/BOS.png delete mode 100644 icons/BUF.png delete mode 100644 icons/CAR.png delete mode 100644 icons/CBJ.png delete mode 100644 icons/CGY.png delete mode 100644 icons/CHI.png delete mode 100644 icons/COL.png delete mode 100644 icons/DAL.png delete mode 100644 icons/DET.png delete mode 100644 icons/EDM.png delete mode 100644 icons/FLA.png delete mode 100644 icons/LAK.png delete mode 100644 icons/MIN.png delete mode 100644 icons/MTL.png delete mode 100644 icons/NJD.png delete mode 100644 icons/NSH.png delete mode 100644 icons/NYI.png delete mode 100644 icons/NYR.png delete mode 100644 icons/OTT.png delete mode 100644 icons/PHI.png delete mode 100644 icons/PIT.png delete mode 100644 icons/SJS.png delete mode 100644 icons/STL.png delete mode 100644 icons/TBL.png delete mode 100644 icons/TOR.png delete mode 100644 icons/VAN.png delete mode 100644 icons/VGK.png delete mode 100644 icons/WPG.png delete mode 100644 icons/WSH.png create mode 100644 package-lock.json create mode 100644 templates/MMM-NHL.njk diff --git a/MMM-NHL.css b/MMM-NHL.css index 85d32672..2e1f8161 100644 --- a/MMM-NHL.css +++ b/MMM-NHL.css @@ -5,6 +5,11 @@ } .MMM-NHL .icon { + width: 37px; + height: 25px; +} + +.MMM-NHL .no-color { -webkit-filter: grayscale(100%); filter: grayscale(100%); } diff --git a/MMM-NHL.js b/MMM-NHL.js index ee70d574..0cdd81c2 100644 --- a/MMM-NHL.js +++ b/MMM-NHL.js @@ -5,19 +5,13 @@ * MIT Licensed. */ -/* global Module Log moment config */ +/* global Module Log config */ Module.register('MMM-NHL', { - modes: { - '01': 'Pre-Season', - '02': 'Regular-Season', - '03': 'Playoffs' - }, - - details: { - y: (new Date()).getFullYear(), - t: '01' + PR: 'Pre-season', + R: 'Regular season', + P: 'Playoffs', }, states: { @@ -31,40 +25,9 @@ Module.register('MMM-NHL', { 'FINAL SO': 'FINAL_SHOOTOUT' }, - teams: { - avalanche: 'COL', - blackhawks: 'CHI', - bluejackets: 'CBJ', - blues: 'STL', - bruins: 'BOS', - canadiens: 'MTL', - canucks: 'VAN', - capitals: 'WSH', - coyotes: 'ARI', - devils: 'NJD', - ducks: 'ANA', - flames: 'CGY', - flyers: 'PHI', - goldenknights: 'VGK', - hurricanes: 'CAR', - islanders: 'NYI', - jets: 'WPG', - kings: 'LAK', - lightning: 'TBL', - mapleleafs: 'TOR', - oilers: 'EDM', - panthers: 'FLA', - penguins: 'PIT', - predators: 'NSH', - rangers: 'NYR', - redwings: 'DET', - sabres: 'BUF', - senators: 'OTT', - sharks: 'SJS', - stars: 'DAL', - wild: 'MIN' - }, - + loading: true, + games: [], + season: {}, rotateIndex: 0, rotateInterval: null, @@ -72,7 +35,6 @@ Module.register('MMM-NHL', { colored: false, focus_on: false, matches: 6, - format: 'ddd h:mm', rotateInterval: 20 * 1000, // every 20 seconds reloadInterval: 30 * 60 * 1000 // every 30 minutes }, @@ -84,180 +46,83 @@ Module.register('MMM-NHL', { }; }, - getScripts() { - return ['moment.js']; - }, - getStyles() { return ['font-awesome.css', 'MMM-NHL.css']; }, + getTemplate() { + return 'templates/MMM-NHL.njk'; + }, + + getTemplateData() { + return { + loading: this.loading, + modes: this.modes, + season: this.season, + games: this.games, + rotateIndex: this.rotateIndex, + maxGames: Math.min(this.games.length, this.rotateIndex + this.config.matches) + }; + }, + start() { Log.info(`Starting module: ${this.name}`); - this.sendSocketNotification('CONFIG', { config: this.config, teams: this.teams }); - moment.locale(config.language); + this.addFilters(); + this.sendSocketNotification('CONFIG', { config: this.config }); }, socketNotificationReceived(notification, payload) { - if (notification === 'SCORES') { - this.scores = payload.scores; - this.details = payload.details; + if (notification === 'SCHEDULE') { + this.loading = false; + this.games = payload.games; + this.season = payload.season; this.setRotateInterval(); } + + console.log(payload); }, setRotateInterval() { - if (!this.rotateInterval && this.scores.length > this.config.matches) { + if (!this.rotateInterval && this.games.length > this.config.matches) { this.rotateInterval = setInterval(() => { - if (this.rotateIndex + this.config.matches >= this.scores.length) { + if (this.rotateIndex + this.config.matches >= this.games.length) { this.rotateIndex = 0; } else { this.rotateIndex = this.rotateIndex + this.config.matches; } this.updateDom(300); }, this.config.rotateInterval); - } else if (this.scores.length <= this.config.matches) { + } else if (this.games.length <= this.config.matches) { clearInterval(this.rotateInterval); this.rotateIndex = 0; } - this.updateDom(300); - }, - - getDom() { - const wrapper = document.createElement('div'); - const scores = document.createElement('div'); - const header = document.createElement('header'); - header.innerHTML = `NHL ${this.modes[this.details.t]} ${this.details.y}`; - scores.appendChild(header); - - if (!this.scores) { - const text = document.createElement('div'); - text.innerHTML = this.translate('LOADING'); - text.classList.add('dimmed', 'light'); - scores.appendChild(text); - } else { - const table = document.createElement('table'); - table.classList.add('small', 'table'); - - table.appendChild(this.createLabelRow()); - - const max = Math.min(this.rotateIndex + this.config.matches, this.scores.length); - for (let i = this.rotateIndex; i < max; i += 1) { - this.appendDataRow(this.scores[i], table); - } - - scores.appendChild(table); - } - wrapper.appendChild(scores); - - return wrapper; - }, - - createLabelRow() { - const labelRow = document.createElement('tr'); - - const dateLabel = document.createElement('th'); - const dateIcon = document.createElement('i'); - dateIcon.classList.add('fa', 'fa-calendar'); - dateLabel.appendChild(dateIcon); - labelRow.appendChild(dateLabel); - - const homeLabel = document.createElement('th'); - homeLabel.innerHTML = this.translate('HOME'); - homeLabel.setAttribute('colspan', 3); - labelRow.appendChild(homeLabel); - - const vsLabel = document.createElement('th'); - vsLabel.innerHTML = ''; - labelRow.appendChild(vsLabel); - - const awayLabel = document.createElement('th'); - awayLabel.innerHTML = this.translate('AWAY'); - awayLabel.setAttribute('colspan', 3); - labelRow.appendChild(awayLabel); - - return labelRow; + this.updateDom(300); }, - appendDataRow(data, appendTo) { - const row = document.createElement('tr'); - row.classList.add('row'); - - const date = document.createElement('td'); - if (data.bsc === 'progress') { - if (data.ts === 'PRE GAME') { - date.innerHTML = this.translate('PRE_GAME'); - date.classList.add('dimmed'); - } else if (['1st', '2nd', '3rd'].includes(data.ts.slice(-3))) { - const third = document.createElement('div'); - third.innerHTML = this.translate(this.states[data.ts.slice(-3)]); - if (data.ts.slice(0, 3) !== 'END') { - third.classList.add('live'); - date.appendChild(third); - const time = document.createElement('div'); - time.classList.add('live'); - time.innerHTML = `${data.ts.slice(0, -4)} ${this.translate('TIME_LEFT')}`; - date.appendChild(time); - } else { - date.appendChild(third); + addFilters() { + this.nunjucksEnvironment().addFilter('calendar', (game) => { + if (game.status.detailed === 'Pre-Game') { + return this.translate('PRE_GAME'); + } else if (game.status.abstract === 'Preview') { + const now = new Date(); + const inAWeek = now.setDate(now.getDate() + 7); + const start = new Date(game.timestamp); + + if (start > inAWeek) { + return new Intl.DateTimeFormat(config.locale, { + month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' + }).format(start); } - } - } else if (data.bsc === '' && Object.prototype.hasOwnProperty.call(data, 'starttime')) { - date.innerHTML = moment(data.starttime).format(this.config.format); - } else if (data.bsc === 'final') { - date.innerHTML = this.translate(this.states[data.bs]); - date.classList.add('dimmed'); - } else { - date.innerHTML = this.translate('UNKNOWN'); - date.classList.add('dimmed'); - } - row.appendChild(date); - - const homeTeam = document.createElement('td'); - homeTeam.classList.add('align-right'); - const homeTeamSpan = document.createElement('span'); - homeTeamSpan.innerHTML = this.teams[data.htv]; - homeTeam.appendChild(homeTeamSpan); - row.appendChild(homeTeam); - - const homeLogo = document.createElement('td'); - const homeIcon = document.createElement('img'); - homeIcon.src = this.file(`icons/${this.teams[data.htv]}.png`); - if (!this.config.colored) { - homeIcon.classList.add('icon'); - } - homeLogo.appendChild(homeIcon); - row.appendChild(homeLogo); - - const homeScore = document.createElement('td'); - homeScore.innerHTML = data.hts === '' ? 0 : data.hts; - row.appendChild(homeScore); - const vs = document.createElement('td'); - vs.innerHTML = ':'; - row.appendChild(vs); - - const awayScore = document.createElement('td'); - awayScore.innerHTML = data.ats === '' ? 0 : data.ats; - row.appendChild(awayScore); - - const awayLogo = document.createElement('td'); - const awayIcon = document.createElement('img'); - awayIcon.src = this.file(`icons/${this.teams[data.atv]}.png`); - if (!this.config.colored) { - awayIcon.classList.add('icon'); - } - awayLogo.appendChild(awayIcon); - row.appendChild(awayLogo); - - const awayTeam = document.createElement('td'); - awayTeam.classList.add('align-left'); - const awayTeamSpan = document.createElement('span'); - awayTeamSpan.innerHTML = this.teams[data.atv]; - awayTeam.appendChild(awayTeamSpan); - row.appendChild(awayTeam); + return new Intl.DateTimeFormat(config.locale, { + weekday: 'short', hour: '2-digit', minute: '2-digit' + }).format(start); + } else if (game.status.abstract === 'Live' && game.live.period) { + return this.translate('TIME_LEFT', game.live.timeRemaining); + } - appendTo.appendChild(row); + return this.translate(game.status.abstract); + }); } }); diff --git a/icons/ANA.png b/icons/ANA.png deleted file mode 100644 index 75cd99e8014fb9d3a24c48ba549707c1704b914a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17151 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 Fe*@OOZ*l+t diff --git a/icons/ARI.png b/icons/ARI.png deleted file mode 100644 index 8391523b4e04520539ddf200c477265fe49eeab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16722 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 W_a%w(TBh#59yr=N^N!B<{oy}}DU#9v diff --git a/icons/BOS.png b/icons/BOS.png deleted file mode 100644 index 4ce066e679102dd04e6291a14ea2905df2b15a2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16727 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 R0skxl9`iiia$SPr{{tfPb(H`B diff --git a/icons/BUF.png b/icons/BUF.png deleted file mode 100644 index fe81779d5230215471e573c03c32698393f64acf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16835 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 diff --git a/icons/CGY.png b/icons/CGY.png deleted file mode 100644 index 10c60d4b9e0a8c76c52ed8125e3408f7e966dcb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17237 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 diff --git a/icons/CHI.png b/icons/CHI.png deleted file mode 100644 index 93e5632132f1eb6db66f8bdf959cf16420ba5fa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17310 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 Ppy6omVt3qTUG)C}_=>}T diff --git a/icons/COL.png b/icons/COL.png deleted file mode 100644 index b8ea2985f2f4c3b7a286fe1ce6ba8de118687541..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17172 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 eM$T7er~%#{O{3Dh%b^1$q7P_c1yQ7HOz zk%yPc%ViaVCzIefd>I$OsU>o7HVVaDs+Mzjet-(i1$;$P8%+1rJPcaIx50Q)T?j66 zJ3uIM3RVECgIzs%!G1hCAG4ID%~Uf$2NFQVL8~QVsgj|#!HoE2fZsL4cno@EiptLh zvs@Dp?d9Tzwv#CUG!wiUQt2cs$`Uk*K(xdYD0m_rOC&SEKMDaoc41iB z;5Vj%FJQQ{9mc|ek_|?vQpp*3d|+T8E|83qDSSb5Ivr0S;YlPcI0LH;lBzgrtW;?_ z>g1gtHlXAwL~@l#CPi!fa=5Ypl??`?2{e9&dM)f_pVh$G-XVdUZh zZzhp^)KaOk-wdu~Y-b-0sPqVu19*2pDGN~W0Q=2=RAu_HMeup!e&hiP@dzJ24-bd| z3234O7f<}?668XeN~RRbKC$m{^(S|)5(y>_=e;dxG@mpB)S^$AX*8o|BdIWYLQF9K z7pG|SxHtsZS>r^zZRj*7PM6iNBAK;`#LJk)67#3%d#Y>o&0hFmFe?F{PN!Ls!Nv0kSU!hB!g45l081frEGZNkkw~G@M-B|! z%SYUN5XwoU1oJ6qQl5d?Hqv`m1OD%izEg-rBRxdUQ78dTY1&}k)#iB98Sg0?n~@S{ zaCn;T!{TWY7~nJU?~P6@Yus|oO!VP#ejb8R|C7u=9V1W(Na50d)YZtWPdib{1gb!e z0$A<~X2|E&=BVHI4WR*;cul_+i~bLeLdn_uzdMM}tE>Mf2QiV!JRwKw3-DR^cS-zi z;PcLI^hDpUu6GstVKp-OJcdA~kZ@Eik%Z$5;N?TFyv?5}Ei9#-Q`PG!-un7@1Ea5x@&i)VzhcwJ3nXu5ejcs>vPo8w(v!D6QAd?ByQn`#TPbJm!39P_#|fhVAK@QhXYdarVR)9qB*a z_^J5$Y@TWL^gG4kC6yI|-NNjA3$ zXi03E_0Rsm{(&3!>(3?cI1&;T8@Aaoxw?kp^Gn+Kl*F6?;j^;|DRZi%E1jmDJb5za z&>_W>T4JeyyyDc?)VCq-XOmJ>e?uQQ?i(MQSCOc@)xST#B(x+YWuUKR&Y_muO$X=d zh3BQ}y}ozIH1zZ;7w46(5o*RlURuD7-Yh+BZM~eD>gq`Mvn>k)?00Ni=OQr{eZR~9 zN{P3Xr<3H;ZGSy} zv(TEB+dEWcSmC&^u%=PW?$VB!R!~?7ZeHu(*=tHF>17G~He!C>b2}o!srgzI zzlN5H8B!!Mbfd2=sZ*X?`?bNA?=YBGTDN!On&?*ohXu2uhxHn_Ze=c0C`hJ`kvl3Y zJ#?n(*By;w?}@MuespX1m>)gC`xO{gB zn_XavalTaTT(Gs%p3S7cAcuYVSa+|nwSn0(?rTC{m$hok{paNr?Ysk>X0j7k9!Pzo z^h3S%7SS4{J^h;>KAq}e(i?2EA;%R}xvceB&E0eLt8SNhc7Mv15F^K}C&I(bL?w#R~>SuUgnS z^%mAIZPyQ4-Q1Aj)arjV`{+RI?0U(YwiaWiDZ8~eVV_xsO`exQ-ZtBa;)BNar{0ot zds0fS4R{uG_rFYAm+4;iN)}oAK=F9D&^%{JUcu3oG`^x*a5PJGp>#v`>f)5tytx;S zzTUmX&BNSx#f;mYwa5JW1%Ga}w5FQ>TDI7PQ(YG~cou8tUq8qaYf|PXc0GRK$QTTsXCP|2*}h1C|1&D4zyh~+ z-IZ;&%!m6E=y66X`<_sk-rp9LH~xJqyy7y@eX9C?2+?oR<(xRIjQ=#U)$7>P%JmW^ zff)U-@X#z1*^Y{)zIm6g#^e4lEJ5kdIvFxoWpr)(KAqo>OtYLHVImZGCGAXU+cc1S zZdah<+k~Q~<~>h~P)Eq3FSR0n^10VdIzn9#(wF8vGr#?L`@yNH6(P;HQ|~6P>AlLd zij%&^T(0+y!|4U@i``Rm%pyf`J z-%eSto8abi=WJZZ%*1nbK7{o~>lws$>fD#>w{O?6a63_zOqeQko@e5^+<%^7O01eR z zy8>sCTaXcSK)pr6GQ?N$bfy<<>O7rsa^LAblR;zL7yo$q&EVi7Y51O-)4tM8{Y}S2 z=y1xt!v8^jKk%})-o&9mrzP~7J2&Av@$4Xe@%&9GdN!7RI>%VpLjIkmXMo`X|30{Aah0dEqD|%h)Zr`Y;Z9Ljfbvq80qB>~(2;Pa+`cgSg|KQ-FGII` zTk!7E_C(R9Wb5ABLpf)Q$KM`E}RMuz9kC;x*IIGq1>dE#3CoP_A!I8prpW=ynR>cZ})gE7FZZ9PJK-2*f`rQB_^gOYd?icFx-sweUyOR z8_zs`=5$ddGhJP1u5?4MICJk->+=;Ek8GHoS0!}~DK9rLhnii7vloPO7KBvN0xR13 zhOeG$PFro!)Aw?<_q}T|y5Q3=`*?M zJulCa{|dH$dp9)x{Kkv^HKKrqu7^vu3e5E@xS}+_Q;AP4gD-{jJ#xL+|MfQjM=qRM zVz7$mTI_aQJG8(rP=$z#y!#+cBl8qL%9yIc@r) z*AKJp`?Kx!Uy1H66~4(2TYkZe$l4w~J$lFEOr3A3I|lL>9GSgh)8cJ^``n@)zZIK* zTlWS2U)~pge)Qw9tPMmX9bxAB+1iE1vu5SDDu{w!VZHa0R!^Ly{HS%Vtl`3$y^8EP z%inmLne5yioT3|59&T|^9miTV)wDmU@L6>Sy-dG3vor8XZRW-1;0@s=RZ(REyEFIR z3{ba$Esrd`vn&g>ZLCa1w zD*`=>o;4?G?ddQ&_LD>6uAZLd18;`ob&8g1q0D}@jVFqm&uRWIgtNUXJI&T-`+opz CtwGcP diff --git a/icons/FLA.png b/icons/FLA.png deleted file mode 100644 index 8ff75fe763a6e6ccd0f4eaa41b09f7da7aec9258..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16619 zcmeI4X;c$g7RO_|1A?F;+R}vRv?62=fy5A0A_5X|0aYK6Y$Rb3*Tw~L1O-%3 zp=GB*ZKOxh7R3XofVL>O(4vBhf+(VcfTAE%VW-qOo-;jP=2T9Ss{8Ky-&^nZ?t7^( zm560a7f;Zdu7$(lCOA6qR=`I?_%m(X82H=rNli0+7_V^fRN-*ilQf?ZxWfrXI2@}5 za`jMq@SWL0xs(KmaX5}`hyoD$gKE40^o3+LgxC2O33y0kLvXj`Q}_xy z&<}D5Re~!+m%0i={e>(M!IrDV31Pzlq@WtWhe#zd6+6U+&=Z#ppKF@Q1bj~ywZ9Ev zfhHl|gTD-KCs%@aOA?bPq|#}4D;9}r$)Z^^Ebuf6l}V;B$W#`QN@v4w1_j^uB5<|f zGmcUuX0PDc_oag^8-kx&tzeVM!NI|#U^+>z^o8Xt7MVgL(`ZDv2T`?NrUpWYGS$r9 zApLQ8ph~EO6lzE=!)xLK0(qd?hCt9H8hG`MOR5-1BvbXVgDH|j00o&!qL9BL;`7mE zQt20!D)piu_)7Xl_QixM*YygJyaH6o1C>H>Q4lCo&-~Iwh=c=i6oE=f4+gNiJ#*R$wcyCl^KVO6b;V!U_6iqs6no#B8gNA zT#l}qie$lWBE^zTp$rMq+Y=Fk4_ChkPy^o*WmsQi9JvS*um7efgFT1G;PcszGL;&T z2|-657altaf<$bVKuDoj(}hH9x}}H+G8qgaAQFn5-|lt7S)PMq*6g9(OS#^i2|A>oodB^51_a|(U4%D zC2~lMFb}kQUDf1AY>4kR56VxW-us30h2`|GAT5gh#?jU=q#W=#TUYS zmdXKA!S%F$NS(pe*0cAl1OtY*_B$j{&mN)xlqyiOG;Ij|Yja@J8Q4=anw}-j285d3 zhbz<+Feu`XhqVq~)_}5427NxA--e(!{t)@sa|HW=GPLsV4b{`@>p@gj8aW~%TP#;f0W}wr0=^(wA@k*s2O9@-at8MyJGn%z z^Ap8}cM7;_fu0pg<&ZyXL-zO3tawRaPk$>KyoplCRLysvbf_CC^+cBrbt9#NN;es# z=Fw6vsKa>&SLq+%Hq0!lo15WLr`Gku43g7y{cb(*c+s@B6fPtOz?>reC(cc*r5erL#0D^8} zxX}3^ycjM75Ofp6h0X`z#c&~jpqm&jbUp|#h6@1%-NbOA^FeqqTnHfOCWZ^055kM# zLI6QGFzw@M5?SK+sJL7djt=7sG`Bf^K5C(D@*|7%l`5bQ8mc z&IjSea3O%8n;0&1J_s*{3jqY(#BibWL3lA-2q5Sth6|k!!i(WT06{k~TkLg$0}M&`k^%Iv<1=!-W8XZeqC5`5?R)E(8#C6T^kh2jRtVA%LKp7%p@^ z2rq^U0R-Jd#icd)ASWn;pWY0HAJcr57yTN3#1k)cSi#5PLjQroZQX{$b#%kWMjS4X zg2TO7i^H+wak#1S7@y1bINTVOBX5CgNcHgp{)+u=Q^JpSZ@BlcNyf}KwIVsrj~Qn= zOMk(iTTMst_Ir`^U(G5bzS++= zYOrXZQ*;n=cT0ZBi`hBNDXsET^!tWlyJ%9~wMURa)%T|B>yH@*{OjOjiyBH>)RPTU z4~B{#Fq!jnix+L4@v~b0|h(yW4z&|Q%4pr9Q z-d=Gx>`Y#QI#|1F=~?U4J!b?=UE}kuKZm*$r`TSIu5$4dj+1xQ)t4rD=gO1_rdr`j2a0ExvJm>eb7eC%cca_a|2f8*c8_ zsvw3l>UKKleMoO~P4nO!jjjQ1k9?hcyj0IWVmp+6Wy8tHcM-`GT&k~Z?)HBWSG_$B zN1Ny#sXsO^Kf#EwgQ3Gy&VMep^8A6k(|_O7)V85-{~YnI2|tmIx=p1C(R^$;W2-k~FQqS5FnbA9JotJnc`o6|;F z%m->xoSV+XU5m|dYJYUnBkyMM@0ANH8)7pK`d_gd>%HR_{`E0g?Q`ZVFI{CS7%}~b z$v%m=#y)2q_KQjA#lE-2Fl~v_!w6e^WoBuSuS9y4{ z-iedIJF{6I1)ZmtXZ~eQOfNAhV4JO8^z<0MP{+%URG4f6<_0Cll?2&8EjM0p?dTi< zW!>(`kM>|yQlZD6MHKyK|C;f;tth5x$+ne`?~Z2{<+lD>*>%}LWf3iQiqc&Wd)451 z?U8M}baT6T@l)IkZ9S#|ZF`PYSGaUON%6Uyp=B?Oxwn#0;08^dv?;r^w952Hv+{t6 zMiIK}XqN4b4%TJHXa0I#FmZ7()LBnnP`>9tS&H+H?}BsUS+;g+^`)%%1b%Vi!n6s` zwTvt-UN<#>B5q_YoA>a_m4~L4hNpsb&-kr9<=w$C%ARZXX5n_ryX>#$oyghJ5%a$I?&<)Y?+J$vrs=$4Pw@(^ymTw(9K?L#B%RUWNXki!qB1D0dEXh8 zEPdBprff{wzI^-Iz)gqFSGSEW%iWi-@|iGT$H={tW}L%A56-f^FPLu0rP^2RbL0^J z$bWEsN3*`Rfr%L|dU^LRew^}|dizgqDrN?JQf9t6o7fU}qxo5Nx;UUU;Yy3|ccY48 zc1KKqHpx=#T*0b1kkZIYC`fYb7!_$nj%OTg+&F$$wv~`>H16fQ<33)iLf&s%8sn5v zdcEyUd9KT)L)tbe=4AhkgfqP(fvx;t3RaWob*&1~E zH(ZfVgjm`fb=~|~?2+$hIma#|Bs)JjL_GHLuIEReEw!%Nh7X%=#8BLeHvS=MG%$1F z%z4)(N#s3!^{FKPedb>;Z0~bd{SMw~z4|FWDaU0ovE5W{yyZTNn%_>+ZQATK%awoE zB4N?3e+Q2)x|Z?L`?mA7`huftbix<2*NrH%N-DR=X_jn+E*#H39!GJ>UKALUFn#=v z7G<1I&84~LRNJ;^DO*ppDPOgK2B$u3(eFCqp*wnvZjc`9hxOt**Q(ReqY|a#Pu|Br zE=iyO`v>TCx(Jc?;q*7aple{<2T z$BB1q7atrs_E~%Q>w}M~3%5kfq~|{^&B;3veYBv{d;O-`pIEm)WSFI!Zm8YhMfx>? zPi>hwI+q#A-hnG#HjuP)9>16tuk*C<7^!9^OR+;3SI5cVNo`wRz%BM~~ a5~t#IMXM}c{HXam0>?#5dA}`O8}=V5=xj*< diff --git a/icons/LAK.png b/icons/LAK.png deleted file mode 100644 index ec2b5420ec6383bf7403fd329e0ee3aac89a9caa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16237 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 diff --git a/icons/MIN.png b/icons/MIN.png deleted file mode 100644 index 9fc5e0c79f82b17537956899e7c12b53020fb7aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4830 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 diff --git a/icons/NJD.png b/icons/NJD.png deleted file mode 100644 index 460cd4627977c4f74720e0906597d175a7de5e50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17015 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 XMbB=kGkmN5Ckbp9cUHbrVDx_g7)hkW diff --git a/icons/OTT.png b/icons/OTT.png deleted file mode 100644 index dc40d76a51467f6e591dd5c306e33fdea5f74c3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16759 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 diff --git a/icons/PIT.png b/icons/PIT.png deleted file mode 100644 index 6be45e62a02f40cac29bf83877a224c386ffd134..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17038 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 diff --git a/icons/TBL.png b/icons/TBL.png deleted file mode 100644 index 136051cecfa4fc7bb4cb7d40fb8375b8872eb747..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17275 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 Y>kOWmMQT_o|2@V$dq=xtHa_eB2hPZbYybcN diff --git a/icons/TOR.png b/icons/TOR.png deleted file mode 100644 index bcef34801d3eb0e3fc2e77b32ca4b35f81572391..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16660 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 TDajbVrva`D-5gIYSQYahCxUJI diff --git a/icons/VAN.png b/icons/VAN.png deleted file mode 100644 index 8b7c5751756da2de4bada690f50fdf1a858f1637..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17066 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 WSWG@xZYuq666U7sO)eR25BwjW*;|wV diff --git a/icons/VGK.png b/icons/VGK.png deleted file mode 100644 index c1b4cd60455ff032a4a3d23ca7962495ba802d00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1146 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 diff --git a/icons/WSH.png b/icons/WSH.png deleted file mode 100644 index 926db139cff834fee61720cadd064376884e5580..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16907 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 { - this.getData(); + return this.updateSchedule(); }, this.config.reloadInterval); setInterval(() => { - this.fetchOnLiveState(); + return this.fetchOnLiveState(); }, 60 * 1000); } }, - getData() { - request({ url: this.url }, (error, response, body) => { - if (response.statusCode === 200) { - // eslint-disable-next-line no-new-func - const f = new Function('loadScoreboard', body); - f((data) => { - if (Object.prototype.hasOwnProperty.call(data, 'games')) { - this.scores = []; - for (let i = data.games.length - 1; i >= 0; i -= 1) { - if (!this.config.focus_on || - this.config.focus_on.includes(this.teams[data.games[i].htv]) || - this.config.focus_on.includes(this.teams[data.games[i].atv])) { - if (data.games[i].tsc !== 'final' || i === data.games.length - 1) { - const id = data.games[i].id.toString(); - this.details = { - y: id.slice(0, 4), - t: id.slice(4, 6) - }; - } - this.scores.unshift(data.games[i]); - } - } - this.setMode(); - this.sendSocketNotification('SCORES', { scores: this.scores, details: this.details }); - } else { - console.log('Error no NHL data'); - } - }); - } else { - console.log(`Error getting NHL scores ${response.statusCode}`); - } - }); + async initTeams() { + const response = await fetch(`${BASE_URL}/teams`); + + if (!response.ok) { + console.error(`Initializing NHL teams failed: ${response.status} ${response.statusText}`); + + return; + } + + const {teams} = await response.json(); + + this.teamMapping = teams.reduce((mapping, team) => { + mapping[team.id] = team.abbreviation; + + return mapping; + }, {}); + + this.sendSocketNotification('TEAM_MAPPING', this.teamMapping); }, - setMode() { - let allEnded = true; - let next = null; - const now = Date.now(); - const inGame = 'progress'; - const ended = 'final'; - for (let i = 0; i < this.scores.length; i += 1) { - const temp = this.scores[i]; - if (this.scores[i].bsc === '') { - const time = temp.bs.split(' ')[0].split(':'); - const mom = moment().tz('America/Los_Angeles'); - if (temp.ts !== 'TODAY') { - const date = temp.ts.split(' ')[1].split('/'); - mom.set('month', date[0]); - mom.set('date', date[1]); - mom.subtract(1, 'month'); - } - mom.set('hour', time[0]); - mom.set('minute', time[1]); - mom.set('second', 0); - if (temp.bs.slice(-2) === 'PM') { - mom.add(12, 'hours'); - } - this.scores[i].starttime = mom; - allEnded = false; - if (next === null) { - next = this.scores[i]; - } - } else if ((inGame === this.scores[i].bsc || Date.parse(this.scores[i].starttime) > now) && - this.live.matches.indexOf(this.scores[i].id) === -1) { - allEnded = false; - this.live.matches.push(this.scores[i].id); - this.live.state = true; - } else if (ended === this.scores[i].bsc && this.live.matches.includes(this.scores[i].id)) { - this.live.matches.splice(this.live.matches.indexOf(this.scores[i].id), 1); - if (this.live.matches.length === 0) { - this.live.state = false; - } - } + async fetchSchedule() { + let date = new Date(); + date.setDate(date.getDate() - 1); + const startDate = date.toISOString().slice(0, 10); + date.setDate(date.getDate() + 8); + const endDate = date.toISOString().slice(0, 10); + + const query = qs.stringify({ + startDate, + endDate, + expand: 'schedule.linescore' + }); + + const response = await fetch(`${BASE_URL}/schedule?${query}`); + + if (!response.ok) { + console.error(`Fetching NHL schedule failed: ${response.status} ${response.statusText}`); + + return; } - if (allEnded === true) { - this.nextMatch = null; + const {dates} = await response.json(); + + return dates.map(date => date.games).flat(); + }, + + filterGameByFocus(game) { + const focus = this.config.focus_on; + if (!focus) { + return true; } - if ((next !== null && this.nextMatch === null && allEnded === false) || this.live.state === true) { - this.nextMatch = { - id: next.id, - time: next.starttime + const homeTeam = this.teamMapping[game.teams.home.team.id]; + const awayTeam = this.teamMapping[game.teams.away.team.id]; + + return focus.includes(homeTeam) || focus.includes(awayTeam); + }, + + computeSeasonDetails(schedule) { + const game = schedule.find(game => game.status.abstractGameState !== 'Final') || schedule[schedule.length - 1]; + + if (game) { + return { + year: `${game.season.slice(2, 4)}/${game.season.slice(6, 8)}`, + mode: game.gameType }; } + + const year = new Date().getFullYear(); + const currentYear = year.toString().slice(-2); + const nextYear = (year + 1).toString().slice(-2); + + return { + year: `${currentYear}/${nextYear}`, + mode: 'PR' + }; + }, + + parseGame(game = {}) { + return { + id: game.gamePk, + timestamp: game.gameDate, + status: { + abstract: game.status?.abstractGameState, + detailed: game.status?.detailedState + }, + teams: { + away: { + id: game.teams?.away?.team?.id, + name: game.teams?.away?.team?.name, + short: this.teamMapping[game.teams?.away?.team?.id], + score: game.teams?.away?.score + }, + home: { + id: game.teams?.home?.team?.id, + name: game.teams?.home?.team?.name, + short: this.teamMapping[game.teams?.home?.team?.id], + score: game.teams?.home?.score + } + }, + live: { + period: game.linescore?.currentPeriodOrdinal, + timeRemaining: game.linescore?.currentPeriodTimeRemaining + } + }; + }, + + setNextGame(games) { + this.nextGame = games.find(game => game?.status?.abstract === 'Preview'); + this.liveGames = games.filter(game => game?.status?.abstract === 'Live'); + }, + + async updateSchedule() { + const schedule = await this.fetchSchedule(); + + const season = this.computeSeasonDetails(schedule); + + const focusSchedule = schedule.filter(this.filterGameByFocus.bind(this)); + + const games = focusSchedule.map(this.parseGame.bind(this)); + + this.setNextGame(games); + this.sendSocketNotification('SCHEDULE', {games, season}); }, fetchOnLiveState() { - if (this.live.state === true) { - this.getData(); + const hasLiveGames = this.liveGames.length > 0; + const gameAboutToStart = this.nextGame && new Date() > new Date(this.nextGame.timestamp); + + if (hasLiveGames || gameAboutToStart) { + return this.updateSchedule(); } } }); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..3d352afe --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3220 @@ +{ + "name": "mmm-nhl", + "version": "2.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "JSONStream": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz", + "integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=", + "dev": true, + "requires": { + "jsonparse": "0.0.5", + "through": ">=2.2.7 <3" + } + }, + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-includes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", + "integrity": "sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "get-intrinsic": "^1.0.1", + "is-string": "^1.0.5" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "^1.7.6", + "caniuse-db": "^1.0.30000634", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^5.2.16", + "postcss-value-parser": "^3.2.3" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caniuse-db": { + "version": "1.0.30001173", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001173.tgz", + "integrity": "sha512-kAuX3BuQEIg9+cmIZYZdVm1XaFsV38iMK3Kp3O23dH4j9cdwknHStyZt5s1I2gQuR6vSsYxnPUGhGEcjk5UhuA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone-regexp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.1.tgz", + "integrity": "sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw==", + "dev": true, + "requires": { + "is-regexp": "^1.0.0", + "is-supported-regexp-flag": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-diff": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/color-diff/-/color-diff-0.1.7.tgz", + "integrity": "sha1-bbeM2UgqjkWdQIIer0tQMoPcuOI=", + "dev": true + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colorguard": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorguard/-/colorguard-1.2.1.tgz", + "integrity": "sha512-qYVKTg626qpDg4/eBnPXidEPXn5+krbYqHVfyyEFBWV5z3IF4p44HKY/eE2t1ohlcrlIkDgHmFJMfQ8qMLnSFw==", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "color-diff": "^0.1.3", + "log-symbols": "^1.0.2", + "object-assign": "^4.0.1", + "pipetteur": "^2.0.0", + "plur": "^2.0.0", + "postcss": "^5.0.4", + "postcss-reporter": "^1.2.1", + "text-table": "^0.2.0", + "yargs": "^1.2.6" + }, + "dependencies": { + "postcss-reporter": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-1.4.1.tgz", + "integrity": "sha1-wTbwpbFhkV83ndN2XGEHX357mvI=", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "lodash": "^4.1.0", + "log-symbols": "^1.0.2", + "postcss": "^5.0.0" + } + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.4.3", + "minimist": "^1.2.0", + "object-assign": "^4.1.0", + "os-homedir": "^1.0.1", + "parse-json": "^2.2.0", + "require-from-string": "^1.1.0" + } + }, + "css-color-names": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.3.tgz", + "integrity": "sha1-3gzvFvTYqoIioyDVttfpu62nufY=", + "dev": true + }, + "css-rule-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-rule-stream/-/css-rule-stream-1.1.0.tgz", + "integrity": "sha1-N4bnGYmD2WWibjGVfgkHjLt3BaI=", + "dev": true, + "requires": { + "css-tokenize": "^1.0.1", + "duplexer2": "0.0.2", + "ldjson-stream": "^1.2.1", + "through2": "^0.6.3" + } + }, + "css-tokenize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-tokenize/-/css-tokenize-1.0.1.tgz", + "integrity": "sha1-RiXLHtohwUOFi3+B1oA8HSb8FL4=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^1.0.33" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "doiuse": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/doiuse/-/doiuse-2.6.0.tgz", + "integrity": "sha1-GJLRC2Gpo1at2/K2FJM+gfi7ODQ=", + "dev": true, + "requires": { + "browserslist": "^1.1.1", + "caniuse-db": "^1.0.30000187", + "css-rule-stream": "^1.1.0", + "duplexer2": "0.0.2", + "jsonfilter": "^1.1.2", + "ldjson-stream": "^1.2.1", + "lodash": "^4.0.0", + "multimatch": "^2.0.0", + "postcss": "^5.0.8", + "source-map": "^0.4.2", + "through2": "^0.6.3", + "yargs": "^3.5.4" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "dev": true, + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + } + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "electron-to-chromium": { + "version": "1.3.634", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.634.tgz", + "integrity": "sha512-QPrWNYeE/A0xRvl/QP3E0nkaEvYUvH3gM04ZWYtIa6QlSpEetRlRI1xvQ7hiMIySHHEV+mwDSX8Kj4YZY6ZQAw==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + }, + "dependencies": { + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + } + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "dev": true, + "requires": { + "babel-code-frame": "^6.16.0", + "chalk": "^1.1.3", + "concat-stream": "^1.5.2", + "debug": "^2.1.1", + "doctrine": "^2.0.0", + "escope": "^3.6.0", + "espree": "^3.4.0", + "esquery": "^1.0.0", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "glob": "^7.0.3", + "globals": "^9.14.0", + "ignore": "^3.2.0", + "imurmurhash": "^0.1.4", + "inquirer": "^0.12.0", + "is-my-json-valid": "^2.10.0", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.5.1", + "json-stable-stringify": "^1.0.0", + "levn": "^0.3.0", + "lodash": "^4.0.0", + "mkdirp": "^0.5.0", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.1", + "pluralize": "^1.2.1", + "progress": "^1.1.8", + "require-uncached": "^1.0.2", + "shelljs": "^0.7.5", + "strip-bom": "^3.0.0", + "strip-json-comments": "~2.0.1", + "table": "^3.7.8", + "text-table": "~0.2.0", + "user-home": "^2.0.0" + } + }, + "eslint-config-airbnb-base": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.2.tgz", + "integrity": "sha512-/fhjt/VqzBA2SRsx7ErDtv6Ayf+XLw9LIOqmpBuHFCVwyJo2EtzGWMB9fYRFBoWWQLxmNmCpenNiH0RxyeS41w==", + "dev": true, + "requires": { + "eslint-restricted-globals": "^0.1.1" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + } + }, + "eslint-plugin-import": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + } + } + }, + "eslint-restricted-globals": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", + "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=", + "dev": true + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "execall": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz", + "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", + "dev": true, + "requires": { + "clone-regexp": "^1.0.0" + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", + "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==", + "dev": true + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + } + }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gather-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gather-stream/-/gather-stream-1.0.0.tgz", + "integrity": "sha1-szmUr0V6gRVwDUEPMXczy+egkEs=", + "dev": true + }, + "generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "requires": { + "is-property": "^1.0.2" + } + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "^1.0.0" + } + }, + "get-intrinsic": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", + "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "irregular-plurals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", + "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, + "is-my-json-valid": { + "version": "2.20.5", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.5.tgz", + "integrity": "sha512-VTPuvvGQtxvCeghwspQu1rBgjYUT6FGxPlvFKbYuFtgc4ADsX3U5ihZOYN0qyU6u+d4X9xXb0IT5O6QpXKt87A==", + "dev": true, + "requires": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-supported-regexp-flag": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz", + "integrity": "sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfilter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/jsonfilter/-/jsonfilter-1.1.2.tgz", + "integrity": "sha1-Ie987cdRk4E8dZMulqmL4gW6WhE=", + "dev": true, + "requires": { + "JSONStream": "^0.8.4", + "minimist": "^1.1.0", + "stream-combiner": "^0.2.1", + "through2": "^0.6.3" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonparse": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", + "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=", + "dev": true + }, + "jsonpointer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", + "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "known-css-properties": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.2.0.tgz", + "integrity": "sha512-UTCzU28rRI9wkb8qSGoZa9pgWvxr4LjP2MEhi9XHb/1XMOJy0uTnIxaxzj8My/PORG+kQG6VzAcGvRw66eIOfA==", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "ldjson-stream": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ldjson-stream/-/ldjson-stream-1.2.1.tgz", + "integrity": "sha1-kb7O2lrE7SsX5kn7d356v6AYnCs=", + "dev": true, + "requires": { + "split2": "^0.2.1", + "through2": "^0.6.1" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + } + }, + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.values": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", + "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onecolor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.1.0.tgz", + "integrity": "sha512-YZSypViXzu3ul5LMu/m6XjJ9ol8qAy9S2VjHl5E6UlhUH1KGKWabyEJifn0Jjpw23bYDzC2ucKMPGiH5kfwSGQ==", + "dev": true + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pipetteur": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pipetteur/-/pipetteur-2.0.3.tgz", + "integrity": "sha1-GVV2CVno0aEcsqUOyD7sRwYz5J8=", + "dev": true, + "requires": { + "onecolor": "^3.0.4", + "synesthesia": "^1.0.1" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "plur": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", + "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "dev": true, + "requires": { + "irregular-plurals": "^1.0.0" + } + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-less": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-0.14.0.tgz", + "integrity": "sha1-xjGwicbM5CK5oQ86lY0r7dOBkyQ=", + "dev": true, + "requires": { + "postcss": "^5.0.21" + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "dev": true + }, + "postcss-reporter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-3.0.0.tgz", + "integrity": "sha1-CeoPN6RExWk4eGBuCbAY6+/3z48=", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "lodash": "^4.1.0", + "log-symbols": "^1.0.2", + "postcss": "^5.0.0" + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "postcss-scss": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-0.4.1.tgz", + "integrity": "sha1-rXcbgfD3L19IRdCKpg+TVXZT1Uw=", + "dev": true, + "requires": { + "postcss": "^5.2.13" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "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==", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "read-file-stdin": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/read-file-stdin/-/read-file-stdin-0.2.1.tgz", + "integrity": "sha1-JezP86FTtoCa+ssj7hU4fbng7mE=", + "dev": true, + "requires": { + "gather-stream": "^1.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "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==", + "dev": true, + "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" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "mute-stream": "0.0.5" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + } + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "^1.3.0" + } + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "dev": true + }, + "specificity": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.3.2.tgz", + "integrity": "sha512-Nc/QN/A425Qog7j9aHmwOrlwX2e7pNI47ciwxwy4jOlvbbMHkNNJchit+FX+UjF3IAdiaaV5BKeWuDUnws6G1A==", + "dev": true + }, + "split2": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/split2/-/split2-0.2.1.tgz", + "integrity": "sha1-At2smtwD7Au3jBKC7Aecpuha6QA=", + "dev": true, + "requires": { + "through2": "~0.6.1" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "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==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + }, + "dependencies": { + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + } + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "dev": true + }, + "stylehacks": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-2.3.2.tgz", + "integrity": "sha1-ZMg+BDimjJ7fRJ6MVSp9mrYAmws=", + "dev": true, + "requires": { + "browserslist": "^1.1.3", + "chalk": "^1.1.1", + "log-symbols": "^1.0.2", + "minimist": "^1.2.0", + "plur": "^2.1.2", + "postcss": "^5.0.18", + "postcss-reporter": "^1.3.3", + "postcss-selector-parser": "^2.0.0", + "read-file-stdin": "^0.2.1", + "text-table": "^0.2.0", + "write-file-stdout": "0.0.2" + }, + "dependencies": { + "postcss-reporter": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-1.4.1.tgz", + "integrity": "sha1-wTbwpbFhkV83ndN2XGEHX357mvI=", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "lodash": "^4.1.0", + "log-symbols": "^1.0.2", + "postcss": "^5.0.0" + } + } + } + }, + "stylelint": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-7.13.0.tgz", + "integrity": "sha1-ER+Xttpy53XICADWu29fhpmXeF0=", + "dev": true, + "requires": { + "autoprefixer": "^6.0.0", + "balanced-match": "^0.4.0", + "chalk": "^2.0.1", + "colorguard": "^1.2.0", + "cosmiconfig": "^2.1.1", + "debug": "^2.6.0", + "doiuse": "^2.4.1", + "execall": "^1.0.0", + "file-entry-cache": "^2.0.0", + "get-stdin": "^5.0.0", + "globby": "^6.0.0", + "globjoin": "^0.1.4", + "html-tags": "^2.0.0", + "ignore": "^3.2.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.2.0", + "lodash": "^4.17.4", + "log-symbols": "^1.0.2", + "mathml-tag-names": "^2.0.0", + "meow": "^3.3.0", + "micromatch": "^2.3.11", + "normalize-selector": "^0.2.0", + "pify": "^2.3.0", + "postcss": "^5.0.20", + "postcss-less": "^0.14.0", + "postcss-media-query-parser": "^0.2.0", + "postcss-reporter": "^3.0.0", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-scss": "^0.4.0", + "postcss-selector-parser": "^2.1.1", + "postcss-value-parser": "^3.1.1", + "resolve-from": "^3.0.0", + "specificity": "^0.3.0", + "string-width": "^2.0.0", + "style-search": "^0.1.0", + "stylehacks": "^2.3.2", + "sugarss": "^0.2.0", + "svg-tags": "^1.0.0", + "table": "^4.0.1" + }, + "dependencies": { + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "dev": true, + "requires": { + "ajv": "^6.0.1", + "ajv-keywords": "^3.0.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + } + } + } + }, + "stylelint-config-standard": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-16.0.0.tgz", + "integrity": "sha1-u3OHv/HX3XGGpSs+v4hbJAXWkb8=", + "dev": true + }, + "sugarss": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-0.2.0.tgz", + "integrity": "sha1-rDQjdWMyfG/4l7ZHQr9q7BkK054=", + "dev": true, + "requires": { + "postcss": "^5.2.4" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "synesthesia": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/synesthesia/-/synesthesia-1.0.1.tgz", + "integrity": "sha1-XvlepUjA1cbm+btLDQcx3/hkp3c=", + "dev": true, + "requires": { + "css-color-names": "0.0.3" + } + }, + "table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "^4.7.0", + "ajv-keywords": "^1.0.0", + "chalk": "^1.1.1", + "lodash": "^4.0.0", + "slice-ansi": "0.0.4", + "string-width": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-stdout": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/write-file-stdout/-/write-file-stdout-0.0.2.tgz", + "integrity": "sha1-wlLXx8WxtAKJdjDjRTx7/mkNnKE=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "yargs": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz", + "integrity": "sha1-BU3oth8i7v23IHBZ6u+da4P7kxo=", + "dev": true + } + } +} diff --git a/package.json b/package.json index d147c7b9..c37a198f 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { "name": "mmm-nhl", - "version": "1.0.1", + "version": "2.0.0", "description": "National Hockey League Module for MagicMirror2", "scripts": { - "lint": "./node_modules/.bin/eslint . && ./node_modules/.bin/stylelint ." + "lint": "eslint . && stylelint ." }, "repository": { "type": "git", @@ -11,7 +11,8 @@ }, "keywords": [ "MagicMirror", - "NHL" + "NHL", + "ice hockey" ], "author": "fewieden", "license": "MIT", @@ -27,7 +28,7 @@ "stylelint-config-standard": "^16.0.0" }, "dependencies": { - "request": "^2.74.0", - "moment-timezone": "^0.5.5" + "node-fetch": "^2.6.1", + "qs": "^6.9.4" } } diff --git a/templates/MMM-NHL.njk b/templates/MMM-NHL.njk new file mode 100644 index 00000000..eb408659 --- /dev/null +++ b/templates/MMM-NHL.njk @@ -0,0 +1,29 @@ +{% if loading %} +
{{ "LOADING" | translate }}
+{% else %} +
NHL {{ modes[season.mode] | translate }} {{ season.year }}
+ + + + + + + + + + + {% for index in range(rotateIndex, maxGames) %} + + + + + + + + + + + {% endfor %} + +
{{ "HOME" | translate }}{{ "AWAY" | translate }}
{{ games[index] | calendar }}{{ games[index].teams.home.short }}{{ games[index].teams.home.score }}:{{ games[index].teams.away.score }}{{ games[index].teams.away.short }}
+{% endif %} From f146b60674e248100878180136398eac03252ab5 Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Sun, 17 Jan 2021 11:00:11 +0100 Subject: [PATCH 05/39] updated config files --- .codeclimate.yml | 16 ++++++++-------- .eslintignore | 1 + .eslintrc | 32 ++++++++++++++++++++++++-------- .mdlrc | 2 +- 4 files changed, 34 insertions(+), 17 deletions(-) create mode 100644 .eslintignore diff --git a/.codeclimate.yml b/.codeclimate.yml index bb5d4c8d..b30440ae 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -5,10 +5,10 @@ engines: enabled: true config: languages: - - javascript + - javascript eslint: enabled: true - channel: "eslint-3" + channel: "eslint-6" checks: import/no-unresolved: enabled: false @@ -18,9 +18,9 @@ engines: enabled: true ratings: paths: - - "**.js" - - "**.css" - - "**.md" -exclude_paths: [ - "node_modules/**/*" -] + - "**.js" + - "**.css" + - "**.md" +exclude_paths: + - "node_modules/**/*" + - "docs/**/*" diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..a188e069 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +docs/* diff --git a/.eslintrc b/.eslintrc index 532082c4..30baa16c 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,11 +1,8 @@ { - "extends": "airbnb-base", - "rules": { - "comma-dangle": 0, - "indent": [2, 4], - "max-len": [2, 120, { "ignoreStrings": true }], - "radix": [2, "as-needed"], - "no-console": 0 + "extends": ["esnext", "esnext/style-guide", "node", "node/style-guide"], + "parserOptions": { + "ecmaVersion": 2017, + "sourceType": "module" }, "settings": { "import/core-modules": [ "node_helper" ] @@ -13,6 +10,25 @@ "env": { "browser": true, "node": true, - "es6": true + "es6": true, + "jest": true + }, + "globals": { + "Module": true, + "Log": true + }, + "rules": { + "import/no-commonjs": 0, + "import/no-nodejs-modules": 0, + "semi": 0, + "comma-dangle": 0, + "indent": ["error", 4], + "template-curly-spacing": 0, + "no-console": 0, + "curly": ["error", "all"], + "array-bracket-spacing": 0, + "space-before-function-paren": 0, + "object-curly-spacing": ["error", "never"], + "object-property-newline": ["error", { "allowAllPropertiesOnSameLine": true }] } } diff --git a/.mdlrc b/.mdlrc index 54d01118..32c90a2f 100644 --- a/.mdlrc +++ b/.mdlrc @@ -1,2 +1,2 @@ all -rules "~MD013", "~MD026", "~MD033" +rules "~MD013", "~MD024", "~MD026", "~MD033" From 7003932c59237ff6fe90a527d5ddf8e7e056e5b5 Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Sun, 17 Jan 2021 11:15:42 +0100 Subject: [PATCH 06/39] dependency update --- node_helper.js | 2 +- package-lock.json | 5967 +++++++++++++++++++++++++++++++-------------- package.json | 14 +- 3 files changed, 4209 insertions(+), 1774 deletions(-) diff --git a/node_helper.js b/node_helper.js index f5f2fc83..54aa731c 100644 --- a/node_helper.js +++ b/node_helper.js @@ -8,7 +8,7 @@ /* eslint-env node */ const fetch = require('node-fetch'); -const qs = require('qs'); +const qs = require('querystring'); const NodeHelper = require('node_helper'); // https://gitlab.com/dword4/nhlapi/-/blob/master/stats-api.md diff --git a/package-lock.json b/package-lock.json index 3d352afe..3e2e33e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,45 +4,404 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/core": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz", + "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.10", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", + "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.11", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz", + "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz", + "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==", + "dev": true, + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", + "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", + "dev": true, + "requires": { + "@babel/types": "^7.12.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz", + "integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==", + "dev": true, + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-replace-supers": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz", + "integrity": "sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.12.7", + "@babel/helper-optimise-call-expression": "^7.12.10", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz", + "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==", + "dev": true, + "requires": { + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, - "JSONStream": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz", - "integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=", + "@babel/helpers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "dev": true, "requires": { - "jsonparse": "0.0.5", - "through": ">=2.2.7 <3" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" } }, - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", + "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==", "dev": true }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "@babel/template": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", + "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" + } + }, + "@babel/traverse": { + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz", + "integrity": "sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==", "dev": true, "requires": { - "acorn": "^3.0.4" + "@babel/code-frame": "^7.12.11", + "@babel/generator": "^7.12.11", + "@babel/helper-function-name": "^7.12.11", + "@babel/helper-split-export-declaration": "^7.12.11", + "@babel/parser": "^7.12.11", + "@babel/types": "^7.12.12", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" }, "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } }, + "@babel/types": { + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz", + "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + } + }, + "@stylelint/postcss-css-in-js": { + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", + "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", + "dev": true, + "requires": { + "@babel/core": ">=7.9.0" + } + }, + "@stylelint/postcss-markdown": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", + "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", + "dev": true, + "requires": { + "remark": "^13.0.0", + "unist-util-find-all-after": "^3.0.2" + } + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "@types/mdast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", + "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/unist": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", + "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==", + "dev": true + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -55,35 +414,54 @@ "uri-js": "^4.2.2" } }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + }, + "dependencies": { + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } }, "argparse": { "version": "1.0.10", @@ -94,33 +472,6 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, "array-includes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", @@ -135,24 +486,9 @@ } }, "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, "array.prototype.flat": { @@ -166,37 +502,65 @@ "es-abstract": "^1.18.0-next.1" } }, + "array.prototype.flatmap": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz", + "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "function-bind": "^1.1.1" + } + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", "dev": true, "requires": { - "browserslist": "^1.7.6", - "caniuse-db": "^1.0.30000634", + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^5.2.16", - "postcss-value-parser": "^3.2.3" + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" } }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", "dev": true, "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" } }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -214,146 +578,118 @@ } }, "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "fill-range": "^7.0.1" } }, "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz", + "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==", "dev": true, "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" + "caniuse-lite": "^1.0.30001173", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.634", + "escalade": "^3.1.1", + "node-releases": "^1.1.69" } }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, "call-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", - "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, "requires": { "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.0" - } - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "^0.2.0" + "get-intrinsic": "^1.0.2" } }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true - }, "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" } }, - "caniuse-db": { - "version": "1.0.30001173", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001173.tgz", - "integrity": "sha512-kAuX3BuQEIg9+cmIZYZdVm1XaFsV38iMK3Kp3O23dH4j9cdwknHStyZt5s1I2gQuR6vSsYxnPUGhGEcjk5UhuA==", + "caniuse-lite": { + "version": "1.0.30001178", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001178.tgz", + "integrity": "sha512-VtdZLC0vsXykKni8Uztx45xynytOi71Ufx9T8kHptSw9AL4dpqailUJJHavttuzUe1KYuBYtChiWv+BAb7mPmQ==", "dev": true }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", "dev": true }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "^1.0.1" - } + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", "dev": true }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "restore-cursor": "^3.1.0" } }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, "clone-regexp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.1.tgz", - "integrity": "sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", "dev": true, "requires": { - "is-regexp": "^1.0.0", - "is-supported-regexp-flag": "^1.0.0" + "is-regexp": "^2.0.0" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -363,49 +699,17 @@ "color-name": "1.1.3" } }, - "color-diff": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/color-diff/-/color-diff-0.1.7.tgz", - "integrity": "sha1-bbeM2UgqjkWdQIIer0tQMoPcuOI=", - "dev": true - }, "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "colorguard": { + "colorette": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorguard/-/colorguard-1.2.1.tgz", - "integrity": "sha512-qYVKTg626qpDg4/eBnPXidEPXn5+krbYqHVfyyEFBWV5z3IF4p44HKY/eE2t1ohlcrlIkDgHmFJMfQ8qMLnSFw==", - "dev": true, - "requires": { - "chalk": "^1.1.1", - "color-diff": "^0.1.3", - "log-symbols": "^1.0.2", - "object-assign": "^4.0.1", - "pipetteur": "^2.0.0", - "plur": "^2.0.0", - "postcss": "^5.0.4", - "postcss-reporter": "^1.2.1", - "text-table": "^0.2.0", - "yargs": "^1.2.6" - }, - "dependencies": { - "postcss-reporter": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-1.4.1.tgz", - "integrity": "sha1-wTbwpbFhkV83ndN2XGEHX357mvI=", - "dev": true, - "requires": { - "chalk": "^1.0.0", - "lodash": "^4.1.0", - "log-symbols": "^1.0.2", - "postcss": "^5.0.0" - } - } - } + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true }, "concat-map": { "version": "0.0.1", @@ -413,117 +717,72 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, "contains-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", "dev": true }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cosmiconfig": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", - "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", - "dev": true, - "requires": { - "is-directory": "^0.3.1", - "js-yaml": "^3.4.3", - "minimist": "^1.2.0", - "object-assign": "^4.1.0", - "os-homedir": "^1.0.1", - "parse-json": "^2.2.0", - "require-from-string": "^1.1.0" - } - }, - "css-color-names": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.3.tgz", - "integrity": "sha1-3gzvFvTYqoIioyDVttfpu62nufY=", - "dev": true - }, - "css-rule-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-rule-stream/-/css-rule-stream-1.1.0.tgz", - "integrity": "sha1-N4bnGYmD2WWibjGVfgkHjLt3BaI=", + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, "requires": { - "css-tokenize": "^1.0.1", - "duplexer2": "0.0.2", - "ldjson-stream": "^1.2.1", - "through2": "^0.6.3" + "safe-buffer": "~5.1.1" } }, - "css-tokenize": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-tokenize/-/css-tokenize-1.0.1.tgz", - "integrity": "sha1-RiXLHtohwUOFi3+B1oA8HSb8FL4=", + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^1.0.33" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" }, "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true } } }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "array-find-index": "^1.0.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true }, "debug": { "version": "2.6.9", @@ -540,6 +799,24 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -555,6 +832,23 @@ "object-keys": "^1.0.12" } }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + }, + "dependencies": { + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, "doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -564,292 +858,2264 @@ "esutils": "^2.0.2" } }, - "doiuse": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/doiuse/-/doiuse-2.6.0.tgz", - "integrity": "sha1-GJLRC2Gpo1at2/K2FJM+gfi7ODQ=", - "dev": true, - "requires": { - "browserslist": "^1.1.1", - "caniuse-db": "^1.0.30000187", - "css-rule-stream": "^1.1.0", - "duplexer2": "0.0.2", - "jsonfilter": "^1.1.2", - "ldjson-stream": "^1.2.1", - "lodash": "^4.0.0", - "multimatch": "^2.0.0", - "postcss": "^5.0.8", - "source-map": "^0.4.2", - "through2": "^0.6.3", - "yargs": "^3.5.4" + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" }, "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "domelementtype": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", + "dev": true + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "electron-to-chromium": { + "version": "1.3.641", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.641.tgz", + "integrity": "sha512-b0DLhsHSHESC1I+Nx6n4w4Lr61chMd3m/av1rZQhS2IXTzaS5BMM5N+ldWdMIlni9CITMRM09m8He4+YV/92TA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + } + } + } + }, + "eslint-config-esnext": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-esnext/-/eslint-config-esnext-4.1.0.tgz", + "integrity": "sha512-GhfVEXdqYKEIIj7j+Fw2SQdL9qyZMekgXfq6PyXM66cQw0B435ddjz3P3kxOBVihMRJ0xGYjosaveQz5Y6z0uA==", + "dev": true, + "requires": { + "babel-eslint": "^10.0.1", + "eslint": "^6.8.0", + "eslint-plugin-babel": "^5.2.1", + "eslint-plugin-import": "^2.14.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + } + } + }, + "eslint-config-node": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-node/-/eslint-config-node-4.1.0.tgz", + "integrity": "sha512-Wz17xV5O2WFG8fGdMYEBdbiL6TL7YNJSJvSX9V4sXQownewfYmoqlly7wxqLkOUv/57pq6LnnotMiQQrrPjCqQ==", + "dev": true, + "requires": { + "eslint": "^6.8.0", + "eslint-config-esnext": "^4.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + } + } + }, + "eslint-config-react-native": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-react-native/-/eslint-config-react-native-4.1.0.tgz", + "integrity": "sha512-kNND+cs+ztawH7wgajf/K6FfNshjlDsFDAkkFZF9HAXDgH1w1sNMIfTfwzufg0hOcSK7rbiL4qbG/gg/oR507Q==", + "dev": true, + "requires": { + "eslint": "^6.8.0", + "eslint-config-esnext": "^4.1.0", + "eslint-plugin-react": "^7.19.0", + "eslint-plugin-react-native": "^3.8.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + } + } + }, + "eslint-config-recommended": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-recommended/-/eslint-config-recommended-4.1.0.tgz", + "integrity": "sha512-2evA0SX1VqtyFiExmBI2WAO4XQCKlr7wmNELE8rcT5PyZY2ixsY881ofVZWKuI/dywpgLiES1gR/XUQcnVLRzQ==", + "dev": true, + "requires": { + "eslint": "^6.8.0", + "eslint-config-esnext": "^4.1.0", + "eslint-config-node": "^4.1.0", + "eslint-config-react-native": "^4.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { - "amdefine": ">=0.0.4" + "is-extglob": "^2.1.1" } }, - "yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" + "mimic-fn": "^2.1.0" } - } - } - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "~1.1.9" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true - } - } - }, - "electron-to-chromium": { - "version": "1.3.634", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.634.tgz", - "integrity": "sha512-QPrWNYeE/A0xRvl/QP3E0nkaEvYUvH3gM04ZWYtIa6QlSpEetRlRI1xvQ7hiMIySHHEV+mwDSX8Kj4YZY6ZQAw==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" - } - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - }, - "dependencies": { - "es6-symbol": { + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "mkdirp": "^0.5.1" } } } }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", - "dev": true, - "requires": { - "babel-code-frame": "^6.16.0", - "chalk": "^1.1.3", - "concat-stream": "^1.5.2", - "debug": "^2.1.1", - "doctrine": "^2.0.0", - "escope": "^3.6.0", - "espree": "^3.4.0", - "esquery": "^1.0.0", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "glob": "^7.0.3", - "globals": "^9.14.0", - "ignore": "^3.2.0", - "imurmurhash": "^0.1.4", - "inquirer": "^0.12.0", - "is-my-json-valid": "^2.10.0", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.5.1", - "json-stable-stringify": "^1.0.0", - "levn": "^0.3.0", - "lodash": "^4.0.0", - "mkdirp": "^0.5.0", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.1", - "pluralize": "^1.2.1", - "progress": "^1.1.8", - "require-uncached": "^1.0.2", - "shelljs": "^0.7.5", - "strip-bom": "^3.0.0", - "strip-json-comments": "~2.0.1", - "table": "^3.7.8", - "text-table": "~0.2.0", - "user-home": "^2.0.0" - } - }, - "eslint-config-airbnb-base": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.2.tgz", - "integrity": "sha512-/fhjt/VqzBA2SRsx7ErDtv6Ayf+XLw9LIOqmpBuHFCVwyJo2EtzGWMB9fYRFBoWWQLxmNmCpenNiH0RxyeS41w==", - "dev": true, - "requires": { - "eslint-restricted-globals": "^0.1.1" - } - }, "eslint-import-resolver-node": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", @@ -870,6 +3136,15 @@ "pkg-dir": "^2.0.0" } }, + "eslint-plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-babel/-/eslint-plugin-babel-5.3.1.tgz", + "integrity": "sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g==", + "dev": true, + "requires": { + "eslint-rule-composer": "^0.3.0" + } + }, "eslint-plugin-import": { "version": "2.22.1", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", @@ -903,20 +3178,81 @@ } } }, - "eslint-restricted-globals": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", - "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=", + "eslint-plugin-react": { + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz", + "integrity": "sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flatmap": "^1.2.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "object.entries": "^1.1.2", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.18.1", + "string.prototype.matchall": "^4.0.2" + } + }, + "eslint-plugin-react-native": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-3.10.0.tgz", + "integrity": "sha512-4f5+hHYYq5wFhB5eptkPEAR7FfvqbS7AzScUOANfAMZtYw5qgnCxRq45bpfBaQF+iyPMim5Q8pubcpvLv75NAg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.7.4", + "eslint-plugin-react-native-globals": "^0.1.1" + } + }, + "eslint-plugin-react-native-globals": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz", + "integrity": "sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==", + "dev": true + }, + "eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", "dev": true, "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" } }, "esprima": { @@ -971,73 +3307,30 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, "execall": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz", - "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", "dev": true, "requires": { - "clone-regexp": "^1.0.0" + "clone-regexp": "^2.1.0" } }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dev": true, - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", - "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==", - "dev": true - } - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" } }, "fast-deep-equal": { @@ -1046,6 +3339,20 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -1058,43 +3365,46 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "fastq": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", + "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", + "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", "dev": true, "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "flat-cache": "^3.0.4" } }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "to-regex-range": "^5.0.1" } }, "find-up": { @@ -1107,38 +3417,38 @@ } }, "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "dependencies": { + "flatted": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", + "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, - "flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1151,29 +3461,17 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "gather-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gather-stream/-/gather-stream-1.0.0.tgz", - "integrity": "sha1-szmUr0V6gRVwDUEPMXczy+egkEs=", - "dev": true - }, - "generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dev": true, - "requires": { - "is-property": "^1.0.2" - } + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "^1.0.0" - } + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true }, "get-intrinsic": { "version": "1.0.2", @@ -1187,9 +3485,9 @@ } }, "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true }, "glob": { @@ -1206,42 +3504,64 @@ "path-is-absolute": "^1.0.0" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "dev": true, "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" + "is-glob": "^4.0.1" } }, - "glob-parent": { + "global-modules": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, "requires": { - "is-glob": "^2.0.0" + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" } }, "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } }, "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", "dev": true, "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + } } }, "globjoin": { @@ -1250,12 +3570,27 @@ "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", "dev": true }, + "gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -1265,19 +3600,10 @@ "function-bind": "^1.1.1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "has-symbols": { @@ -1293,15 +3619,62 @@ "dev": true }, "html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", "dev": true }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true }, "imurmurhash": { @@ -1311,13 +3684,10 @@ "dev": true }, "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true }, "indexes-of": { "version": "1.0.1", @@ -1341,44 +3711,80 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, - "requires": { - "ansi-escapes": "^1.1.0", - "ansi-regex": "^2.0.0", - "chalk": "^1.0.0", - "cli-cursor": "^1.0.1", - "cli-width": "^2.0.0", - "figures": "^1.3.5", - "lodash": "^4.3.0", - "readline2": "^1.0.1", - "run-async": "^0.1.0", - "rx-lite": "^3.1.2", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.0", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", "through": "^2.3.6" } }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", "dev": true }, - "irregular-plurals": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", - "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", - "dev": true + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } }, "is-arrayish": { "version": "0.2.1", @@ -1387,9 +3793,9 @@ "dev": true }, "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true }, "is-callable": { @@ -1413,82 +3819,39 @@ "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", "dev": true }, "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "^2.1.1" } }, - "is-my-ip-valid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", - "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", "dev": true }, - "is-my-json-valid": { - "version": "2.20.5", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.5.tgz", - "integrity": "sha512-VTPuvvGQtxvCeghwspQu1rBgjYUT6FGxPlvFKbYuFtgc4ADsX3U5ihZOYN0qyU6u+d4X9xXb0IT5O6QpXKt87A==", - "dev": true, - "requires": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" - } - }, "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -1496,30 +3859,15 @@ "dev": true }, "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true }, "is-regex": { @@ -1532,15 +3880,9 @@ } }, "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", "dev": true }, "is-string": { @@ -1549,12 +3891,6 @@ "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", "dev": true }, - "is-supported-regexp-flag": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz", - "integrity": "sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ==", - "dev": true - }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -1564,10 +3900,10 @@ "has-symbols": "^1.0.1" } }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, "isarray": { @@ -1576,19 +3912,10 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "js-base64": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", - "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "js-tokens": { @@ -1607,20 +3934,29 @@ "esprima": "^4.0.0" } }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "json-stable-stringify": { + "json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true }, "json5": { "version": "1.0.1", @@ -1631,70 +3967,28 @@ "minimist": "^1.2.0" } }, - "jsonfilter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/jsonfilter/-/jsonfilter-1.1.2.tgz", - "integrity": "sha1-Ie987cdRk4E8dZMulqmL4gW6WhE=", + "jsx-ast-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", + "integrity": "sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==", "dev": true, "requires": { - "JSONStream": "^0.8.4", - "minimist": "^1.1.0", - "stream-combiner": "^0.2.1", - "through2": "^0.6.3" + "array-includes": "^3.1.2", + "object.assign": "^4.1.2" } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsonparse": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", - "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=", - "dev": true - }, - "jsonpointer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", - "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", - "dev": true - }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true }, "known-css-properties": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.2.0.tgz", - "integrity": "sha512-UTCzU28rRI9wkb8qSGoZa9pgWvxr4LjP2MEhi9XHb/1XMOJy0uTnIxaxzj8My/PORG+kQG6VzAcGvRw66eIOfA==", + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.20.0.tgz", + "integrity": "sha512-URvsjaA9ypfreqJ2/ylDr5MUERhJZ+DhguoWRr2xgS5C7aGCalXo+ewL+GixgKBfhT2vuL02nbIgNGqVWgTOYw==", "dev": true }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "ldjson-stream": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ldjson-stream/-/ldjson-stream-1.2.1.tgz", - "integrity": "sha1-kb7O2lrE7SsX5kn7d356v6AYnCs=", - "dev": true, - "requires": { - "split2": "^0.2.1", - "through2": "^0.6.1" - } - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -1705,6 +3999,12 @@ "type-check": "~0.3.2" } }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -1734,34 +4034,42 @@ "dev": true }, "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", "dev": true, "requires": { - "chalk": "^1.0.0" + "chalk": "^4.0.0" } }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" } }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } }, - "math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "map-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", + "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", "dev": true }, "mathml-tag-names": { @@ -1770,120 +4078,275 @@ "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true }, + "mdast-util-from-markdown": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.4.tgz", + "integrity": "sha512-jj891B5pV2r63n2kBTFh8cRI2uR9LQHsXG1zSDqfhXkIlDzrTcIlbB5+5aaYEkl8vOPIOPLf8VT7Ere1wWTMdw==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "mdast-util-to-markdown": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.2.tgz", + "integrity": "sha512-iRczns6WMvu0hUw02LXsPDJshBIwtUPbvHBWo19IQeU0YqmzlA8Pd30U8V7uiI0VPkxzS7A/NXBXH6u+HS87Zg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + } + }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true + }, "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "dependencies": { "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "hosted-git-info": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz", + "integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "lru-cache": "^6.0.0" } }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "p-locate": "^4.1.0" } }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "normalize-package-data": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz", + "integrity": "sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==", + "dev": true, + "requires": { + "hosted-git-info": "^3.0.6", + "resolve": "^1.17.0", + "semver": "^7.3.2", + "validate-npm-package-license": "^3.0.1" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" } }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } } }, "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + } + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromark": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.2.tgz", + "integrity": "sha512-IXuP76p2uj8uMg4FQc1cRE7lPCLsfAXuEfdjtdO55VRiFO1asrCSQ5g43NmPqFtRwzEnEhafRVzn2jg0UiKArQ==", + "dev": true, + "requires": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "ms": "2.1.2" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1899,6 +4362,25 @@ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + } + } + }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -1914,22 +4396,10 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - } - }, "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, "natural-compare": { @@ -1938,10 +4408,10 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, "node-fetch": { @@ -1949,6 +4419,12 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, + "node-releases": { + "version": "1.1.69", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.69.tgz", + "integrity": "sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA==", + "dev": true + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -1961,15 +4437,6 @@ "validate-npm-package-license": "^3.0.1" } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", @@ -1988,12 +4455,6 @@ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -2024,14 +4485,28 @@ "object-keys": "^1.1.1" } }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "object.entries": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", + "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.3.tgz", + "integrity": "sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw==", "dev": true, "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" } }, "object.values": { @@ -2055,17 +4530,14 @@ "wrappy": "1" } }, - "onecolor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.1.0.tgz", - "integrity": "sha512-YZSypViXzu3ul5LMu/m6XjJ9ol8qAy9S2VjHl5E6UlhUH1KGKWabyEJifn0Jjpw23bYDzC2ucKMPGiH5kfwSGQ==", - "dev": true - }, "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } }, "optionator": { "version": "0.8.3", @@ -2081,21 +4553,12 @@ "word-wrap": "~1.2.3" } }, - "os-homedir": { + "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -2120,16 +4583,35 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } + } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", "dev": true, "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" } }, "parse-json": { @@ -2153,10 +4635,10 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { @@ -2174,37 +4656,18 @@ "pify": "^2.0.0" } }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pipetteur": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pipetteur/-/pipetteur-2.0.3.tgz", - "integrity": "sha1-GVV2CVno0aEcsqUOyD7sRwYz5J8=", - "dev": true, - "requires": { - "onecolor": "^3.0.4", - "synesthesia": "^1.0.1" - } - }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", @@ -2214,51 +4677,87 @@ "find-up": "^2.1.0" } }, - "plur": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", - "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", - "dev": true, - "requires": { - "irregular-plurals": "^1.0.0" - } - }, - "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", - "dev": true - }, "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", "dev": true, "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" }, "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "^1.0.0" + "has-flag": "^3.0.0" } } } }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + } + }, "postcss-less": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-0.14.0.tgz", - "integrity": "sha1-xjGwicbM5CK5oQ86lY0r7dOBkyQ=", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", "dev": true, "requires": { - "postcss": "^5.0.21" + "postcss": "^7.0.14" } }, "postcss-media-query-parser": { @@ -2267,48 +4766,62 @@ "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", "dev": true }, - "postcss-reporter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-3.0.0.tgz", - "integrity": "sha1-CeoPN6RExWk4eGBuCbAY6+/3z48=", - "dev": true, - "requires": { - "chalk": "^1.0.0", - "lodash": "^4.1.0", - "log-symbols": "^1.0.2", - "postcss": "^5.0.0" - } - }, "postcss-resolve-nested-selector": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", "dev": true }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "dev": true, + "requires": { + "postcss": "^7.0.26" + } + }, + "postcss-sass": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", + "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", + "dev": true, + "requires": { + "gonzales-pe": "^4.3.0", + "postcss": "^7.0.21" + } + }, "postcss-scss": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-0.4.1.tgz", - "integrity": "sha1-rXcbgfD3L19IRdCKpg+TVXZT1Uw=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", + "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", "dev": true, "requires": { - "postcss": "^5.2.13" + "postcss": "^7.0.6" } }, "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", "dev": true, "requires": { - "flatten": "^1.0.2", + "cssesc": "^3.0.0", "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" } }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", + "dev": true + }, "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, "prelude-ls": { @@ -2317,68 +4830,40 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "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==", - "dev": true - }, "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "qs": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" - }, - "randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true }, - "read-file-stdin": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/read-file-stdin/-/read-file-stdin-0.2.1.tgz", - "integrity": "sha1-JezP86FTtoCa+ssj7hU4fbng7mE=", - "dev": true, - "requires": { - "gather-stream": "^1.0.0" - } + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true }, "read-pkg": { "version": "2.0.0", @@ -2402,78 +4887,70 @@ } }, "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==", - "dev": true, - "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" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "mute-stream": "0.0.5" + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" } }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", "dev": true, "requires": { - "resolve": "^1.1.6" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "remark": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", + "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", "dev": true, "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" + "remark-parse": "^9.0.0", + "remark-stringify": "^9.0.0", + "unified": "^9.1.0" } }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "remark-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", "dev": true, "requires": { - "is-equal-shallow": "^0.1.3" + "mdast-util-from-markdown": "^0.8.0" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true + "remark-stringify": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", + "dev": true, + "requires": { + "mdast-util-to-markdown": "^0.6.0" + } }, "repeat-string": { "version": "1.6.1", @@ -2481,31 +4958,12 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - } - }, "resolve": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", @@ -2517,21 +4975,27 @@ } }, "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" } }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -2542,35 +5006,68 @@ } }, "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", + "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", + "dev": true + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", "dev": true, "requires": { - "once": "^1.3.0" + "tslib": "^1.9.0" } }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" } }, "signal-exit": { @@ -2579,12 +5076,31 @@ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + } + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -2624,45 +5140,41 @@ "dev": true }, "specificity": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.3.2.tgz", - "integrity": "sha512-Nc/QN/A425Qog7j9aHmwOrlwX2e7pNI47ciwxwy4jOlvbbMHkNNJchit+FX+UjF3IAdiaaV5BKeWuDUnws6G1A==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", "dev": true }, - "split2": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/split2/-/split2-0.2.1.tgz", - "integrity": "sha1-At2smtwD7Au3jBKC7Aecpuha6QA=", - "dev": true, - "requires": { - "through2": "~0.6.1" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "duplexer": "~0.1.1", - "through": "~2.3.4" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "string.prototype.matchall": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz", + "integrity": "sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3" } }, "string.prototype.trimend": { @@ -2686,29 +5198,29 @@ } }, "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==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" }, "dependencies": { "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true } } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^5.0.0" } }, "strip-bom": { @@ -2718,26 +5230,18 @@ "dev": true }, "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, "requires": { - "get-stdin": "^4.0.1" - }, - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - } + "min-indent": "^1.0.0" } }, "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "style-search": { @@ -2746,215 +5250,117 @@ "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", "dev": true }, - "stylehacks": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-2.3.2.tgz", - "integrity": "sha1-ZMg+BDimjJ7fRJ6MVSp9mrYAmws=", + "stylelint": { + "version": "13.8.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.8.0.tgz", + "integrity": "sha512-iHH3dv3UI23SLDrH4zMQDjLT9/dDIz/IpoFeuNxZmEx86KtfpjDOscxLTFioQyv+2vQjPlRZnK0UoJtfxLICXQ==", "dev": true, "requires": { - "browserslist": "^1.1.3", - "chalk": "^1.1.1", - "log-symbols": "^1.0.2", - "minimist": "^1.2.0", - "plur": "^2.1.2", - "postcss": "^5.0.18", - "postcss-reporter": "^1.3.3", - "postcss-selector-parser": "^2.0.0", - "read-file-stdin": "^0.2.1", - "text-table": "^0.2.0", - "write-file-stdout": "0.0.2" - }, - "dependencies": { - "postcss-reporter": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-1.4.1.tgz", - "integrity": "sha1-wTbwpbFhkV83ndN2XGEHX357mvI=", - "dev": true, - "requires": { - "chalk": "^1.0.0", - "lodash": "^4.1.0", - "log-symbols": "^1.0.2", - "postcss": "^5.0.0" - } - } - } - }, - "stylelint": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-7.13.0.tgz", - "integrity": "sha1-ER+Xttpy53XICADWu29fhpmXeF0=", - "dev": true, - "requires": { - "autoprefixer": "^6.0.0", - "balanced-match": "^0.4.0", - "chalk": "^2.0.1", - "colorguard": "^1.2.0", - "cosmiconfig": "^2.1.1", - "debug": "^2.6.0", - "doiuse": "^2.4.1", - "execall": "^1.0.0", - "file-entry-cache": "^2.0.0", - "get-stdin": "^5.0.0", - "globby": "^6.0.0", + "@stylelint/postcss-css-in-js": "^0.37.2", + "@stylelint/postcss-markdown": "^0.36.2", + "autoprefixer": "^9.8.6", + "balanced-match": "^1.0.0", + "chalk": "^4.1.0", + "cosmiconfig": "^7.0.0", + "debug": "^4.2.0", + "execall": "^2.0.0", + "fast-glob": "^3.2.4", + "fastest-levenshtein": "^1.0.12", + "file-entry-cache": "^6.0.0", + "get-stdin": "^8.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.1", "globjoin": "^0.1.4", - "html-tags": "^2.0.0", - "ignore": "^3.2.0", + "html-tags": "^3.1.0", + "ignore": "^5.1.8", + "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", - "known-css-properties": "^0.2.0", - "lodash": "^4.17.4", - "log-symbols": "^1.0.2", - "mathml-tag-names": "^2.0.0", - "meow": "^3.3.0", - "micromatch": "^2.3.11", + "known-css-properties": "^0.20.0", + "lodash": "^4.17.20", + "log-symbols": "^4.0.0", + "mathml-tag-names": "^2.1.3", + "meow": "^8.0.0", + "micromatch": "^4.0.2", "normalize-selector": "^0.2.0", - "pify": "^2.3.0", - "postcss": "^5.0.20", - "postcss-less": "^0.14.0", - "postcss-media-query-parser": "^0.2.0", - "postcss-reporter": "^3.0.0", + "postcss": "^7.0.35", + "postcss-html": "^0.36.0", + "postcss-less": "^3.1.4", + "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", - "postcss-scss": "^0.4.0", - "postcss-selector-parser": "^2.1.1", - "postcss-value-parser": "^3.1.1", - "resolve-from": "^3.0.0", - "specificity": "^0.3.0", - "string-width": "^2.0.0", + "postcss-safe-parser": "^4.0.2", + "postcss-sass": "^0.4.4", + "postcss-scss": "^2.1.1", + "postcss-selector-parser": "^6.0.4", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^4.1.0", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "specificity": "^0.4.1", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", "style-search": "^0.1.0", - "stylehacks": "^2.3.2", - "sugarss": "^0.2.0", + "sugarss": "^2.0.0", "svg-tags": "^1.0.0", - "table": "^4.0.1" + "table": "^6.0.3", + "v8-compile-cache": "^2.2.0", + "write-file-atomic": "^3.0.3" }, "dependencies": { - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ms": "2.1.2" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true - }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "table": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", - "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", - "dev": true, - "requires": { - "ajv": "^6.0.1", - "ajv-keywords": "^3.0.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" - } } } }, - "stylelint-config-standard": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-16.0.0.tgz", - "integrity": "sha1-u3OHv/HX3XGGpSs+v4hbJAXWkb8=", + "stylelint-config-recommended": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz", + "integrity": "sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ==", "dev": true }, + "stylelint-config-standard": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-20.0.0.tgz", + "integrity": "sha512-IB2iFdzOTA/zS4jSVav6z+wGtin08qfj+YyExHB3LF9lnouQht//YyB0KZq9gGz5HNPkddHOzcY8HsUey6ZUlA==", + "dev": true, + "requires": { + "stylelint-config-recommended": "^3.0.0" + } + }, "sugarss": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-0.2.0.tgz", - "integrity": "sha1-rDQjdWMyfG/4l7ZHQr9q7BkK054=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", + "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", "dev": true, "requires": { - "postcss": "^5.2.4" + "postcss": "^7.0.2" } }, "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } }, "svg-tags": { "version": "1.0.0", @@ -2962,69 +5368,35 @@ "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", "dev": true }, - "synesthesia": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/synesthesia/-/synesthesia-1.0.1.tgz", - "integrity": "sha1-XvlepUjA1cbm+btLDQcx3/hkp3c=", - "dev": true, - "requires": { - "css-color-names": "0.0.3" - } - }, "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", "dev": true, "requires": { - "ajv": "^4.7.0", - "ajv-keywords": "^1.0.0", - "chalk": "^1.1.1", - "lodash": "^4.0.0", - "slice-ansi": "0.0.4", - "string-width": "^2.0.0" + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" }, "dependencies": { "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", + "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", "dev": true, "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } } } }, @@ -3040,46 +5412,40 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } + "os-tmpdir": "~1.0.2" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" } }, "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "dev": true + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", "dev": true }, "tsconfig-paths": { @@ -3094,10 +5460,10 @@ "strip-bom": "^3.0.0" } }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, "type-check": { @@ -3109,18 +5475,65 @@ "prelude-ls": "~1.1.2" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dev": true, + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + } + }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true }, + "unist-util-find-all-after": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", + "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", + "dev": true, + "requires": { + "unist-util-is": "^4.0.0" + } + }, + "unist-util-is": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.4.tgz", + "integrity": "sha512-3dF39j/u423v4BBQrk1AQ2Ve1FxY5W3JKwXxVFzBODQ6WEvccguhgp802qQLKSnxPODE6WuRZtV+ohlUg4meBA==", + "dev": true + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, "uri-js": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", @@ -3130,21 +5543,18 @@ "punycode": "^2.1.0" } }, - "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -3155,11 +5565,36 @@ "spdx-expression-parse": "^3.0.0" } }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", - "dev": true + "vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } }, "word-wrap": { "version": "1.2.3", @@ -3167,16 +5602,6 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -3184,36 +5609,48 @@ "dev": true }, "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "dev": true, "requires": { "mkdirp": "^0.5.1" } }, - "write-file-stdout": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/write-file-stdout/-/write-file-stdout-0.0.2.tgz", - "integrity": "sha1-wlLXx8WxtAKJdjDjRTx7/mkNnKE=", + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "yaml": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", "dev": true }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true }, - "yargs": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz", - "integrity": "sha1-BU3oth8i7v23IHBZ6u+da4P7kxo=", + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", "dev": true } } diff --git a/package.json b/package.json index c37a198f..5fa6f07d 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "2.0.0", "description": "National Hockey League Module for MagicMirror2", "scripts": { - "lint": "eslint . && stylelint ." + "lint": "eslint . && stylelint **/*.css" }, "repository": { "type": "git", @@ -21,14 +21,12 @@ }, "homepage": "https://github.com/fewieden/MMM-NHL#readme", "devDependencies": { - "eslint": "^3.14.1", - "eslint-config-airbnb-base": "^11.0.1", - "eslint-plugin-import": "^2.2.0", - "stylelint": "^7.8.0", - "stylelint-config-standard": "^16.0.0" + "eslint": "^6.8.0", + "eslint-config-recommended": "^4.1.0", + "stylelint": "^13.8.0", + "stylelint-config-standard": "^20.0.0" }, "dependencies": { - "node-fetch": "^2.6.1", - "qs": "^6.9.4" + "node-fetch": "^2.6.1" } } From c7d51d023c2e1c41e29c32d7b01330138aa381d9 Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Sun, 17 Jan 2021 20:33:07 +0100 Subject: [PATCH 07/39] clean up --- MMM-NHL.js | 4 +--- README.md | 7 ++----- node_helper.js | 1 - 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/MMM-NHL.js b/MMM-NHL.js index 72406616..635e5fe4 100644 --- a/MMM-NHL.js +++ b/MMM-NHL.js @@ -79,8 +79,6 @@ Module.register('MMM-NHL', { this.season = payload.season; this.setRotateInterval(); } - - console.log(payload); }, setRotateInterval() { @@ -120,7 +118,7 @@ Module.register('MMM-NHL', { weekday: 'short', hour: '2-digit', minute: '2-digit' }).format(start); } else if (game.status.abstract === 'Live' && game.live.period) { - return this.translate('TIME_LEFT', game.live.timeRemaining); + return `${game.live.period} ${game.live.timeRemaining}`; } return this.translate(game.status.abstract); diff --git a/README.md b/README.md index 86b9bce8..1111d4fd 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,7 @@ National Hockey League Module for MagicMirror2 * An installation of [MagicMirror2](https://github.com/MichMich/MagicMirror) * npm -* [request](https://www.npmjs.com/package/request) -* [moment-timezone](https://www.npmjs.com/package/moment-timezone) +* [node-fetch](https://www.npmjs.com/package/node-fetch) ## Installation @@ -23,8 +22,7 @@ National Hockey League Module for MagicMirror2 } } ``` - -1. Run command `npm install --productive` in `~/MagicMirror/modules/MMM-NHL` directory. +1. Run command `npm i --production` in `~/MagicMirror/modules/MMM-NHL` directory. ## Config Options @@ -33,6 +31,5 @@ National Hockey League Module for MagicMirror2 | `colored` | `false` | Remove black/white filter of logos. | | `focus_on` | `false` | Display only matches with teams of this array e.g. `['VAN', 'MTL', 'BOS']`. | | `matches` | `6` | Max number of matches displaying simultaneously. | -| `format` | `'ddd h:mm'` | In which format the date should be displayed. [All Options](http://momentjs.com/docs/#/displaying/format/) | | `rotateInterval` | `20000` (20 secs) | How often should be rotated the matches in the list. | | `reloadInterval` | `1800000` (30 mins) | How often should the data be fetched. | diff --git a/node_helper.js b/node_helper.js index 54aa731c..3f64262c 100644 --- a/node_helper.js +++ b/node_helper.js @@ -11,7 +11,6 @@ const fetch = require('node-fetch'); const qs = require('querystring'); const NodeHelper = require('node_helper'); -// https://gitlab.com/dword4/nhlapi/-/blob/master/stats-api.md const BASE_URL = 'https://statsapi.web.nhl.com/api/v1'; module.exports = NodeHelper.create({ From cfa3c52bbc37151318af84006349f4a5a89b0786 Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Sun, 17 Jan 2021 20:33:21 +0100 Subject: [PATCH 08/39] changelog --- CHANGELOG.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11b62260..10177e47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,27 @@ # MMM-NHL Changelog +## [2.0.0] + +### Added + +* Nunjuck templates +* French translations thanks to [matlem037](https://github.com/matlem037) +* Dependency `node-fetch` + +### Changed + +* Switched API for data feed. +* Display logos from remote. +* Retrieve team list from API. +* ESLint recommended instead of airbnb ruleset. + +### Removed + +* Config option `format`, instead rendering information based on locale. +* Dependency `moment-timezone` +* Dependency `request` +* Local team logos + ## [1.0.1] ### Added From d387296fd37b84360690d89730a0221224772a50 Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Sun, 17 Jan 2021 20:58:44 +0100 Subject: [PATCH 09/39] added config options daysInPast and daysAhead --- CHANGELOG.md | 2 ++ MMM-NHL.js | 7 +++++-- README.md | 2 ++ node_helper.js | 10 +++------- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 10177e47..87666dbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ * Nunjuck templates * French translations thanks to [matlem037](https://github.com/matlem037) * Dependency `node-fetch` +* Config option `daysInPast` +* Config option `daysAhead` ### Changed diff --git a/MMM-NHL.js b/MMM-NHL.js index 635e5fe4..0937046b 100644 --- a/MMM-NHL.js +++ b/MMM-NHL.js @@ -35,8 +35,10 @@ Module.register('MMM-NHL', { colored: false, focus_on: false, matches: 6, - rotateInterval: 20 * 1000, // every 20 seconds - reloadInterval: 30 * 60 * 1000 // every 30 minutes + rotateInterval: 20 * 1000, + reloadInterval: 30 * 60 * 1000, + daysInPast: 1, + daysAhead: 7 }, getTranslations() { @@ -78,6 +80,7 @@ Module.register('MMM-NHL', { this.games = payload.games; this.season = payload.season; this.setRotateInterval(); + console.log(this.games); } }, diff --git a/README.md b/README.md index 1111d4fd..68a65d12 100644 --- a/README.md +++ b/README.md @@ -33,3 +33,5 @@ National Hockey League Module for MagicMirror2 | `matches` | `6` | Max number of matches displaying simultaneously. | | `rotateInterval` | `20000` (20 secs) | How often should be rotated the matches in the list. | | `reloadInterval` | `1800000` (30 mins) | How often should the data be fetched. | +| `daysInPast` | `1` | How many days should a game be displayed after it is finished. | +| `daysAhead` | `7` | How many days should a game be displayed before it starts. | diff --git a/node_helper.js b/node_helper.js index 3f64262c..1b0f710d 100644 --- a/node_helper.js +++ b/node_helper.js @@ -58,16 +58,12 @@ module.exports = NodeHelper.create({ async fetchSchedule() { let date = new Date(); - date.setDate(date.getDate() - 1); + date.setDate(date.getDate() - this.config.daysInPast); const startDate = date.toISOString().slice(0, 10); - date.setDate(date.getDate() + 8); + date.setDate(date.getDate() + this.config.daysInPast + this.config.daysAhead); const endDate = date.toISOString().slice(0, 10); - const query = qs.stringify({ - startDate, - endDate, - expand: 'schedule.linescore' - }); + const query = qs.stringify({startDate, endDate, expand: 'schedule.linescore'}); const response = await fetch(`${BASE_URL}/schedule?${query}`); From 1835791a6b2d42735e1b476db31c3589ff38e82e Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Sun, 17 Jan 2021 18:03:02 -0500 Subject: [PATCH 10/39] Added liveReloadInterval --- MMM-NHL.js | 1 + node_helper.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/MMM-NHL.js b/MMM-NHL.js index 0937046b..3a6ca613 100644 --- a/MMM-NHL.js +++ b/MMM-NHL.js @@ -37,6 +37,7 @@ Module.register('MMM-NHL', { matches: 6, rotateInterval: 20 * 1000, reloadInterval: 30 * 60 * 1000, + liveReloadInterval: 60 * 1000, daysInPast: 1, daysAhead: 7 }, diff --git a/node_helper.js b/node_helper.js index 1b0f710d..ffa04b77 100644 --- a/node_helper.js +++ b/node_helper.js @@ -32,7 +32,7 @@ module.exports = NodeHelper.create({ }, this.config.reloadInterval); setInterval(() => { return this.fetchOnLiveState(); - }, 60 * 1000); + }, this.config.liveReloadInterval); } }, From 78c822d0e23e47f55d9cbe4137b31c5670340edb Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Sun, 17 Jan 2021 19:28:38 -0500 Subject: [PATCH 11/39] Added showNames,showLogos config. Fixed missing config in nunjuck templateData --- MMM-NHL.js | 7 +++++-- node_helper.js | 7 ++++--- templates/MMM-NHL.njk | 24 ++++++++++++++++++++---- translations/en.json | 2 +- 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/MMM-NHL.js b/MMM-NHL.js index 3a6ca613..61178c41 100644 --- a/MMM-NHL.js +++ b/MMM-NHL.js @@ -39,7 +39,9 @@ Module.register('MMM-NHL', { reloadInterval: 30 * 60 * 1000, liveReloadInterval: 60 * 1000, daysInPast: 1, - daysAhead: 7 + daysAhead: 7, + showNames: true, + showLogos: true }, getTranslations() { @@ -65,7 +67,8 @@ Module.register('MMM-NHL', { season: this.season, games: this.games, rotateIndex: this.rotateIndex, - maxGames: Math.min(this.games.length, this.rotateIndex + this.config.matches) + maxGames: Math.min(this.games.length, this.rotateIndex + this.config.matches), + config: this.config }; }, diff --git a/node_helper.js b/node_helper.js index ffa04b77..627d3744 100644 --- a/node_helper.js +++ b/node_helper.js @@ -60,12 +60,13 @@ module.exports = NodeHelper.create({ let date = new Date(); date.setDate(date.getDate() - this.config.daysInPast); const startDate = date.toISOString().slice(0, 10); - date.setDate(date.getDate() + this.config.daysInPast + this.config.daysAhead); + date.setDate(date.getDate() + this.config.daysAhead); const endDate = date.toISOString().slice(0, 10); const query = qs.stringify({startDate, endDate, expand: 'schedule.linescore'}); - - const response = await fetch(`${BASE_URL}/schedule?${query}`); + const url = `${BASE_URL}/schedule?${query}`; + console.log(`MMM-NHL Fetching:${BASE_URL}/schedule?${query}`); + const response = await fetch(url); if (!response.ok) { console.error(`Fetching NHL schedule failed: ${response.status} ${response.statusText}`); diff --git a/templates/MMM-NHL.njk b/templates/MMM-NHL.njk index eb408659..79a0a28b 100644 --- a/templates/MMM-NHL.njk +++ b/templates/MMM-NHL.njk @@ -15,13 +15,29 @@ {% for index in range(rotateIndex, maxGames) %} {{ games[index] | calendar }} - {{ games[index].teams.home.short }} - + + {% if config.showNames %} + {{ games[index].teams.home.short }} + {% endif %} + + + {% if config.showLogos %} + + {% endif %} + {{ games[index].teams.home.score }} : {{ games[index].teams.away.score }} - - {{ games[index].teams.away.short }} + + {% if config.showLogos %} + + {% endif %} + + + {% if config.showNames %} + {{ games[index].teams.away.short }} + {% endif %} + {% endfor %} diff --git a/translations/en.json b/translations/en.json index 8d2db5fe..ef789b08 100644 --- a/translations/en.json +++ b/translations/en.json @@ -1,5 +1,5 @@ { - "LOADING": "Loading...", + "LOADING": "Loading . . .", "HOME": "Home", "AWAY": "Away", "PRE_GAME": "Warm Up", From c51ef62fc0723d7361fed6105d986ba16f1346e4 Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Sun, 17 Jan 2021 19:40:07 -0500 Subject: [PATCH 12/39] Fixed Loading … issue --- templates/MMM-NHL.njk | 2 +- translations/en.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/MMM-NHL.njk b/templates/MMM-NHL.njk index 79a0a28b..3266ec03 100644 --- a/templates/MMM-NHL.njk +++ b/templates/MMM-NHL.njk @@ -1,5 +1,5 @@ {% if loading %} -
{{ "LOADING" | translate }}
+
{{ "NHLLOADING" | translate }}
{% else %}
NHL {{ modes[season.mode] | translate }} {{ season.year }}
diff --git a/translations/en.json b/translations/en.json index ef789b08..4994962a 100644 --- a/translations/en.json +++ b/translations/en.json @@ -1,5 +1,5 @@ { - "LOADING": "Loading . . .", + "NHLLOADING": "Loading...", "HOME": "Home", "AWAY": "Away", "PRE_GAME": "Warm Up", From 14859814745d75fea1f8c8cacf166f122f6cfc0a Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Mon, 18 Jan 2021 20:06:47 +0100 Subject: [PATCH 13/39] add github config files --- .github/CONTRIBUTING.md | 8 ++++++++ .github/FUNDING.yml | 1 + .github/ISSUE_TEMPLATE.md | 9 +++++++++ .github/PULL_REQUEST_TEMPLATE.md | 5 +++++ 4 files changed, 23 insertions(+) create mode 100644 .github/CONTRIBUTING.md create mode 100644 .github/FUNDING.yml create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 00000000..66b8fb42 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,8 @@ +# Contribution Guidelines + +Thanks for contributing to this module! + +Please create pull requests to the branch `develop`. + +To hold one code style and standard there are several linters and tools in this project set. Make sure you fulfill the requirements. +Also, there will be automatically analysis performed once you created the pull request. diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..52b85501 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +custom: ['https://paypal.me/fewieden'] diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 00000000..5bbae689 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,9 @@ +Platform (Hardware/OS): + +Node version: + +MagicMirror version: + +Module version: + +Description of the issue: diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..63fa6997 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,5 @@ +Please create pull requests to the branch `develop`. + +* Does the pull request solve an issue (add a reference)? +* What are the features of this pr? +* Add screenshots for visual changes. From 21e657f48602b4fdfcbe097b269dbc4734e271bd Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Mon, 18 Jan 2021 20:09:40 +0100 Subject: [PATCH 14/39] replace travis integration with github actions --- .github/workflows/build.yml | 24 ++++++++++++++++++++++++ .travis.yml | 11 ----------- README.md | 2 +- 3 files changed, 25 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/build.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..5b6db004 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,24 @@ +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions + +name: build + +on: + push: + branches: [ master, develop ] + pull_request: + branches: [ master, develop ] + +jobs: + lint: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [ 14.x ] + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - run: npm ci + - run: npm run lint diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index b89f2aa4..00000000 --- a/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -language: node_js -node_js: - - "stable" - - "7" - - "6" - - "5" -script: - - npm run lint -cache: - directories: - - node_modules diff --git a/README.md b/README.md index 68a65d12..e96ac3f4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# MMM-NHL [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](https://raw.githubusercontent.com/fewieden/MMM-NHL/master/LICENSE) [![Build Status](https://travis-ci.org/fewieden/MMM-NHL.svg?branch=master)](https://travis-ci.org/fewieden/MMM-NHL) [![Code Climate](https://codeclimate.com/github/fewieden/MMM-NHL/badges/gpa.svg?style=flat)](https://codeclimate.com/github/fewieden/MMM-NHL) [![Known Vulnerabilities](https://snyk.io/test/github/fewieden/mmm-nhl/badge.svg)](https://snyk.io/test/github/fewieden/mmm-nhl) +# MMM-NHL [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](https://raw.githubusercontent.com/fewieden/MMM-NHL/master/LICENSE) ![Build status](https://github.com/fewieden/MMM-NHL/workflows/build/badge.svg) [![Code Climate](https://codeclimate.com/github/fewieden/MMM-NHL/badges/gpa.svg?style=flat)](https://codeclimate.com/github/fewieden/MMM-NHL) [![Known Vulnerabilities](https://snyk.io/test/github/fewieden/mmm-nhl/badge.svg)](https://snyk.io/test/github/fewieden/mmm-nhl) National Hockey League Module for MagicMirror2 From 00bc44ed5e7b6aed386ecb8044c174cfe27ef06a Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Mon, 18 Jan 2021 20:09:53 +0100 Subject: [PATCH 15/39] Updated changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87666dbc..a71dcbb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ * Dependency `node-fetch` * Config option `daysInPast` * Config option `daysAhead` +* Github actions (linting) ### Changed @@ -20,6 +21,7 @@ ### Removed * Config option `format`, instead rendering information based on locale. +* Travis integration * Dependency `moment-timezone` * Dependency `request` * Local team logos From c313f277a205588ae0f33a6d16ac6a11086d98d8 Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Tue, 19 Jan 2021 10:11:01 -0500 Subject: [PATCH 16/39] Fixed hiding columns. Reverted Loading change. Reverted paging change --- node_helper.js | 2 +- templates/MMM-NHL.njk | 22 +++++++++++----------- translations/en.json | 8 ++++---- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/node_helper.js b/node_helper.js index 627d3744..97456ae8 100644 --- a/node_helper.js +++ b/node_helper.js @@ -60,7 +60,7 @@ module.exports = NodeHelper.create({ let date = new Date(); date.setDate(date.getDate() - this.config.daysInPast); const startDate = date.toISOString().slice(0, 10); - date.setDate(date.getDate() + this.config.daysAhead); + date.setDate(date.getDate() + this.config.daysInPast + this.config.daysAhead); const endDate = date.toISOString().slice(0, 10); const query = qs.stringify({startDate, endDate, expand: 'schedule.linescore'}); diff --git a/templates/MMM-NHL.njk b/templates/MMM-NHL.njk index 3266ec03..5852c26d 100644 --- a/templates/MMM-NHL.njk +++ b/templates/MMM-NHL.njk @@ -1,43 +1,43 @@ {% if loading %} -
{{ "NHLLOADING" | translate }}
+
{{ "LOADING" | translate }}
{% else %}
NHL {{ modes[season.mode] | translate }} {{ season.year }}
- + - + {% for index in range(rotateIndex, maxGames) %} - - + {% endif %} - - + {% endif %} {% endfor %} diff --git a/translations/en.json b/translations/en.json index 4994962a..98d4ae9d 100644 --- a/translations/en.json +++ b/translations/en.json @@ -6,11 +6,11 @@ "1ST_PERIOD": "1st Period", "2ND_PERIOD": "2nd Period", "3RD_PERIOD": "3rd Period", - "OVER_TIME": "Over Time", - "SHOOTOUT": "Shootout", + "OVER_TIME": "OT", + "SHOOTOUT": "SO", "FINAL": "Final", - "FINAL_OVERTIME": "Final Over Time", - "FINAL_SHOOTOUT": "Final Shootout", + "FINAL_OVERTIME": "Final OT", + "FINAL_SHOOTOUT": "Final SO", "UNKNOWN": "Unknown", "TIME_LEFT": "left" } \ No newline at end of file From c50d03abc895acffde8812f718f98457aacefbd3 Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Tue, 19 Jan 2021 10:20:04 -0500 Subject: [PATCH 17/39] Removed Loading from translations --- translations/de.json | 1 - translations/en.json | 1 - translations/fr.json | 1 - 3 files changed, 3 deletions(-) diff --git a/translations/de.json b/translations/de.json index 4d896e8e..1c78b937 100644 --- a/translations/de.json +++ b/translations/de.json @@ -1,5 +1,4 @@ { - "LOADING": "Lade...", "HOME": "Heim", "AWAY": "Auswärts", "PRE_GAME": "Aufwärmen", diff --git a/translations/en.json b/translations/en.json index 98d4ae9d..53989784 100644 --- a/translations/en.json +++ b/translations/en.json @@ -1,5 +1,4 @@ { - "NHLLOADING": "Loading...", "HOME": "Home", "AWAY": "Away", "PRE_GAME": "Warm Up", diff --git a/translations/fr.json b/translations/fr.json index 46a308ff..2322d38c 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -1,5 +1,4 @@ { - "LOADING": "Chargement...", "HOME": "Domicile", "AWAY": "Visiteur", "PRE_GAME": "Warm Up", From e39a975082b5c314d553ce444b2825aee515f3cf Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Tue, 19 Jan 2021 10:23:13 -0500 Subject: [PATCH 18/39] Added | safe to LOADING --- templates/MMM-NHL.njk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/MMM-NHL.njk b/templates/MMM-NHL.njk index 5852c26d..34506f43 100644 --- a/templates/MMM-NHL.njk +++ b/templates/MMM-NHL.njk @@ -1,5 +1,5 @@ {% if loading %} -
{{ "LOADING" | translate }}
+
{{ "LOADING" | translate | safe }}
{% else %}
NHL {{ modes[season.mode] | translate }} {{ season.year }}
{{ "HOME" | translate }}{{ "HOME" | translate }} {{ "AWAY" | translate }}{{ "AWAY" | translate }}
{{ games[index] | calendar }} {% if config.showNames %} + {{ games[index].teams.home.short }} - {% endif %} + {% endif %} {% if config.showLogos %} + - {% endif %} {{ games[index].teams.home.score }} : {{ games[index].teams.away.score }} {% if config.showLogos %} + - {% endif %} + {% endif %} {% if config.showNames %} + {{ games[index].teams.away.short }} - {% endif %}
From bb566323ae500de2a6ded7a43360a49e84089cdc Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Tue, 19 Jan 2021 10:50:45 -0500 Subject: [PATCH 19/39] Cleaned up LINT issues --- MMM-NHL.js | 8 +++----- node_helper.js | 16 +++++----------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/MMM-NHL.js b/MMM-NHL.js index 61178c41..b935021c 100644 --- a/MMM-NHL.js +++ b/MMM-NHL.js @@ -5,8 +5,6 @@ * MIT Licensed. */ -/* global Module Log config */ - Module.register('MMM-NHL', { modes: { PR: 'Pre-season', @@ -75,7 +73,7 @@ Module.register('MMM-NHL', { start() { Log.info(`Starting module: ${this.name}`); this.addFilters(); - this.sendSocketNotification('CONFIG', { config: this.config }); + this.sendSocketNotification('CONFIG', {config: this.config}); }, socketNotificationReceived(notification, payload) { @@ -94,7 +92,7 @@ Module.register('MMM-NHL', { if (this.rotateIndex + this.config.matches >= this.games.length) { this.rotateIndex = 0; } else { - this.rotateIndex = this.rotateIndex + this.config.matches; + this.rotateIndex += this.config.matches; } this.updateDom(300); }, this.config.rotateInterval); @@ -107,7 +105,7 @@ Module.register('MMM-NHL', { }, addFilters() { - this.nunjucksEnvironment().addFilter('calendar', (game) => { + this.nunjucksEnvironment().addFilter('calendar', game => { if (game.status.detailed === 'Pre-Game') { return this.translate('PRE_GAME'); } else if (game.status.abstract === 'Preview') { diff --git a/node_helper.js b/node_helper.js index 97456ae8..e58621b1 100644 --- a/node_helper.js +++ b/node_helper.js @@ -27,12 +27,8 @@ module.exports = NodeHelper.create({ await this.initTeams(); await this.updateSchedule(); - setInterval(() => { - return this.updateSchedule(); - }, this.config.reloadInterval); - setInterval(() => { - return this.fetchOnLiveState(); - }, this.config.liveReloadInterval); + setInterval(() => this.updateSchedule(), this.config.reloadInterval); + setInterval(() => this.fetchOnLiveState(), this.config.liveReloadInterval); } }, @@ -57,20 +53,18 @@ module.exports = NodeHelper.create({ }, async fetchSchedule() { - let date = new Date(); + const date = new Date(); date.setDate(date.getDate() - this.config.daysInPast); const startDate = date.toISOString().slice(0, 10); - date.setDate(date.getDate() + this.config.daysInPast + this.config.daysAhead); + date.setDate(date.getDate() + this.config.daysInPast + this.config.daysAhead); const endDate = date.toISOString().slice(0, 10); const query = qs.stringify({startDate, endDate, expand: 'schedule.linescore'}); const url = `${BASE_URL}/schedule?${query}`; - console.log(`MMM-NHL Fetching:${BASE_URL}/schedule?${query}`); const response = await fetch(url); if (!response.ok) { - console.error(`Fetching NHL schedule failed: ${response.status} ${response.statusText}`); - + console.error(`Fetching NHL schedule failed: ${response.status} ${response.statusText}. Url: ${url}`); return; } From 47a2f951e5e2096bf94f6747ab16c264e231de13 Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Tue, 19 Jan 2021 11:25:52 -0500 Subject: [PATCH 20/39] Reverted change to this.config --- MMM-NHL.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MMM-NHL.js b/MMM-NHL.js index b935021c..f70170e9 100644 --- a/MMM-NHL.js +++ b/MMM-NHL.js @@ -4,6 +4,7 @@ * By fewieden https://github.com/fewieden/MMM-NHL * MIT Licensed. */ +/* global config */ Module.register('MMM-NHL', { modes: { @@ -105,7 +106,7 @@ Module.register('MMM-NHL', { }, addFilters() { - this.nunjucksEnvironment().addFilter('calendar', game => { + this.nunjucksEnvironment().addFilter('calendar', (game) => { if (game.status.detailed === 'Pre-Game') { return this.translate('PRE_GAME'); } else if (game.status.abstract === 'Preview') { From ac1532a585312f03f7f948cb5bc681689e7abb96 Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Tue, 19 Jan 2021 11:27:18 -0500 Subject: [PATCH 21/39] Lint error --- MMM-NHL.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MMM-NHL.js b/MMM-NHL.js index f70170e9..727f132d 100644 --- a/MMM-NHL.js +++ b/MMM-NHL.js @@ -106,7 +106,7 @@ Module.register('MMM-NHL', { }, addFilters() { - this.nunjucksEnvironment().addFilter('calendar', (game) => { + this.nunjucksEnvironment().addFilter('calendar', game => { if (game.status.detailed === 'Pre-Game') { return this.translate('PRE_GAME'); } else if (game.status.abstract === 'Preview') { From 184f8c743a68fc0f77e2fe278372a3f2a196f18b Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Tue, 19 Jan 2021 18:27:12 -0500 Subject: [PATCH 22/39] Added sorting and PPD support --- MMM-NHL.js | 2 ++ node_helper.js | 9 ++++++++- translations/de.json | 3 ++- translations/en.json | 3 ++- translations/fr.json | 3 ++- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/MMM-NHL.js b/MMM-NHL.js index 727f132d..9adcdfbe 100644 --- a/MMM-NHL.js +++ b/MMM-NHL.js @@ -109,6 +109,8 @@ Module.register('MMM-NHL', { this.nunjucksEnvironment().addFilter('calendar', game => { if (game.status.detailed === 'Pre-Game') { return this.translate('PRE_GAME'); + } else if (game.status.detailed === "Postponed") { + return this.translate('Postponed') } else if (game.status.abstract === 'Preview') { const now = new Date(); const inAWeek = now.setDate(now.getDate() + 7); diff --git a/node_helper.js b/node_helper.js index e58621b1..80e2c645 100644 --- a/node_helper.js +++ b/node_helper.js @@ -139,9 +139,16 @@ module.exports = NodeHelper.create({ this.liveGames = games.filter(game => game?.status?.abstract === 'Live'); }, + sort(game1, game2) { + if(game1.gameDate == game2.gameDate) { + return game1.id > game2.id ? 1 : -1; + } + return game1.gameDate > game2.gameDate ? 1 : -1; + }, + async updateSchedule() { const schedule = await this.fetchSchedule(); - + schedule.sort(sort); const season = this.computeSeasonDetails(schedule); const focusSchedule = schedule.filter(this.filterGameByFocus.bind(this)); diff --git a/translations/de.json b/translations/de.json index 1c78b937..c3dac554 100644 --- a/translations/de.json +++ b/translations/de.json @@ -11,5 +11,6 @@ "FINAL_OVERTIME": "Verlängerung beendet", "FINAL_SHOOTOUT": "Elfmeterschießen beendet", "UNKNOWN": "Unbekannt", - "TIME_LEFT": "übrig" + "TIME_LEFT": "übrig", + "Postponed": "ABGESAGT" } \ No newline at end of file diff --git a/translations/en.json b/translations/en.json index 53989784..ca4de1c5 100644 --- a/translations/en.json +++ b/translations/en.json @@ -11,5 +11,6 @@ "FINAL_OVERTIME": "Final OT", "FINAL_SHOOTOUT": "Final SO", "UNKNOWN": "Unknown", - "TIME_LEFT": "left" + "TIME_LEFT": "left", + "Postponed": "PPD" } \ No newline at end of file diff --git a/translations/fr.json b/translations/fr.json index 2322d38c..6610e634 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -11,5 +11,6 @@ "FINAL_OVERTIME": "Final Apres prolongation", "FINAL_SHOOTOUT": "Final Apres tir au but", "UNKNOWN": "Inconnu", - "TIME_LEFT": "Temps restant" + "TIME_LEFT": "Temps restant", + "Postponed": "REM" } From 1b408b47ae59b04f07cec01e96a8380d5ab1a492 Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Tue, 19 Jan 2021 22:18:45 -0500 Subject: [PATCH 23/39] Fixed sort --- node_helper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node_helper.js b/node_helper.js index 80e2c645..f2d866e6 100644 --- a/node_helper.js +++ b/node_helper.js @@ -148,7 +148,7 @@ module.exports = NodeHelper.create({ async updateSchedule() { const schedule = await this.fetchSchedule(); - schedule.sort(sort); + schedule.sort(this.sort); const season = this.computeSeasonDetails(schedule); const focusSchedule = schedule.filter(this.filterGameByFocus.bind(this)); From e168416305d393217701a1ecc2f5eeeb7cfc0fa1 Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Wed, 20 Jan 2021 07:14:23 -0500 Subject: [PATCH 24/39] Lint errors --- MMM-NHL.js | 2 +- node_helper.js | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/MMM-NHL.js b/MMM-NHL.js index 9adcdfbe..676b9ca6 100644 --- a/MMM-NHL.js +++ b/MMM-NHL.js @@ -109,7 +109,7 @@ Module.register('MMM-NHL', { this.nunjucksEnvironment().addFilter('calendar', game => { if (game.status.detailed === 'Pre-Game') { return this.translate('PRE_GAME'); - } else if (game.status.detailed === "Postponed") { + } else if (game.status.detailed === 'Postponed') { return this.translate('Postponed') } else if (game.status.abstract === 'Preview') { const now = new Date(); diff --git a/node_helper.js b/node_helper.js index f2d866e6..4cc4b865 100644 --- a/node_helper.js +++ b/node_helper.js @@ -41,7 +41,7 @@ module.exports = NodeHelper.create({ return; } - const {teams} = await response.json(); + const { teams } = await response.json(); this.teamMapping = teams.reduce((mapping, team) => { mapping[team.id] = team.abbreviation; @@ -59,7 +59,7 @@ module.exports = NodeHelper.create({ date.setDate(date.getDate() + this.config.daysInPast + this.config.daysAhead); const endDate = date.toISOString().slice(0, 10); - const query = qs.stringify({startDate, endDate, expand: 'schedule.linescore'}); + const query = qs.stringify({ startDate, endDate, expand: 'schedule.linescore' }); const url = `${BASE_URL}/schedule?${query}`; const response = await fetch(url); @@ -68,7 +68,7 @@ module.exports = NodeHelper.create({ return; } - const {dates} = await response.json(); + const { dates } = await response.json(); return dates.map(date => date.games).flat(); }, @@ -140,7 +140,7 @@ module.exports = NodeHelper.create({ }, sort(game1, game2) { - if(game1.gameDate == game2.gameDate) { + if (game1.gameDate === game2.gameDate) { return game1.id > game2.id ? 1 : -1; } return game1.gameDate > game2.gameDate ? 1 : -1; @@ -156,7 +156,7 @@ module.exports = NodeHelper.create({ const games = focusSchedule.map(this.parseGame.bind(this)); this.setNextGame(games); - this.sendSocketNotification('SCHEDULE', {games, season}); + this.sendSocketNotification('SCHEDULE', { games, season }); }, fetchOnLiveState() { From c3e9ac1777ebb03e7b889e91d377fa16e38ef434 Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Wed, 20 Jan 2021 07:20:42 -0500 Subject: [PATCH 25/39] Lint errors --- node_helper.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/node_helper.js b/node_helper.js index 4cc4b865..e22ac9cc 100644 --- a/node_helper.js +++ b/node_helper.js @@ -41,7 +41,7 @@ module.exports = NodeHelper.create({ return; } - const { teams } = await response.json(); + const {teams} = await response.json(); this.teamMapping = teams.reduce((mapping, team) => { mapping[team.id] = team.abbreviation; @@ -59,7 +59,7 @@ module.exports = NodeHelper.create({ date.setDate(date.getDate() + this.config.daysInPast + this.config.daysAhead); const endDate = date.toISOString().slice(0, 10); - const query = qs.stringify({ startDate, endDate, expand: 'schedule.linescore' }); + const query = qs.stringify({startDate, endDate, expand: 'schedule.linescore'}); const url = `${BASE_URL}/schedule?${query}`; const response = await fetch(url); @@ -68,7 +68,7 @@ module.exports = NodeHelper.create({ return; } - const { dates } = await response.json(); + const {dates} = await response.json(); return dates.map(date => date.games).flat(); }, @@ -156,7 +156,7 @@ module.exports = NodeHelper.create({ const games = focusSchedule.map(this.parseGame.bind(this)); this.setNextGame(games); - this.sendSocketNotification('SCHEDULE', { games, season }); + this.sendSocketNotification('SCHEDULE', {games, season}); }, fetchOnLiveState() { From da52feec977cb71839dd11ae0fc044ffd8134fbb Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Wed, 20 Jan 2021 07:28:52 -0500 Subject: [PATCH 26/39] Lint errors --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..43a3755e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/node_modules/**/* \ No newline at end of file From f6c81052754468eb5de22bc3d238d55205fe218b Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Wed, 20 Jan 2021 10:05:24 -0500 Subject: [PATCH 27/39] Switched to _dark logos --- templates/MMM-NHL.njk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/MMM-NHL.njk b/templates/MMM-NHL.njk index 34506f43..a1af4cee 100644 --- a/templates/MMM-NHL.njk +++ b/templates/MMM-NHL.njk @@ -1,5 +1,5 @@ {% if loading %} -
{{ "LOADING" | translate | safe }}
+
{{ "LOADING" | translate }}
{% else %}
NHL {{ modes[season.mode] | translate }} {{ season.year }}
@@ -22,7 +22,7 @@ {% endif %} {% if config.showLogos %} {% endif %} @@ -30,7 +30,7 @@ {% if config.showLogos %} {% endif %} {% if config.showNames %} From ac64ff2f0d1b006cda61aabf5c9eb3ca08cb1c89 Mon Sep 17 00:00:00 2001 From: Dan Forsyth Date: Wed, 20 Jan 2021 12:01:02 -0500 Subject: [PATCH 28/39] Changed DE translation for PPD --- translations/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/de.json b/translations/de.json index c3dac554..ef7aa8fe 100644 --- a/translations/de.json +++ b/translations/de.json @@ -12,5 +12,5 @@ "FINAL_SHOOTOUT": "Elfmeterschießen beendet", "UNKNOWN": "Unbekannt", "TIME_LEFT": "übrig", - "Postponed": "ABGESAGT" + "Postponed": "Verlegt" } \ No newline at end of file From be2651e4f8f10e3faee4d261cc708003e8a1795e Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Wed, 20 Jan 2021 19:12:01 +0100 Subject: [PATCH 29/39] describe new config options --- CHANGELOG.md | 4 ++++ README.md | 3 +++ 2 files changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a71dcbb8..133832b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ * Dependency `node-fetch` * Config option `daysInPast` * Config option `daysAhead` +* Config option `liveReloadInterval` +* Config option `showNames` +* Config option `showLogos` +* Support for game status `postponed` * Github actions (linting) ### Changed diff --git a/README.md b/README.md index e96ac3f4..a611dc47 100644 --- a/README.md +++ b/README.md @@ -35,3 +35,6 @@ National Hockey League Module for MagicMirror2 | `reloadInterval` | `1800000` (30 mins) | How often should the data be fetched. | | `daysInPast` | `1` | How many days should a game be displayed after it is finished. | | `daysAhead` | `7` | How many days should a game be displayed before it starts. | +| `liveReloadInterval` | `60000 (1 min)` | How often should the data be fetched during a live game. | +| `showNames` | `true` | Should team names be displayed? | +| `showLogos` | `true` | Should team logos be displayed? | From a6439b111bb6bfd81f54fe8526125a3466a5e029 Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Wed, 20 Jan 2021 20:59:35 +0100 Subject: [PATCH 30/39] update translations --- translations/de.json | 17 ++++++++--------- translations/en.json | 17 ++++++++--------- translations/fr.json | 15 +++++++-------- 3 files changed, 23 insertions(+), 26 deletions(-) diff --git a/translations/de.json b/translations/de.json index ef7aa8fe..806191af 100644 --- a/translations/de.json +++ b/translations/de.json @@ -2,15 +2,14 @@ "HOME": "Heim", "AWAY": "Auswärts", "PRE_GAME": "Aufwärmen", - "1ST_PERIOD": "1. Drittel", - "2ND_PERIOD": "2. Drittel", - "3RD_PERIOD": "3. Drittel", + "1st": "1. Drittel", + "2nd": "2. Drittel", + "3rd": "3. Drittel", "OVER_TIME": "Verlängerung", "SHOOTOUT": "Elfmeterschießen", "FINAL": "Beendet", - "FINAL_OVERTIME": "Verlängerung beendet", - "FINAL_SHOOTOUT": "Elfmeterschießen beendet", - "UNKNOWN": "Unbekannt", - "TIME_LEFT": "übrig", - "Postponed": "Verlegt" -} \ No newline at end of file + "FINAL_OT": "Beendet (OT)", + "FINAL_SO": "Beendet (SO)", + "TIME_LEFT": "{TIME} übrig", + "POSTPONED": "Verlegt" +} diff --git a/translations/en.json b/translations/en.json index ca4de1c5..c940ebeb 100644 --- a/translations/en.json +++ b/translations/en.json @@ -2,15 +2,14 @@ "HOME": "Home", "AWAY": "Away", "PRE_GAME": "Warm Up", - "1ST_PERIOD": "1st Period", - "2ND_PERIOD": "2nd Period", - "3RD_PERIOD": "3rd Period", + "1st": "1st Period", + "2nd": "2nd Period", + "3rd": "3rd Period", "OVER_TIME": "OT", "SHOOTOUT": "SO", "FINAL": "Final", - "FINAL_OVERTIME": "Final OT", - "FINAL_SHOOTOUT": "Final SO", - "UNKNOWN": "Unknown", - "TIME_LEFT": "left", - "Postponed": "PPD" -} \ No newline at end of file + "FINAL_OT": "Final (OT)", + "FINAL_SO": "Final (SO)", + "TIME_LEFT": "{TIME} left", + "POSTPONED": "PPD" +} diff --git a/translations/fr.json b/translations/fr.json index 6610e634..73a54297 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -2,15 +2,14 @@ "HOME": "Domicile", "AWAY": "Visiteur", "PRE_GAME": "Warm Up", - "1ST_PERIOD": "1ere Period", - "2ND_PERIOD": "2nd Period", - "3RD_PERIOD": "3eme Period", + "1st": "1ere Period", + "2nd": "2nd Period", + "3rd": "3eme Period", "OVER_TIME": "Prolongation", "SHOOTOUT": "Tir au but", "FINAL": "Final", - "FINAL_OVERTIME": "Final Apres prolongation", - "FINAL_SHOOTOUT": "Final Apres tir au but", - "UNKNOWN": "Inconnu", - "TIME_LEFT": "Temps restant", - "Postponed": "REM" + "FINAL_OT": "Final (OT)", + "FINAL_SO": "Final (SO)", + "TIME_LEFT": "{TIME} restant", + "POSTPONED": "REM" } From 3c26185c910a80cc6887697ded2e6e3535f48ee9 Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Wed, 20 Jan 2021 21:00:14 +0100 Subject: [PATCH 31/39] move calendar column to nunjuck template --- MMM-NHL.js | 28 +++++++------------- templates/MMM-NHL.njk | 59 ++++++++++++++++++++++++++++++++----------- 2 files changed, 53 insertions(+), 34 deletions(-) diff --git a/MMM-NHL.js b/MMM-NHL.js index 676b9ca6..698397a4 100644 --- a/MMM-NHL.js +++ b/MMM-NHL.js @@ -106,30 +106,20 @@ Module.register('MMM-NHL', { }, addFilters() { - this.nunjucksEnvironment().addFilter('calendar', game => { - if (game.status.detailed === 'Pre-Game') { - return this.translate('PRE_GAME'); - } else if (game.status.detailed === 'Postponed') { - return this.translate('Postponed') - } else if (game.status.abstract === 'Preview') { - const now = new Date(); - const inAWeek = now.setDate(now.getDate() + 7); - const start = new Date(game.timestamp); - - if (start > inAWeek) { - return new Intl.DateTimeFormat(config.locale, { - month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' - }).format(start); - } + this.nunjucksEnvironment().addFilter('formatStartDate', game => { + const now = new Date(); + const inAWeek = now.setDate(now.getDate() + 7); + const start = new Date(game.timestamp); + if (start > inAWeek) { return new Intl.DateTimeFormat(config.locale, { - weekday: 'short', hour: '2-digit', minute: '2-digit' + month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' }).format(start); - } else if (game.status.abstract === 'Live' && game.live.period) { - return `${game.live.period} ${game.live.timeRemaining}`; } - return this.translate(game.status.abstract); + return new Intl.DateTimeFormat(config.locale, { + weekday: 'short', hour: '2-digit', minute: '2-digit' + }).format(start); }); } }); diff --git a/templates/MMM-NHL.njk b/templates/MMM-NHL.njk index a1af4cee..a05864f2 100644 --- a/templates/MMM-NHL.njk +++ b/templates/MMM-NHL.njk @@ -6,37 +6,66 @@ - + - + {% for index in range(rotateIndex, maxGames) %} - - {% if config.showNames %} - + {% if config.showNames %} + {% endif %} {% if config.showLogos %} - + {% endif %} {% if config.showLogos %} - + {% endif %} {% if config.showNames %} - + {% endif %} {% endfor %} From 3b672671ee97cef2e3d422bd488ae6c201123a3c Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Wed, 20 Jan 2021 21:01:00 +0100 Subject: [PATCH 32/39] code climate changes --- README.md | 25 +++++++++++++------------ node_helper.js | 31 +++++++++++++++---------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index a611dc47..deacd9fa 100644 --- a/README.md +++ b/README.md @@ -10,19 +10,20 @@ National Hockey League Module for MagicMirror2 ## Installation -1. Clone this repo into `~/MagicMirror/modules` directory. -1. Configure your `~/MagicMirror/config/config.js`: - - ``` - { - module: 'MMM-NHL', - position: 'top_right', - config: { - ... - } +* Clone this repo into `~/MagicMirror/modules` directory. +* Configure your `~/MagicMirror/config/config.js`: + +```js +{ + module: 'MMM-NHL', + position: 'top_right', + config: { + // Add your config options here, which have a different value than default. } - ``` -1. Run command `npm i --production` in `~/MagicMirror/modules/MMM-NHL` directory. +} +``` + +* Run command `npm i --production` in `~/MagicMirror/modules/MMM-NHL` directory. ## Config Options diff --git a/node_helper.js b/node_helper.js index e22ac9cc..48d68019 100644 --- a/node_helper.js +++ b/node_helper.js @@ -105,31 +105,30 @@ module.exports = NodeHelper.create({ }; }, + parseTeam(teams = {}, type) { + return { + id: teams[type].team.id, + name: teams[type].team.name, + short: this.teamMapping[teams[type].team.id], + score: teams[type].score + }; + }, + parseGame(game = {}) { return { id: game.gamePk, timestamp: game.gameDate, status: { - abstract: game.status?.abstractGameState, - detailed: game.status?.detailedState + abstract: game.status.abstractGameState, + detailed: game.status.detailedState }, teams: { - away: { - id: game.teams?.away?.team?.id, - name: game.teams?.away?.team?.name, - short: this.teamMapping[game.teams?.away?.team?.id], - score: game.teams?.away?.score - }, - home: { - id: game.teams?.home?.team?.id, - name: game.teams?.home?.team?.name, - short: this.teamMapping[game.teams?.home?.team?.id], - score: game.teams?.home?.score - } + away: this.parseTeam(game.teams, 'away'), + home: this.parseTeam(game.teams, 'home') }, live: { - period: game.linescore?.currentPeriodOrdinal, - timeRemaining: game.linescore?.currentPeriodTimeRemaining + period: game.linescore.currentPeriodOrdinal, + timeRemaining: game.linescore.currentPeriodTimeRemaining } }; }, From 24d344889fdf7338a04ed9f9ad1e3db5debc8e84 Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Wed, 20 Jan 2021 21:17:36 +0100 Subject: [PATCH 33/39] added github action for changelog enforcing --- .github/workflows/changelog.yml | 15 +++++++++++++++ CHANGELOG.md | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/changelog.yml diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml new file mode 100644 index 00000000..754e5b9a --- /dev/null +++ b/.github/workflows/changelog.yml @@ -0,0 +1,15 @@ +name: changelog + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review, labeled, unlabeled] + +jobs: + check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: dangoslen/changelog-enforcer@v1.6.1 + with: + changeLogPath: CHANGELOG.md + skipLabels: Skip Changelog diff --git a/CHANGELOG.md b/CHANGELOG.md index 133832b7..2bacb5ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ * Config option `showNames` * Config option `showLogos` * Support for game status `postponed` -* Github actions (linting) +* Github actions (linting and changelog enforcer) ### Changed From 3434beafdd4fe008249a04e0f2bfbcad0d72e2e6 Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Sat, 23 Jan 2021 20:32:13 +0100 Subject: [PATCH 34/39] added jsdoc --- .gitignore | 3 +- README.md | 5 ++ jsdoc.json | 18 ++++++ package-lock.json | 148 ++++++++++++++++++++++++++++++++++++++++++---- package.json | 2 + 5 files changed, 164 insertions(+), 12 deletions(-) create mode 100644 jsdoc.json diff --git a/.gitignore b/.gitignore index 43a3755e..705c016a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -/node_modules/**/* \ No newline at end of file +/node_modules/**/* +docs/ diff --git a/README.md b/README.md index deacd9fa..16ea850f 100644 --- a/README.md +++ b/README.md @@ -39,3 +39,8 @@ National Hockey League Module for MagicMirror2 | `liveReloadInterval` | `60000 (1 min)` | How often should the data be fetched during a live game. | | `showNames` | `true` | Should team names be displayed? | | `showLogos` | `true` | Should team logos be displayed? | + +## Developer + +* `npm run lint` - Lints JS and CSS files. +* `npm run docs` - Generates documentation. diff --git a/jsdoc.json b/jsdoc.json new file mode 100644 index 00000000..7c46152b --- /dev/null +++ b/jsdoc.json @@ -0,0 +1,18 @@ +{ + "tags": { + "dictionaries": ["jsdoc"] + }, + "source": { + "include": [ + "package.json", + "README.md" + ], + "exclude": [ + "node_modules" + ] + }, + "opts": { + "destination": "docs", + "recurse": true + } +} diff --git a/package-lock.json b/package-lock.json index 3e2e33e7..f69734dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -241,8 +241,7 @@ "@babel/parser": { "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", - "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==", - "dev": true + "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==" }, "@babel/template": { "version": "7.12.7", @@ -467,7 +466,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -567,6 +565,11 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -632,6 +635,14 @@ "integrity": "sha512-VtdZLC0vsXykKni8Uztx45xynytOi71Ufx9T8kHptSw9AL4dpqailUJJHavttuzUe1KYuBYtChiWv+BAb7mPmQ==", "dev": true }, + "catharsis": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.11.tgz", + "integrity": "sha512-a+xUyMV7hD1BrDQA/3iPV7oc+6W26BgVJO05PGEoatMyIuPScQKsde6i3YorWX1qs+AZjnJ18NqdKoCtKiNh1g==", + "requires": { + "lodash": "^4.17.14" + } + }, "chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", @@ -3582,8 +3593,7 @@ "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, "hard-rejection": { "version": "2.1.0", @@ -3934,6 +3944,47 @@ "esprima": "^4.0.0" } }, + "js2xmlparser": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.1.tgz", + "integrity": "sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw==", + "requires": { + "xmlcreate": "^2.0.3" + } + }, + "jsdoc": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.6.tgz", + "integrity": "sha512-znR99e1BHeyEkSvgDDpX0sTiTu+8aQyDl9DawrkOGZTTW8hv0deIFXx87114zJ7gRaDZKVQD/4tr1ifmJp9xhQ==", + "requires": { + "@babel/parser": "^7.9.4", + "bluebird": "^3.7.2", + "catharsis": "^0.8.11", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.1", + "klaw": "^3.0.0", + "markdown-it": "^10.0.0", + "markdown-it-anchor": "^5.2.7", + "marked": "^0.8.2", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "taffydb": "2.6.2", + "underscore": "~1.10.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } + } + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -3983,6 +4034,14 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "requires": { + "graceful-fs": "^4.1.9" + } + }, "known-css-properties": { "version": "0.20.0", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.20.0.tgz", @@ -4005,6 +4064,14 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, + "linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "requires": { + "uc.micro": "^1.0.1" + } + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -4030,8 +4097,7 @@ "lodash": { "version": "4.17.20", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "log-symbols": { "version": "4.0.0", @@ -4072,6 +4138,35 @@ "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", "dev": true }, + "markdown-it": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", + "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "requires": { + "argparse": "^1.0.7", + "entities": "~2.0.0", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" + } + } + }, + "markdown-it-anchor": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", + "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==" + }, + "marked": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz", + "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==" + }, "mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -4111,6 +4206,11 @@ "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", "dev": true }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, "meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", @@ -4964,6 +5064,14 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, + "requizzle": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", + "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", + "requires": { + "lodash": "^4.17.14" + } + }, "resolve": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", @@ -5148,8 +5256,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "string-width": { "version": "4.2.0", @@ -5241,8 +5348,7 @@ "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, "style-search": { "version": "0.1.0", @@ -5400,6 +5506,11 @@ } } }, + "taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=" + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -5490,6 +5601,16 @@ "is-typedarray": "^1.0.0" } }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "underscore": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz", + "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==" + }, "unified": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", @@ -5629,6 +5750,11 @@ "typedarray-to-buffer": "^3.1.5" } }, + "xmlcreate": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz", + "integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==" + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/package.json b/package.json index 5fa6f07d..1536a287 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "2.0.0", "description": "National Hockey League Module for MagicMirror2", "scripts": { + "docs": "jsdoc -c jsdoc.json .", "lint": "eslint . && stylelint **/*.css" }, "repository": { @@ -23,6 +24,7 @@ "devDependencies": { "eslint": "^6.8.0", "eslint-config-recommended": "^4.1.0", + "jsdoc": "^3.6.6", "stylelint": "^13.8.0", "stylelint-config-standard": "^20.0.0" }, From 060e324b1490d55334318f6cf25cd7c48d2bc3af Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Sat, 23 Jan 2021 20:32:45 +0100 Subject: [PATCH 35/39] documented code with jsdoc --- CHANGELOG.md | 1 + MMM-NHL.js | 118 +++++++++++++++++++++++++++++++-- node_helper.js | 174 ++++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 273 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bacb5ff..97eb5986 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ * Config option `showLogos` * Support for game status `postponed` * Github actions (linting and changelog enforcer) +* JSDoc documentation ### Changed diff --git a/MMM-NHL.js b/MMM-NHL.js index 698397a4..50d70c9e 100644 --- a/MMM-NHL.js +++ b/MMM-NHL.js @@ -1,18 +1,44 @@ -/* Magic Mirror - * Module: MMM-NHL +/** + * @file MMM-NHL.js * - * By fewieden https://github.com/fewieden/MMM-NHL - * MIT Licensed. + * @author fewieden + * @license MIT + * + * @see https://github.com/fewieden/MMM-NHL */ + /* global config */ +/** + * @external Module + * @see https://github.com/MichMich/MagicMirror/blob/master/js/module.js + */ + +/** + * @external Log + * @see https://github.com/MichMich/MagicMirror/blob/master/js/logger.js + */ + +/** + * @module MMM-NHL + * @description Frontend of the MagicMirror² module. + * + * @requires external:Module + * @requires external:Log + */ Module.register('MMM-NHL', { + /** + * @member {Object.} modes - Maps mode short codes to names. + */ modes: { PR: 'Pre-season', R: 'Regular season', P: 'Playoffs', }, + /** + * @member {Object.} states - Maps game state short codes to translation keys. + */ states: { '1st': '1ST_PERIOD', '2nd': '2ND_PERIOD', @@ -24,12 +50,40 @@ Module.register('MMM-NHL', { 'FINAL SO': 'FINAL_SHOOTOUT' }, + /** + * @member {boolean} loading - Indicates loading state of module and data. + */ loading: true, + /** + * @member {Game[]} games - List of all games matching focus and timespan config options. + */ games: [], + /** + * @member {SeasonDetails} season - Current season details e.g. year and mode. + */ season: {}, + /** + * @member {number} rotateIndex - Current index of rotation carousel. + */ rotateIndex: 0, + /** + * @member {?Interval} rotateInterval - Interval to update rotation index. + */ rotateInterval: null, + /** + * @member {Object} defaults - Defines the default config values. + * @property {boolean} colored - Flag to show logos in color or black/white. + * @property {boolean|string[]} focus_on - List of team name short codes to display games from. + * @property {number} matches - Max amount of matches to display at once. + * @property {number} rotateInterval - Amount of milliseconds a page of the carousel is displayed. + * @property {number} reloadInterval - Amount of milliseconds between data fetching. + * @property {number} liveReloadInterval - Amount of milliseconds between data fetching during a live game. + * @property {number} daysInPast - Amount of days a match should be displayed after it is finished. + * @property {number} daysAhead - Amount of days a match should be displayed before it starts. + * @property {boolean} showNames - Flag to show team names. + * @property {boolean} showLogos - Flag to show club logos. + */ defaults: { colored: false, focus_on: false, @@ -43,6 +97,13 @@ Module.register('MMM-NHL', { showLogos: true }, + /** + * @function getTranslations + * @description Translations for this module. + * @override + * + * @returns {Object.} Available translations for this module (key: language code, value: filepath). + */ getTranslations() { return { en: 'translations/en.json', @@ -51,14 +112,35 @@ Module.register('MMM-NHL', { }; }, + /** + * @function getStyles + * @description Style dependencies for this module. + * @override + * + * @returns {string[]} List of the style dependency filepaths. + */ getStyles() { return ['font-awesome.css', 'MMM-NHL.css']; }, + /** + * @function getTemplate + * @description Nunjuck template. + * @override + * + * @returns {string} Path to nunjuck template. + */ getTemplate() { return 'templates/MMM-NHL.njk'; }, + /** + * @function getTemplateData + * @description Data that gets rendered in the nunjuck template. + * @override + * + * @returns {Object} Data for the nunjuck template. + */ getTemplateData() { return { loading: this.loading, @@ -71,22 +153,42 @@ Module.register('MMM-NHL', { }; }, + /** + * @function start + * @description Adds nunjuck filters and sends config to node_helper. + * @override + * + * @returns {void} + */ start() { Log.info(`Starting module: ${this.name}`); this.addFilters(); this.sendSocketNotification('CONFIG', {config: this.config}); }, + /** + * @function socketNotificationReceived + * @description Handles incoming messages from node_helper. + * @override + * + * @param {string} notification - Notification name + * @param {*} payload - Detailed payload of the notification. + */ socketNotificationReceived(notification, payload) { if (notification === 'SCHEDULE') { this.loading = false; this.games = payload.games; this.season = payload.season; this.setRotateInterval(); - console.log(this.games); } }, + /** + * @function setRotateInterval + * @description Sets interval if necessary which updates the rotateIndex. + * + * @returns {void} + */ setRotateInterval() { if (!this.rotateInterval && this.games.length > this.config.matches) { this.rotateInterval = setInterval(() => { @@ -105,6 +207,12 @@ Module.register('MMM-NHL', { this.updateDom(300); }, + /** + * @function addFilters + * @description Adds the filter used by the nunjuck template. + * + * @returns {void} + */ addFilters() { this.nunjucksEnvironment().addFilter('formatStartDate', game => { const now = new Date(); diff --git a/node_helper.js b/node_helper.js index 48d68019..e00c147b 100644 --- a/node_helper.js +++ b/node_helper.js @@ -1,28 +1,97 @@ -/* Magic Mirror - * Module: MMM-NHL +/** + * @file node_helper.js * - * By fewieden https://github.com/fewieden/MMM-NHL - * MIT Licensed. + * @author fewieden + * @license MIT + * + * @see https://github.com/fewieden/MMM-NHL */ /* eslint-env node */ +/** + * @external node-fetch + * @see https://www.npmjs.com/package/node-fetch + */ const fetch = require('node-fetch'); + +/** + * @external querystring + * @see https://nodejs.org/api/querystring.html + */ const qs = require('querystring'); + +/** + * @external node_helper + * @see https://github.com/MichMich/MagicMirror/blob/master/js/node_helper.js + */ const NodeHelper = require('node_helper'); const BASE_URL = 'https://statsapi.web.nhl.com/api/v1'; +/** + * Derived team details of a game from API endpoint for easier usage. + * + * @typedef {object} Team + * @property {number} id - Team identifier. + * @property {string} name - Full team name. + * @property {string} short - 3 letter team name. + * @property {number} score - Current score of the team. + */ + +/** + * Derived game details from API endpoint for easier usage. + * + * @typedef {object} Game + * @property {number} id - Game identifier. + * @property {string} timestamp - Start date of the game in UTC timezone. + * @property {object} status - Contains information about the game status. + * @property {string} status.abstract - Abstract game status e.g. Preview, Live or Final. + * @property {string} status.detailed - More detailed version of the abstract game status. + * @property {object} teams - Contains information about both teams. + * @property {Team} teams.away - Contains information about the away team. + * @property {Team} teams.home - Contains information about the home team. + * @property {object} live - Contains information about the live state of the game. + * @property {string} live.period - Period of the game e.g. 1st, 2nd, 3rd, OT or SO. + * @property {string} live.timeRemaining - Remaining time of the current period in format mm:ss. + */ + +/** + * Derived season details from API endpoint for easier usage. + * + * @typedef {object} SeasonDetails + * @property {string} year - Year of the season in format yy/yy e.g. 20/21. + * @property {string} mode - Mode of the season e.g. PR, R and P. + */ + +/** + * @module node_helper + * @description Backend for the module to query data from the API provider. + * + * @requires external:node-fetch + * @requires external:querystring + * @requires external:node_helper + */ module.exports = NodeHelper.create({ - games: [], - season: {}, + /** @member {?Game} nextGame - The next upcoming game is stored in this variable. */ nextGame: null, + /** @member {Game[]} liveGames - List of all ongoing games. */ liveGames: [], + /** + * @function socketNotificationReceived + * @description Receives socket notifications from the module. + * @async + * @override + * + * @param {string} notification - Notification name + * @param {*} payload - Detailed payload of the notification. + * + * @returns {void} + */ async socketNotificationReceived(notification, payload) { if (notification === 'CONFIG') { this.config = payload.config; - this.teams = payload.teams; await this.initTeams(); @@ -32,6 +101,13 @@ module.exports = NodeHelper.create({ } }, + /** + * @function initTeams + * @description Retrieves a list of all teams from the API and initializes teamMapping. + * @async + * + * @returns {void} + */ async initTeams() { const response = await fetch(`${BASE_URL}/teams`); @@ -48,10 +124,15 @@ module.exports = NodeHelper.create({ return mapping; }, {}); - - this.sendSocketNotification('TEAM_MAPPING', this.teamMapping); }, + /** + * @function fetchSchedule + * @description Retrieves a list of games from the API with timespan based on config options. + * @async + * + * @returns {object[]} Raw games from API endpoint. + */ async fetchSchedule() { const date = new Date(); date.setDate(date.getDate() - this.config.daysInPast); @@ -73,6 +154,12 @@ module.exports = NodeHelper.create({ return dates.map(date => date.games).flat(); }, + /** + * @function filterGameByFocus + * @description Helper function to filter games based on config option. + * + * @returns {boolean} Should game remain in list? + */ filterGameByFocus(game) { const focus = this.config.focus_on; if (!focus) { @@ -85,6 +172,14 @@ module.exports = NodeHelper.create({ return focus.includes(homeTeam) || focus.includes(awayTeam); }, + /** + * @function computeSeasonDetails + * @description Computes current season details (year and mode) from list of games. + * + * @param {object[]} schedule - List of raw games from API endpoint. + * + * @returns {SeasonDetails} Current season details. + */ computeSeasonDetails(schedule) { const game = schedule.find(game => game.status.abstractGameState !== 'Final') || schedule[schedule.length - 1]; @@ -105,6 +200,15 @@ module.exports = NodeHelper.create({ }; }, + /** + * @function parseTeam + * @description Transforms raw team information for easier usage. + * + * @param {object} teams - Both teams in raw format. + * @param {string} type - Type of team: away or home. + * + * @returns {Team} Parsed team information. + */ parseTeam(teams = {}, type) { return { id: teams[type].team.id, @@ -114,6 +218,14 @@ module.exports = NodeHelper.create({ }; }, + /** + * @function parseGame + * @description Transforms raw game information for easier usage. + * + * @param {object} game - Raw game information. + * + * @returns {Game} Parsed game information. + */ parseGame(game = {}) { return { id: game.gamePk, @@ -133,31 +245,63 @@ module.exports = NodeHelper.create({ }; }, - setNextGame(games) { - this.nextGame = games.find(game => game?.status?.abstract === 'Preview'); - this.liveGames = games.filter(game => game?.status?.abstract === 'Live'); + /** + * @function setNextandLiveGames + * @description Sets the next scheduled and live games from a list of games. + * + * @param {Game[]} games - List of games. + * + * @returns {void} + */ + setNextandLiveGames(games) { + this.nextGame = games.find(game => game.status.abstract === 'Preview'); + this.liveGames = games.filter(game => game.status.abstract === 'Live'); }, - sort(game1, game2) { + /** + * @function sortGamesByTimestampAndID + * @description Helper function to sort games by timestamp and ID. + * + * @param {object} game1 - Raw game information of first game. + * @param {object} game2 - Raw game information of second game. + * + * @returns {number} Should game be before or after in the list? + */ + sortGamesByTimestampAndID(game1, game2) { if (game1.gameDate === game2.gameDate) { return game1.id > game2.id ? 1 : -1; } + return game1.gameDate > game2.gameDate ? 1 : -1; }, + /** + * @function updateSchedule + * @description Retrieves new schedule from API and sends a socket notification to the module. + * @async + * + * @returns {void} + */ async updateSchedule() { const schedule = await this.fetchSchedule(); - schedule.sort(this.sort); + schedule.sort(this.sortGamesByTimestampAndID); const season = this.computeSeasonDetails(schedule); const focusSchedule = schedule.filter(this.filterGameByFocus.bind(this)); const games = focusSchedule.map(this.parseGame.bind(this)); - this.setNextGame(games); + this.setNextandLiveGames(games); this.sendSocketNotification('SCHEDULE', {games, season}); }, + /** + * @function fetchOnLiveState + * @description If there is a live game trigger updateSchedule. + * @async + * + * @returns {void} + */ fetchOnLiveState() { const hasLiveGames = this.liveGames.length > 0; const gameAboutToStart = this.nextGame && new Date() > new Date(this.nextGame.timestamp); From 90293b4f6bd3ef5ce85be88e29fcdb4aeecd90d0 Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Sat, 23 Jan 2021 20:45:21 +0100 Subject: [PATCH 36/39] added eslint plugin for jsdoc and fixed linting issues --- .eslintrc | 5 +- MMM-NHL.js | 10 ++-- node_helper.js | 2 + package-lock.json | 115 +++++++++++++++++++++++++++++++++++++++------- package.json | 1 + 5 files changed, 111 insertions(+), 22 deletions(-) diff --git a/.eslintrc b/.eslintrc index 30baa16c..a07c60c9 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,5 +1,8 @@ { - "extends": ["esnext", "esnext/style-guide", "node", "node/style-guide"], + "extends": ["esnext", "esnext/style-guide", "node", "node/style-guide", "plugin:jsdoc/recommended"], + "plugins": [ + "jsdoc" + ], "parserOptions": { "ecmaVersion": 2017, "sourceType": "module" diff --git a/MMM-NHL.js b/MMM-NHL.js index 50d70c9e..5d682fbb 100644 --- a/MMM-NHL.js +++ b/MMM-NHL.js @@ -28,7 +28,7 @@ */ Module.register('MMM-NHL', { /** - * @member {Object.} modes - Maps mode short codes to names. + * @member {object.} modes - Maps mode short codes to names. */ modes: { PR: 'Pre-season', @@ -37,7 +37,7 @@ Module.register('MMM-NHL', { }, /** - * @member {Object.} states - Maps game state short codes to translation keys. + * @member {object.} states - Maps game state short codes to translation keys. */ states: { '1st': '1ST_PERIOD', @@ -72,7 +72,7 @@ Module.register('MMM-NHL', { rotateInterval: null, /** - * @member {Object} defaults - Defines the default config values. + * @member {object} defaults - Defines the default config values. * @property {boolean} colored - Flag to show logos in color or black/white. * @property {boolean|string[]} focus_on - List of team name short codes to display games from. * @property {number} matches - Max amount of matches to display at once. @@ -102,7 +102,7 @@ Module.register('MMM-NHL', { * @description Translations for this module. * @override * - * @returns {Object.} Available translations for this module (key: language code, value: filepath). + * @returns {object.} Available translations for this module (key: language code, value: filepath). */ getTranslations() { return { @@ -139,7 +139,7 @@ Module.register('MMM-NHL', { * @description Data that gets rendered in the nunjuck template. * @override * - * @returns {Object} Data for the nunjuck template. + * @returns {object} Data for the nunjuck template. */ getTemplateData() { return { diff --git a/node_helper.js b/node_helper.js index e00c147b..8f412865 100644 --- a/node_helper.js +++ b/node_helper.js @@ -158,6 +158,8 @@ module.exports = NodeHelper.create({ * @function filterGameByFocus * @description Helper function to filter games based on config option. * + * @param {object} game - Raw game information. + * * @returns {boolean} Should game remain in list? */ filterGameByFocus(game) { diff --git a/package-lock.json b/package-lock.json index f69734dd..962b50b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -241,7 +241,8 @@ "@babel/parser": { "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", - "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==" + "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==", + "dev": true }, "@babel/template": { "version": "7.12.7", @@ -466,6 +467,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -568,7 +570,8 @@ "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true }, "brace-expansion": { "version": "1.1.11", @@ -639,6 +642,7 @@ "version": "0.8.11", "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.11.tgz", "integrity": "sha512-a+xUyMV7hD1BrDQA/3iPV7oc+6W26BgVJO05PGEoatMyIuPScQKsde6i3YorWX1qs+AZjnJ18NqdKoCtKiNh1g==", + "dev": true, "requires": { "lodash": "^4.17.14" } @@ -722,6 +726,12 @@ "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", "dev": true }, + "comment-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.1.tgz", + "integrity": "sha512-vue7cRi1ZO5/72FJ+wZ5+siTSBlUv3ZksTk8bWD2IkaA6obitzMZP3yI65azTJLckwmi8lxfPP5Sd9oGuZ8e2g==", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -3189,6 +3199,47 @@ } } }, + "eslint-plugin-jsdoc": { + "version": "31.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-31.2.2.tgz", + "integrity": "sha512-sz3pumCHWebKcUjWEFlVVDJ5N7OChjXU7y9E/ddJiAiAsxPedOwg93/b9Xu4mP98Y1OyYgq/eKcfZnyy6UupsQ==", + "dev": true, + "requires": { + "comment-parser": "1.1.1", + "debug": "^4.3.1", + "jsdoctypeparser": "^9.0.0", + "lodash": "^4.17.20", + "regextras": "^0.7.1", + "semver": "^7.3.4", + "spdx-expression-parse": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "eslint-plugin-react": { "version": "7.22.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz", @@ -3593,7 +3644,8 @@ "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true }, "hard-rejection": { "version": "2.1.0", @@ -3948,6 +4000,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.1.tgz", "integrity": "sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw==", + "dev": true, "requires": { "xmlcreate": "^2.0.3" } @@ -3956,6 +4009,7 @@ "version": "3.6.6", "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.6.tgz", "integrity": "sha512-znR99e1BHeyEkSvgDDpX0sTiTu+8aQyDl9DawrkOGZTTW8hv0deIFXx87114zJ7gRaDZKVQD/4tr1ifmJp9xhQ==", + "dev": true, "requires": { "@babel/parser": "^7.9.4", "bluebird": "^3.7.2", @@ -3976,15 +4030,23 @@ "escape-string-regexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true } } }, + "jsdoctypeparser": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", + "dev": true + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -4038,6 +4100,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "dev": true, "requires": { "graceful-fs": "^4.1.9" } @@ -4068,6 +4131,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "dev": true, "requires": { "uc.micro": "^1.0.1" } @@ -4097,7 +4161,8 @@ "lodash": { "version": "4.17.20", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true }, "log-symbols": { "version": "4.0.0", @@ -4142,6 +4207,7 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "dev": true, "requires": { "argparse": "^1.0.7", "entities": "~2.0.0", @@ -4153,19 +4219,22 @@ "entities": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "dev": true } } }, "markdown-it-anchor": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", - "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==" + "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", + "dev": true }, "marked": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz", - "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==" + "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==", + "dev": true }, "mathml-tag-names": { "version": "2.1.3", @@ -4209,7 +4278,8 @@ "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true }, "meow": { "version": "8.1.2", @@ -5023,6 +5093,12 @@ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, + "regextras": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", + "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", + "dev": true + }, "remark": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", @@ -5068,6 +5144,7 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", + "dev": true, "requires": { "lodash": "^4.17.14" } @@ -5256,7 +5333,8 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "string-width": { "version": "4.2.0", @@ -5348,7 +5426,8 @@ "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true }, "style-search": { "version": "0.1.0", @@ -5509,7 +5588,8 @@ "taffydb": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=" + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "dev": true }, "text-table": { "version": "0.2.0", @@ -5604,12 +5684,14 @@ "uc.micro": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true }, "underscore": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz", - "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==" + "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==", + "dev": true }, "unified": { "version": "9.2.0", @@ -5753,7 +5835,8 @@ "xmlcreate": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz", - "integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==" + "integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==", + "dev": true }, "yallist": { "version": "4.0.0", diff --git a/package.json b/package.json index 1536a287..40cc686a 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "devDependencies": { "eslint": "^6.8.0", "eslint-config-recommended": "^4.1.0", + "eslint-plugin-jsdoc": "^31.2.2", "jsdoc": "^3.6.6", "stylelint": "^13.8.0", "stylelint-config-standard": "^20.0.0" From e1b30c1df0cc60f5b8a98734b846e15b59f2e750 Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Sat, 23 Jan 2021 20:49:28 +0100 Subject: [PATCH 37/39] thanks to dannoh --- CHANGELOG.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 97eb5986..94d02a34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,10 +9,10 @@ * Dependency `node-fetch` * Config option `daysInPast` * Config option `daysAhead` -* Config option `liveReloadInterval` -* Config option `showNames` -* Config option `showLogos` -* Support for game status `postponed` +* Config option `liveReloadInterval` thanks to [dannoh](https://github.com/dannoh). +* Config option `showNames` thanks to [dannoh](https://github.com/dannoh). +* Config option `showLogos` thanks to [dannoh](https://github.com/dannoh). +* Support for game status `postponed` thanks to [dannoh](https://github.com/dannoh). * Github actions (linting and changelog enforcer) * JSDoc documentation From 3ae3ed94c208d0a5a56823b57975d4c80dd0cc33 Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Sat, 23 Jan 2021 20:57:22 +0100 Subject: [PATCH 38/39] removed jsdoc eslint plugin --- .eslintrc | 5 +--- package-lock.json | 59 ----------------------------------------------- package.json | 1 - 3 files changed, 1 insertion(+), 64 deletions(-) diff --git a/.eslintrc b/.eslintrc index a07c60c9..30baa16c 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,8 +1,5 @@ { - "extends": ["esnext", "esnext/style-guide", "node", "node/style-guide", "plugin:jsdoc/recommended"], - "plugins": [ - "jsdoc" - ], + "extends": ["esnext", "esnext/style-guide", "node", "node/style-guide"], "parserOptions": { "ecmaVersion": 2017, "sourceType": "module" diff --git a/package-lock.json b/package-lock.json index 962b50b3..cb30104c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -726,12 +726,6 @@ "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", "dev": true }, - "comment-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.1.tgz", - "integrity": "sha512-vue7cRi1ZO5/72FJ+wZ5+siTSBlUv3ZksTk8bWD2IkaA6obitzMZP3yI65azTJLckwmi8lxfPP5Sd9oGuZ8e2g==", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -3199,47 +3193,6 @@ } } }, - "eslint-plugin-jsdoc": { - "version": "31.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-31.2.2.tgz", - "integrity": "sha512-sz3pumCHWebKcUjWEFlVVDJ5N7OChjXU7y9E/ddJiAiAsxPedOwg93/b9Xu4mP98Y1OyYgq/eKcfZnyy6UupsQ==", - "dev": true, - "requires": { - "comment-parser": "1.1.1", - "debug": "^4.3.1", - "jsdoctypeparser": "^9.0.0", - "lodash": "^4.17.20", - "regextras": "^0.7.1", - "semver": "^7.3.4", - "spdx-expression-parse": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, "eslint-plugin-react": { "version": "7.22.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz", @@ -4041,12 +3994,6 @@ } } }, - "jsdoctypeparser": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", - "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", - "dev": true - }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -5093,12 +5040,6 @@ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, - "regextras": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", - "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", - "dev": true - }, "remark": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", diff --git a/package.json b/package.json index 40cc686a..1536a287 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,6 @@ "devDependencies": { "eslint": "^6.8.0", "eslint-config-recommended": "^4.1.0", - "eslint-plugin-jsdoc": "^31.2.2", "jsdoc": "^3.6.6", "stylelint": "^13.8.0", "stylelint-config-standard": "^20.0.0" From 90a8dfa2b6c5f7000b4596ba671e8add68b4e303 Mon Sep 17 00:00:00 2001 From: Felix Wiedenbach Date: Mon, 25 Jan 2021 19:30:45 +0100 Subject: [PATCH 39/39] added preview pictures and documented global config option --- .github/example_nhl.png | Bin 0 -> 22264 bytes .github/example_nhl_2.png | Bin 0 -> 23373 bytes .github/example_nhl_3.png | Bin 0 -> 20236 bytes .github/global.png | Bin 0 -> 19476 bytes README.md | 14 ++++++++++++++ 5 files changed, 14 insertions(+) create mode 100644 .github/example_nhl.png create mode 100644 .github/example_nhl_2.png create mode 100644 .github/example_nhl_3.png create mode 100644 .github/global.png diff --git a/.github/example_nhl.png b/.github/example_nhl.png new file mode 100644 index 0000000000000000000000000000000000000000..2cd0d9e0d23d46608da4421a5dda8c54c9289c25 GIT binary patch literal 22264 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 RpGz9}{x1o&zRCaq literal 0 HcmV?d00001 diff --git a/.github/example_nhl_2.png b/.github/example_nhl_2.png new file mode 100644 index 0000000000000000000000000000000000000000..57a0212b9daca9878768b1a669a5a0d239def8e4 GIT binary patch literal 23373 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 literal 0 HcmV?d00001 diff --git a/.github/example_nhl_3.png b/.github/example_nhl_3.png new file mode 100644 index 0000000000000000000000000000000000000000..807697f9abd7ca29ed7dc8f234636d6d6ecd5992 GIT binary patch literal 20236 zcma&ObyU{fw=asKsH8MVNh1g-f=DZ=bax|C0@4kFlprA8Aky7k64D{vAdPf)oca9r z-glfk#u?{c{&@9yC7!juYt8wo$yZrvF$~m4s7Odi81LQ+%OfG(VuHVy-baD|4y$OLIeJ8v|=YLkk;YOWPgfMt&ru z$4Kvl-zYjJY$iHsDk|Ny&%Hoy;eQ;sS(0=A=hJPCg6j0xxD|_x*jRPtZI?#plCt*w z=eVUkT7%*?ofy%1c*3tAVhg_}kh_Kb-Y8~{VrW{JKuzedL8tIyu=-@$rmsHXtcPng z>Eh}w5%IzkHdCEXMbCp@6F|^fbG9QpV@ks zRQYWGkdRE3LhYW|7k=9_wL`TImXcCZU%!28ot%uToO6%&M83DMwbgsHG1l4LZO|D; zD=Z=s8Xo>7C519qIe%fPGyHIUBv-MXJYA>J{cvk4`tRSr;v4%64Gj%FG0(p=xLy3r z%oLN9l#D%ab#psA=oh&4>C-1&_(lo5PVyZsqoYv{vrc}9AG5wL4sTaH9fy;XQ?D^H z5jugXeJTzY95 zIy&Ekgap%a+;`mX8L4TuZ9Nx?kHwz8k#$w1+GuOxLq7a ziu1T%ItG*TA>J>a%klfu-FerGtx68YO7p3Tn3$L!>FKntU%PW9K761KmeZ5<=v!4J#A!^6A3$`>3RO~@FDYGh=jZ(wkXh|8KrEQFkvojn2;@h4Y>RXUl! zH|<@xYNI<}c6N5%_4&r(+Q663pOKK957(OZ7TY`f`dCiXQ7}p0%E~@m?N2t^o~~xM zoK5)l4PCv`qBj7aiHPm}eXUx1eBq(t;fTDvrvZV1#4kReySux;H!>=P_jG-EAmi%l z`pL?wsiPxH^hB8yC4d*-xZ#eSl!XNg{MeY-*hm*m#z=j0bLRWYzXJ*3aAwJ=iHeFE zo0wP~tt(AWPvCBrh!J+iy)Or8pYz9v&`@>3IC^?v@zOOiiUeR1BsN zkd~B0$Hc^>p{EZI3ln_z?!jtbV#~~o)~i)GMs=qPf%s82SLb$uLPB!cifNgdskym< z_4Rzk#l=~QjQaZe#-n+$-)E<$;{W`SMe0l7YDwgA=;-ZDFDiP-%*=cn8F`}Kh11E& zNv0}%nK~e{L!oIPRg9S3ST^=btHxGuxhpbHvpP&g+bMnWEG{li-^`2&{W(Q%|G)sY zkdV;+!GX^qe6?oPrxek#KN(UaRMgbf&PS$CD6_LzkVHg868PQXe9#C7t8I*MaB<&B zNFWajy_M2(Iah=TD*_|2PJoR+h~DYD-qBWcr| zPIoEW+S-~|0|{9NbCj6SF)+I8lVCL^rKJM{15KTsU)R=*508#~E|g?tKYMz5exDs0 zQh0bZ=W#=`S6G3Tmu}v-Mw}Sm5WD{73SS=GT%x{zK3)5mL^Pmpa! z9k-)M*#?wIaitZT*RPST&W~~rYea({{jRoI?ZPLON`eD}M@Sego|>QEd%CwcQEVWV zex`z7Y(%?1{AsBp)Y?UbgOZlkXSqAtX1@7uS$R2=-W|EET!1w4No2?+^UeV{N^ijW`X`}gm6hhzk-E>EqTk2gEN+`|$-ii5`@ zaa4xHqFMENV>F*>Q>)x;3=yp-?zIQ0Jz>|3=Ba`_qoX#$4HCrKb4N7sWwy$qk7|z1N!rE{)?vHIsV`ntD zWr8w&zkjC>hnKX&v-}Ii?5Re@H`t1UZq~*>73Nd)qat+S&#e}O5!)f2PDDf`3m+E5 zzP`S2L5m&t^rKjH`fBVpygQF!O$%#l44Oi4@G324n)~`NVZAgs4-kbQ>6*{^>ej7W zhR$U_$gMGn*}U^LDp60CM)NhGa*$>#iU$%fSJ`b4$SUVST_`Fl`a521fInNh{+|=a zh)KaOd2zgz8)1KWx`#(VaJ$Iu!oEPKQJYRmTpZQJ#H5*2eyl*t=SECK1P&Lb{pNU+ z_XAuaDAPVZKAW@kB%fh}*_`&@qo5PLmX^kxsxZghcVkaJSnW43G*mLx=cl6bihW^Z z4G+|M9dwf=%{b zCgl+EA{teNj!qC0A8(+iCzmm%JoY~wd-ea+&K1v0ew3EJ;O6E&QX_=szxoYsdxW@Q z+6Ym z>_29o4j`}yC;VG%Z0z%oQBlcjC3WI&_QrFrj;QGT z{`2Rdii*l0)EusW@ySX3j~^v9HA%53_?L#W6}&u`4tiiWp0Tm%A8$^iWn|pmoiIwC zUt8;d6O1UE$YZ-_O;D_%Vp{La@_pz_nD{f|#OO%Z@+gFqt0V$H3~DA+DZ@dN+vhx7 zTwnER_Z8>2wlF^X_}o1{K8Ei6@>9^GBqRAe_KZ*^5!W{wOD2m0*=Q6L6mofvqQ6a{ z_rFb7N)E>TowNRmn|r^F#1at5Yg1FksY*+FUS85z$uZo85vOll+@MN zbA9@Ygf!=V!R+kp{Eb2&37X3b*V9iQdSX1GnZx~VpPNeth%mpr{2QuVaakG7^XJ$C z0s`ph=&B8_Tu+`nsk_*&tvei)kW6?LiU1U>jh7{!h3B2T;rivq13%?oPRRTOyk@o7 zHewKzgkfuIs|xiM)yHdmTorJT8r%aoyL2yJ;L6rwnk6;V)YcA_7)n^o)cAyl;{rlj zxjZ`)H(TelfOYTYFo#9E&R;O)hhcXVRFd!E;X?3G z0lNHdZuWxbc^itSZ+STf611&W*b^-NQ>4#;D(mX%99I(^5E$m{>`YZdBek$l2Fe9e z*Xb2sKJSnWGF&~MuSbW6wm*OVyi@xlA_5OegS3^Em5}mY_EK(PL-X7mg@=bnQy}KB zZ#1mw$B)MZESeqjEq()|qZv@01>*oftn|jWH+{Kxt32ow)`GyeC@3f~adCsGVpvee z1a2;0=(wNJzI*rX)vH&!rl#kXI_nBwKQydQmYV@Sr3~-9gVhYB|F*7?kzZgS8WL0h zyrhrqzkjEsrnbP<-90#16u3FVf@O?PO;Lw;0yuw775aB`^XX-lzy1+kk@d286XWGC zPh=>>l0?2AXX|3qC8Cv0HP7m-4_2gLef|Lfj2tIpWhM$pO?sUC{NzYbWhsNi(|=Y~ zseW1?Nhmza1MmU|8ELUC$N=ux_{7Am^>n&^9ymNz)z$ED#9UqLbS=~WnFCn8wXRnN zl?Lvnm+DNTNAktVPIy8>4^&Gc4pY2ZhaFKB6+*zR6%`eaB>~GcwYGZ0hFRTQU-?## zo9;_uB6B>|s=@OSy!Go(iqOB|?C{;+j*CH@9bH|`lauPC&b)2VAiADvAu-x=6tJkP zuYYj(`|H-v)Ks4{U%Xi z!#N{kr1-<1%K7Sh=NpCL5fQC$+tmOu>7J24dW8Bq1c0%d1v>AL{z#pZ&HPOWtIi*P zf-ES9Nj-p0kcuiRS&w$=T~2Z$`%}$ky}Z2OBC?x}e)Gek7?qPEVT~hKg!?-&G4c7F zp9v3DQ%mdX*RS(%Mu;9gLTr9>b2Aa2Gy87;!-0_z{LkIdtTtPd9Ps|UFL$P^h2U$I zm6cyF65noq!HN>3ae6_LX||cUjkO` z9;kAkON5%TvKXMfGr&i=&Jfe~L@B*Q)YCUQIux%R1q=R3;p5>w#K%9f)KpL0l?+sp zlMDTukfO-=gpm=)-7rF&7TV;(!=gt^tE&f{^vMs&$b!CnLGJAA%+s!qD=RBAUB;!L z=#S$tLo{g?7M7*u&ars+FpY6(Wd-{4(s}N8{|*J= zLhX7)*MyU{+!0ERp_RyZAlavObvPsg2Zb`aJ2^%UcWXp2tv|HF5o%XKLDuh3fI;)eScbSbpF;A&#ox1FDD_8h>yXH!{4M9rtwQ&u+7 zxWPc^MNLv;D#N_Dx0jZlu4ic(0?c84ejYi{ zn|tpT&I8q0f`vcj-}Ag0hyJ~uwRe*YR9t&POY^S@L+D8g>Jx(P-nHfJfK<(BVu}J< zCZ0+?)^(jf#m=Fu+>-t>*4-G-PDtI8Mvp zlqeivPkoyAO%$>5Oa)UDOW{T=K)q%xy}3G>6Qc?((rvm84TW!>wtsyPt~LMlsX^N} z;)CIa(&JvvxyO;>vHWh%*$$*fM@JJShG@^9KZnYR4v6{k@-l|gk{ljNPaFqy3-xD4 zeWdeR@36425SX>fYSHwtVZ3VKN^T-{PeB+Rv-q9rI&s)sCNd69LcI-1c&#sFIe3A$LF(o33@hg0?%K zSbhFlLLv~LZ{%d9*%*ua*>be$YGiEeJ6l_Jdg%m)^11Hrz!<-qR@^CIjuI*!n1i+try#xq~KlM>^bqC4GG45muL zRt4)B&N3+Pl zX}X=eRCmzFvpHUj3{=iE(8tg39_+W#P=*u@4b3y#HCcGPtqEK(v&CbV@26Yx29{S z)rU_#J}OD_Sy=0pMZs?i5@t!4O1dRs*>WG$;W5{>Ka^qN;RqBb703PrzcjDlIU5@S zZULL6%rQ0B(cyAA&a3IOCVQrsbrZSqgRT7aNYCBK?7Mn;dSxX0s471TY`Fgt(Mw-< z0#%lRL!_WX_UrZ7y5EG!Tmv6yJBSqniiBeiI_&uf|PgKbD0(v7h`#y*aR+jk@2qi z7{6~kc8c-I5yC2}5R1I}JnpAfrnQS5Hg_zfcMG5~?Xzd!340Q_;_`G-OXAs0yo9OV zq{}0aDgg9cynPM2a5%6}y+vn>^n~iq9v zOW^W5z|4771InjQ^CBh$p~8HBOVircrtF*~pS=VK4xNI(uFY_RXzkMz>6sadIQ5>x zJG8wNg5UT_i^Hs29ylPk#D61 z+)OrG5zr7wI;~e1C&`XjjQ-h zNxl80PRS(R*fDLFAfO(kq@=@qOtOK>dbjQ*DcqR7M;|@b9mN~@jQx153B*vY7Vcfy z{$OCkD!G_QMtuoQgM(oJEKn))Qh)w*-2M9|eH9QwXjD`iY!_^c2vz9!m>5;d29zM} zyoS>SH2dx8&b~yRST;j(pMMpWbJBqAGo=%o+uBe7JqlCJ!#*Nd3h*ObQqrfYk2nZG zda8ChpaaeJv-2z4v;AepGrA-$8x(5lRJN9moc+ZRdZM8|+|M+85B%cA&(eHenrSYR za*i$3Wq&)!U}GWazW+jbY&Aeo)GO)y#xJj|nkicMN9LFKTt3v)xFb|{+s*M%fPQRx z&37s+X4La_PJyJE9zCPrb$kti;GEkDnalB}UdMMz5U>l>k9vE0XdXXCf}X^pRnrPe z^?z=q(ap15MfG=jw@7DBWJ1t}y*M24Vym4x&<4lJKBcQKn}L|Uni|3nwbi?y|Kb~5 zFjUWT#?&7_Uhh&SKo3Hc>ZGJ3jvOH+9>0CtC9^3fTYt{c}B@FanCdzn)uI0)TduqAFZ@Um2pMqxg`FK4C}j25 zT>^bza+n>F>wNe?cMpsF{myK?w~x<2xtWS~@-;yzA+sKUjk5Am0%whU9G2#hhx60^ zuCyc-n^{&90FDJ`T3TApP8UO-b8!5gnMtIRii7Q$K|-Io2tF?Jt09-UHuWlE#T#?Qy-I8RYfpX;+G#)^Vh#e zScjxVxDXNlD_s?R`Xp8+$<-a!qfyQGeGcW_@M zOgW?R2agy|mYKjFJgDDDNFa?6KhhskEB$~?LedRK=hl&(sk0P_uc;z|1W(mUggZ8X zM|+K^YYnZrD3??6@WewUhn0$hrQrlH{fd8DpP>Zf`R`@{*YtDgX&CHKmr;1Nk5K=CoXR4nIJ&QpDJ5lu(E^(;}#hhMXt;*IxUFpdGwq@y#Ne(U{F znPkbEd+$D7-#Mp~GSwVK2&Qw50wAKcH#K=az@?LgZ3iE!+IkrkwCrCkEnh&`S=`?4 zgL{s2l#mIs8iJgHy8xCH8eAAbLBS+h{a(ic7iA!mm%A-k--w=j)z$GLe28RzH%7Om zn=%|CA}BjTre)5rz`a1o_NK#G+}YipEvtV&P5jQ-W+rtsn?^#y+`hy(Aqci3aMA-h zUw5_=k04|&C)>qfcbH0{m08Y_laVDdw$t8h6gC3KT?KlR1{EUN{roFX)UmSjbcAvO zI?OyYrOo}Dude3!mEjh;DV9xbI}W#MyAo^|xPP`SC%&?}ZEkKZ8bZ!o#SZig5H-7@{et9`s2SHRU8?P#6sf7J^Py#M)Pe%3^E**x&wv}vD$${e zD^-2I6h*8Jb=%u&6I}gn{Trg1yoGg_Z1XDDUmN+~uXSIZbhA3e9Q3mE{s1Xy#Jy=dZE&peFtT%Pz<(s4^Z(H*R4$C+nrSMcM zOIE+kChpmlET&tbC2P#R&i0lUy!(mz7$w@v%h7x|x4A*VsPD3y!%TJkqu0#nC;^CH zJv}|%ZqVio*Z!n5uL4nvMx~d-hf5idoUBvb{+^B4vi^tw+Vd(LBo_Q^IjT@NlMD@K zD4k;;aDCLuP4RzVCU5NQuzKeua+nc-Sip)eHQdsI z4DS?77+?@$|CToT5=06YIf~GV2~(@>pFJG<;rMMw{B+LniGbKf(N+%2o67RyZiNA^ z`WOcTv^(H3eRDQ~%1nXZsYU|8Y3J0Nt_g(L07LDM$ zogX^sKdq!MH)CRA(wmF7Y(PM3Ek;abEmPnq1V9ZO0$OE#;B<8~211K|lh@re z?Z@wo|0fHOmbN>pVX5>_)ydJtg*sB)=UGdLLXwoSR10d0fU>3x5=nV}uMaf_k{&iu?ItjMkOOoQ8Yy%jn_6Pi}-eGPN3E2U`I z4h+C5hubsp&_2FLN2_GoWxXh71YHHZ8n3HR&^4>8tB)9!wC^}M-SN(x3|RQG40w^`x%YK+bO363 zS5`Vydx3u1rAn&wn>&~4(PRMHaEcBMo$vcq!XJhoy)|m>ABTQAIDImCb4eH|-8yvB zzTt>sY;c^)(igp)wstjicu8uwSsGg0DHku2dauNGqRkZR)_*UV@ZqPprY|};6(IHf z%unwfp!SnU=W#oiOpH*$PZ}<`b$ED)P@AAYX=H!zw-ZV1Qv;B#YiWs#~TpT0% z5GFaV>N>MswjyH{795d8xm3};?b;oE3yWY)7Q$&Gjy_UQ4xu~$Xf{~>eH_*K-qFcv z4^+56(8|E)?z$W((5^=`I&AFqQz7Uy40r*icLQ8_8+}U_ZaZ!SsZ^OU7!CP&+%A~8 zV7k9?Puy2PQBV8+yBghSEPC{^*zajepA?>CGMBBz$h{3?5q^|Ia?|{VPwi^2k|QoR zCy!atXI@JOexp zyu>@}r=3({fD-tfkVd%kYh(mrMdsz@fvZo+#DtbE|KwG91K1AW;TD+;(LrFK1ELeL zfQaqw?GfZ;r{N+P$O*tBMLj3DW$86>aJB@~`o%<~H8kSE6DWbNLxP+4%4wfQJYD{6 zVP|GqnzxtNZFpkdyT6vnn6SVh0f>VTNI)w+Jw1&$ONIWyX8h-IlT#%KFq+lY>1`>x zEzQj_>?Sx+z`%HoC|NKC$-!rp&-AyFLUG)S4G#B)$hXS!lu~F)hvG~b3cjdUIOVUG z-^~Zy4m(Uw6L>lgq~nc4K<9Ufj;J>^q_>|A3v$$}03mm+X$xPEEceNIh=U`ae^xUY zrGgFW#A@U`bxuMUv=5P{ja%(juegFPBF_8@C>m6{r zKoAG9wCVTnyDly+z`JD`BLOQef~y5Y1U!fNzfE7jYSP!${R}4ourQ#eZ%{XFz#c^H zX6m=dsnhEP-J+wfkKm^<9WAXD97@z7v&&UR9%XVMS>Aqrki5B%hQ{RJNC`r_n9 z@kW9WHlRI-#7~$iJIqH#D%++wtb5rj-xlm!PK)VZuxt$t4ay(&;LOQqM}TuuWIpv0 z;znp$^np^6l2tAz7Li>{U>FR&W*6ea0F({68*~AIM(f3IX2*PSA;MJHnr=+o|5>VF z2+Px_=p-cZY(igt{-n}d%aCRGWNl6L>Qz;n{!tcwbOt8GbClMz5zikNla#;xl_l0U z+a+&eiL*hqwx7z}3HE=)1}lieDti6dBd|>v77OXt&q*tWah_ITUR~X+O`UY8L=Bso zD=AG1YRT&?)6&z1#>X>#w60E&1}^2=`nJYy2d+1(-KD#zXnwaVj*`h3$TXM7Q1YOh5(q`Yer*zh>QD0Jbj@phy-Fo(Q%q%gM&YdioQD?tUQ?7oG67x zBK;&cIVa*|?YpFoPNU+OCQyIC;8uv|zv^vmW8-7Rf>iTV!iy+Efz4IhN&$A!CYWC*>9q4WdBZ*}=f*^=kL^ zeBD`|TB&c(z1TWlTZVADM(v!Q&=#?W*lL_so8757Tjzch?z+II*4Eee_q$ogB(&CD z<&2?*zzKyDjV>Gi*vlDH;ze3_N5^ZHXb|aC=(0SZ_{NIu;fIEWd4V_jV|x#-MmQ8# z(&SfGRFIt6oT;sB<{cawdcwf)3-k=|0>P_CWO*_&fJ7?H7q`QWp?vb>>&^8^V{-%0 zh{eUlmcqtsbw+a_B8Y@ny8Hua%JLN04ss6vnCD0MC1g;GWfgV+1;ORG|qP9r_rFGugR#sy$`gmm6mRCwgyAAtxZ@f1m%ZHa>M3i zdEn8_)Gxy1{DPw+MPa3>a!7;G)B8c^4Fy7MwbDZjm2T-Rw4?d?`qdGwt|8Jh>htQ8>?pPL1}ml{#F|l;%IH> z2V`VqO=>Oh+1mBa#c-Lvef#E3nITMt(0hQuBdr%)0EHoX`H=`LZv;gF2dOC|_oqR~ z;>L!=+qd_j95o-WCVMP^FYD>~CcErpXO5nqKM8;UE)kLHh6|=l2)@eO4!fTgb9xik z26u#K@}6mFq2epf666TlAsYZ2JB2UG^hRj73Hh$*-vOuZX zs`Sfq^ADg7*shO<%J8eJZLqzW5vnXH!Fh>>hW5jG>(O5@w5RJ`qJfGHzk|S^wzD#0 zWKM*t3Ec$8@wRw+7zA_>>R{9UDi9n&m4dv|iu}HEZ zT`0Wq@fxuwWe9T_@D2b#(EFme35baNHCYN@;C{~h9k3zziN?Ni=efPA%(pm(w{L5{ zXi_y*ef46`4mfzePLao1#|LS%xZ3*y(uU?KjEZ9cxfRPwZ7E;w8N07T5Rc4YX&2je zXEx|wY%CbJHs?LW`il!|v-wO7{QNYn?IZ7E>FDUvC+$I**r`9!E=L@u_YjSFs#*0A z3oC?M#}bl^Ru`NveL@@7zhKej@Sp1b6xT~Dw6>i8^ViOKvhr)8j9mI$W8vi5YNmLD zn+AvVp;_~DFuG6*=Njuc9PhSnaZLh?!qE0>tKfRYo$bzln%gz~)8xxoIwj{ofW&{I zq`n*k|A(CD|2rK*^hHZ}=}FUI*CU{)^z^RZ5D}d3v1(Wx&NUCCS^O`VfJe1==h9kd zN0<#fNO+}j;Xswlfq7$3T1rRf?d{9UwKsRTF%@Fdc+(fr8NOcpLFS%*zj)g0+25-N z-YdK`lmfnaybq$Zw=XL_jAk{;8d7qPhl_RRZ_6v}d}5+Znoc0qYpfPg=(%y%*^vti zQxKkejU77q^Vy)$z8Nx?2WM!1E!|L;BpLmR0HNU7RWPC1XoHM&61TD|t{dMr-3%oY zPjp~YXn(oG-?KT7Od!3jv!|<9liPeX2O}yQ)n^WpuaI&xq$VodT#$#0^uRz&la?d; zH&p7!x=qIG-&fUdsiObyLwulM!7+xbEK)t$ubW!q=C5>GAbhjT$9bNs_22uVt$Pwr z9dq48*uN$FoQWqlLiUy>W`m@o@STl@OZjn5k6FJP`;kWx&K{4(Gi4CGO2S;D;$!x+ zEw8(1U3|*1GVx$SAxJ*h9joA={e(l0KiUrB6M~I^K=RCCds-ehZsh1bgirXO=cI#0 zv#fm($l9Q~k^ppYac3taGt(&DNyR6#lT%hNtzW~ku6a!@^_?OCt`)=gW&s1^y&~_8 zO1sn398QWPj`d z)L@Gd_K%YHB%h=J^XgBu)HQtn;RBn?@kc$4s!w{={~*`^VQPjGRYQJrP_LVMdJr!6ORo)Kw@@SEd&^$sTEDY2a62PF5(cI_ebsIrd}C6eS& zutD1>f`5U~-Ye(BtcRcSYsftT1Hwvx3n^|>6#e*t1Xo#}j}!DjXk$;nViwcCFAeh=3esGXh1Z0Tp zSpB1=$*pK8XfTa4}ZaLaCc8^e5OBEZX)afXjOJ)=@;7^&C zgZ;dZfgz%yQL8@ioI(svV4aA9KS#vDm6P3{#ta`ub>V6K=AAuB8QHLcd@4~LX7L+4 zIhjyxW2!|!=bBH1Nt(5)y@g-!t)OrAd5LV8u@`I0U1TxBT`+{C*p0dq{@!^+Hl9#+ zZ&~);#2UMFB@&r7sidbL&qYOT3uwYDv{LpkEDQji^Uy$rh3`O+2~YUn07Ig> zx;o@@(Hh^z*}x+fhIW_h63>`M>4rR)z>m|YYsa9Id`}!@Mo$06!H-4q){~m=nY7e$ zDuRK2;y8zCH2<10gzPL?+8*}BV5wWE&9`SfQ`7Y?UOmQU ze}`i9e8B`(q0-tlJX{trdA;Ltvj{-v_VB!3YHDh7jF^(^B*d9;=_DUNe*D@$JPDRX zl&idyuA&g~y7w}!O=3%~cu@6y{n4lf7*Do#b|w(yg6y{4qvUgVNFYcnPH}z$Z4B6! zV)uK&mb0PgPY0hKuS-9&cVgT;nE&|zY^+dfg}F-J*gJgbsIr0bB`j&3H^&c$Bg3-j z7Y!{PmblJnW(umCUTdAAT*ogfwQhvdS+6g3vR(LLkhDR~lK*g163Jv``zg<^I&!bd z@-I-E@$2!huVQY<6j*keDwk%sn<0}HKEA%F?T94fepZ0Y6d(YQXb^Z;sZXf1k(=BT z2p{BAun7oIvVM!dm?(Gy#Bz7{6PPSO2!2BPEG;b!;vm}eLFWV3kGeQ_p@B1}sh@IB zTK^Fb{Aa%8Iwl#cz3~B^X!tJL$%pAkiMM~kt!EXPl?5id?#})CqOAVD`|-bPHV9X5x=wAzuN z(PUUo&xn=uNC4&Bz|v9%+%aOxT!|!txnJFsV?{5YJ$}580#N|`j9iHnFQazO-9Jsp zW#&Usq10kHq>s8jG)kSCtM(Hny9Lbo9$mU`lcwmY6qS@T=Nkrc}G0`qdWF*utFqSw*tfN}{`onc0tj@?3J?JSgZZwnfxR6+za0%xYzNL&4>(R7UU@ z8r1cbruG@Bw`R4p*G7Y`EfY9KdY5G_v-^1Qj_29GJe?E0a&*chqqh1N$@kLV{<>y$(W>Ob>1hANK}{)#qH z7z${S@#_zbkgv4d;uM`cw}0*94;s_6bZD!H-joTV3-(P}|GY&je9thg&MGzZ+9`f{iKXf3>fx%D!{P**C-y#FvNmacFO| zQXlOM83EQy+tX}@`t(eZ%z1S^-^Fn}erWKqUw(3* z$BIain+%!c;MiDVICUQ&X(~vX38;td zLk|&zcdEcJgTqOcnc$EE<^piQRB#_){^wxEVeY{IHmFkApfnOASZ;rR;qW#1x+vL- zU5EdMBxaD^+}tWYP6&ca50+u>F<+Kx1MnU&5uRJl@*Y#1m+8VRj-ai?{}$@P z6Pl{`K~AN|q+?)-ZH=MXJWzb!@g_5tjCc}<^l3hqg9sURvr4GUwmFwMIfKc?YxDNI z-uSk%k5Hs6?Oxvk{qO?Pk0neLzDU>vC>!2}T>J?mpinP4r&hxTV!ogsnu{(43- z3-N2U74_x674O!+p%@#t=JmD@mO4EPuQYwC3eoarhnL`bLSh<$eJH~$VfnG#c8uHG z+mM_@Fn+M^nah$vzqwTeQ!kTqpHZ`-xpKK|R(^m*lB1M6USr2pShtS~gubBklIh^4 zw76IgR(pAQ(Ek+jwh+$IcG)VoKFIF5$ggSm^x?w?PzR$PSmvct|4?K3IrqCO#dURE@ydP8stR-d;xIf zsH^ZilJ#(B^WN#B@Mn%UH`(fTTH$uSZ_|g@b@bbjP z)w%9%;Y(>@x>=!}X#w9xwtA0+I6`vn)=_FgpZ@$fwOvyO2gMA-DJ`Yly}hQct^f$+ zSiv-z*OxC`)=T&6osV#WIn5^{z%}v$=;3~I<$#z^kzlP?+@P3RmtEDT4SfqKpLEht z7*C+8(vysTDYeFS8y>Ub+L>f5n-7S8`}2MjB_Kwu^d)L+_h$9nutEw5_VLQbGsN+} z*JQ4&!G?D1iH4oqJUcc%H5FA?5RtlqMa zs*+crrKF@3{KNNOBZm@q3BN&ftfS+;g2K?FNHyGb%{+2`*A5+ztKVfNLx`CjP*Fj_ zgOs9N`T>va+G|kgpmzKQ7wH)MwRZ}!H##sy@}xxp`d*U{3IfNz`p@EB=h;(&LF&Jw zQPBPX4XvfA>CNdP|N4#!iD}$UYJ(?-;h#T*ndMV!vmlNf9JGkG39A z6faAOpmBS`iJopsPof3cBF@@RcR}-Qek<0;Gc$QG`?JtgGrDFMBd-Iaj=#$#;!TTA zONEmeV3EJZ=Au^aw?w0_vjeAF{qN@z5LH^gDHL-cHIhs}NPB)qg#KXT_XbU-kC%i)0D5*&!d*ON>T`?NwUpW)*+C!}rAUXv^!XW^i-XN6DQWdBO(Ik>@V?5_7L# z6uKW8&wLZ0#{FdZ!857=^Nfx8y|eWaohZZ1%pUu2)5k$}?U?62n8?mU8RlqtQW(U8 z#kB3LbFWi04(4Md>2ilf^XeAk`h%Q_?#n7Fw*L13ReLa*0Stc~?#wlcubTSW$K6D) zzEO_7Nk-x0}P~9g;lVhXtmKJ1WG0ngMu*B=|eF zl^xLZsE2SASog(u5v`8|gcyDMnVw6As#PxY*U-Q&b=EwUcHGM3ScHb=z{9L^#8gYk z;27iSuyWRoQjYA}Mp#6W)YP)XpJaZt4G{_A=N_1DC?{zlmNt0j+%)NiR#b;{sBUBp zyq|7CgG0>`b$sGl6vfo^{#^Q$YypDAw0 z$bFjni|upssS(fHW`nEwxSzFFax_TWAAVe>lB`i_{WaSA;Nl32DizmMvB9@(lf<~- z-dy7Sl*oFn4b02mwX6;cB9?^OB-1{jGrVu5`xh3DXoCG(t@oU9+EBQky5-+f!QD>z zGbU$575b;OMy;9-QwAngg+6^51h2GzZ6MWW5!L7CuvPDB05A8(7jB)V?e+Dpdlas} zVEng4`T9#bUzF*-jy5H2|AHXqV=1X(Q+?q-M|Xm??i-90*qrt%*G{=QP~Bll z)Tc_d)Hk+3R@_WfBM0*S9wIs*U!cl_PL-R9`C*cc*E+C5LJXaZ8xH`AUYJ(t>^f8= zj+&J?*;T$=CY1u9l6^cobzi_H2R}Ro(6hIG^F&@1FeMa4^`FDMwzO>g-6<)N^{p>vC6miK4X&|eW$cKX29xW%FxBdDbA9JdRg(2yf;LZ z7F)mKf*p=_1{)Z)PwrZ#AWt~#)Sm;P=MesLf8f4}K!C!Nllu_?gzKyIli0pwfsn#N zR+vy;0T+ye?Rxn1rWdC9!K|@4+c(s!f(cI^m}o=zxDXo0=~JtB=4fhaLdI@bacc+<=8*T{WiIjyN5x_VXBzF z5gM7;y&h7jYh>WrESrqx5g3{nbe9^%cD|tDr7ySjLZA1jso<4W&iP4>KRj=cQCeUm zJvpHY6S_dG#Pt`(zpuI){d%00KXlmI{dp<(-O{4794)hoz%k0^7CqA1#R?l?cZISzXm*mE); zPmhC_G#z+NDl< zzAyd|0$cZyZrFBoIQ;cz@|!^l;rO0BOXxpZO^N7-kp;av4sm~)YqGyLq(|Nrb*_Qh zDCsQDeW2n-eU5T_<{a~9y`?}#10TT)z9$ceoi?wxWMHsK&X6vQ6u&D)=a|!$;|3p* z9D4y42|DpG+2V>lVr*u~o*?5cBl<^Frxcl6V}m2}pVecttBMDZYF*!kx43Z$lVk}! zu63*(9H=G^5Tu2lcc6KJ5}d@2p-{PPYyP3_OWIWHj=<;rWtH#h6Djgn9xkiocq2}2 z^G2*sqi1}4SfaJ=L~I0bs%90-!6#OCK9gm2S{@3Ts zwmY;jBTG`uHIeQ zojOR|+2xlV(4Dt-p*MLK8Z+yDn(1$Wkqe>(SO=OfEvEfPOvzqGB_@I!j}8f*N24@5 z?O`xZ;q1%}6Vm(p)*y=d6uTVVL%Dl5G%`{I0^lD?V&O{rGCr$fp>K`X3tiAiaC)3-U*2bZ^9(Pr8iSwTU;uYSy!U06)4wq6=?%4VZ^ zV4sIT#ud^hbjFpMd-s4@u|0eC3#LO&EG+(GAI9XmS1m2QPm}+bHF*D1qrmQ)J(P^T zw?EQKf=8Qfu`6Kkmb>!>91z?V$bY3sZfobwG;Wp6Rm7Rae729&3weOB{*fY%Tq zEpzh_ElHavqh@iG#E~Z?v9?BkRuYB}gMxwpJeiuAW#{DRuSmAj_tl>x8?q6DCmj(L zrT;P>PzPcvKyXS~P*he9OGw}~)vcPMaBQsi{JJOiar~InDRbS2pp9d-Z+B1U zCb*$IoYwp$m9t(m#{-O`24l0jY^9b)Dze^(JavC@^Aj%L-hG3XVSQ|z-~Hxp(hkP3 zG5h68xgd@{)w>Im+hV4D*!xF8Og26%qEmWvg_29#JPdUwCkJ!}eedzEC!ddySI+(d zc|H`9Fz_o_Du{#Hu*rGymAk>f1uI_{j!J8LJDLH^jp-k)k8Dm?hl2(Ik>2N~`5H6k zkkmg}!W#Z(3;usJ=oBdtM(Fejp`a)+5Bbzx9ygS{9ooy%TGn8vpQZ(*pf+ zfS{mXG?~JWMLfw^qCQ26#^-nO9UC}5nI8+B{Z3UdIjiuqWYK!#QiGFBVKH5(@HBzG z4)Ys&x}6SXax&>`)xKXvvB^wZKIbl^l*%e9VCT_aZ8AYnh+<_MdA!U77t%oxunk&Y zHwEE??de}g!pi_s0+W{1i@(|L3hWO$X4fj9_aN}AR1Xa(v$C;z-=WK~5{9p&z*kr3)R?+YGj$CmZ;GK{%x z7~@8hAjc)mk&DI7NLJX-NE_qzo=C8~X9y*vvvspIyxz0Ft}3?kdFXHw2QKHEz+^nH z{+IU`-D`B!>ydZGle$_lSalt(koz0UNzy~S!uFmDwx=esRdMc7Zj^vP5Gk z2uT5v-QKo%N)T8i1Lg<>P!MtEnBETo0RdI+S2fRkkQtbm7D4}kQ6;3>nPBZg3b~EZ zC*Ni)DD2d2as?pW91UtX1jR&WZdMkn7W^dMy-O)5z^t8d*O1sA7O$mm7WXRk`mg5;4auwl^P5QLU?P-{QxLvJs)Aq~-RyYZLbN zTgaoKlUqq!7>dGukDs%}OiHN4{y3s%=t!2JlpBu_FAx(>(N6F!6z?|h7;o+IDUHP= zdGNVBHN5?U@M7+FT!Jh?vR4%*f2)pAxcTh+;_F0Ht-RY=fThEtDf74Nd6aV_zkes` zpLwN{wrT&rS~>S`Hq0=N+Y}wul%B4b%G?gaiq<{Ws!Kw%gGpMBHEwkq+ew=xB`!-@ znIZ{B9JfPR>k`tOvL$g#-Ik#!bzR+#4RNO}bxCATwtrziy??;_zR&x-&-eTJqJV(} z*C(@v66@e)l&2vaZ8=aZV@LB)g8`D1dH%xi+OFXf<;^{nSs!9Zls_VZSg^zHjyJk& zP-}C7jL2%INVwIn*eNgGL#alHQg8RgBVPrq2^Xqg4df%2=ZW8nJ5=*i;0OX>xfeb z1g82G_|pTyK-&vpC1_4|^M56VwZvZUJ+P-oh_RE^5mmh3CyvG<&+O4W>nPR6Q)jvN$j^k8xf@F5+f3${f3s*F zZI8>c9Us;tx7G5R8ciLG6W-o1AU^`CWp42hYUD`O9E8a+AH$24 z5fE{85yRHXZ#mxYmLILV-by~D4%Q3$zF9q;2XB`_&v1V_(MVqL1ET#_bH_)grFh`j zU|J?`C_8WHPER4lAV;Fn$`JZgGJuYVFa~u)jH!5K;qGJrt%oUb?#d0E6n zibAX^@C>{+)Q`^jQNUSG`q4@clQ|Kt7ox{N^%IC>padxAAe0Pj`l*Cj=IN4sSQo3bYec22rQeh zCTADVI9OlF;^BhGYd&g2k$VtFp4LE)(t=SW_W;APf?oZo!vD?&+SC1xfC}^YUZIr+kev8#}v^ zi3yCK-$+LF)XWAV$+tB{K|qyhQ;zEM-Sw~~X(RnvaeM7PVG?&9C1^XGINu0Hri6D^ zbq^UHMqXUj2SvJ62pfuVJb${q143Yw)VvSXEWcmsciX?NqWy+dbs?tOKj!{#>DEOg zcVb1xAErjXV?w_XIB{glTan-hh?fWkJinDT*_Z6({V8}k>O%YJ_O4_phg3Nny}#I8 zSX0Y(JO9KDS@+m9ZrSbWJIyZ0Z|gQZgG$TH$cR4?CXZ_SpBI_p^V{iavAkauA literal 0 HcmV?d00001 diff --git a/.github/global.png b/.github/global.png new file mode 100644 index 0000000000000000000000000000000000000000..5949bbc03241b238b5665f9d2b4b7639ceb41ac1 GIT binary patch literal 19476 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

igT-+~kim$@i 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 +## Examples + +![](.github/example_nhl.png) ![](.github/example_nhl_2.png) ![](.github/example_nhl_3.png) + ## Dependencies * An installation of [MagicMirror2](https://github.com/MichMich/MagicMirror) @@ -40,6 +44,16 @@ National Hockey League Module for MagicMirror2 | `showNames` | `true` | Should team names be displayed? | | `showLogos` | `true` | Should team logos be displayed? | +## Global config + +| **Option** | **Default** | **Description** | +| --- | --- | --- | +| `locale` | `undefined` | By default it is using your system settings. You can specify the locale in the global MagicMirror config. Possible values are for e.g.: `'en-US'` or `'de-DE'`. | + +To set a global config you have top set the value in your config.js file inside the MagicMirror project. + +![](.github/global.png) + ## Developer * `npm run lint` - Lints JS and CSS files.

- + {{ games[index].teams.home.score }}{{ games[index].teams.away.score }} - +
{{ "HOME" | translate }} + {{ "HOME" | translate }} + {{ "AWAY" | translate }} + {{ "AWAY" | translate }} +
{{ games[index] | calendar }} - {{ games[index].teams.home.short }} + + {% if games[index].status.detailed === "Pre-Game" %} + {{ "PRE_GAME" | translate }} + {% elif games[index].status.detailed === "Postponed" %} + {{ "POSTPONED" | translate }} + {% elif games[index].status.abstract === "Preview" %} + {{ games[index] | formatStartDate }} + {% elif games[index].status.abstract === "Live" and games[index].live.period %} +
{{ games[index].live.period | translate }}
+
+ {% if games[index].live.timeRemaining === "Final" %} + {{ "FINAL" | translate }} + {% else %} + {{ "TIME_LEFT" | translate({TIME: games[index].live.timeRemaining}) }} + {% endif %} +
+ {% else %} + {% if games[index].live.period === '3rd' %} + {{ "FINAL" | translate }} + {% else %} + {{ ("FINAL_" + games[index].live.period) | translate }} + {% endif %} + {% endif %}
+ {{ games[index].teams.home.short }} + - - + + {{ games[index].teams.home.score }} : {{ games[index].teams.away.score }} - - + + - {{ games[index].teams.away.short }} - + {{ games[index].teams.away.short }} +