From 49663bc483f424f26ffa18f8bfb2dba86395c699 Mon Sep 17 00:00:00 2001 From: Johann1994 <37308757+Johann1994@users.noreply.github.com> Date: Wed, 18 Dec 2019 13:50:34 +0100 Subject: [PATCH 01/21] Sharedstringtable Same strings in shared stringtable makes it not possible to open a xlsx file. --- source/workbook/workbook.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/source/workbook/workbook.cpp b/source/workbook/workbook.cpp index fcea0b12..59f9a8af 100644 --- a/source/workbook/workbook.cpp +++ b/source/workbook/workbook.cpp @@ -1374,9 +1374,18 @@ std::size_t workbook::add_shared_string(const rich_text &shared, bool allow_dupl } } - auto sz = d_->shared_strings_ids_.size(); - d_->shared_strings_ids_[shared] = sz; + //it can happen that similar strings are more then onetime in the shared stringtable (Excel bugfix?) + //shared_strings_values map should start on position 0 + auto sz = d_->shared_strings_values_.size(); + if (d_->shared_strings_values_.count(sz) > 0) + { + // something went wrong! + throw invalid_file("Error in shared string table!"); + } + d_->shared_strings_values_[sz] = shared; + d_->shared_strings_ids_[shared] = sz; + return sz; } From d6262df55583bd88f7bb402a01685a6dd5b1744e Mon Sep 17 00:00:00 2001 From: Johann1994 <37308757+Johann1994@users.noreply.github.com> Date: Wed, 18 Dec 2019 13:53:23 +0100 Subject: [PATCH 02/21] Shared strings It can happen that some strings are not unique in sharedstring table --- source/detail/serialization/xlsx_consumer.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/detail/serialization/xlsx_consumer.cpp b/source/detail/serialization/xlsx_consumer.cpp index 2f29e19f..3fdbad1b 100644 --- a/source/detail/serialization/xlsx_consumer.cpp +++ b/source/detail/serialization/xlsx_consumer.cpp @@ -1923,13 +1923,15 @@ void xlsx_consumer::read_shared_string_table() { expect_start_element(qn("spreadsheetml", "si"), xml::content::complex); auto rt = read_rich_text(qn("spreadsheetml", "si")); - target_.add_shared_string(rt); + //by reading in it can happen we have similar strings from modified excel worksheets... + //so allow to add duplicates + target_.add_shared_string(rt, true); expect_end_element(qn("spreadsheetml", "si")); } expect_end_element(qn("spreadsheetml", "sst")); - if (has_unique_count && unique_count != target_.shared_strings().size()) + if (has_unique_count && unique_count != target_.shared_strings_by_id().size()) { throw invalid_file("sizes don't match"); } From 319c4197c19db4fa0f2e8998bd9ef56a5b20a865 Mon Sep 17 00:00:00 2001 From: Adam Hooper Date: Tue, 28 Jul 2020 15:29:12 -0400 Subject: [PATCH 03/21] Streaming: skip empty rows in has_cell()/read_cell() Previously, an empty row would mess with the parser: if we're in an empty row, our helper methods don't detect us as being in the "row" _or_ in the "sheetData". So `has_cell()` would return false when it shouldn't. Similarly, `read_cell()` wouldn't skip rows; so `read_cell()` would return an invalid cell when placed in an empty row, causing a segfault when the caller tried to use the cell. Callers must take care to call `has_next()` before `read_next()`. In the future, perhaps we can make `read_next()` return a `std::optional` and nix `has_next()` altogether? [Closes #492] --- source/detail/serialization/xlsx_consumer.cpp | 337 +++++++++--------- source/detail/serialization/xlsx_consumer.hpp | 2 - tests/data/Issue492_empty_row.xlsx | Bin 0 -> 4573 bytes tests/workbook/serialization_test_suite.cpp | 18 + 4 files changed, 188 insertions(+), 169 deletions(-) create mode 100644 tests/data/Issue492_empty_row.xlsx diff --git a/source/detail/serialization/xlsx_consumer.cpp b/source/detail/serialization/xlsx_consumer.cpp index 62d9c418..071c92c3 100644 --- a/source/detail/serialization/xlsx_consumer.cpp +++ b/source/detail/serialization/xlsx_consumer.cpp @@ -21,6 +21,7 @@ // @license: http://www.opensource.org/licenses/mit-license.php // @author: see AUTHORS file +#include #include #include // for std::accumulate #include @@ -406,171 +407,7 @@ void xlsx_consumer::open(std::istream &source) cell xlsx_consumer::read_cell() { - if (!has_cell()) - { - return cell(nullptr); - } - - auto ws = worksheet(current_worksheet_); - - if (in_element(qn("spreadsheetml", "sheetData"))) - { - expect_start_element(qn("spreadsheetml", "row"), xml::content::complex); // CT_Row - auto row_index = static_cast(std::stoul(parser().attribute("r"))); - auto &row_properties = ws.row_properties(row_index); - - if (parser().attribute_present("ht")) - { - row_properties.height = converter_.deserialise(parser().attribute("ht")); - } - - if (parser().attribute_present("customHeight")) - { - row_properties.custom_height = is_true(parser().attribute("customHeight")); - } - - if (parser().attribute_present("hidden") && is_true(parser().attribute("hidden"))) - { - row_properties.hidden = true; - } - - if (parser().attribute_present(qn("x14ac", "dyDescent"))) - { - row_properties.dy_descent = converter_.deserialise(parser().attribute(qn("x14ac", "dyDescent"))); - } - - if (parser().attribute_present("spans")) - { - row_properties.spans = parser().attribute("spans"); - } - - skip_attributes({"customFormat", "s", "customFont", - "outlineLevel", "collapsed", "thickTop", "thickBot", - "ph"}); - } - - if (!in_element(qn("spreadsheetml", "row"))) - { - return cell(nullptr); - } - - expect_start_element(qn("spreadsheetml", "c"), xml::content::complex); - - auto cell = streaming_ - ? xlnt::cell(streaming_cell_.get()) - : ws.cell(cell_reference(parser().attribute("r"))); - auto reference = cell_reference(parser().attribute("r")); - cell.d_->parent_ = current_worksheet_; - cell.d_->column_ = reference.column_index(); - cell.d_->row_ = reference.row(); - - if (parser().attribute_present("ph")) - { - cell.d_->phonetics_visible_ = parser().attribute("ph"); - } - - auto has_type = parser().attribute_present("t"); - auto type = has_type ? parser().attribute("t") : "n"; - - if (parser().attribute_present("s")) - { - cell.format(target_.format(static_cast(std::stoull(parser().attribute("s"))))); - } - - auto has_value = false; - auto value_string = std::string(); - - auto has_formula = false; - auto has_shared_formula = false; - auto formula_value_string = std::string(); - - while (in_element(qn("spreadsheetml", "c"))) - { - auto current_element = expect_start_element(xml::content::mixed); - - if (current_element == qn("spreadsheetml", "v")) // s:ST_Xstring - { - has_value = true; - value_string = read_text(); - } - else if (current_element == qn("spreadsheetml", "f")) // CT_CellFormula - { - has_formula = true; - - if (parser().attribute_present("t")) - { - has_shared_formula = parser().attribute("t") == "shared"; - } - - skip_attributes({"aca", "ref", "dt2D", "dtr", "del1", - "del2", "r1", "r2", "ca", "si", "bx"}); - - formula_value_string = read_text(); - } - else if (current_element == qn("spreadsheetml", "is")) // CT_Rst - { - expect_start_element(qn("spreadsheetml", "t"), xml::content::simple); - has_value = true; - value_string = read_text(); - expect_end_element(qn("spreadsheetml", "t")); - } - else - { - unexpected_element(current_element); - } - - expect_end_element(current_element); - } - - expect_end_element(qn("spreadsheetml", "c")); - - if (has_formula && !has_shared_formula) - { - cell.formula(formula_value_string); - } - - if (has_value) - { - if (type == "str") - { - cell.d_->value_text_ = value_string; - cell.data_type(cell::type::formula_string); - } - else if (type == "inlineStr") - { - cell.d_->value_text_ = value_string; - cell.data_type(cell::type::inline_string); - } - else if (type == "s") - { - cell.d_->value_numeric_ = converter_.deserialise(value_string); - cell.data_type(cell::type::shared_string); - } - else if (type == "b") // boolean - { - cell.value(is_true(value_string)); - } - else if (type == "n") // numeric - { - cell.value(converter_.deserialise(value_string)); - } - else if (!value_string.empty() && value_string[0] == '#') - { - cell.error(value_string); - } - } - - if (!in_element(qn("spreadsheetml", "row"))) - { - expect_end_element(qn("spreadsheetml", "row")); - - if (!in_element(qn("spreadsheetml", "sheetData"))) - { - expect_end_element(qn("spreadsheetml", "sheetData")); - } - } - - return cell; + return cell(streaming_cell_.get()); } void xlsx_consumer::read_worksheet(const std::string &rel_id) @@ -1411,8 +1248,174 @@ xml::parser &xlsx_consumer::parser() bool xlsx_consumer::has_cell() { - return in_element(qn("spreadsheetml", "row")) - || in_element(qn("spreadsheetml", "sheetData")); + auto ws = worksheet(current_worksheet_); + + while (streaming_cell_ // we're not at the end of the file + && !in_element(qn("spreadsheetml", "row"))) // we're at the end of a row, or between rows + { + if (parser().peek() == xml::parser::event_type::end_element + && stack_.back() == qn("spreadsheetml", "row")) + { + // We're at the end of a row. + expect_end_element(qn("spreadsheetml", "row")); + // ... and keep parsing. + } + + if (parser().peek() == xml::parser::event_type::end_element + && stack_.back() == qn("spreadsheetml", "sheetData")) + { + // End of sheet. Mark it by setting streaming_cell_ to nullptr, so we never get here again. + expect_end_element(qn("spreadsheetml", "sheetData")); + streaming_cell_.reset(nullptr); + break; + } + + expect_start_element(qn("spreadsheetml", "row"), xml::content::complex); // CT_Row + auto row_index = static_cast(std::stoul(parser().attribute("r"))); + auto &row_properties = ws.row_properties(row_index); + + if (parser().attribute_present("ht")) + { + row_properties.height = converter_.deserialise(parser().attribute("ht")); + } + + if (parser().attribute_present("customHeight")) + { + row_properties.custom_height = is_true(parser().attribute("customHeight")); + } + + if (parser().attribute_present("hidden") && is_true(parser().attribute("hidden"))) + { + row_properties.hidden = true; + } + + if (parser().attribute_present(qn("x14ac", "dyDescent"))) + { + row_properties.dy_descent = converter_.deserialise(parser().attribute(qn("x14ac", "dyDescent"))); + } + + if (parser().attribute_present("spans")) + { + row_properties.spans = parser().attribute("spans"); + } + + skip_attributes({"customFormat", "s", "customFont", + "outlineLevel", "collapsed", "thickTop", "thickBot", + "ph"}); + } + + if (!streaming_cell_) + { + // We're at the end of the worksheet + return false; + } + + expect_start_element(qn("spreadsheetml", "c"), xml::content::complex); + + assert(streaming_); + auto cell = xlnt::cell(streaming_cell_.get()); + auto reference = cell_reference(parser().attribute("r")); + cell.d_->parent_ = current_worksheet_; + cell.d_->column_ = reference.column_index(); + cell.d_->row_ = reference.row(); + + if (parser().attribute_present("ph")) + { + cell.d_->phonetics_visible_ = parser().attribute("ph"); + } + + auto has_type = parser().attribute_present("t"); + auto type = has_type ? parser().attribute("t") : "n"; + + if (parser().attribute_present("s")) + { + cell.format(target_.format(static_cast(std::stoull(parser().attribute("s"))))); + } + + auto has_value = false; + auto value_string = std::string(); + + auto has_formula = false; + auto has_shared_formula = false; + auto formula_value_string = std::string(); + + while (in_element(qn("spreadsheetml", "c"))) + { + auto current_element = expect_start_element(xml::content::mixed); + + if (current_element == qn("spreadsheetml", "v")) // s:ST_Xstring + { + has_value = true; + value_string = read_text(); + } + else if (current_element == qn("spreadsheetml", "f")) // CT_CellFormula + { + has_formula = true; + + if (parser().attribute_present("t")) + { + has_shared_formula = parser().attribute("t") == "shared"; + } + + skip_attributes({"aca", "ref", "dt2D", "dtr", "del1", + "del2", "r1", "r2", "ca", "si", "bx"}); + + formula_value_string = read_text(); + } + else if (current_element == qn("spreadsheetml", "is")) // CT_Rst + { + expect_start_element(qn("spreadsheetml", "t"), xml::content::simple); + has_value = true; + value_string = read_text(); + expect_end_element(qn("spreadsheetml", "t")); + } + else + { + unexpected_element(current_element); + } + + expect_end_element(current_element); + } + + expect_end_element(qn("spreadsheetml", "c")); + + if (has_formula && !has_shared_formula) + { + cell.formula(formula_value_string); + } + + if (has_value) + { + if (type == "str") + { + cell.d_->value_text_ = value_string; + cell.data_type(cell::type::formula_string); + } + else if (type == "inlineStr") + { + cell.d_->value_text_ = value_string; + cell.data_type(cell::type::inline_string); + } + else if (type == "s") + { + cell.d_->value_numeric_ = converter_.deserialise(value_string); + cell.data_type(cell::type::shared_string); + } + else if (type == "b") // boolean + { + cell.value(is_true(value_string)); + } + else if (type == "n") // numeric + { + cell.value(converter_.deserialise(value_string)); + } + else if (!value_string.empty() && value_string[0] == '#') + { + cell.error(value_string); + } + } + + return true; } std::vector xlsx_consumer::read_relationships(const path &part) diff --git a/source/detail/serialization/xlsx_consumer.hpp b/source/detail/serialization/xlsx_consumer.hpp index c9a987ee..2dbafa01 100644 --- a/source/detail/serialization/xlsx_consumer.hpp +++ b/source/detail/serialization/xlsx_consumer.hpp @@ -413,8 +413,6 @@ private: std::unique_ptr streaming_cell_; - detail::cell_impl *current_cell_; - detail::worksheet_impl *current_worksheet_; number_serialiser converter_; }; diff --git a/tests/data/Issue492_empty_row.xlsx b/tests/data/Issue492_empty_row.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..32b6da5aaee2633288a1b6f8e3bf43fc6d0e4874 GIT binary patch literal 4573 zcmaJ^1z42p5?*p)NnxcqA|VSZp|CE^(y(-QcN`Fw66vlb1zf-a;Ydn|(y1Z}(jYA% zp)`^LcNe_}F6Vk?pTC}Ozjr4fQwDsBz&reWUr0iVQW)xeL45nNfM zX07`Z?^Ur|YPvC>dj+h?FFV>HM(o6tnw0V@vs1UMek4!!eP($dv)&=i4yh{3^;9|v z-h?>uvEG<(p3Ze|jtVQaXsJ)s;>QUX{W^Yo(HS>$qu;h0E~l`Le=kEYT9o&8xh>G1 zl_SB)CHCsGwT2!|_N>inoj}Pw!j|q&4wl9Kb#R=y1D0hsiJ7WYAN3SOvh=oz87etRHwCwk2t#T+>w2N?(9fno6iFJAlf(yMDq!LHnJ^-Np+dzbq24fOk)WRx%NZv{PfKszaz(U%v7!J1>Tb#5$wGmL3Q2C>d2wB|^sH-)IE$!M88qUu_5KGFixzA^79vE)9CX8xkaiLf>6phw09Dwvq? zcm@zmCA}CZYF2NVyf;C8N%eY`v9w-24i+0dh$-6)#&bE`f5V0n^ABrRD|L5QHxFJ5 zH#h7FRY5g_TKFhsRs&?)>&KViGQFuGL=V2fC0KGtq210>f!QOiv@ z)$;yor`J%-bkEGJ|3svPX0ewe`|83EbEJyz8wmWmipWAq9>u8V9XUOfWbIzq7|g0C z97inr`m)nVq&Wh>>!;mf$3MvL%dZ+uDL)i^aYF}5BxJ?;h%ZVPAIHzgk(OC(SIObn zj2aorNlm`+Q_LI*%(e=6)>WZJ(O@>WArSz~#_x zDu)zGP3GmNNC<8fyKu*vMOmKNJFDBiFHHKb*!>W-@$L8os}mN+ zpUIPSl01^DhcWHmXs?uC$y2_Lqp<`X7-26b8$EgugkMBOL@r`bH8Y={`zh;-Vm<3R zU1)Gkk)(xN8Dp#Yl<%>R2Qae=g67OBn!Wk$Z5uZQ0dz{Xw|?-OXjj_%48B>_OAb}Z zS`5hY6?0&JVL{CR@?B7sx?`};XcxexmZASBYfWNzcqgYda>3M=bfcA~bArlC*Oq=Q2OFgfAp@~N)TrM(A!bLxTn0(aI|UDgS) z*sOKwNAzPn=lj=eq5FxAwY!D4!=H8@yuV)fvG8!jAwZ#gl#)AQvKju_!?Ik>3vzct zwgJt`@#f+m!j{$<7dF=aaLwp?RmfZBEM%}CLKf4Te3+(7vO2W6ALLL+ns4XP{-Iz_ zQCXVg@t`H84KX+yS*`B4og!2-lBl=!4F!!6nW${Y0biNtpd8q91-!k4HQlT4Im#1b zSP16&eOSRiP4}?3aJRA6Lb_w^$C~Y#(&L)RNBL%QM=#6A@aYxFDjfp??Kp130?%Uf z4Tl81S5#_mY{hF0j}C;3^Ax;V7$^4*{JkT&N{-^GOxvG#7btJ|rU9O*?nsf@^op0* zzMn1FSLZWYsMM-b7M~-AaU2Odl859&cv6aA^x2@@Up~FyTf(W?uu;?*HQ0#0Jok=r zyN;tgN14{ZD+vYB*1UMFphdUy@QyBmxY$>UAYS*I+$8f|=Pdr*YtHRN(-o{QbdpxY zRvSdv2p_Ar2pWc&L72nkC$gWf@U|-TRZ-jzgnH7X1uXfqmv1{)ht?d=3~L64972k6 zi5efu>od@Yg?KgGm*)IN-d)NJ6b7mh?m%640w+Aw#WN_HeOO;@e~rV-3#|0Atn2~n zB8~Tj3E5pnPPR10XYU@AF7`Td!AZ?@U zqaaLDzQ+3%LCli~!0-1%eY!xbZwqrIzc2v+WWOSa^mVp53Ei@R2_|%4|J72-2~$0B zDVF<01G-#&rrW)$BZVYa${d}ovv?LuAI2-*R%H2_CI|08IGc5eiN7T`PLa9wHA`PD zDm|lz-mR3`{4)AExbHRTkGh9}=%CD9Ztm9+k7_xjT9Sz?vx1*ezP20XN#W?Q@a+W2 z%-xGyX95Y$lGI*bB@=w;LR$XFSbZeHKS(W$w^m zl=g&vcM9Og%i|M&FicE38a8Cot{7Vm6dvbT4vJ8XeL?YcrPs@{p2n5erxGznwr%v` zaABRtlcJ{H1vupgEv0Cv2)!~f*nR_bLoSo|$vhr&bk4@7J0UVu)pus7<>+4Wsq`=? z9w`c5{g5O#E){YKrrS*VCBqpxtcBwl>3mx#FHR44>)KM^>|P5$dlNKorzStJo3dGN zK_#^-pu_5RU1$->+&YApi55ljb`3VMs__V20JfAeReDT;WI=%-_|r%ppze6%B-ox1 zl4BUt!Yq@YC=oE@*4F`RKm@!C#QwoZsM$OVET>IhSw_bJmZ zHV-f60X4gSQsg)014W}H?F8;KSnJ3;RhJ>ML~*J0yl1zFS!Y$718h1U8#wCQy-CU! zHtu!NBQC8)%Ta(E-{n=48GbzGG{1W_ArsL#T?YaQ>pD52h9zj5XRbu^UI%-Ru`w>Yi)G@%RJ0@=*Vk;Uru89}o4ndj>^dWp3Z&MBao%&b#+jH^0&l+%wXV(A~qE_W15@ z5WARiaO{MJYd+z@gIk#kE8soWV9A0DXV8(4VeSm%b(e*SI<4N=Cz2bt21_UaAAB|! zRRFTJ!ub?{4WC(Rz)mdbPJz#6G&#a{JZaz=jv?X66?+taZbCC&*-bccD^`W`R_`RX_d8;@( z!6`UtCD-@xK}(|zNbIl{9aP0S!6E8yZ|_Zu>(@0lvQ2G2EMOQg+r@JnAhxC7=;dj zS;8N+2)3-J<~&QG8S2Z?%)}5LW0xTB@1TDCm52i!wyyY0Vr zb+%J~j|2k>!@d>pU>IaV45tW72Dt={QRjG~Y)>*;}n-#bYrA_wn z^Q(Y>$Wil+cOx4YSG*qU#W`%NN_KKTT1XwLxQVOUYVjhxgd6N)O}ZjmW|^5Bsepk;<` zAc&xUaUD?>*85PFR-vix)+9^YVr!T4Q_6U6vC0ENI-zCY43Ah{gXpAKlj2I-K;%o< z1&%adTE7fULsXQ8nzhc@LAY^AoVfnI4NTti1ox}6i?F$({VF?P!@^9hfp>Oq3!uA9 z8;#r@oT%(|xzrdrD`XNa`Kq@C#YqIV*M@PGG%P=Ib8&?i^3B8C=gRI6GiqN32tc#$bMC;5xtYES1O3AE)vZ)9TJoBj`o_8-~FCO94wzWw1KYPYr+b1rUJcWElsW5D1xZu+1RO`R929&sG;~ zg*_ElOw2KGovpX$H=oT;Yymozc+$T&|64ga>+C<1`mD1t7(), std::string("a")); } + + void test_Issue492_stream_empty_row() + { + xlnt::streaming_workbook_reader wbr; + wbr.open(path_helper::test_file("Issue492_empty_row.xlsx")); + wbr.begin_worksheet("BLS Data Series"); + xlnt_assert(wbr.has_cell()); + xlnt_assert_equals(wbr.read_cell().reference(), "A1"); + xlnt_assert(wbr.has_cell()); + xlnt_assert_equals(wbr.read_cell().reference(), "A2"); + xlnt_assert(wbr.has_cell()); + xlnt_assert_equals(wbr.read_cell().reference(), "A4"); + xlnt_assert(wbr.has_cell()); + xlnt_assert_equals(wbr.read_cell().reference(), "B4"); + xlnt_assert(!wbr.has_cell()); + } }; static serialization_test_suite x; From 4da7183b1cd9e8ad349353365ec12bdb0824a512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=89=91=E6=B3=A2?= <940930034@qq.com> Date: Wed, 12 Aug 2020 16:36:30 +0800 Subject: [PATCH 04/21] Fixed an exception that was thrown when the namespace in the external link is a web address. --- source/packaging/ext_list.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/packaging/ext_list.cpp b/source/packaging/ext_list.cpp index c7b3a75f..2d78e9fd 100644 --- a/source/packaging/ext_list.cpp +++ b/source/packaging/ext_list.cpp @@ -32,7 +32,7 @@ xlnt::uri roundtrip(xml::parser &p, xml::serializer &s) } for (auto &ele : attribs) { - s.attribute(ele.first.string(), ele.second.value); + s.attribute(ele.first, ele.second.value); } break; } From 0ecad78c1d54a3d2eb9046ee39349db1619198d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=89=91=E6=B3=A2?= <940930034@qq.com> Date: Tue, 25 Aug 2020 09:00:22 +0800 Subject: [PATCH 05/21] Fixed an exception thrown when parsing external links. --- source/detail/serialization/xlsx_consumer.cpp | 5 ++++ tests/data/Issue503_external_link.xlsx | Bin 0 -> 19619 bytes tests/workbook/serialization_test_suite.cpp | 24 +++++++++++++----- 3 files changed, 22 insertions(+), 7 deletions(-) create mode 100755 tests/data/Issue503_external_link.xlsx diff --git a/source/detail/serialization/xlsx_consumer.cpp b/source/detail/serialization/xlsx_consumer.cpp index 62d9c418..0fb7092d 100644 --- a/source/detail/serialization/xlsx_consumer.cpp +++ b/source/detail/serialization/xlsx_consumer.cpp @@ -243,6 +243,11 @@ xlnt::detail::Cell parse_cell(xlnt::row_t row_arg, xml::parser *parser) throw xlnt::exception("unexcpected XML parsing event"); } } + // Prevents unhandled exceptions from being triggered. + for (auto &attr : parser->attribute_map()) + { + (void)attr; + } } return c; } diff --git a/tests/data/Issue503_external_link.xlsx b/tests/data/Issue503_external_link.xlsx new file mode 100755 index 0000000000000000000000000000000000000000..d7aea8228ab49031643c7ceab29d0a4b0d9a5b17 GIT binary patch literal 19619 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 literal 0 HcmV?d00001 diff --git a/tests/workbook/serialization_test_suite.cpp b/tests/workbook/serialization_test_suite.cpp index 289e08ca..ddad3713 100644 --- a/tests/workbook/serialization_test_suite.cpp +++ b/tests/workbook/serialization_test_suite.cpp @@ -23,28 +23,28 @@ #include +#include #include #include -#include -#include -#include +#include #include +#include #include #include -#include +#include #include #include #include #include #include +#include #include #include #include -#include #include +#include #include #include -#include #include #include #include @@ -93,6 +93,7 @@ public: register_test(test_load_save_german_locale); register_test(test_Issue445_inline_str_load); register_test(test_Issue445_inline_str_streaming_read); + register_test(test_Issue503_external_link_load); } bool workbook_matches_file(xlnt::workbook &wb, const xlnt::path &file) @@ -714,7 +715,7 @@ public: void test_load_save_german_locale() { - /* std::locale current(std::locale::global(std::locale("de-DE"))); + /* std::locale current(std::locale::global(std::locale("de-DE"))); test_round_trip_rw_custom_heights_widths(); std::locale::global(current);*/ } @@ -736,5 +737,14 @@ public: auto cell = wbr.read_cell(); xlnt_assert_equals(cell.value(), std::string("a")); } + + void test_Issue503_external_link_load() + { + xlnt::workbook wb; + wb.load(path_helper::test_file("Issue503_external_link.xlsx")); + auto ws = wb.active_sheet(); + auto cell = ws.cell("A1"); + xlnt_assert_equals(cell.value(), std::string("WDG_IC_00000003.aut")); + } }; static serialization_test_suite x; From dafdfa3ebb64dc29963f6fce7ba0f15179d470cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=89=91=E6=B3=A2?= <940930034@qq.com> Date: Tue, 25 Aug 2020 13:32:21 +0800 Subject: [PATCH 06/21] Add the function of getting table hidden attributes. --- include/xlnt/workbook/workbook.hpp | 7 +++++++ .../detail/implementations/workbook_impl.hpp | 17 ++++++++++------- source/detail/serialization/xlsx_consumer.cpp | 4 +++- source/workbook/workbook.cpp | 10 ++++++++++ tests/data/16_hidden_sheet.xlsx | Bin 0 -> 9297 bytes tests/worksheet/worksheet_test_suite.cpp | 8 ++++++++ 6 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 tests/data/16_hidden_sheet.xlsx diff --git a/include/xlnt/workbook/workbook.hpp b/include/xlnt/workbook/workbook.hpp index 00ad3710..87be789b 100644 --- a/include/xlnt/workbook/workbook.hpp +++ b/include/xlnt/workbook/workbook.hpp @@ -241,6 +241,13 @@ public: /// const worksheet sheet_by_id(std::size_t id) const; + /// + /// Returns the hidden identifier of the worksheet at the given index. + /// This will throw an exception if index is greater than or equal to the + /// number of sheets in this workbook. + /// + bool sheet_hidden_by_index(std::size_t index) const; + /// /// Returns true if this workbook contains a sheet with the given title. /// diff --git a/source/detail/implementations/workbook_impl.hpp b/source/detail/implementations/workbook_impl.hpp index 710e13e6..07a2e5f3 100644 --- a/source/detail/implementations/workbook_impl.hpp +++ b/source/detail/implementations/workbook_impl.hpp @@ -79,6 +79,7 @@ struct workbook_impl manifest_ = other.manifest_; sheet_title_rel_id_map_ = other.sheet_title_rel_id_map_; + sheet_hidden_ = other.sheet_hidden_; view_ = other.view_; code_name_ = other.code_name_; file_version_ = other.file_version_; @@ -105,6 +106,7 @@ struct workbook_impl && extended_properties_ == other.extended_properties_ && custom_properties_ == other.custom_properties_ && sheet_title_rel_id_map_ == other.sheet_title_rel_id_map_ + && sheet_hidden_ == other.sheet_hidden_ && view_ == other.view_ && code_name_ == other.code_name_ && file_version_ == other.file_version_ @@ -134,16 +136,17 @@ struct workbook_impl std::vector> custom_properties_; std::unordered_map sheet_title_rel_id_map_; + std::vector sheet_hidden_; optional view_; optional code_name_; - struct file_version_t - { - std::string app_name; - std::size_t last_edited; - std::size_t lowest_edited; - std::size_t rup_build; + struct file_version_t + { + std::string app_name; + std::size_t last_edited; + std::size_t lowest_edited; + std::size_t rup_build; bool operator==(const file_version_t& rhs) const { @@ -152,7 +155,7 @@ struct workbook_impl && lowest_edited == rhs.lowest_edited && rup_build == rhs.rup_build; } - }; + }; optional file_version_; optional calculation_properties_; diff --git a/source/detail/serialization/xlsx_consumer.cpp b/source/detail/serialization/xlsx_consumer.cpp index 62d9c418..0a9d1c58 100644 --- a/source/detail/serialization/xlsx_consumer.cpp +++ b/source/detail/serialization/xlsx_consumer.cpp @@ -1883,12 +1883,14 @@ void xlsx_consumer::read_office_document(const std::string &content_type) // CT_ expect_start_element(qn("spreadsheetml", "sheet"), xml::content::simple); auto title = parser().attribute("name"); - skip_attribute("state"); sheet_title_index_map_[title] = index++; sheet_title_id_map_[title] = parser().attribute("sheetId"); target_.d_->sheet_title_rel_id_map_[title] = parser().attribute(qn("r", "id")); + bool hidden = parser().attribute("state", "") == "hidden"; + target_.d_->sheet_hidden_.push_back(hidden); + expect_end_element(qn("spreadsheetml", "sheet")); } } diff --git a/source/workbook/workbook.cpp b/source/workbook/workbook.cpp index 32217224..b281b736 100644 --- a/source/workbook/workbook.cpp +++ b/source/workbook/workbook.cpp @@ -716,6 +716,16 @@ const worksheet workbook::sheet_by_id(std::size_t id) const throw key_not_found(); } +bool workbook::sheet_hidden_by_index(std::size_t index) const +{ + if (index >= d_->sheet_hidden_.size()) + { + throw invalid_parameter(); + } + + return d_->sheet_hidden_.at(index); +} + worksheet workbook::active_sheet() { return sheet_by_index(d_->active_sheet_index_.is_set() ? d_->active_sheet_index_.get() : 0); diff --git a/tests/data/16_hidden_sheet.xlsx b/tests/data/16_hidden_sheet.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b8093eaa1252e3ac96787d4b9fa03efceb365352 GIT binary patch literal 9297 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 literal 0 HcmV?d00001 diff --git a/tests/worksheet/worksheet_test_suite.cpp b/tests/worksheet/worksheet_test_suite.cpp index 0f88e321..64b47da1 100644 --- a/tests/worksheet/worksheet_test_suite.cpp +++ b/tests/worksheet/worksheet_test_suite.cpp @@ -112,6 +112,7 @@ public: register_test(test_delete_columns); register_test(test_insert_too_many); register_test(test_insert_delete_moves_merges); + register_test(test_hidden_sheet); } void test_new_worksheet() @@ -1582,5 +1583,12 @@ public: xlnt_assert_equals(merged, expected); } } + + void test_hidden_sheet() + { + xlnt::workbook wb; + wb.load(path_helper::test_file("16_hidden_sheet.xlsx")); + xlnt_assert_equals(wb.sheet_hidden_by_index(1), true); + } }; static worksheet_test_suite x; From e8dd38d0d6c7ba3b71ad354758b4d86d288b6041 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=89=91=E6=B3=A2?= <940930034@qq.com> Date: Tue, 25 Aug 2020 15:08:20 +0800 Subject: [PATCH 07/21] Fix throwing exception when duplicate shared strings occur. --- include/xlnt/workbook/workbook.hpp | 9 ++------ .../detail/implementations/workbook_impl.hpp | 2 +- source/detail/serialization/xlsx_consumer.cpp | 2 +- source/detail/serialization/xlsx_producer.cpp | 6 ++--- source/workbook/workbook.cpp | 21 ++++++------------ tests/data/Issue494_shared_string.xlsx | Bin 0 -> 15618 bytes tests/workbook/workbook_test_suite.cpp | 10 +++++++++ 7 files changed, 24 insertions(+), 26 deletions(-) create mode 100755 tests/data/Issue494_shared_string.xlsx diff --git a/include/xlnt/workbook/workbook.hpp b/include/xlnt/workbook/workbook.hpp index 00ad3710..275363fb 100644 --- a/include/xlnt/workbook/workbook.hpp +++ b/include/xlnt/workbook/workbook.hpp @@ -760,11 +760,6 @@ public: /// std::size_t add_shared_string(const rich_text &shared, bool allow_duplicates = false); - /// - /// Returns a reference to the shared string ordered by id - /// - const std::map &shared_strings_by_id() const; - /// /// Returns a reference to the shared string related to the specified index /// @@ -774,13 +769,13 @@ public: /// Returns a reference to the shared strings being used by cells /// in this workbook. /// - std::unordered_map &shared_strings(); + std::vector &shared_strings(); /// /// Returns a reference to the shared strings being used by cells /// in this workbook. /// - const std::unordered_map &shared_strings() const; + const std::vector &shared_strings() const; // Thumbnail diff --git a/source/detail/implementations/workbook_impl.hpp b/source/detail/implementations/workbook_impl.hpp index 710e13e6..76308872 100644 --- a/source/detail/implementations/workbook_impl.hpp +++ b/source/detail/implementations/workbook_impl.hpp @@ -118,7 +118,7 @@ struct workbook_impl std::list worksheets_; std::unordered_map shared_strings_ids_; - std::map shared_strings_values_; + std::vector shared_strings_values_; optional stylesheet_; diff --git a/source/detail/serialization/xlsx_consumer.cpp b/source/detail/serialization/xlsx_consumer.cpp index 62d9c418..ede14048 100644 --- a/source/detail/serialization/xlsx_consumer.cpp +++ b/source/detail/serialization/xlsx_consumer.cpp @@ -2088,7 +2088,7 @@ void xlsx_consumer::read_shared_string_table() { expect_start_element(qn("spreadsheetml", "si"), xml::content::complex); auto rt = read_rich_text(qn("spreadsheetml", "si")); - target_.add_shared_string(rt); + target_.add_shared_string(rt, true); expect_end_element(qn("spreadsheetml", "si")); } diff --git a/source/detail/serialization/xlsx_producer.cpp b/source/detail/serialization/xlsx_producer.cpp index e6683a31..db8279af 100644 --- a/source/detail/serialization/xlsx_producer.cpp +++ b/source/detail/serialization/xlsx_producer.cpp @@ -944,12 +944,12 @@ void xlsx_producer::write_shared_string_table(const relationship & /*rel*/) } write_attribute("count", string_count); - write_attribute("uniqueCount", source_.shared_strings_by_id().size()); + write_attribute("uniqueCount", source_.shared_strings().size()); - for (const auto &string : source_.shared_strings_by_id()) + for (const auto &text : source_.shared_strings()) { write_start_element(xmlns, "si"); - write_rich_text(xmlns, string.second); + write_rich_text(xmlns, text); write_end_element(xmlns, "si"); } diff --git a/source/workbook/workbook.cpp b/source/workbook/workbook.cpp index 32217224..11c7afa0 100644 --- a/source/workbook/workbook.cpp +++ b/source/workbook/workbook.cpp @@ -1348,32 +1348,25 @@ const manifest &workbook::manifest() const return d_->manifest_; } -const std::map &workbook::shared_strings_by_id() const -{ - return d_->shared_strings_values_; -} - const rich_text &workbook::shared_strings(std::size_t index) const { - auto it = d_->shared_strings_values_.find(index); - - if (it != d_->shared_strings_values_.end()) + if (index < d_->shared_strings_values_.size()) { - return it->second; + return d_->shared_strings_values_.at(index); } static rich_text empty; return empty; } -std::unordered_map &workbook::shared_strings() +std::vector &workbook::shared_strings() { - return d_->shared_strings_ids_; + return d_->shared_strings_values_; } -const std::unordered_map &workbook::shared_strings() const +const std::vector &workbook::shared_strings() const { - return d_->shared_strings_ids_; + return d_->shared_strings_values_; } std::size_t workbook::add_shared_string(const rich_text &shared, bool allow_duplicates) @@ -1392,7 +1385,7 @@ std::size_t workbook::add_shared_string(const rich_text &shared, bool allow_dupl auto sz = d_->shared_strings_ids_.size(); d_->shared_strings_ids_[shared] = sz; - d_->shared_strings_values_[sz] = shared; + d_->shared_strings_values_.push_back(shared); return sz; } diff --git a/tests/data/Issue494_shared_string.xlsx b/tests/data/Issue494_shared_string.xlsx new file mode 100755 index 0000000000000000000000000000000000000000..87d8a17d927481cddafee66df37a19dbb4cad2eb GIT binary patch literal 15618 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 Date: Tue, 25 Aug 2020 16:40:33 +0800 Subject: [PATCH 08/21] Fix the missing count of fonts and throw an exception. --- source/detail/serialization/xlsx_consumer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/detail/serialization/xlsx_consumer.cpp b/source/detail/serialization/xlsx_consumer.cpp index 62d9c418..2db934e3 100644 --- a/source/detail/serialization/xlsx_consumer.cpp +++ b/source/detail/serialization/xlsx_consumer.cpp @@ -2277,7 +2277,7 @@ void xlsx_consumer::read_stylesheet() else if (current_style_element == qn("spreadsheetml", "fonts")) { auto &fonts = stylesheet.fonts; - auto count = parser().attribute("count"); + auto count = parser().attribute("count", 0); if (parser().attribute_present(qn("x14ac", "knownFonts"))) { @@ -2414,7 +2414,7 @@ void xlsx_consumer::read_stylesheet() if (count != stylesheet.fonts.size()) { - throw xlnt::exception("counts don't match"); + // throw xlnt::exception("counts don't match"); } } else if (current_style_element == qn("spreadsheetml", "numFmts")) From e9a9946856de1cc7e46f172e7a992fb597ad1202 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=89=91=E6=B3=A2?= <940930034@qq.com> Date: Tue, 25 Aug 2020 19:57:07 +0800 Subject: [PATCH 09/21] Fixed multiple cell throw exception. --- source/worksheet/range_reference.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/source/worksheet/range_reference.cpp b/source/worksheet/range_reference.cpp index 490cac55..5f8091ee 100644 --- a/source/worksheet/range_reference.cpp +++ b/source/worksheet/range_reference.cpp @@ -49,7 +49,15 @@ range_reference::range_reference(const char *range_string) range_reference::range_reference(const std::string &range_string) : top_left_("A1"), bottom_right_("A1") { - auto colon_index = range_string.find(':'); + auto colon_index = range_string.find(' '); + + if (colon_index != std::string::npos) + { + // Multiple cell selection is not supported at this time. + return; + } + + colon_index = range_string.find(':'); if (colon_index != std::string::npos) { From a50ec35ded0d2cd8917fd25897e3c4c1b14cb6e3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 12 Sep 2020 17:12:09 +0000 Subject: [PATCH 10/21] Bump node-fetch from 2.6.0 to 2.6.1 Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.6.0 to 2.6.1. - [Release notes](https://github.com/bitinn/node-fetch/releases) - [Changelog](https://github.com/node-fetch/node-fetch/blob/master/docs/CHANGELOG.md) - [Commits](https://github.com/bitinn/node-fetch/compare/v2.6.0...v2.6.1) Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index cfb7b278..b9c40f37 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2211,9 +2211,9 @@ "dev": true }, "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", "dev": true }, "normalize-url": { From 9df7c83ca6bc1df98921430695d15a9b56afdeae Mon Sep 17 00:00:00 2001 From: Emmanuel Pescosta Date: Wed, 15 Apr 2020 11:28:36 +0200 Subject: [PATCH 11/21] worksheet: Add method to check if the worksheet is empty A worksheet is considered empty if it doesn't have any cells. --- include/xlnt/worksheet/worksheet.hpp | 6 ++++++ source/worksheet/worksheet.cpp | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/include/xlnt/worksheet/worksheet.hpp b/include/xlnt/worksheet/worksheet.hpp index b8a87979..969ab0b9 100644 --- a/include/xlnt/worksheet/worksheet.hpp +++ b/include/xlnt/worksheet/worksheet.hpp @@ -770,6 +770,12 @@ public: /// bool has_drawing() const; + /// + /// Returns true if this worksheet is empty. + /// A worksheet is considered empty if it doesn't have any cells. + /// + bool is_empty() const; + private: friend class cell; friend class const_range_iterator; diff --git a/source/worksheet/worksheet.cpp b/source/worksheet/worksheet.cpp index bb7141e2..b9b6fc20 100644 --- a/source/worksheet/worksheet.cpp +++ b/source/worksheet/worksheet.cpp @@ -1335,4 +1335,9 @@ bool worksheet::has_drawing() const return d_->drawing_.is_set(); } +bool worksheet::is_empty() const +{ + return d_->cell_map_.empty(); +} + } // namespace xlnt From 3225f357ddbe9305e6dd4ff61559c4833f7c8ba5 Mon Sep 17 00:00:00 2001 From: Emmanuel Pescosta Date: Wed, 15 Apr 2020 12:30:26 +0200 Subject: [PATCH 12/21] workbook: Throw if index in (const) sheet_by_index is out of range The documentation of (const) sheet_by_index already mentions that invalid_parameter exception will be thrown if the index is out of range, but the implementation was missing. --- source/workbook/workbook.cpp | 5 +++++ tests/workbook/workbook_test_suite.cpp | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/source/workbook/workbook.cpp b/source/workbook/workbook.cpp index 32217224..4335b20d 100644 --- a/source/workbook/workbook.cpp +++ b/source/workbook/workbook.cpp @@ -681,6 +681,11 @@ worksheet workbook::sheet_by_index(std::size_t index) const worksheet workbook::sheet_by_index(std::size_t index) const { + if (index >= d_->worksheets_.size()) + { + throw invalid_parameter(); + } + auto iter = d_->worksheets_.begin(); for (std::size_t i = 0; i < index; ++i, ++iter) diff --git a/tests/workbook/workbook_test_suite.cpp b/tests/workbook/workbook_test_suite.cpp index 1c3ab1b5..e8171e07 100644 --- a/tests/workbook/workbook_test_suite.cpp +++ b/tests/workbook/workbook_test_suite.cpp @@ -49,6 +49,8 @@ public: register_test(test_add_sheet_at_index); register_test(test_get_sheet_by_title); register_test(test_get_sheet_by_title_const); + register_test(test_get_sheet_by_index); + register_test(test_get_sheet_by_index_const); register_test(test_index_operator); register_test(test_contains); register_test(test_iter); @@ -151,6 +153,23 @@ public: xlnt_assert_equals(new_sheet, found_sheet); } + void test_get_sheet_by_index() + { + xlnt::workbook wb; + auto new_sheet = wb.create_sheet(); + xlnt_assert_equals(new_sheet, wb.sheet_by_index(1)); // in range + xlnt_assert_throws(wb.sheet_by_index(2), xlnt::invalid_parameter); // out of range + } + + void test_get_sheet_by_index_const() + { + xlnt::workbook wb; + auto new_sheet = wb.create_sheet(); + const auto &wb_const = wb; + xlnt_assert_equals(new_sheet, wb_const.sheet_by_index(1)); // in range + xlnt_assert_throws(wb_const.sheet_by_index(2), xlnt::invalid_parameter); // out of range + } + void test_index_operator() // test_getitem { xlnt::workbook wb; From a96c2880361bad5edf2352723012018cccd4c140 Mon Sep 17 00:00:00 2001 From: Thomas Fussell Date: Sat, 2 Jan 2021 10:42:21 -0500 Subject: [PATCH 13/21] fix time struct warning on gcc --- source/utils/date.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/utils/date.cpp b/source/utils/date.cpp index 7859a935..96afc161 100644 --- a/source/utils/date.cpp +++ b/source/utils/date.cpp @@ -126,7 +126,7 @@ date date::today() int date::weekday() const { -#ifdef __APPLE__ +#ifndef _MSC_VER std::tm tm{0, 0, 0, day, month - 1, year - 1900, 0, 0, 0, 0, nullptr}; #else std::tm tm{0, 0, 0, day, month - 1, year - 1900, 0, 0, 0}; From ac771ac7e7472cc55c5e8814d90d57c69ff13b9d Mon Sep 17 00:00:00 2001 From: Thomas Fussell Date: Sat, 2 Jan 2021 12:32:51 -0500 Subject: [PATCH 14/21] translate travis to circleci --- .circleci/config.yml | 78 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..7d652a98 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,78 @@ +version: 2.1 + +jobs: + build: + docker: + - image: lycantropos/cmake:3.9.5 + parameters: + benchmarks: + default: "OFF" + type: string + build-type: + default: Release + type: string + coverage: + default: "OFF" + type: string + cxx-ver: + default: "11" + type: string + samples: + default: "OFF" + type: string + static: + default: "ON" + type: string + steps: + - checkout + - run: cmake -D XLNT_CXX_LANG=<< parameters.cxx-ver >> -D STATIC=<< parameters.static >> -D BENCHMARKS=<< parameters.benchmarks >> -D SAMPLES=<< parameters.samples >> -D COVERAGE=<< parameters.coverage >> -D CMAKE_BUILD_TYPE=<< parameters.build-type >> . + - run: cmake --build . -- -j2 + - run: ./tests/xlnt.test + - when: + condition: + equal: [ "ON", << parameters.samples >> ] + steps: + - run: ./samples/sample-decrypt + - run: ./samples/sample-img2xlsx ./samples/data/cafe.jpg img.xlsx + - run: ./samples/sample-documentation + - when: + condition: + equal: [ "ON", << parameters.benchmarks >> ] + steps: + - run: ./benchmarks/benchmark-styles + - run: ./benchmarks/benchmark-writer + - when: + condition: + equal: [ "ON", << parameters.coverage >> ] + steps: + - run: lcov --directory source/CMakeFiles/xlnt.dir --capture --output-file coverage.info --base-directory ../source --no-external --gcov-tool /usr/bin/gcov-6 + - run: lcov --output-file coverage.info --remove coverage.info source/detail/serialization/miniz.cpp + - run: i=$(dirname $(pwd)) + - run: sed -i "s|$i/||" coverage.info + - run: cd .. + - run: coveralls-lcov build/coverage.info + +workflows: + test: + jobs: + - build: + matrix: + parameters: + cxx-ver: + - "11" + - "17" + build-type: + - Release + - Debug + static: + - "ON" + - "OFF" + build: + jobs: + - build: + cxx-ver: "11" + build-type: Debug + static: "ON" + samples: "ON" + benchmarks: "ON" + coverage: "OFF" From e6ecd04265b6eb0690227dfec8d933dd8ab055f9 Mon Sep 17 00:00:00 2001 From: Thomas Fussell Date: Sat, 2 Jan 2021 12:49:36 -0500 Subject: [PATCH 15/21] use smaller image --- .circleci/config.yml | 10 +- .travis.yml | 231 --------------------------------------- samples/data/penguin.jpg | Bin 0 -> 1267 bytes 3 files changed, 6 insertions(+), 235 deletions(-) delete mode 100644 .travis.yml create mode 100644 samples/data/penguin.jpg diff --git a/.circleci/config.yml b/.circleci/config.yml index 7d652a98..366e91af 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -33,7 +33,7 @@ jobs: equal: [ "ON", << parameters.samples >> ] steps: - run: ./samples/sample-decrypt - - run: ./samples/sample-img2xlsx ./samples/data/cafe.jpg img.xlsx + - run: ./samples/sample-img2xlsx ./samples/data/penguin.jpg img.xlsx - run: ./samples/sample-documentation - when: condition: @@ -53,9 +53,10 @@ jobs: - run: coveralls-lcov build/coverage.info workflows: - test: + build: jobs: - build: + name: tests matrix: parameters: cxx-ver: @@ -67,12 +68,13 @@ workflows: static: - "ON" - "OFF" - build: - jobs: - build: + name: samples-benchmarks-coverage cxx-ver: "11" build-type: Debug static: "ON" samples: "ON" benchmarks: "ON" coverage: "OFF" + requires: + - tests \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 46619412..00000000 --- a/.travis.yml +++ /dev/null @@ -1,231 +0,0 @@ -# cpp takes longer -language: minimal -sudo: false -dist: trusty - -git: - depth: false - -notifications: - email: false - -# set up build matrix -matrix: - include: - # ============= GCC ================== - # gcc-5, c++11, release build, dynamic linking - - os: linux - compiler: gcc - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-5 - env: - - CXX_COMPILER=g++-5 - - C_COMPILER=gcc-5 - - CXX_VER=11 - - BUILD_TYPE=Release - - COVERAGE=OFF - - STATIC=OFF - - SAMPLES=OFF - - BENCHMARKS=OFF - - RELEASE=OFF - - # ============= GCC ================== - # gcc-6, c++11, release build, dynamic linking - - os: linux - compiler: gcc - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - CXX_COMPILER=g++-6 - - C_COMPILER=gcc-6 - - CXX_VER=11 - - BUILD_TYPE=Release - - COVERAGE=OFF - - STATIC=OFF - - SAMPLES=OFF - - BENCHMARKS=OFF - - RELEASE=OFF - - # gcc-7, c++14, release build, static linking - - os: linux - compiler: gcc - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-7 - env: - - CXX_COMPILER=g++-7 - - C_COMPILER=gcc-7 - - CXX_VER=14 - - BUILD_TYPE=Release - - COVERAGE=OFF - - STATIC=ON - - SAMPLES=OFF - - BENCHMARKS=OFF - - RELEASE=OFF - - # gcc-8, c++17, release build, static linking, samples + benchmarks compiled and run - - os: linux - compiler: gcc - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-8 - env: - - CXX_COMPILER=g++-8 - - C_COMPILER=gcc-8 - - CXX_VER=17 - - BUILD_TYPE=Release - - COVERAGE=OFF - - STATIC=ON - - SAMPLES=ON - - BENCHMARKS=ON - - RELEASE=ON - - # =========== CLANG ============= - # clang 4, c++11, release build, dynamic linking - - os: linux - compiler: clang - addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-trusty-4.0 - packages: - - clang-4.0 - env: - - CXX_COMPILER=clang++-4.0 - - C_COMPILER=clang-4.0 - - CXX_VER=11 - - BUILD_TYPE=Release - - COVERAGE=OFF - - STATIC=OFF - - SAMPLES=OFF - - BENCHMARKS=OFF - - RELEASE=OFF - - # clang 5, c++14, release build, dynamic linking - - os: linux - compiler: clang - addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-trusty-5.0 - packages: - - clang-5.0 - env: - - CXX_COMPILER=clang++-5.0 - - C_COMPILER=clang-5.0 - - CXX_VER=14 - - BUILD_TYPE=Release - - COVERAGE=OFF - - STATIC=ON - - SAMPLES=OFF - - BENCHMARKS=OFF - - RELEASE=OFF - - # clang 6, c++17, release build, static linking, samples + benchmarks compiled and run - - os: linux - compiler: clang - addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-trusty-6.0 - packages: - - clang-6.0 - env: - - CXX_COMPILER=clang++-6.0 - - C_COMPILER=clang-6.0 - - CXX_VER=17 - - BUILD_TYPE=Release - - COVERAGE=OFF - - STATIC=ON - - SAMPLES=ON - - BENCHMARKS=ON - - RELEASE=ON - - # ============= CODE COVERAGE =============== - # gcc-6, c++11, debug build, static linking, code coverage enabled - - os: linux - compiler: gcc - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - - lcov - env: - - CXX_COMPILER=g++-6 - - C_COMPILER=gcc-6 - - CXX_VER=11 - - BUILD_TYPE=Debug - - COVERAGE=ON - - STATIC=ON - - SAMPLES=OFF - -before_install: - - export CC=${C_COMPILER} - - export CXX=${CXX_COMPILER} - -install: - - | - if [[ "${COVERAGE}" == "ON" ]]; then - gem install coveralls-lcov; - fi - - ${CXX} --version - - cmake --version - -script: - - mkdir build - - cd build - - cmake .. -DXLNT_CXX_LANG=${CXX_VER} -DSTATIC=$STATIC -DBENCHMARKS=$BENCHMARKS -DSAMPLES=$SAMPLES -DCOVERAGE=$COVERAGE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DRELEASE=$RELEASE - - cmake --build . -- -j2 - - ./tests/xlnt.test - - echo "samples" && echo 'travis_fold:start:samples' - - if [[ "${SAMPLES}" == "ON" ]]; then ./samples/sample-decrypt; fi - - if [[ "${SAMPLES}" == "ON" ]]; then ./samples/sample-img2xlsx "../samples/data/cafe.jpg" "img.xlsx"; fi - - if [[ "${SAMPLES}" == "ON" ]]; then ./samples/sample-documentation; fi - - echo 'travis_fold:end:samples' - - echo "benchmarks" && echo 'travis_fold:start:benchmarks' - - if [[ "${BENCHMARKS}" == "ON" ]]; then ./benchmarks/benchmark-styles; fi - - if [[ "${BENCHMARKS}" == "ON" ]]; then ./benchmarks/benchmark-writer; fi - - echo 'travis_fold:end:benchmarks' - - -after_success: - - | - if [[ "${COVERAGE}" == "ON" ]]; then - lcov --directory source/CMakeFiles/xlnt.dir --capture --output-file coverage.info --base-directory ../source --no-external --gcov-tool /usr/bin/gcov-6 - lcov --output-file coverage.info --remove coverage.info source/detail/serialization/miniz.cpp - i=$(dirname $(pwd)) - sed -i "s|$i/||" coverage.info - cd .. - coveralls-lcov build/coverage.info - fi - -deploy: - provider: releases - api_key: - secure: "EJKEQkbmNFyXAJYOro7/wSlxSns4O4RAmht5PCBYuOgEqIbB1+QbQjNZd18KyCkqaHQEvww4hVGMdcFsTFnsznjGo6NnDtiYTdhiREtdUd6ohUD0eHTZ15ZL7mW1XR8HWqvv33piDX40UI/dFn1XYLnWunaLZvF5WPa9bzTsloaYHbjxoRw5S4fd0VyqZ2w2zuezCCRUezDcNGOxbVTbB3moSh+hpjrNkw7YxoPNm48CwGRVeRj28XuhDjobfRtPSZMb6Y+EDUnrIZI1mKvB1bkL8QR2ndBtqlG0BWvmEcdDuiQnraJk3iRIAU5T/ycyRqR2UKcW2Fv0iVp5SL9VuqhcvIUxTsYXzuNOZ3hKiWRTj6ndG+gDBsD1K5YwScZksAImwvj/VGEla9Q044W3PbYV2GUE++8mtiZUaxbkaP+uDFUBR5eXqAkte9mainwJ3eaMJ7Tx1KCqkzKO011nUasWfmBWxRUA8vm44SfzwzVfjXToLQZGe4KYzF2cHaXo2YIC48vE/DYs3VnVvnrCjNDO8Cr3m+lfdulhjIZlg+WymQcxuJs7LVzCW7mBPNnrUNOOrGCGP4f/hFxBLk8/eJDznIAzbW27Z1zAHn+MlbADRBzC0Y7cmme4Zu2W7Wy9NTvzNsKabOH/Fe1TfGetEEf6mZ5g7Q3+oZPJ2raLFD8=" - file_glob: true - file: build/*.tar.gz - skip_cleanup: true - overwite: true - on: - repo: tfussell/xlnt - tags: true diff --git a/samples/data/penguin.jpg b/samples/data/penguin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7bbaac249504cd9222b28fae95f31acd6a9400b4 GIT binary patch literal 1267 zcmex=PfpQEif~-P{hK_8)fr;!& zg(60c6BlwQJ8e8D8g%i4ig8j=6DOCLxP+vXs+zinrk07RnYo3fm9vYho4bdnS8zyZ zSa?KaRB}pcT6#uiR&hybS$RceRdY*gTYE=m*QCi)rcRqaW9F9X@jO*zpr5PhGlvL#L{}KKmz3FSN_2GY7KMEhpi~rdC zsQs<{N29y@ME=Np_`AKUPOnD$N9+UXd?EkpN9())GsxE&)JXr(|M2;6)Uln9SNHlK zUcmlG`1C(6#ufi=MU@|2&+;ei2kRsLo5|l6|DCtTF?(@M{txl$$Nw3){uF#6cg^SCQ=9v6=bJsDADSP(Klq=aXFlsc z#UI)3*KN4-SN`Z=e#|dbVV2KWe=ux+wtjE?hrqYaUemvse>8uy`a>1}4dKW6NBBFe z%$w`e@^6-V{YZU0zxAHg-xdEPDxUpki1?`AxJAEh{?_&*{I|jn*)!H>zHg2f{>saL zWS;GnKjI(Ej)(t9{kZ$^bbE%&JtrCe1ZwWkd zWuKhIER%;^TOO@S$_!Z^)U(2B^HRTTLC(NAtK6nsnd&Mj$NeGap6!2zrnPk^_e<@6 zFvqHGs`#7yhx2cSKjx9&e*f70_Wuk5CHazdXYOwmoBGlGxV=bC>2JLngAbN)xK4wMCDm#3f*KLV<*pgTuQ>~Jh7kgR5L^BU2K9n+; OY8lkjwd}F{|C<2kiv}(L literal 0 HcmV?d00001 From e702e7e68b8dcae2543cfc4ce625e161cd7b959b Mon Sep 17 00:00:00 2001 From: Thomas Fussell Date: Sat, 2 Jan 2021 12:50:27 -0500 Subject: [PATCH 16/21] remove requires --- .circleci/config.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 366e91af..3319b667 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -76,5 +76,3 @@ workflows: samples: "ON" benchmarks: "ON" coverage: "OFF" - requires: - - tests \ No newline at end of file From 263678758c6c60fb410114a0529fd700eb91726a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Jan 2021 20:06:25 +0000 Subject: [PATCH 17/21] Bump ini from 1.3.5 to 1.3.8 Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.8. - [Release notes](https://github.com/isaacs/ini/releases) - [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.8) Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b9c40f37..cb2bb599 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1720,9 +1720,9 @@ "dev": true }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "inquirer": { From 18e82f35d33cf6e24e1e29d082ca2256affb53ec Mon Sep 17 00:00:00 2001 From: Thomas Fussell Date: Sat, 2 Jan 2021 15:20:56 -0500 Subject: [PATCH 18/21] Revert "Shared strings" This reverts commit d6262df55583bd88f7bb402a01685a6dd5b1744e. --- source/detail/serialization/xlsx_consumer.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/source/detail/serialization/xlsx_consumer.cpp b/source/detail/serialization/xlsx_consumer.cpp index 24f81824..12a9cb73 100644 --- a/source/detail/serialization/xlsx_consumer.cpp +++ b/source/detail/serialization/xlsx_consumer.cpp @@ -2098,15 +2098,13 @@ void xlsx_consumer::read_shared_string_table() { expect_start_element(qn("spreadsheetml", "si"), xml::content::complex); auto rt = read_rich_text(qn("spreadsheetml", "si")); - // by reading in it can happen we have similar strings from modified excel worksheets - // so allow to add duplicates - target_.add_shared_string(rt, true); + target_.add_shared_string(rt); expect_end_element(qn("spreadsheetml", "si")); } expect_end_element(qn("spreadsheetml", "sst")); - if (has_unique_count && unique_count != target_.shared_strings_by_id().size()) + if (has_unique_count && unique_count != target_.shared_strings().size()) { throw invalid_file("sizes don't match"); } From c5d449915f6c992255dd4291358ad01ee22c07e8 Mon Sep 17 00:00:00 2001 From: Thomas Fussell Date: Sat, 2 Jan 2021 15:28:14 -0500 Subject: [PATCH 19/21] fix shared string handling --- source/detail/serialization/xlsx_consumer.cpp | 2 +- source/workbook/workbook.cpp | 12 ++---------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/source/detail/serialization/xlsx_consumer.cpp b/source/detail/serialization/xlsx_consumer.cpp index 12a9cb73..4b21eacf 100644 --- a/source/detail/serialization/xlsx_consumer.cpp +++ b/source/detail/serialization/xlsx_consumer.cpp @@ -2098,7 +2098,7 @@ void xlsx_consumer::read_shared_string_table() { expect_start_element(qn("spreadsheetml", "si"), xml::content::complex); auto rt = read_rich_text(qn("spreadsheetml", "si")); - target_.add_shared_string(rt); + target_.add_shared_string(rt, true); expect_end_element(qn("spreadsheetml", "si")); } diff --git a/source/workbook/workbook.cpp b/source/workbook/workbook.cpp index d497c0d2..fcdb6a13 100644 --- a/source/workbook/workbook.cpp +++ b/source/workbook/workbook.cpp @@ -1398,17 +1398,9 @@ std::size_t workbook::add_shared_string(const rich_text &shared, bool allow_dupl } } - // it can happen that similar strings are more then onetime in the shared stringtable (Excel bugfix?) - // shared_strings_values map should start on position 0 - auto sz = d_->shared_strings_values_.size(); - if (d_->shared_strings_values_.count(sz) > 0) - { - // something went wrong! - throw invalid_file("Error in shared string table!"); - } - - d_->shared_strings_values_[sz] = shared; + auto sz = d_->shared_strings_ids_.size(); d_->shared_strings_ids_[shared] = sz; + d_->shared_strings_values_.push_back(shared); return sz; } From 0f76a282cafab627abfd45083b76dd22d09c9e65 Mon Sep 17 00:00:00 2001 From: Thomas Fussell Date: Sat, 2 Jan 2021 15:36:08 -0500 Subject: [PATCH 20/21] update npm deps --- package-lock.json | 1849 +++++++++++++-------------------------------- package.json | 4 +- 2 files changed, 527 insertions(+), 1326 deletions(-) diff --git a/package-lock.json b/package-lock.json index cb2bb599..3ad9c082 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,27 +5,27 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "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.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/helper-validator-identifier": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", - "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", + "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 }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "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.9.0", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -82,579 +82,195 @@ } } }, - "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, "@iarna/toml": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.3.tgz", - "integrity": "sha512-FmuxfCuolpLl0AnQ2NHSzoUKWEJDFl63qXjzdoWBVyFCXzMGm1spBzk7LeHNoVCiWCF7mRVms9e6jEV9+MoPbg==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", "dev": true }, "@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "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.3", + "@nodelib/fs.stat": "2.0.4", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "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.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "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.3", + "@nodelib/fs.scandir": "2.1.4", "fastq": "^1.6.0" } }, "@octokit/auth-token": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.0.tgz", - "integrity": "sha512-eoOVMjILna7FVQf96iWc3+ZtE/ZT6y8ob8ZzcqKY1ibSQCnu4O/B7pJvzMx5cyZ/RjAff6DAdEb0O0Cjcxidkg==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.4.tgz", + "integrity": "sha512-LNfGu3Ro9uFAYh10MUZVaT7X2CnNm2C8IDQmabx+3DygYIQjs9FwzFAHN/0t6mu5HEPhxcb1XOuxdpY82vCg2Q==", "dev": true, "requires": { - "@octokit/types": "^2.0.0" + "@octokit/types": "^6.0.0" } }, "@octokit/core": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-2.4.2.tgz", - "integrity": "sha512-fUx/Qt774cgiPhb3HRKfdl6iufVL/ltECkwkCg373I4lIPYvAPY4cbidVZqyVqHI+ThAIlFlTW8FT4QHChv3Sg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.2.4.tgz", + "integrity": "sha512-d9dTsqdePBqOn7aGkyRFe7pQpCXdibSJ5SFnrTr0axevObZrpz3qkWm7t/NjYv5a66z6vhfteriaq4FRz3e0Qg==", "dev": true, "requires": { - "@octokit/auth-token": "^2.4.0", - "@octokit/graphql": "^4.3.1", - "@octokit/request": "^5.3.1", - "@octokit/types": "^2.0.0", + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.4.12", + "@octokit/types": "^6.0.3", "before-after-hook": "^2.1.0", - "universal-user-agent": "^5.0.0" + "universal-user-agent": "^6.0.0" } }, "@octokit/endpoint": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.5.3.tgz", - "integrity": "sha512-EzKwkwcxeegYYah5ukEeAI/gYRLv2Y9U5PpIsseGSFDk+G3RbipQGBs8GuYS1TLCtQaqoO66+aQGtITPalxsNQ==", + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.10.tgz", + "integrity": "sha512-9+Xef8nT7OKZglfkOMm7IL6VwxXUQyR7DUSU0LH/F7VNqs8vyd7es5pTfz9E7DwUIx7R3pGscxu1EBhYljyu7Q==", "dev": true, "requires": { - "@octokit/types": "^2.0.0", - "is-plain-object": "^3.0.0", - "universal-user-agent": "^5.0.0" + "@octokit/types": "^6.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" } }, "@octokit/graphql": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.3.1.tgz", - "integrity": "sha512-hCdTjfvrK+ilU2keAdqNBWOk+gm1kai1ZcdjRfB30oA3/T6n53UVJb7w0L5cR3/rhU91xT3HSqCd+qbvH06yxA==", + "version": "4.5.8", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.5.8.tgz", + "integrity": "sha512-WnCtNXWOrupfPJgXe+vSmprZJUr0VIu14G58PMlkWGj3cH+KLZEfKMmbUQ6C3Wwx6fdhzVW1CD5RTnBdUHxhhA==", "dev": true, "requires": { "@octokit/request": "^5.3.0", - "@octokit/types": "^2.0.0", - "universal-user-agent": "^4.0.0" + "@octokit/types": "^6.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-2.0.1.tgz", + "integrity": "sha512-9AuC04PUnZrjoLiw3uPtwGh9FE4Q3rTqs51oNlQ0rkwgE8ftYsOC+lsrQyvCvWm85smBbSc0FNRKKumvGyb44Q==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.6.2.tgz", + "integrity": "sha512-3Dy7/YZAwdOaRpGQoNHPeT0VU1fYLpIUdPyvR37IyFLgd6XSij4j9V/xN/+eSjF2KKvmfIulEh9LF1tRPjIiDA==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.1" + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz", + "integrity": "sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg==", + "dev": true + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.2.1.tgz", + "integrity": "sha512-QyFr4Bv807Pt1DXZOC5a7L5aFdrwz71UHTYoHVajYV5hsqffWm8FUl9+O7nxRu5PDMtB/IKrhFqTmdBTK5cx+A==", + "dev": true, + "requires": { + "@octokit/types": "^5.5.0", + "deprecation": "^2.3.1" }, "dependencies": { - "universal-user-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", - "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", + "@octokit/types": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz", + "integrity": "sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ==", "dev": true, "requires": { - "os-name": "^3.1.0" + "@types/node": ">= 8" } } } }, - "@octokit/plugin-paginate-rest": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.0.2.tgz", - "integrity": "sha512-HzODcSUt9mjErly26TlTOGZrhf9bmF/FEDQ2zln1izhgmIV6ulsjsHmgmR4VZ0wzVr/m52Eb6U2XuyS8fkcR1A==", - "dev": true, - "requires": { - "@octokit/types": "^2.0.1" - } - }, - "@octokit/plugin-request-log": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz", - "integrity": "sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw==", - "dev": true - }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-3.3.1.tgz", - "integrity": "sha512-iLAXPLWBZaP6ocy1GFfZUCzyN4cwg3y2JE6yZjQo0zLE3UaewC3TI68/TnS4ilyhXDxh81Jr1qwPN1AqTp8t3w==", - "dev": true, - "requires": { - "@octokit/types": "^2.0.1", - "deprecation": "^2.3.1" - } - }, "@octokit/request": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.3.2.tgz", - "integrity": "sha512-7NPJpg19wVQy1cs2xqXjjRq/RmtSomja/VSWnptfYwuBxLdbYh2UjhGi0Wx7B1v5Iw5GKhfFDQL7jM7SSp7K2g==", + "version": "5.4.12", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.12.tgz", + "integrity": "sha512-MvWYdxengUWTGFpfpefBBpVmmEYfkwMoxonIB3sUGp5rhdgwjXL1ejo6JbgzG/QD9B/NYt/9cJX1pxXeSIUCkg==", "dev": true, "requires": { - "@octokit/endpoint": "^5.5.0", - "@octokit/request-error": "^1.0.1", - "@octokit/types": "^2.0.0", + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.0.0", + "@octokit/types": "^6.0.3", "deprecation": "^2.0.0", - "is-plain-object": "^3.0.0", - "node-fetch": "^2.3.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", "once": "^1.4.0", - "universal-user-agent": "^5.0.0" + "universal-user-agent": "^6.0.0" } }, "@octokit/request-error": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", - "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.4.tgz", + "integrity": "sha512-LjkSiTbsxIErBiRh5wSZvpZqT4t0/c9+4dOe0PII+6jXR+oj/h66s7E4a/MghV7iT8W9ffoQ5Skoxzs96+gBPA==", "dev": true, "requires": { - "@octokit/types": "^2.0.0", + "@octokit/types": "^6.0.0", "deprecation": "^2.0.0", "once": "^1.4.0" } }, "@octokit/rest": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-17.1.0.tgz", - "integrity": "sha512-L5YtpxHZSHZCh2xETbzxz8clBGmcpT+5e78JLZQ+VfuHrHJ1J/r+R2PGwKHwClUEECTeWFMMdAtIik+OCkANBg==", + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.0.9.tgz", + "integrity": "sha512-CC5+cIx974Ygx9lQNfUn7/oXDQ9kqGiKUC6j1A9bAVZZ7aoTF8K6yxu0pQhQrLBwSl92J6Z3iVDhGhGFgISCZg==", "dev": true, "requires": { - "@octokit/core": "^2.4.0", - "@octokit/plugin-paginate-rest": "^2.0.0", + "@octokit/core": "^3.0.0", + "@octokit/plugin-paginate-rest": "^2.2.0", "@octokit/plugin-request-log": "^1.0.0", - "@octokit/plugin-rest-endpoint-methods": "^3.3.0" + "@octokit/plugin-rest-endpoint-methods": "4.2.1" } }, "@octokit/types": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.5.0.tgz", - "integrity": "sha512-KEnLwOfdXzxPNL34fj508bhi9Z9cStyN7qY1kOfVahmqtAfrWw6Oq3P4R+dtsg0lYtZdWBpUrS/Ixmd5YILSww==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.1.2.tgz", + "integrity": "sha512-LPCpcLbcky7fWfHCTuc7tMiSHFpFlrThJqVdaHgowBTMS0ijlZFfonQC/C1PrZOjD4xRCYgBqH9yttEATGE/nw==", "dev": true, "requires": { + "@octokit/openapi-types": "^2.0.1", "@types/node": ">= 8" } }, "@release-it/bumper": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@release-it/bumper/-/bumper-1.1.0.tgz", - "integrity": "sha512-TThpeghaMLfcHv1ipsyHKgSl1J5OEHU08kM6mVieGLiUbyFfztd+yeqH/QhV94IwX4O+aPjvbVtWpj0c7/pDkw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@release-it/bumper/-/bumper-2.0.0.tgz", + "integrity": "sha512-r8JeyuQfonY9g9CJjBcG1PrGZmpHIccbDb3TFyfTPknxFHVanE2gMGYijncE259zZ/oCo+u9fRpx0WkiRJxhtw==", "dev": true, "requires": { + "@iarna/toml": "^2.2.5", "detect-indent": "^6.0.0", - "js-yaml": "^3.13.1", + "fast-glob": "^3.2.4", + "ini": "^1.3.5", + "js-yaml": "^3.14.0", "lodash.castarray": "^4.4.0", "lodash.get": "^4.4.2", "lodash.set": "^4.3.2", - "mock-fs": "^4.10.1", - "release-it": "^12.4.2" - }, - "dependencies": { - "@octokit/plugin-paginate-rest": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", - "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", - "dev": true, - "requires": { - "@octokit/types": "^2.0.1" - } - }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", - "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", - "dev": true, - "requires": { - "@octokit/types": "^2.0.1", - "deprecation": "^2.3.1" - } - }, - "@octokit/rest": { - "version": "16.43.1", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.1.tgz", - "integrity": "sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw==", - "dev": true, - "requires": { - "@octokit/auth-token": "^2.4.0", - "@octokit/plugin-paginate-rest": "^1.1.1", - "@octokit/plugin-request-log": "^1.0.0", - "@octokit/plugin-rest-endpoint-methods": "2.4.0", - "@octokit/request": "^5.2.0", - "@octokit/request-error": "^1.0.2", - "atob-lite": "^2.0.0", - "before-after-hook": "^2.0.0", - "btoa-lite": "^1.0.0", - "deprecation": "^2.0.0", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2", - "lodash.uniq": "^4.5.0", - "octokit-pagination-methods": "^1.1.0", - "once": "^1.4.0", - "universal-user-agent": "^4.0.0" - } - }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "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" - } - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "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-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^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 - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "inquirer": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", - "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "dependencies": { - "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" - } - }, - "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" - } - } - } - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", - "dev": true - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "release-it": { - "version": "12.6.3", - "resolved": "https://registry.npmjs.org/release-it/-/release-it-12.6.3.tgz", - "integrity": "sha512-F1ObTKC/ug1RJpLE/vyxQWwAdfJ7fwsmOcOefo8PGCc7YzqPUOkS2P8+UYr01yt5v4SHliL0Ekg+FU2fzEFIBg==", - "dev": true, - "requires": { - "@iarna/toml": "2.2.3", - "@octokit/rest": "16.43.1", - "any-shell-escape": "0.1.1", - "async-retry": "1.3.1", - "chalk": "3.0.0", - "cosmiconfig": "5.2.1", - "debug": "4.1.1", - "deprecated-obj": "1.0.1", - "detect-repo-changelog": "1.0.1", - "find-up": "4.1.0", - "form-data": "3.0.0", - "git-url-parse": "11.1.2", - "globby": "10.0.2", - "got": "9.6.0", - "import-cwd": "3.0.0", - "inquirer": "7.0.4", - "is-ci": "2.0.0", - "lodash": "4.17.15", - "mime-types": "2.1.26", - "ora": "4.0.3", - "os-name": "3.1.0", - "semver": "7.1.3", - "shelljs": "0.8.3", - "supports-color": "7.1.0", - "update-notifier": "4.1.0", - "url-join": "4.0.1", - "uuid": "7.0.1", - "window-size": "1.1.1", - "yargs-parser": "17.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.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" - } - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, - "universal-user-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", - "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", - "dev": true, - "requires": { - "os-name": "^3.1.0" - } - }, - "uuid": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.1.tgz", - "integrity": "sha512-yqjRXZzSJm9Dbl84H2VDHpM3zMjzSJQ+hn6C4zqd5ilW+7P4ZmLEEqwho9LjP+tGuZlF4xrHQXT0h9QZUS/pWA==", - "dev": true - }, - "yargs-parser": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-17.0.0.tgz", - "integrity": "sha512-Fl4RBJThsWeJl3cRZeGuolcuH78/foVUAYIUpKn8rkCnjn23ilZvJyEZJjnlzoG/+EJKPb1RggD4xS/Jie2nxg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } + "mock-fs": "^4.13.0" } }, "@sindresorhus/is": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-2.1.0.tgz", - "integrity": "sha512-lXKXfypKo644k4Da4yXkPCrwcvn6SlUW2X2zFbuflKHNjf0w9htru01bo26uMhleMXsDmnZ12eJLdrAZa9MANg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz", + "integrity": "sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==", "dev": true }, "@szmarczak/http-timer": { @@ -678,29 +294,6 @@ "@types/responselike": "*" } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "dev": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, "@types/http-cache-semantics": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", @@ -716,16 +309,10 @@ "@types/node": "*" } }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, "@types/node": { - "version": "13.9.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.2.tgz", - "integrity": "sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg==", + "version": "14.14.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.19.tgz", + "integrity": "sha512-4nhBPStMK04rruRVtVc6cDqhu7S9GZai0fpXgPXrFpcPX6Xul8xnrjSdGB4KPBVYG/R5+fXWdCM8qBoiULWGPQ==", "dev": true }, "@types/parse-json": { @@ -799,14 +386,6 @@ "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": { @@ -816,21 +395,14 @@ "dev": true }, "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, - "any-shell-escape": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/any-shell-escape/-/any-shell-escape-0.1.1.tgz", - "integrity": "sha1-1Vq5ciRMcaml4asIefML8RCAaVk=", - "dev": true - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -861,12 +433,6 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "atob-lite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", - "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", - "dev": true - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -895,6 +461,16 @@ "widest-line": "^3.1.0" }, "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", @@ -922,21 +498,11 @@ "fill-range": "^7.0.1" } }, - "btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", - "dev": true - }, "cacheable-lookup": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-2.0.1.tgz", - "integrity": "sha512-EMMbsiOTcdngM/K6gV/OxF2x0t07+vMOWxZNSCRQMjO2MY2nhZQ6OYhOOpyQrbhqsgtvKGI7hcq6xjnA92USjg==", - "dev": true, - "requires": { - "@types/keyv": "^3.1.1", - "keyv": "^4.0.0" - } + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true }, "cacheable-request": { "version": "7.0.1", @@ -953,15 +519,6 @@ "responselike": "^2.0.0" }, "dependencies": { - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, "normalize-url": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", @@ -970,32 +527,6 @@ } } }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - } - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1009,21 +540,15 @@ "dev": true }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "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" } }, - "changelog-filename-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/changelog-filename-regex/-/changelog-filename-regex-1.1.2.tgz", - "integrity": "sha512-kpOfKlZ9x2UpeC4at6FAXHLKfi/JEUqUqkPCb1JUCa5FnNbJIzOHRM9RfeQ1QDcpj+Gxuc/UoHqASgmEeFDejQ==", - "dev": true - }, "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", @@ -1037,9 +562,9 @@ "dev": true }, "cli-boxes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", - "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", "dev": true }, "cli-cursor": { @@ -1052,15 +577,15 @@ } }, "cli-spinners": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz", - "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==", "dev": true }, "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "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": { @@ -1076,14 +601,6 @@ "dev": true, "requires": { "mimic-response": "^1.0.0" - }, - "dependencies": { - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - } } }, "color-convert": { @@ -1131,37 +648,27 @@ } }, "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", "dev": true, "requires": { "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", + "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", - "yaml": "^1.7.2" + "yaml": "^1.10.0" } }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "crypto-random-string": { @@ -1171,27 +678,29 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, "decompress-response": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-5.0.0.tgz", - "integrity": "sha512-TLZWWybuxWgoW7Lykv+gq9xvzOsUjQ9tF09Tj6NSTYGMTCHNXzrPnD6Hi+TgZq19PyTAGH4Ll/NIM/eTGglnMw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "requires": { - "mimic-response": "^2.0.0" + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + } } }, "deep-extend": { @@ -1215,15 +724,6 @@ "integrity": "sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==", "dev": true }, - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1231,13 +731,13 @@ "dev": true }, "deprecated-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deprecated-obj/-/deprecated-obj-1.0.1.tgz", - "integrity": "sha512-igs766xNtF7Fv/R//gT644e6dr+bT6kJrg+qyJA9affCyvf70UUNKIUIMUSROBg1sPUrBnENPsDdDHcBLI5wFQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/deprecated-obj/-/deprecated-obj-2.0.0.tgz", + "integrity": "sha512-CkdywZC2rJ8RGh+y3MM1fw1EJ4oO/oNExGbRFv0AQoMS+faTd3nO7slYjkj/6t8OnIMUE+wxh6G97YHhK1ytrw==", "dev": true, "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.11" + "flat": "^5.0.2", + "lodash": "^4.17.20" } }, "deprecation": { @@ -1252,18 +752,6 @@ "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", "dev": true }, - "detect-repo-changelog": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/detect-repo-changelog/-/detect-repo-changelog-1.0.1.tgz", - "integrity": "sha1-whCMu/CWTae8B0ZFtq0dO4CmvW0=", - "dev": true, - "requires": { - "changelog-filename-regex": "^1.1.0", - "is-regular-file": "^1.0.1", - "lodash.find": "^4.6.0", - "pify": "^2.3.0" - } - }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -1274,9 +762,9 @@ } }, "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "requires": { "is-obj": "^2.0.0" @@ -1331,9 +819,9 @@ "dev": true }, "execa": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.0.tgz", - "integrity": "sha512-JbDUxwV3BoT5ZVXQrSVbAiaXhXUkIwvbhPIwZ0N13kX+5yCzOhUNdocxB/UQRuYOHRYYwAxKYwJYc0T4D12pDA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, "requires": { "cross-spawn": "^7.0.0", @@ -1345,73 +833,6 @@ "onetime": "^5.1.0", "signal-exit": "^3.0.2", "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } } }, "external-editor": { @@ -1426,9 +847,9 @@ } }, "fast-glob": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", - "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "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", @@ -1440,9 +861,9 @@ } }, "fastq": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.1.tgz", - "integrity": "sha512-mpIH5sKYueh3YyeJwqtVo8sORi0CgtmkVbK6kZStpQlZBYQuTzG2CZ7idSiJuA7bY0SFCWUc5WIs+oYumGCQNw==", + "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" @@ -1467,23 +888,20 @@ } }, "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - } + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true }, "form-data": { "version": "3.0.0", @@ -1502,19 +920,25 @@ "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 + }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "requires": { "pump": "^3.0.0" } }, "git-up": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.1.tgz", - "integrity": "sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.2.tgz", + "integrity": "sha512-kbuvus1dWQB2sSW4cbfTeGpCMd8ge9jx9RKnhXhuJ7tnvT+NIrTVfYZxjtflZddQYcmdOTlkAcjmx7bor+15AQ==", "dev": true, "requires": { "is-ssh": "^1.3.0", @@ -1522,9 +946,9 @@ } }, "git-url-parse": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.1.2.tgz", - "integrity": "sha512-gZeLVGY8QVKMIkckncX+iCq2/L8PlwncvDFKiWkBn9EtCfYDbliRTTp6qzyQ1VMdITUfq7293zDzfpjdiGASSQ==", + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.4.0.tgz", + "integrity": "sha512-KlIa5jvMYLjXMQXkqpFzobsyD/V2K5DRHl5OAf+6oDFPlPLxrGDVQlIdI63c4/Kt6kai4kALENSALlzTGST3GQ==", "dev": true, "requires": { "git-up": "^4.0.0" @@ -1545,27 +969,35 @@ } }, "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "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" } }, "global-dirs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", - "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", "dev": true, "requires": { - "ini": "^1.3.5" + "ini": "1.3.7" + }, + "dependencies": { + "ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "dev": true + } } }, "globby": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.0.tgz", - "integrity": "sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -1577,45 +1009,39 @@ } }, "got": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-10.6.0.tgz", - "integrity": "sha512-3LIdJNTdCFbbJc+h/EH0V5lpNpbJ6Bfwykk21lcQvQsEcrzdi/ltCyQehFHLzJ/ka0UMH4Slg0hkYvAZN9qUDg==", + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.0.tgz", + "integrity": "sha512-k9noyoIIY9EejuhaBNLyZ31D5328LeqnyPNXJQb2XlJZcKakLqN5m6O/ikhq/0lw56kUYS54fVm+D1x57YC9oQ==", "dev": true, "requires": { - "@sindresorhus/is": "^2.0.0", - "@szmarczak/http-timer": "^4.0.0", + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", "@types/cacheable-request": "^6.0.1", - "cacheable-lookup": "^2.0.0", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", "cacheable-request": "^7.0.1", - "decompress-response": "^5.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^5.0.0", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", "lowercase-keys": "^2.0.0", - "mimic-response": "^2.1.0", "p-cancelable": "^2.0.0", - "p-event": "^4.0.0", - "responselike": "^2.0.0", - "to-readable-stream": "^2.0.0", - "type-fest": "^0.10.0" - }, - "dependencies": { - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - } + "responselike": "^2.0.0" } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "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-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1634,6 +1060,16 @@ "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", "dev": true }, + "http2-wrapper": { + "version": "1.0.0-beta.5.2", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz", + "integrity": "sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, "human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", @@ -1650,9 +1086,9 @@ } }, "ignore": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", - "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, "import-cwd": { @@ -1665,9 +1101,9 @@ } }, "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "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", @@ -1726,53 +1162,38 @@ "dev": true }, "inquirer": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", - "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "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": "^3.0.0", + "chalk": "^4.1.0", "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", + "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", - "lodash": "^4.17.15", + "lodash": "^4.17.19", "mute-stream": "0.0.8", "run-async": "^2.4.0", - "rxjs": "^6.5.3", + "rxjs": "^6.6.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" } }, "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, "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": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", - "dev": true - }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -1782,32 +1203,15 @@ "ci-info": "^2.0.0" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "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": { - "kind-of": "^6.0.0" + "has": "^1.0.3" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "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-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1830,9 +1234,9 @@ } }, "is-installed-globally": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.1.tgz", - "integrity": "sha512-oiEcGoQbGc+3/iijAijrK2qFpkNoNjsHOm/5V5iaeydyrS/hnwaRCEgH5cpW0P3T1lSjV5piB7S5b5lEugNLhg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", "dev": true, "requires": { "global-dirs": "^2.0.1", @@ -1846,9 +1250,9 @@ "dev": true }, "is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", "dev": true }, "is-number": { @@ -1870,39 +1274,24 @@ "dev": true }, "is-plain-object": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", - "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", - "dev": true, - "requires": { - "isobject": "^4.0.0" - } - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-regular-file": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regular-file/-/is-regular-file-1.1.1.tgz", - "integrity": "sha512-+1U3MZrVwC4HM6VUKk3L5fiHtNd2d9kayzEJhmQ+B+uIBPE/p8Fy8QVdkx0HIr3o9J5TOKJY40eI5GfTfBqbdA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true }, "is-ssh": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.1.tgz", - "integrity": "sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.2.tgz", + "integrity": "sha512-elEw0/0c2UscLrNG+OAorbP539E3rhliKPg+hDMWN9VwrDXfYK+4PBEykDPfxlYYtQvl84TascnQyobfQLHEhQ==", "dev": true, "requires": { "protocols": "^1.1.0" } }, "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, "is-typedarray": { @@ -1923,12 +1312,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isobject": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", - "dev": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -1936,9 +1319,9 @@ "dev": true }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "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", @@ -1951,27 +1334,21 @@ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "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 }, "keyv": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.0.tgz", - "integrity": "sha512-U7ioE8AimvRVLfw4LffyOIRhL2xVgmE8T22L6i0BucSnBUyv4w+I7VN/zVZwRKHOI6ZRUcdMdWHQ8KSUvGpEog==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", + "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", "dev": true, "requires": { "json-buffer": "3.0.1" } }, - "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 - }, "latest-version": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", @@ -1988,18 +1365,18 @@ "dev": true }, "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true }, "lodash.castarray": { @@ -2008,12 +1385,6 @@ "integrity": "sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU=", "dev": true }, - "lodash.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=", - "dev": true - }, "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", @@ -2026,71 +1397,13 @@ "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", "dev": true }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "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": "^2.4.2" - }, - "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" - } - }, - "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-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "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" - } - } + "chalk": "^4.0.0" } }, "lowercase-keys": { @@ -2100,15 +1413,15 @@ "dev": true }, "macos-release": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", - "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz", + "integrity": "sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==", "dev": true }, "make-dir": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" @@ -2129,9 +1442,9 @@ "dev": true }, "merge2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, "micromatch": { @@ -2145,18 +1458,18 @@ } }, "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", "dev": true }, "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "dev": true, "requires": { - "mime-db": "1.43.0" + "mime-db": "1.44.0" } }, "mimic-fn": { @@ -2166,9 +1479,9 @@ "dev": true }, "mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true }, "minimatch": { @@ -2187,9 +1500,9 @@ "dev": true }, "mock-fs": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.11.0.tgz", - "integrity": "sha512-Yp4o3/ZA15wsXqJTT+R+9w2AYIkD1i80Lds47wDbuUhOvQvm+O2EfjFZSz0pMgZZSPHRhGxgcd2+GL4+jZMtdw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.13.0.tgz", + "integrity": "sha512-DD0vOdofJdoaRNtnWcrXe6RQbpHkPPmtqGq14uRX0F8ZKJ5nv89CVTYl/BZdppDxBDaV0hl75htg3abpEWlPZA==", "dev": true }, "ms": { @@ -2204,12 +1517,6 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "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": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", @@ -2223,20 +1530,14 @@ "dev": true }, "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { - "path-key": "^2.0.0" + "path-key": "^3.0.0" } }, - "octokit-pagination-methods": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", - "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", - "dev": true - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2247,38 +1548,38 @@ } }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "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" } }, "ora": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.3.tgz", - "integrity": "sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.1.0.tgz", + "integrity": "sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w==", "dev": true, "requires": { - "chalk": "^3.0.0", + "chalk": "^4.1.0", "cli-cursor": "^3.1.0", - "cli-spinners": "^2.2.0", + "cli-spinners": "^2.4.0", "is-interactive": "^1.0.0", - "log-symbols": "^3.0.0", + "log-symbols": "^4.0.0", "mute-stream": "0.0.8", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" } }, "os-name": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", - "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.0.tgz", + "integrity": "sha512-caABzDdJMbtykt7GmSogEat3faTKQhmZf0BS5l/pZGmP0vPWQjXWqOhbLyK+b6j2/DQPmEvYdzLXJXXLJNVDNg==", "dev": true, "requires": { "macos-release": "^2.2.0", - "windows-release": "^3.1.0" + "windows-release": "^4.0.0" } }, "os-tmpdir": { @@ -2293,54 +1594,24 @@ "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==", "dev": true }, - "p-event": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.1.0.tgz", - "integrity": "sha512-4vAd06GCsgflX4wHN1JqrMzBh/8QZ4j+rzp0cd2scXRwuBEv+QR3wrVA5aLhWDLw4y2WgDKvzWF3CCLmVM1UgA==", - "dev": true, - "requires": { - "p-timeout": "^2.0.1" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.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==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" } }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "dev": true, - "requires": { - "p-finally": "^1.0.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 - }, "package-json": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", @@ -2384,9 +1655,9 @@ }, "dependencies": { "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "requires": { "pump": "^3.0.0" @@ -2415,6 +1686,15 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", "dev": true }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -2455,12 +1735,6 @@ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "dev": true }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, "normalize-url": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", @@ -2487,12 +1761,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true } } }, @@ -2506,21 +1774,21 @@ } }, "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "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": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", + "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "parse-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.1.tgz", - "integrity": "sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.2.tgz", + "integrity": "sha512-HSqVz6iuXSiL8C1ku5Gl1Z5cwDd9Wo0q8CoffdAghP6bz8pJa1tcMC+m4N+z6VAS8QdksnIGq1TB6EgR4vPR6w==", "dev": true, "requires": { "is-ssh": "^1.3.0", @@ -2528,9 +1796,9 @@ } }, "parse-url": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-5.0.1.tgz", - "integrity": "sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-5.0.2.tgz", + "integrity": "sha512-Czj+GIit4cdWtxo3ISZCvLiUjErSo0iI3wJ+q9Oi3QuMYTI6OZu+7cewMWZ+C1YAnKhYTk6/TLuhIgCypLthPA==", "dev": true, "requires": { "is-ssh": "^1.3.0", @@ -2552,9 +1820,9 @@ "dev": true }, "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { @@ -2575,12 +1843,6 @@ "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 - }, "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", @@ -2588,9 +1850,9 @@ "dev": true }, "protocols": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.7.tgz", - "integrity": "sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg==", + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz", + "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==", "dev": true }, "pump": { @@ -2604,14 +1866,20 @@ } }, "pupa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", - "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", "dev": true, "requires": { "escape-goat": "^2.0.0" } }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -2633,16 +1901,10 @@ "resolve": "^1.1.6" } }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", - "dev": true - }, "registry-auth-token": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.1.1.tgz", - "integrity": "sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", "dev": true, "requires": { "rc": "^1.2.8" @@ -2658,53 +1920,57 @@ } }, "release-it": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/release-it/-/release-it-13.1.1.tgz", - "integrity": "sha512-3JrbRMkUnup+PGtTR78MBjfrgEDd1UBJtW0eZF4MQRMvhv2am1VyYzz5i7Vv1xkomsaxhy06gZVjVFAa+Qn4JA==", + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/release-it/-/release-it-14.2.2.tgz", + "integrity": "sha512-rnJOzDIXErrwCD9cRMtDgmOZlcLQiL0z0dVyN95G2T1FQVBQNr7AD5EiH3U+K6X7s+EVoK90lF96NXe5QuvG1A==", "dev": true, "requires": { - "@iarna/toml": "2.2.3", - "@octokit/rest": "17.1.0", + "@iarna/toml": "2.2.5", + "@octokit/rest": "18.0.9", "async-retry": "1.3.1", - "chalk": "3.0.0", - "cosmiconfig": "6.0.0", - "debug": "4.1.1", - "deprecated-obj": "1.0.1", - "detect-repo-changelog": "1.0.1", - "execa": "4.0.0", - "find-up": "4.1.0", + "chalk": "4.1.0", + "cosmiconfig": "7.0.0", + "debug": "4.3.1", + "deprecated-obj": "2.0.0", + "execa": "4.1.0", + "find-up": "5.0.0", "form-data": "3.0.0", - "git-url-parse": "11.1.2", - "globby": "11.0.0", - "got": "10.6.0", + "git-url-parse": "11.4.0", + "globby": "11.0.1", + "got": "11.8.0", "import-cwd": "3.0.0", - "inquirer": "7.1.0", + "inquirer": "7.3.3", "is-ci": "2.0.0", - "lodash": "4.17.15", - "mime-types": "2.1.26", - "ora": "4.0.3", - "os-name": "3.1.0", - "parse-json": "5.0.0", - "semver": "7.1.3", - "shelljs": "0.8.3", - "supports-color": "7.1.0", - "update-notifier": "4.1.0", + "lodash": "4.17.20", + "mime-types": "2.1.27", + "ora": "5.1.0", + "os-name": "4.0.0", + "parse-json": "5.1.0", + "semver": "7.3.2", + "shelljs": "0.8.4", + "update-notifier": "5.0.1", "url-join": "4.0.1", - "uuid": "7.0.2", - "window-size": "1.1.1", - "yaml": "1.8.2", - "yargs-parser": "18.1.0" + "uuid": "8.3.1", + "yaml": "1.10.0", + "yargs-parser": "20.2.4" } }, "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "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-alpn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz", + "integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==", + "dev": true + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -2743,24 +2009,21 @@ "dev": true }, "run-async": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", - "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } + "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.9", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "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.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -2773,9 +2036,9 @@ "dev": true }, "semver": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", - "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, "semver-diff": { @@ -2796,24 +2059,24 @@ } }, "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.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=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "shelljs": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", - "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", "dev": true, "requires": { "glob": "^7.0.0", @@ -2822,9 +2085,9 @@ } }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, "slash": { @@ -2859,12 +2122,6 @@ "ansi-regex": "^5.0.0" } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -2878,18 +2135,18 @@ "dev": true }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "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" } }, "term-size": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", - "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", "dev": true }, "through": { @@ -2908,9 +2165,9 @@ } }, "to-readable-stream": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-2.1.0.tgz", - "integrity": "sha512-o3Qa6DGg1CEXshSdvWNX2sN4QHqg03SPq7U6jPXRahlQdl5dK8oXjkU/2/sGrnOZKeGV1zLSO8qPwyKklPPE7w==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", "dev": true }, "to-regex-range": { @@ -2923,15 +2180,15 @@ } }, "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, "type-fest": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.10.0.tgz", - "integrity": "sha512-EUV9jo4sffrwlg8s0zDhP0T2WD3pru5Xi0+HTE3zTUmBaZNhfkite9PdSJwdXLwPVW0jnAHT56pZHIOYckPEiw==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", "dev": true }, "typedarray-to-buffer": { @@ -2953,31 +2210,29 @@ } }, "universal-user-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz", - "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==", - "dev": true, - "requires": { - "os-name": "^3.1.0" - } + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true }, "update-notifier": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz", - "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.0.1.tgz", + "integrity": "sha512-BuVpRdlwxeIOvmc32AGYvO1KVdPlsmqSh8KDDBxS6kDE5VR7R8OMP1d8MdhaVBvxl4H3551k9akXr0Y1iIB2Wg==", "dev": true, "requires": { "boxen": "^4.2.0", - "chalk": "^3.0.0", + "chalk": "^4.1.0", "configstore": "^5.0.1", "has-yarn": "^2.1.0", "import-lazy": "^2.1.0", "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", + "is-installed-globally": "^0.3.2", + "is-npm": "^5.0.0", "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.2", "semver-diff": "^3.1.1", "xdg-basedir": "^4.0.0" } @@ -2998,9 +2253,9 @@ } }, "uuid": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.2.tgz", - "integrity": "sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", + "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==", "dev": true }, "wcwidth": { @@ -3013,9 +2268,9 @@ } }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -3030,66 +2285,13 @@ "string-width": "^4.0.0" } }, - "window-size": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-1.1.1.tgz", - "integrity": "sha512-5D/9vujkmVQ7pSmc0SCBmHXbkv6eaHwXEx65MywhmUMsI8sGqJ972APq1lotfcwMKPFLuCFfL8xGHLIp7jaBmA==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "is-number": "^3.0.0" - }, - "dependencies": { - "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-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "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" - } - } - } - }, "windows-release": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", - "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", + "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==", "dev": true, "requires": { - "execa": "^1.0.0" - }, - "dependencies": { - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - } + "execa": "^4.0.2" } }, "wrappy": { @@ -3117,23 +2319,22 @@ "dev": true }, "yaml": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.8.2.tgz", - "integrity": "sha512-omakb0d7FjMo3R1D2EbTKVIk6dAVLRxFXdLZMEUToeAvuqgG/YuHMuQOZ5fgk+vQ8cx+cnGKwyg+8g8PNT0xQg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.7" - } + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "dev": true }, "yargs-parser": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.0.tgz", - "integrity": "sha512-o/Jr6JBOv6Yx3pL+5naWSoIA2jJ+ZkMYQG/ie9qFbukBe4uzmBatlXFOiu/tNKRWEtyf+n5w7jc/O16ufqOTdQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/package.json b/package.json index 0c06f714..7f45ab08 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,8 @@ }, "dependencies": {}, "devDependencies": { - "@release-it/bumper": "^1.1.0", - "release-it": "^13.1.1" + "@release-it/bumper": "^2.0.0", + "release-it": "^14.2.2" }, "scripts": { "release": "release-it" From 0039eab40d8bb9b59084ac85840e7a55102108c3 Mon Sep 17 00:00:00 2001 From: Thomas Fussell Date: Sun, 3 Jan 2021 09:33:43 -0500 Subject: [PATCH 21/21] fix gcc 4.8.2 build problems --- include/xlnt/utils/optional.hpp | 3 ++- source/detail/cryptography/sha1.c | 3 ++- source/detail/cryptography/sha512.c | 3 ++- source/detail/serialization/custom_value_traits.hpp | 6 +++--- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/include/xlnt/utils/optional.hpp b/include/xlnt/utils/optional.hpp index 934a9aea..2201b68b 100644 --- a/include/xlnt/utils/optional.hpp +++ b/include/xlnt/utils/optional.hpp @@ -38,7 +38,8 @@ namespace xlnt { template class optional { -#if defined(_MSC_VER) && _MSC_VER <= 1900 // v14, visual studio 2015 +#if ((defined(_MSC_VER) && _MSC_VER <= 1900) || (defined(__GNUC__) && __GNUC__ < 5)) +// Disable enhanced type checking on Visual Studio <= 2015 and GCC <5 #define XLNT_NOEXCEPT_VALUE_COMPAT(...) (false) #else #define XLNT_NOEXCEPT_VALUE_COMPAT(...) (__VA_ARGS__) diff --git a/source/detail/cryptography/sha1.c b/source/detail/cryptography/sha1.c index f5412dc8..00a67818 100644 --- a/source/detail/cryptography/sha1.c +++ b/source/detail/cryptography/sha1.c @@ -174,7 +174,8 @@ void sha1_hash(const uint8_t *message, size_t len, uint32_t hash[5]) { block[BLOCK_SIZE - 1] = (uint8_t)((len & 0x1FU) << 3); len >>= 5; - for (int i = 1; i < LENGTH_SIZE; i++, len >>= 8) + int i; + for (i = 1; i < LENGTH_SIZE; i++, len >>= 8) block[BLOCK_SIZE - 1 - i] = (uint8_t)(len & 0xFFU); sha1_compress(hash, block); } diff --git a/source/detail/cryptography/sha512.c b/source/detail/cryptography/sha512.c index 0d59e2c8..d5328684 100644 --- a/source/detail/cryptography/sha512.c +++ b/source/detail/cryptography/sha512.c @@ -261,7 +261,8 @@ void sha512_hash(const uint8_t *message, size_t len, uint64_t hash[8]) { block[BLOCK_SIZE - 1] = (uint8_t)((len & 0x1FU) << 3); len >>= 5; - for (int i = 1; i < LENGTH_SIZE; i++, len >>= 8) + int i; + for (i = 1; i < LENGTH_SIZE; i++, len >>= 8) block[BLOCK_SIZE - 1 - i] = (uint8_t)(len & 0xFFU); sha512_compress(hash, block); } diff --git a/source/detail/serialization/custom_value_traits.hpp b/source/detail/serialization/custom_value_traits.hpp index f013815c..ba477f29 100644 --- a/source/detail/serialization/custom_value_traits.hpp +++ b/source/detail/serialization/custom_value_traits.hpp @@ -199,8 +199,8 @@ pattern_fill_type from_string(const std::string &string) #pragma clang diagnostic pop auto toLower = [](std::string str) { - auto bg{ std::begin (str) }; - auto en{ std::end (str) }; + auto bg = std::begin (str); + auto en = std::end (str); std::transform(bg, en, bg, [](char c) { // static cast to avoid int -> char narrowing warning @@ -211,7 +211,7 @@ pattern_fill_type from_string(const std::string &string) }; auto patternLookup = [](const std::string& key) { - auto entry { patternFill.find (key) }; + auto entry = patternFill.find (key); if (entry != std::end (patternFill)) { return entry->second; }