From 6e39bcaa5d8ee9eafd33b751f836f7f81a08f040 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Wed, 21 Dec 2022 17:13:19 +1100 Subject: [PATCH 01/27] Add Cargo Criterion JSON extractor and accompanying tests --- package.json | 2 +- src/config.ts | 1 + src/extract.ts | 62 +++++++++++++++++++ src/write.ts | 2 + test/data/extract/criterion_output.json | 1 + test/data/extract/criterion_output_multi.json | 13 ++++ test/extract.spec.ts | 12 ++++ 7 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 test/data/extract/criterion_output.json create mode 100644 test/data/extract/criterion_output_multi.json diff --git a/package.json b/package.json index 6dc901317..3ffb03b75 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "eslint-config-prettier": "^8.3.0", "eslint-plugin-jest": "^25.2.4", "eslint-plugin-prettier": "^4.0.0", - "jest": "^27.3.1", + "jest": "^27.5.1", "markdown-it": "^12.3.2", "prettier": "^2.4.1", "rimraf": "^3.0.2", diff --git a/src/config.ts b/src/config.ts index d1a4919b8..fc1ed4ed7 100644 --- a/src/config.ts +++ b/src/config.ts @@ -38,6 +38,7 @@ export const VALID_TOOLS = [ 'benchmarkdotnet', 'customBiggerIsBetter', 'customSmallerIsBetter', + 'cargo-criterion' ] as const; const RE_UINT = /^\d+$/; diff --git a/src/extract.ts b/src/extract.ts index 1b6b2ff25..b4c2adb7b 100644 --- a/src/extract.ts +++ b/src/extract.ts @@ -68,6 +68,42 @@ export interface GoogleCppBenchmarkJson { }>; } +export interface CargoCriterionBenchmarkJson { + commit: Commit; + date: string; + reason: string; + benchmark_id: string; + iteration_count: []; + measured_values: []; + unit: string; + throughput: []; + typical: { + estimate: number, + lower_bound: number, + upper_bount: number, + unit: string + }, + mean: { + estimate: number, + lower_bound: number, + upper_bount: number, + unit: string + }, + median_abs_dev: { + estimate: number, + lower_bound: number, + upper_bount: number, + unit: string + }, + slope: { + estimate: number, + lower_bound: number, + upper_bount: number, + unit: string + } + report_directory: string; +} + export interface PytestBenchmarkJson { machine_info: { node: string; @@ -338,6 +374,29 @@ function extractCargoResult(output: string): BenchmarkResult[] { return ret; } +function extractCriterionResult(output: string): BenchmarkResult[] { + let json: CargoCriterionBenchmarkJson; // TODO: Multiple benchmarks, collated JSONs + try { + json = JSON.parse(output); + } catch (err: any) { + throw new Error( + `Output file for 'cargo-criterion' must be JSON file generated by --message-format=json option: ${err.message}`, + ); + } + + // TODO: Also git add and push the report_directory in github pages, timestamped? + const criterion_benchmark_reports = json.report_directory; + + console.log(criterion_benchmark_reports); + return { + json; + const value = b.real_time; + const unit = b.time_unit + '/iter'; + const extra = `iterations: ${b.iterations}\ncpu: ${b.cpu_time} ${b.time_unit}\nthreads: ${b.threads}`; + return { name, value, unit, extra }; + }); +} + function extractGoResult(output: string): BenchmarkResult[] { const lines = output.split(/\r?\n/g); const ret = []; @@ -677,6 +736,9 @@ export async function extractResult(config: Config): Promise { case 'cargo': benches = extractCargoResult(output); break; + case 'cargo-criterion': + benches = extractCriterionResult(output); + break; case 'go': benches = extractGoResult(output); break; diff --git a/src/write.ts b/src/write.ts index d55bb1fa2..a823bd566 100644 --- a/src/write.ts +++ b/src/write.ts @@ -61,6 +61,8 @@ function biggerIsBetter(tool: ToolType): boolean { switch (tool) { case 'cargo': return false; + case 'cargo-criterion': + return false; case 'go': return false; case 'benchmarkjs': diff --git a/test/data/extract/criterion_output.json b/test/data/extract/criterion_output.json new file mode 100644 index 000000000..ab38826de --- /dev/null +++ b/test/data/extract/criterion_output.json @@ -0,0 +1 @@ +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","iteration_count":[1906,3812,5718,7624,9530,11436,13342,15248,17154,19060,20966,22872,24778,26684,28590,30496,32402,34308,36214,38120,40026,41932,43838,45744,47650,49556,51462,53368,55274,57180,59086,60992,62898,64804,66710,68616,70522,72428,74334,76240,78146,80052,81958,83864,85770,87676,89582,91488,93394,95300],"measured_values":[23353750.0,46591042.0,70056375.0,93342417.0,116538959.0,143924833.0,167600792.0,185919208.0,212106375.0,233026875.0,254726333.0,278646875.0,305671125.0,324522875.0,357198834.0,371509417.0,404136209.0,416867708.0,448835000.0,463870791.0,493834167.0,520758917.0,531351708.0,562765584.0,578917750.0,611941333.0,633088334.0,664546750.0,701506208.0,697619667.0,724856750.0,743395167.0,782653209.0,799641667.0,822941209.0,856925000.0,891791459.0,892449667.0,935049625.0,998219083.0,980998209.0,988231167.0,1025668125.0,1041296834.0,1076883416.0,1115022292.0,1131879792.0,1163727042.0,1166034958.0,1184190625.0],"unit":"ns","throughput":[],"typical":{"estimate":12481.003131880992,"lower_bound":12409.549797222095,"upper_bound":12550.750722071223,"unit":"ns"},"mean":{"estimate":12384.362708639734,"lower_bound":12333.018047376874,"upper_bound":12439.607894674537,"unit":"ns"},"median":{"estimate":12342.126458243318,"lower_bound":12285.16311816674,"upper_bound":12431.170979204426,"unit":"ns"},"median_abs_dev":{"estimate":211.04993263521555,"lower_bound":139.18536378733978,"upper_bound":257.9776202585765,"unit":"ns"},"slope":{"estimate":12481.003131880992,"lower_bound":12409.549797222095,"upper_bound":12550.750722071223,"unit":"ns"},"change":null} diff --git a/test/data/extract/criterion_output_multi.json b/test/data/extract/criterion_output_multi.json new file mode 100644 index 000000000..ecb051894 --- /dev/null +++ b/test/data/extract/criterion_output_multi.json @@ -0,0 +1,13 @@ +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","iteration_count":[1906,3812,5718,7624,9530,11436,13342,15248,17154,19060,20966,22872,24778,26684,28590,30496,32402,34308,36214,38120,40026,41932,43838,45744,47650,49556,51462,53368,55274,57180,59086,60992,62898,64804,66710,68616,70522,72428,74334,76240,78146,80052,81958,83864,85770,87676,89582,91488,93394,95300],"measured_values":[23353750.0,46591042.0,70056375.0,93342417.0,116538959.0,143924833.0,167600792.0,185919208.0,212106375.0,233026875.0,254726333.0,278646875.0,305671125.0,324522875.0,357198834.0,371509417.0,404136209.0,416867708.0,448835000.0,463870791.0,493834167.0,520758917.0,531351708.0,562765584.0,578917750.0,611941333.0,633088334.0,664546750.0,701506208.0,697619667.0,724856750.0,743395167.0,782653209.0,799641667.0,822941209.0,856925000.0,891791459.0,892449667.0,935049625.0,998219083.0,980998209.0,988231167.0,1025668125.0,1041296834.0,1076883416.0,1115022292.0,1131879792.0,1163727042.0,1166034958.0,1184190625.0],"unit":"ns","throughput":[],"typical":{"estimate":12481.003131880992,"lower_bound":12409.549797222095,"upper_bound":12550.750722071223,"unit":"ns"},"mean":{"estimate":12384.362708639734,"lower_bound":12333.018047376874,"upper_bound":12439.607894674537,"unit":"ns"},"median":{"estimate":12342.126458243318,"lower_bound":12285.16311816674,"upper_bound":12431.170979204426,"unit":"ns"},"median_abs_dev":{"estimate":211.04993263521555,"lower_bound":139.18536378733978,"upper_bound":257.9776202585765,"unit":"ns"},"slope":{"estimate":12481.003131880992,"lower_bound":12409.549797222095,"upper_bound":12550.750722071223,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query specific","iteration_count":[1857,3714,5571,7428,9285,11142,12999,14856,16713,18570,20427,22284,24141,25998,27855,29712,31569,33426,35283,37140,38997,40854,42711,44568,46425,48282,50139,51996,53853,55710,57567,59424,61281,63138,64995,66852,68709,70566,72423,74280,76137,77994,79851,81708,83565,85422,87279,89136,90993,92850],"measured_values":[23074458.0,46191167.0,69862708.0,93354208.0,120352208.0,140426959.0,163323209.0,186946334.0,209770625.0,231367125.0,256589542.0,293328458.0,307131292.0,329660541.0,363367291.0,394994625.0,394732542.0,417154666.0,443729875.0,463503125.0,485744166.0,547478333.0,531077667.0,561108041.0,582509958.0,602621209.0,627997792.0,651734041.0,670207417.0,694730042.0,718155709.0,739516417.0,758606083.0,788517542.0,812182584.0,834685833.0,856625250.0,879083959.0,907981292.0,938527125.0,946355417.0,983176958.0,998526750.0,1014342333.0,1055089625.0,1076355833.0,1112857292.0,1111283417.0,1139067417.0,1161416667.0],"unit":"ns","throughput":[],"typical":{"estimate":12542.030657058294,"lower_bound":12504.750978781753,"upper_bound":12585.189603835279,"unit":"ns"},"mean":{"estimate":12587.561447528691,"lower_bound":12533.174013919526,"upper_bound":12651.44053905512,"unit":"ns"},"median":{"estimate":12521.661631073779,"lower_bound":12485.038023547932,"upper_bound":12561.293484114163,"unit":"ns"},"median_abs_dev":{"estimate":92.44463919076692,"lower_bound":59.51326692404042,"upper_bound":125.04918643547165,"unit":"ns"},"slope":{"estimate":12542.030657058294,"lower_bound":12504.750978781753,"upper_bound":12585.189603835279,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query header","iteration_count":[1881,3762,5643,7524,9405,11286,13167,15048,16929,18810,20691,22572,24453,26334,28215,30096,31977,33858,35739,37620,39501,41382,43263,45144,47025,48906,50787,52668,54549,56430,58311,60192,62073,63954,65835,67716,69597,71478,73359,75240,77121,79002,80883,82764,84645,86526,88407,90288,92169,94050],"measured_values":[23755042.0,46448583.0,70221083.0,93688333.0,117848542.0,141233250.0,164702750.0,186162000.0,210781458.0,234171333.0,258901167.0,283974042.0,304196625.0,326188333.0,351292708.0,375040958.0,397847125.0,423914583.0,440439375.0,468378459.0,492766667.0,515352875.0,539315416.0,562488709.0,586601667.0,610471792.0,630426667.0,653395208.0,675668959.0,702959875.0,725311542.0,754884958.0,773913625.0,797173084.0,827036000.0,840137708.0,865055667.0,898002500.0,912517625.0,940399917.0,957519459.0,981367666.0,1003241084.0,1025491584.0,1054805750.0,1082415292.0,1098768166.0,1132316125.0,1149766125.0,1175194833.0],"unit":"ns","throughput":[],"typical":{"estimate":12462.16826911174,"lower_bound":12443.529929097876,"upper_bound":12480.798808658436,"unit":"ns"},"mean":{"estimate":12461.865953481814,"lower_bound":12445.675359873314,"upper_bound":12478.471473524758,"unit":"ns"},"median":{"estimate":12455.376532469834,"lower_bound":12443.927520822257,"upper_bound":12470.112447588008,"unit":"ns"},"median_abs_dev":{"estimate":54.02959999713264,"lower_bound":26.883859069602522,"upper_bound":75.42064478130885,"unit":"ns"},"slope":{"estimate":12462.16826911174,"lower_bound":12443.529929097876,"upper_bound":12480.798808658436,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Cram query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Cram query all","iteration_count":[1890,3780,5670,7560,9450,11340,13230,15120,17010,18900,20790,22680,24570,26460,28350,30240,32130,34020,35910,37800,39690,41580,43470,45360,47250,49140,51030,52920,54810,56700,58590,60480,62370,64260,66150,68040,69930,71820,73710,75600,77490,79380,81270,83160,85050,86940,88830,90720,92610,94500],"measured_values":[23778083.0,47007500.0,70463042.0,94134250.0,116741583.0,140817791.0,163904208.0,190865709.0,210575333.0,235802625.0,258342791.0,282050125.0,305041958.0,328418667.0,352861167.0,376868208.0,397656000.0,419049625.0,446525584.0,469748375.0,492508583.0,519989458.0,538181125.0,568000417.0,591329167.0,613595875.0,632495083.0,660534334.0,684553083.0,703458792.0,727140958.0,749685333.0,784405334.0,798355917.0,821661125.0,838889666.0,872422542.0,899576083.0,916324583.0,943960791.0,967240041.0,984620417.0,1018327333.0,1033734541.0,1057366750.0,1081923250.0,1101662292.0,1125497500.0,1143915125.0,1173018333.0],"unit":"ns","throughput":[],"typical":{"estimate":12437.46107380598,"lower_bound":12418.390755768874,"upper_bound":12457.641973467833,"unit":"ns"},"mean":{"estimate":12441.081608903076,"lower_bound":12424.327167466443,"upper_bound":12458.685936613183,"unit":"ns"},"median":{"estimate":12429.007277136443,"lower_bound":12415.220105820106,"upper_bound":12444.481826547044,"unit":"ns"},"median_abs_dev":{"estimate":49.65389838930112,"lower_bound":26.983515632057674,"upper_bound":73.04606879689027,"unit":"ns"},"slope":{"estimate":12437.46107380598,"lower_bound":12418.390755768874,"upper_bound":12457.641973467833,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Cram query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Cram query specific","iteration_count":[1883,3766,5649,7532,9415,11298,13181,15064,16947,18830,20713,22596,24479,26362,28245,30128,32011,33894,35777,37660,39543,41426,43309,45192,47075,48958,50841,52724,54607,56490,58373,60256,62139,64022,65905,67788,69671,71554,73437,75320,77203,79086,80969,82852,84735,86618,88501,90384,92267,94150],"measured_values":[23849833.0,47272459.0,70813750.0,93993792.0,117438000.0,140772208.0,165871084.0,187564584.0,214884917.0,234894917.0,258032083.0,281054042.0,304496875.0,330005709.0,354445375.0,377868042.0,401734333.0,424470333.0,446670875.0,471897166.0,496470625.0,518243125.0,539936542.0,568974292.0,586009167.0,608343042.0,636887042.0,663813125.0,687941792.0,706986250.0,733194250.0,753532000.0,770972791.0,795386167.0,824105375.0,845515542.0,870172792.0,898631875.0,912664000.0,935229375.0,959545416.0,986392166.0,1015541417.0,1034786709.0,1050322750.0,1081589208.0,1111291167.0,1126932542.0,1156539125.0,1173766667.0],"unit":"ns","throughput":[],"typical":{"estimate":12490.33994772218,"lower_bound":12471.609197964332,"upper_bound":12509.708015669123,"unit":"ns"},"mean":{"estimate":12504.521351983178,"lower_bound":12487.67375011085,"upper_bound":12522.153765665806,"unit":"ns"},"median":{"estimate":12497.092784044191,"lower_bound":12473.499734466277,"upper_bound":12527.036092917133,"unit":"ns"},"median_abs_dev":{"estimate":66.90338915186933,"lower_bound":45.13192972765525,"upper_bound":83.77480548577644,"unit":"ns"},"slope":{"estimate":12490.33994772218,"lower_bound":12471.609197964332,"upper_bound":12509.708015669123,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Cram query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Cram query header","iteration_count":[1885,3770,5655,7540,9425,11310,13195,15080,16965,18850,20735,22620,24505,26390,28275,30160,32045,33930,35815,37700,39585,41470,43355,45240,47125,49010,50895,52780,54665,56550,58435,60320,62205,64090,65975,67860,69745,71630,73515,75400,77285,79170,81055,82940,84825,86710,88595,90480,92365,94250],"measured_values":[23962792.0,47052583.0,70285500.0,94122917.0,117459042.0,139635875.0,164256959.0,188973625.0,213279625.0,233709667.0,257915292.0,278981166.0,305422959.0,329520417.0,353099334.0,375781667.0,399125833.0,423189500.0,447219750.0,469219416.0,489659750.0,521375500.0,544702333.0,559377667.0,586273750.0,615537000.0,638768416.0,659270167.0,680112584.0,704155750.0,728630708.0,742462292.0,774155125.0,796921333.0,830978500.0,839306875.0,867659833.0,891940166.0,912373833.0,938355500.0,967490000.0,984754542.0,1004259500.0,1024346916.0,1048699709.0,1073102584.0,1101052667.0,1125097167.0,1155603792.0,1172378125.0],"unit":"ns","throughput":[],"typical":{"estimate":12440.017588409863,"lower_bound":12419.30679144134,"upper_bound":12462.466060312268,"unit":"ns"},"mean":{"estimate":12456.37501290137,"lower_bound":12436.30000100241,"upper_bound":12477.51943421308,"unit":"ns"},"median":{"estimate":12447.281341417203,"lower_bound":12439.025198938993,"upper_bound":12465.78906819543,"unit":"ns"},"median_abs_dev":{"estimate":56.22545942416143,"lower_bound":25.951868851168626,"upper_bound":94.0064825305199,"unit":"ns"},"slope":{"estimate":12440.017588409863,"lower_bound":12419.30679144134,"upper_bound":12462.466060312268,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Vcf query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Vcf query all","iteration_count":[1885,3770,5655,7540,9425,11310,13195,15080,16965,18850,20735,22620,24505,26390,28275,30160,32045,33930,35815,37700,39585,41470,43355,45240,47125,49010,50895,52780,54665,56550,58435,60320,62205,64090,65975,67860,69745,71630,73515,75400,77285,79170,81055,82940,84825,86710,88595,90480,92365,94250],"measured_values":[23655584.0,46977667.0,70619375.0,94204458.0,116440292.0,141624167.0,165235500.0,187765209.0,211399542.0,235687417.0,259582125.0,283154750.0,306771875.0,334801000.0,350960250.0,376808833.0,398468083.0,421748417.0,443071708.0,471906458.0,488902917.0,520594083.0,541546792.0,565961334.0,588605417.0,608854125.0,629135834.0,650459667.0,675195458.0,704728959.0,722692041.0,752045750.0,766840208.0,801533459.0,818508875.0,846772167.0,871863458.0,891632583.0,922676750.0,931826416.0,954625334.0,976776625.0,1013652584.0,1047332416.0,1077400125.0,1084435083.0,1098434792.0,1127982084.0,1152175541.0,1174157916.0],"unit":"ns","throughput":[],"typical":{"estimate":12462.897415435287,"lower_bound":12429.425530370028,"upper_bound":12499.119134402245,"unit":"ns"},"mean":{"estimate":12465.309711661965,"lower_bound":12442.526447758419,"upper_bound":12488.833056796884,"unit":"ns"},"median":{"estimate":12470.87963886483,"lower_bound":12451.273806366047,"upper_bound":12497.196102319162,"unit":"ns"},"median_abs_dev":{"estimate":70.30073023528259,"lower_bound":41.467447659031485,"upper_bound":100.65908972812116,"unit":"ns"},"slope":{"estimate":12462.897415435287,"lower_bound":12429.425530370028,"upper_bound":12499.119134402245,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Vcf query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Vcf query specific","iteration_count":[1876,3752,5628,7504,9380,11256,13132,15008,16884,18760,20636,22512,24388,26264,28140,30016,31892,33768,35644,37520,39396,41272,43148,45024,46900,48776,50652,52528,54404,56280,58156,60032,61908,63784,65660,67536,69412,71288,73164,75040,76916,78792,80668,82544,84420,86296,88172,90048,91924,93800],"measured_values":[23543625.0,47130000.0,70159542.0,94060333.0,116259792.0,140684000.0,164649292.0,187247500.0,211190916.0,234518834.0,255212750.0,277983667.0,305557625.0,327979583.0,355701125.0,374594125.0,395023500.0,418460083.0,441661917.0,464574208.0,498357917.0,511655416.0,551578000.0,561748208.0,581259917.0,613290709.0,627326250.0,653418375.0,673214250.0,703987583.0,727785125.0,754879250.0,772950375.0,795171583.0,819367250.0,840534750.0,941899750.0,923392458.0,1037503333.0,996127583.0,990695417.0,1021424792.0,1272366250.0,1150176459.0,1102111500.0,1077888292.0,1116182208.0,1188484125.0,1296103958.0,1204083375.0],"unit":"ns","throughput":[],"typical":{"estimate":13050.46065004042,"lower_bound":12760.773912001252,"upper_bound":13372.572235013477,"unit":"ns"},"mean":{"estimate":12744.976822384066,"lower_bound":12594.427458918524,"upper_bound":12930.405407643106,"unit":"ns"},"median":{"estimate":12508.504824093816,"lower_bound":12479.814932036248,"upper_bound":12561.761511809087,"unit":"ns"},"median_abs_dev":{"estimate":169.73834257609312,"lower_bound":75.29804342207017,"upper_bound":244.99466677068565,"unit":"ns"},"slope":{"estimate":13050.46065004042,"lower_bound":12760.773912001252,"upper_bound":13372.572235013477,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Vcf query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Vcf query header","iteration_count":[1882,3764,5646,7528,9410,11292,13174,15056,16938,18820,20702,22584,24466,26348,28230,30112,31994,33876,35758,37640,39522,41404,43286,45168,47050,48932,50814,52696,54578,56460,58342,60224,62106,63988,65870,67752,69634,71516,73398,75280,77162,79044,80926,82808,84690,86572,88454,90336,92218,94100],"measured_values":[23828917.0,46764291.0,71197917.0,93224459.0,118619250.0,143865083.0,165871791.0,188203584.0,213350541.0,238873917.0,259247417.0,281354000.0,306700125.0,329024458.0,348619833.0,375700625.0,398674292.0,424049750.0,449887541.0,468889666.0,491443375.0,513269291.0,538724209.0,564290625.0,601155208.0,617320333.0,626648042.0,654518334.0,680239375.0,704853750.0,725909292.0,752928500.0,773113291.0,796293833.0,816561084.0,843402083.0,867874333.0,896718000.0,916683250.0,934082250.0,962954541.0,992527791.0,1014531667.0,1038371417.0,1068170041.0,1080111792.0,1104500500.0,1158051041.0,1218332250.0,1487098875.0],"unit":"ns","throughput":[],"typical":{"estimate":12743.57939910763,"lower_bound":12492.656492249189,"upper_bound":13150.351281534344,"unit":"ns"},"mean":{"estimate":12592.408494605297,"lower_bound":12498.783967867887,"upper_bound":12746.231864911982,"unit":"ns"},"median":{"estimate":12488.428724215919,"lower_bound":12463.618582579062,"upper_bound":12535.769026403988,"unit":"ns"},"median_abs_dev":{"estimate":75.13314602401516,"lower_bound":51.28192594005492,"upper_bound":127.41149324809004,"unit":"ns"},"slope":{"estimate":12743.57939910763,"lower_bound":12492.656492249189,"upper_bound":13150.351281534344,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bcf query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bcf query all","iteration_count":[1811,3622,5433,7244,9055,10866,12677,14488,16299,18110,19921,21732,23543,25354,27165,28976,30787,32598,34409,36220,38031,39842,41653,43464,45275,47086,48897,50708,52519,54330,56141,57952,59763,61574,63385,65196,67007,68818,70629,72440,74251,76062,77873,79684,81495,83306,85117,86928,88739,90550],"measured_values":[22696500.0,45334583.0,68564917.0,89876708.0,114268708.0,135340500.0,157886459.0,179266334.0,203045958.0,224690292.0,250232500.0,270002917.0,295595625.0,317773084.0,337736834.0,368529500.0,385797459.0,406405500.0,430139334.0,451828791.0,480611208.0,497753917.0,517689083.0,543167375.0,570085292.0,581799541.0,609598583.0,640548916.0,692862208.0,695524625.0,697079250.0,723195000.0,744236458.0,774538500.0,797117000.0,822189375.0,841483375.0,864496625.0,938998917.0,944528000.0,988996875.0,950171583.0,974126834.0,1053046167.0,1024833500.0,1042631333.0,1060641333.0,1087169709.0,1118847084.0,1158436333.0],"unit":"ns","throughput":[],"typical":{"estimate":12668.21351660901,"lower_bound":12571.840308155952,"upper_bound":12774.731176122405,"unit":"ns"},"mean":{"estimate":12594.105363494185,"lower_bound":12535.492831130141,"upper_bound":12661.754613724115,"unit":"ns"},"median":{"estimate":12523.81548218404,"lower_bound":12493.19604939511,"upper_bound":12568.328787599909,"unit":"ns"},"median_abs_dev":{"estimate":100.96648268236126,"lower_bound":68.9538713968884,"upper_bound":142.13851081871422,"unit":"ns"},"slope":{"estimate":12668.21351660901,"lower_bound":12571.840308155952,"upper_bound":12774.731176122405,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bcf query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bcf query specific","iteration_count":[1822,3644,5466,7288,9110,10932,12754,14576,16398,18220,20042,21864,23686,25508,27330,29152,30974,32796,34618,36440,38262,40084,41906,43728,45550,47372,49194,51016,52838,54660,56482,58304,60126,61948,63770,65592,67414,69236,71058,72880,74702,76524,78346,80168,81990,83812,85634,87456,89278,91100],"measured_values":[22864542.0,46296667.0,70125917.0,105403292.0,116982792.0,137613708.0,159396584.0,185143084.0,207130958.0,230728750.0,251067042.0,274793084.0,309544083.0,389597375.0,351486375.0,416824666.0,462298292.0,480932166.0,435937875.0,466025833.0,483771416.0,510143667.0,526711750.0,548757500.0,576423375.0,611853417.0,633337208.0,677843500.0,688827708.0,700758083.0,704866000.0,729305584.0,755413125.0,776234708.0,793204625.0,822609417.0,865526750.0,894033792.0,892756416.0,915636125.0,985270417.0,964621459.0,980083208.0,998348500.0,1023122042.0,1047046875.0,1069177250.0,1105035625.0,1123890917.0,1139291833.0],"unit":"ns","throughput":[],"typical":{"estimate":12689.39129849564,"lower_bound":12609.362944311339,"upper_bound":12795.858925711947,"unit":"ns"},"mean":{"estimate":12880.030586704319,"lower_bound":12714.936957652506,"upper_bound":13073.976059499893,"unit":"ns"},"median":{"estimate":12633.404612986338,"lower_bound":12566.360507065598,"upper_bound":12746.878471459935,"unit":"ns"},"median_abs_dev":{"estimate":195.02828735483342,"lower_bound":102.36995695583366,"upper_bound":292.9521691634945,"unit":"ns"},"slope":{"estimate":12689.39129849564,"lower_bound":12609.362944311339,"upper_bound":12795.858925711947,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bcf query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bcf query header","iteration_count":[1882,3764,5646,7528,9410,11292,13174,15056,16938,18820,20702,22584,24466,26348,28230,30112,31994,33876,35758,37640,39522,41404,43286,45168,47050,48932,50814,52696,54578,56460,58342,60224,62106,63988,65870,67752,69634,71516,73398,75280,77162,79044,80926,82808,84690,86572,88454,90336,92218,94100],"measured_values":[23745166.0,47265042.0,71554917.0,93768459.0,118195709.0,142223000.0,164109791.0,189113292.0,213230916.0,235751291.0,256099333.0,281206583.0,305127542.0,330810750.0,349827083.0,373520083.0,403143209.0,421577083.0,449616584.0,472712959.0,496312125.0,514279417.0,543868500.0,559153375.0,589439542.0,606268500.0,664799000.0,679379833.0,687883625.0,705267834.0,747904167.0,764966916.0,779885125.0,799602333.0,828002333.0,858436166.0,918845917.0,946191791.0,919647458.0,941127334.0,975416917.0,991370333.0,1022027959.0,1057846917.0,1068709791.0,1085491125.0,1111232000.0,1127867250.0,1174609500.0,1206810125.0],"unit":"ns","throughput":[],"typical":{"estimate":12652.481509429057,"lower_bound":12587.421866159579,"upper_bound":12725.322157827735,"unit":"ns"},"mean":{"estimate":12599.097731126172,"lower_bound":12551.747924270225,"upper_bound":12652.633666521364,"unit":"ns"},"median":{"estimate":12559.720975026568,"lower_bound":12535.802231376487,"upper_bound":12588.907545164719,"unit":"ns"},"median_abs_dev":{"estimate":102.08207745367787,"lower_bound":57.55330572216015,"upper_bound":160.3247220369039,"unit":"ns"},"slope":{"estimate":12652.481509429057,"lower_bound":12587.421866159579,"upper_bound":12725.322157827735,"unit":"ns"},"change":null} +{"reason":"group-complete","group_name":"Queries","benchmarks":["Queries/[LIGHT] Bam query all","Queries/[LIGHT] Bam query specific","Queries/[LIGHT] Bam query header","Queries/[LIGHT] Cram query all","Queries/[LIGHT] Cram query specific","Queries/[LIGHT] Cram query header","Queries/[LIGHT] Vcf query all","Queries/[LIGHT] Vcf query specific","Queries/[LIGHT] Vcf query header","Queries/[LIGHT] Bcf query all","Queries/[LIGHT] Bcf query specific","Queries/[LIGHT] Bcf query header"],"report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries"} diff --git a/test/extract.spec.ts b/test/extract.spec.ts index b61bf681d..4f25b6be9 100644 --- a/test/extract.spec.ts +++ b/test/extract.spec.ts @@ -103,6 +103,18 @@ describe('extractResult()', function () { }, ], }, + { + tool: 'cargo-criterion', + file: 'criterion_output.json', + expected: [ + { + name: 'bench_engine_new', + range: '± 70126', + unit: 'ns/iter', + value: 211834, + } + ], + }, { tool: 'cargo', file: 'criterion_output.txt', From 983f6f4b59d38bcc7c2ba9905cb410f7deafb770 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Thu, 22 Dec 2022 11:47:54 +1100 Subject: [PATCH 02/27] Test passing, next up is to consolidate types of the action with criterion-rs benchmark outputs --- src/extract.ts | 20 +++++++++++++------- test/extract.spec.ts | 7 +++---- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/extract.ts b/src/extract.ts index b4c2adb7b..a7d004113 100644 --- a/src/extract.ts +++ b/src/extract.ts @@ -69,10 +69,10 @@ export interface GoogleCppBenchmarkJson { } export interface CargoCriterionBenchmarkJson { + id: string; // a.k.a benchmark id commit: Commit; date: string; reason: string; - benchmark_id: string; iteration_count: []; measured_values: []; unit: string; @@ -376,6 +376,8 @@ function extractCargoResult(output: string): BenchmarkResult[] { function extractCriterionResult(output: string): BenchmarkResult[] { let json: CargoCriterionBenchmarkJson; // TODO: Multiple benchmarks, collated JSONs + const ret = []; + try { json = JSON.parse(output); } catch (err: any) { @@ -388,13 +390,17 @@ function extractCriterionResult(output: string): BenchmarkResult[] { const criterion_benchmark_reports = json.report_directory; console.log(criterion_benchmark_reports); - return { - json; - const value = b.real_time; - const unit = b.time_unit + '/iter'; - const extra = `iterations: ${b.iterations}\ncpu: ${b.cpu_time} ${b.time_unit}\nthreads: ${b.threads}`; - return { name, value, unit, extra }; + + const name = json.id; + const value = json.typical.estimate; + + ret.push({ + name, + value, + unit: 'ns', }); + + return ret; } function extractGoResult(output: string): BenchmarkResult[] { diff --git a/test/extract.spec.ts b/test/extract.spec.ts index 4f25b6be9..d4ba27a1a 100644 --- a/test/extract.spec.ts +++ b/test/extract.spec.ts @@ -108,10 +108,9 @@ describe('extractResult()', function () { file: 'criterion_output.json', expected: [ { - name: 'bench_engine_new', - range: '± 70126', - unit: 'ns/iter', - value: 211834, + name: 'Queries/[LIGHT] Bam query all', + unit: 'ns', + value: 12481.003131880992, } ], }, From 04dcc2c41a0add41e0fa82c268ae40952fcd8be4 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Thu, 22 Dec 2022 15:24:34 +1100 Subject: [PATCH 03/27] Shove the rest of criterion-rs 'extra' attributes for future reuse --- src/extract.ts | 13 ++- test/data/extract/criterion_output.json | 143 +++++++++++++++++++++++- test/extract.spec.ts | 3 +- 3 files changed, 156 insertions(+), 3 deletions(-) diff --git a/src/extract.ts b/src/extract.ts index a7d004113..9b9683386 100644 --- a/src/extract.ts +++ b/src/extract.ts @@ -89,6 +89,12 @@ export interface CargoCriterionBenchmarkJson { upper_bount: number, unit: string }, + median: { + estimate: number, + lower_bound: number, + upper_bount: number, + unit: string + }, median_abs_dev: { estimate: number, lower_bound: number, @@ -392,12 +398,17 @@ function extractCriterionResult(output: string): BenchmarkResult[] { console.log(criterion_benchmark_reports); const name = json.id; - const value = json.typical.estimate; + const value = json.median.estimate; // TODO: Check if most statistically relevant here? + const extra = JSON.stringify([criterion_benchmark_reports, JSON.stringify(json.iteration_count), + JSON.stringify(json.measured_values), JSON.stringify(json.typical), + JSON.stringify(json.mean),JSON.stringify(json.median_abs_dev), + JSON.stringify(json.slope)]) ret.push({ name, value, unit: 'ns', + extra }); return ret; diff --git a/test/data/extract/criterion_output.json b/test/data/extract/criterion_output.json index ab38826de..18845ecbe 100644 --- a/test/data/extract/criterion_output.json +++ b/test/data/extract/criterion_output.json @@ -1 +1,142 @@ -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","iteration_count":[1906,3812,5718,7624,9530,11436,13342,15248,17154,19060,20966,22872,24778,26684,28590,30496,32402,34308,36214,38120,40026,41932,43838,45744,47650,49556,51462,53368,55274,57180,59086,60992,62898,64804,66710,68616,70522,72428,74334,76240,78146,80052,81958,83864,85770,87676,89582,91488,93394,95300],"measured_values":[23353750.0,46591042.0,70056375.0,93342417.0,116538959.0,143924833.0,167600792.0,185919208.0,212106375.0,233026875.0,254726333.0,278646875.0,305671125.0,324522875.0,357198834.0,371509417.0,404136209.0,416867708.0,448835000.0,463870791.0,493834167.0,520758917.0,531351708.0,562765584.0,578917750.0,611941333.0,633088334.0,664546750.0,701506208.0,697619667.0,724856750.0,743395167.0,782653209.0,799641667.0,822941209.0,856925000.0,891791459.0,892449667.0,935049625.0,998219083.0,980998209.0,988231167.0,1025668125.0,1041296834.0,1076883416.0,1115022292.0,1131879792.0,1163727042.0,1166034958.0,1184190625.0],"unit":"ns","throughput":[],"typical":{"estimate":12481.003131880992,"lower_bound":12409.549797222095,"upper_bound":12550.750722071223,"unit":"ns"},"mean":{"estimate":12384.362708639734,"lower_bound":12333.018047376874,"upper_bound":12439.607894674537,"unit":"ns"},"median":{"estimate":12342.126458243318,"lower_bound":12285.16311816674,"upper_bound":12431.170979204426,"unit":"ns"},"median_abs_dev":{"estimate":211.04993263521555,"lower_bound":139.18536378733978,"upper_bound":257.9776202585765,"unit":"ns"},"slope":{"estimate":12481.003131880992,"lower_bound":12409.549797222095,"upper_bound":12550.750722071223,"unit":"ns"},"change":null} +{ + "reason": "benchmark-complete", + "id": "Queries/[LIGHT] Bam query all", + "report_directory": "/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all", + "iteration_count": [ + 1906, + 3812, + 5718, + 7624, + 9530, + 11436, + 13342, + 15248, + 17154, + 19060, + 20966, + 22872, + 24778, + 26684, + 28590, + 30496, + 32402, + 34308, + 36214, + 38120, + 40026, + 41932, + 43838, + 45744, + 47650, + 49556, + 51462, + 53368, + 55274, + 57180, + 59086, + 60992, + 62898, + 64804, + 66710, + 68616, + 70522, + 72428, + 74334, + 76240, + 78146, + 80052, + 81958, + 83864, + 85770, + 87676, + 89582, + 91488, + 93394, + 95300 + ], + "measured_values": [ + 23353750.0, + 46591042.0, + 70056375.0, + 93342417.0, + 116538959.0, + 143924833.0, + 167600792.0, + 185919208.0, + 212106375.0, + 233026875.0, + 254726333.0, + 278646875.0, + 305671125.0, + 324522875.0, + 357198834.0, + 371509417.0, + 404136209.0, + 416867708.0, + 448835000.0, + 463870791.0, + 493834167.0, + 520758917.0, + 531351708.0, + 562765584.0, + 578917750.0, + 611941333.0, + 633088334.0, + 664546750.0, + 701506208.0, + 697619667.0, + 724856750.0, + 743395167.0, + 782653209.0, + 799641667.0, + 822941209.0, + 856925000.0, + 891791459.0, + 892449667.0, + 935049625.0, + 998219083.0, + 980998209.0, + 988231167.0, + 1025668125.0, + 1041296834.0, + 1076883416.0, + 1115022292.0, + 1131879792.0, + 1163727042.0, + 1166034958.0, + 1184190625.0 + ], + "unit": "ns", + "throughput": [], + "typical": { + "estimate": 12481.003131880992, + "lower_bound": 12409.549797222095, + "upper_bound": 12550.750722071223, + "unit": "ns" + }, + "mean": { + "estimate": 12384.362708639734, + "lower_bound": 12333.018047376874, + "upper_bound": 12439.607894674537, + "unit": "ns" + }, + "median": { + "estimate": 12342.126458243318, + "lower_bound": 12285.16311816674, + "upper_bound": 12431.170979204426, + "unit": "ns" + }, + "median_abs_dev": { + "estimate": 211.04993263521555, + "lower_bound": 139.18536378733978, + "upper_bound": 257.9776202585765, + "unit": "ns" + }, + "slope": { + "estimate": 12481.003131880992, + "lower_bound": 12409.549797222095, + "upper_bound": 12550.750722071223, + "unit": "ns" + }, + "change": null +} \ No newline at end of file diff --git a/test/extract.spec.ts b/test/extract.spec.ts index d4ba27a1a..ef84ccf1a 100644 --- a/test/extract.spec.ts +++ b/test/extract.spec.ts @@ -110,7 +110,8 @@ describe('extractResult()', function () { { name: 'Queries/[LIGHT] Bam query all', unit: 'ns', - value: 12481.003131880992, + value: 12342.126458243318, + extra: "[\"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all\",\"[1906,3812,5718,7624,9530,11436,13342,15248,17154,19060,20966,22872,24778,26684,28590,30496,32402,34308,36214,38120,40026,41932,43838,45744,47650,49556,51462,53368,55274,57180,59086,60992,62898,64804,66710,68616,70522,72428,74334,76240,78146,80052,81958,83864,85770,87676,89582,91488,93394,95300]\",\"[23353750,46591042,70056375,93342417,116538959,143924833,167600792,185919208,212106375,233026875,254726333,278646875,305671125,324522875,357198834,371509417,404136209,416867708,448835000,463870791,493834167,520758917,531351708,562765584,578917750,611941333,633088334,664546750,701506208,697619667,724856750,743395167,782653209,799641667,822941209,856925000,891791459,892449667,935049625,998219083,980998209,988231167,1025668125,1041296834,1076883416,1115022292,1131879792,1163727042,1166034958,1184190625]\",\"{\\\"estimate\\\":12481.003131880992,\\\"lower_bound\\\":12409.549797222095,\\\"upper_bound\\\":12550.750722071223,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":12384.362708639734,\\\"lower_bound\\\":12333.018047376874,\\\"upper_bound\\\":12439.607894674537,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":211.04993263521555,\\\"lower_bound\\\":139.18536378733978,\\\"upper_bound\\\":257.9776202585765,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":12481.003131880992,\\\"lower_bound\\\":12409.549797222095,\\\"upper_bound\\\":12550.750722071223,\\\"unit\\\":\\\"ns\\\"}\"]" } ], }, From 96184ccd5d8794c1ad9ab63617073da1e13d2bf1 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Thu, 22 Dec 2022 16:15:11 +1100 Subject: [PATCH 04/27] Elaborate on how to use cargo-criterion tool, store-native-benchmark-report is WIP, need to investigate if it's already supported on the other supported tools --- examples/rust/README.md | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/examples/rust/README.md b/examples/rust/README.md index dbbfe014a..6a3ddbdef 100644 --- a/examples/rust/README.md +++ b/examples/rust/README.md @@ -1,5 +1,4 @@ -Rust example for benchmarking with `cargo bench` -================================================ +# Rust example for benchmarking with `cargo bench` - [Workflow for this example](../../.github/workflows/rust.yml) - [Action log of this example](https://github.com/benchmark-action/github-action-benchmark/actions?query=workflow%3A%22Rust+Example%22) @@ -46,4 +45,41 @@ Store the benchmark results with step using the action. Please set `cargo` to `t Please read ['How to use' section](https://github.com/benchmark-action/github-action-benchmark#how-to-use) for common usage. +# Rust example for benchmarking with cargo-criterion +In the previous section, both regular and criterion-rs can be used through the regular `cargo bench` facility, but there's an additional crate and cargo extension named [`cargo-criterion`][cargo-criterion]. + + The improvements in [cargo-criterion][cargo-criterion] do [match the goals of github-action-benchmark](https://crates.io/crates/cargo-criterion#goals), so it makes sense to include support for it. + + +## Run benchmarks + +Official documentation for usage of `cargo criterion`: + +https://bheisler.github.io/criterion.rs/book/cargo_criterion/cargo_criterion.html + +.e.g: + +```yaml +- name: Run search benchmarks + run: cargo criterion --bench search-benchmarks --message-format=json -- LIGHT | tee output.txt +``` + +## Process benchmarks results + +There are two notable differences in cargo-criterion: + + 1. Since the output is machine-readable JSON, the extract process only parses the result file and maps the required data into github-action-benchmark plotting system. + 2. cargo-criterion incorporates [its own HTML benchmark reports system][criterion-rs-own-html], which can be stored alongside if desired through the `store-native-benchmark-report` flag. + +```yaml +- name: Store benchmark result + uses: benchmark-action/github-action-benchmark@v1 + with: + tool: 'cargo-criterion' + output-file-path: output.json + store-native-benchmark-report: true +``` + +[cargo-criterion]: https://crates.io/crates/cargo-criterion +[criterion-rs-own-html]: https://bheisler.github.io/criterion.rs/book/user_guide/plots_and_graphs.html \ No newline at end of file From 7d3c1e407e6e296d3dd8a6d9f57c8ad2ee570e44 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Thu, 22 Dec 2022 16:15:49 +1100 Subject: [PATCH 05/27] A bit more clarification on what remains to be done on the extraction side, namely multiple benchmark reports, not just single --- src/extract.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/extract.ts b/src/extract.ts index 9b9683386..963aef578 100644 --- a/src/extract.ts +++ b/src/extract.ts @@ -381,7 +381,7 @@ function extractCargoResult(output: string): BenchmarkResult[] { } function extractCriterionResult(output: string): BenchmarkResult[] { - let json: CargoCriterionBenchmarkJson; // TODO: Multiple benchmarks, collated JSONs + let json: CargoCriterionBenchmarkJson; // TODO: Support multiple benchmarks, see test/data/extract/criterion_output_multi.json const ret = []; try { @@ -398,7 +398,7 @@ function extractCriterionResult(output: string): BenchmarkResult[] { console.log(criterion_benchmark_reports); const name = json.id; - const value = json.median.estimate; // TODO: Check if most statistically relevant here? + const value = json.median.estimate; // Is this the most statistically relevant here for perf regressions? const extra = JSON.stringify([criterion_benchmark_reports, JSON.stringify(json.iteration_count), JSON.stringify(json.measured_values), JSON.stringify(json.typical), JSON.stringify(json.mean),JSON.stringify(json.median_abs_dev), From d5e0fa8aaf54f30f743934c89beb08b2429525d1 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Thu, 22 Dec 2022 16:15:49 +1100 Subject: [PATCH 06/27] A bit more clarification on what remains to be done on the extraction side, namely multiple benchmark reports, not just single --- examples/rust/README.md | 2 +- src/extract.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/rust/README.md b/examples/rust/README.md index 6a3ddbdef..b2a09b05c 100644 --- a/examples/rust/README.md +++ b/examples/rust/README.md @@ -69,7 +69,7 @@ https://bheisler.github.io/criterion.rs/book/cargo_criterion/cargo_criterion.htm There are two notable differences in cargo-criterion: - 1. Since the output is machine-readable JSON, the extract process only parses the result file and maps the required data into github-action-benchmark plotting system. + 1. Since the output is machine-readable JSON, the extract process only parses the result file and maps the required data into github-action-benchmark plotting system. In fact, [cargo-criterion][cargo-criterion] only supports JSON as `message-format` (output format). 2. cargo-criterion incorporates [its own HTML benchmark reports system][criterion-rs-own-html], which can be stored alongside if desired through the `store-native-benchmark-report` flag. ```yaml diff --git a/src/extract.ts b/src/extract.ts index 9b9683386..963aef578 100644 --- a/src/extract.ts +++ b/src/extract.ts @@ -381,7 +381,7 @@ function extractCargoResult(output: string): BenchmarkResult[] { } function extractCriterionResult(output: string): BenchmarkResult[] { - let json: CargoCriterionBenchmarkJson; // TODO: Multiple benchmarks, collated JSONs + let json: CargoCriterionBenchmarkJson; // TODO: Support multiple benchmarks, see test/data/extract/criterion_output_multi.json const ret = []; try { @@ -398,7 +398,7 @@ function extractCriterionResult(output: string): BenchmarkResult[] { console.log(criterion_benchmark_reports); const name = json.id; - const value = json.median.estimate; // TODO: Check if most statistically relevant here? + const value = json.median.estimate; // Is this the most statistically relevant here for perf regressions? const extra = JSON.stringify([criterion_benchmark_reports, JSON.stringify(json.iteration_count), JSON.stringify(json.measured_values), JSON.stringify(json.typical), JSON.stringify(json.mean),JSON.stringify(json.median_abs_dev), From e37228587b83cc71e9a5ddb5269690cd7d412024 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Fri, 23 Dec 2022 11:30:12 +1100 Subject: [PATCH 07/27] Minor couple of fixes --- examples/rust/README.md | 2 +- src/config.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/rust/README.md b/examples/rust/README.md index b2a09b05c..784541e5c 100644 --- a/examples/rust/README.md +++ b/examples/rust/README.md @@ -45,7 +45,7 @@ Store the benchmark results with step using the action. Please set `cargo` to `t Please read ['How to use' section](https://github.com/benchmark-action/github-action-benchmark#how-to-use) for common usage. -# Rust example for benchmarking with cargo-criterion +# Rust example for benchmarking with `cargo-criterion` In the previous section, both regular and criterion-rs can be used through the regular `cargo bench` facility, but there's an additional crate and cargo extension named [`cargo-criterion`][cargo-criterion]. diff --git a/src/config.ts b/src/config.ts index fc1ed4ed7..f8eb80a08 100644 --- a/src/config.ts +++ b/src/config.ts @@ -27,6 +27,7 @@ export interface Config { export const VALID_TOOLS = [ 'cargo', + 'cargo-criterion', 'go', 'benchmarkjs', 'benchmarkluau', @@ -38,7 +39,6 @@ export const VALID_TOOLS = [ 'benchmarkdotnet', 'customBiggerIsBetter', 'customSmallerIsBetter', - 'cargo-criterion' ] as const; const RE_UINT = /^\d+$/; From 91812bc3a9711b1d581d50a67f0aff6f39333c4d Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Fri, 23 Dec 2022 11:38:16 +1100 Subject: [PATCH 08/27] npm lint -- --fix for my extract additions --- src/extract.ts | 65 ++++++++++++++++++++++++-------------------- test/extract.spec.ts | 4 +-- 2 files changed, 37 insertions(+), 32 deletions(-) diff --git a/src/extract.ts b/src/extract.ts index 963aef578..588c928a1 100644 --- a/src/extract.ts +++ b/src/extract.ts @@ -78,35 +78,35 @@ export interface CargoCriterionBenchmarkJson { unit: string; throughput: []; typical: { - estimate: number, - lower_bound: number, - upper_bount: number, - unit: string - }, + estimate: number; + lower_bound: number; + upper_bount: number; + unit: string; + }; mean: { - estimate: number, - lower_bound: number, - upper_bount: number, - unit: string - }, + estimate: number; + lower_bound: number; + upper_bount: number; + unit: string; + }; median: { - estimate: number, - lower_bound: number, - upper_bount: number, - unit: string - }, + estimate: number; + lower_bound: number; + upper_bount: number; + unit: string; + }; median_abs_dev: { - estimate: number, - lower_bound: number, - upper_bount: number, - unit: string - }, + estimate: number; + lower_bound: number; + upper_bount: number; + unit: string; + }; slope: { - estimate: number, - lower_bound: number, - upper_bount: number, - unit: string - } + estimate: number; + lower_bound: number; + upper_bount: number; + unit: string; + }; report_directory: string; } @@ -399,16 +399,21 @@ function extractCriterionResult(output: string): BenchmarkResult[] { const name = json.id; const value = json.median.estimate; // Is this the most statistically relevant here for perf regressions? - const extra = JSON.stringify([criterion_benchmark_reports, JSON.stringify(json.iteration_count), - JSON.stringify(json.measured_values), JSON.stringify(json.typical), - JSON.stringify(json.mean),JSON.stringify(json.median_abs_dev), - JSON.stringify(json.slope)]) + const extra = JSON.stringify([ + criterion_benchmark_reports, + JSON.stringify(json.iteration_count), + JSON.stringify(json.measured_values), + JSON.stringify(json.typical), + JSON.stringify(json.mean), + JSON.stringify(json.median_abs_dev), + JSON.stringify(json.slope), + ]); ret.push({ name, value, unit: 'ns', - extra + extra, }); return ret; diff --git a/test/extract.spec.ts b/test/extract.spec.ts index ef84ccf1a..42d1a52d3 100644 --- a/test/extract.spec.ts +++ b/test/extract.spec.ts @@ -111,8 +111,8 @@ describe('extractResult()', function () { name: 'Queries/[LIGHT] Bam query all', unit: 'ns', value: 12342.126458243318, - extra: "[\"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all\",\"[1906,3812,5718,7624,9530,11436,13342,15248,17154,19060,20966,22872,24778,26684,28590,30496,32402,34308,36214,38120,40026,41932,43838,45744,47650,49556,51462,53368,55274,57180,59086,60992,62898,64804,66710,68616,70522,72428,74334,76240,78146,80052,81958,83864,85770,87676,89582,91488,93394,95300]\",\"[23353750,46591042,70056375,93342417,116538959,143924833,167600792,185919208,212106375,233026875,254726333,278646875,305671125,324522875,357198834,371509417,404136209,416867708,448835000,463870791,493834167,520758917,531351708,562765584,578917750,611941333,633088334,664546750,701506208,697619667,724856750,743395167,782653209,799641667,822941209,856925000,891791459,892449667,935049625,998219083,980998209,988231167,1025668125,1041296834,1076883416,1115022292,1131879792,1163727042,1166034958,1184190625]\",\"{\\\"estimate\\\":12481.003131880992,\\\"lower_bound\\\":12409.549797222095,\\\"upper_bound\\\":12550.750722071223,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":12384.362708639734,\\\"lower_bound\\\":12333.018047376874,\\\"upper_bound\\\":12439.607894674537,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":211.04993263521555,\\\"lower_bound\\\":139.18536378733978,\\\"upper_bound\\\":257.9776202585765,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":12481.003131880992,\\\"lower_bound\\\":12409.549797222095,\\\"upper_bound\\\":12550.750722071223,\\\"unit\\\":\\\"ns\\\"}\"]" - } + extra: '["/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","[1906,3812,5718,7624,9530,11436,13342,15248,17154,19060,20966,22872,24778,26684,28590,30496,32402,34308,36214,38120,40026,41932,43838,45744,47650,49556,51462,53368,55274,57180,59086,60992,62898,64804,66710,68616,70522,72428,74334,76240,78146,80052,81958,83864,85770,87676,89582,91488,93394,95300]","[23353750,46591042,70056375,93342417,116538959,143924833,167600792,185919208,212106375,233026875,254726333,278646875,305671125,324522875,357198834,371509417,404136209,416867708,448835000,463870791,493834167,520758917,531351708,562765584,578917750,611941333,633088334,664546750,701506208,697619667,724856750,743395167,782653209,799641667,822941209,856925000,891791459,892449667,935049625,998219083,980998209,988231167,1025668125,1041296834,1076883416,1115022292,1131879792,1163727042,1166034958,1184190625]","{\\"estimate\\":12481.003131880992,\\"lower_bound\\":12409.549797222095,\\"upper_bound\\":12550.750722071223,\\"unit\\":\\"ns\\"}","{\\"estimate\\":12384.362708639734,\\"lower_bound\\":12333.018047376874,\\"upper_bound\\":12439.607894674537,\\"unit\\":\\"ns\\"}","{\\"estimate\\":211.04993263521555,\\"lower_bound\\":139.18536378733978,\\"upper_bound\\":257.9776202585765,\\"unit\\":\\"ns\\"}","{\\"estimate\\":12481.003131880992,\\"lower_bound\\":12409.549797222095,\\"upper_bound\\":12550.750722071223,\\"unit\\":\\"ns\\"}"]', + }, ], }, { From 2d3818fc4167dd7d11b191a63bad6f979088dd67 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Tue, 3 Jan 2023 10:48:20 +1100 Subject: [PATCH 09/27] Minor changes and cleanups, following CONTRIBUTING.md a bit more closely --- .gitignore | 1 + README.md | 3 ++- src/extract.ts | 2 -- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index c6a69e261..64143b131 100644 --- a/.gitignore +++ b/.gitignore @@ -10,5 +10,6 @@ /coverage /dist /.idea +.release target/ jmh-result.json diff --git a/README.md b/README.md index 071c77636..6fe5edee8 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ and monitor the results on GitHub Actions workflow. This action currently supports the following tools: -- [`cargo bench`][cargo-bench] for Rust projects +- [`cargo bench`][cargo-bench] and [`cargo criterion`][cargo-criterion] for Rust projects - `go test -bench` for Go projects - [benchmark.js][benchmarkjs] for JavaScript/TypeScript projects - [pytest-benchmark][] for Python projects with [pytest][] @@ -605,6 +605,7 @@ Every release will appear on your GitHub notifications page. [java-badge]: https://github.com/benchmark-action/github-action-benchmark/workflows/JMH%20Example/badge.svg [github-action]: https://github.com/features/actions [cargo-bench]: https://doc.rust-lang.org/cargo/commands/cargo-bench.html +[cargo-criterion]: https://crates.io/crates/cargo-criterion [benchmarkjs]: https://benchmarkjs.com/ [gh-pages]: https://pages.github.com/ [examples-page]: https://benchmark-action.github.io/github-action-benchmark/dev/bench/ diff --git a/src/extract.ts b/src/extract.ts index 588c928a1..f830afb16 100644 --- a/src/extract.ts +++ b/src/extract.ts @@ -395,8 +395,6 @@ function extractCriterionResult(output: string): BenchmarkResult[] { // TODO: Also git add and push the report_directory in github pages, timestamped? const criterion_benchmark_reports = json.report_directory; - console.log(criterion_benchmark_reports); - const name = json.id; const value = json.median.estimate; // Is this the most statistically relevant here for perf regressions? const extra = JSON.stringify([ From 3258e9562d54a67939a5667ec1747b6516ced244 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Tue, 3 Jan 2023 14:33:57 +1100 Subject: [PATCH 10/27] High severity bugfix for node dependency --- package-lock.json | 2884 ++++++++++++++++++++++----------------------- 1 file changed, 1437 insertions(+), 1447 deletions(-) diff --git a/package-lock.json b/package-lock.json index 23950bcd2..feee39e39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "eslint-config-prettier": "^8.3.0", "eslint-plugin-jest": "^25.2.4", "eslint-plugin-prettier": "^4.0.0", - "jest": "^27.3.1", + "jest": "^27.5.1", "markdown-it": "^12.3.2", "prettier": "^2.4.1", "rimraf": "^3.0.2", @@ -307,9 +307,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -560,12 +560,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", - "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -728,16 +728,16 @@ } }, "node_modules/@jest/console": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz", - "integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.3.1", - "jest-util": "^27.3.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0" }, "engines": { @@ -794,35 +794,35 @@ "dev": true }, "node_modules/@jest/core": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz", - "integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, "dependencies": { - "@jest/console": "^27.3.1", - "@jest/reporters": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.3.0", - "jest-config": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-resolve-dependencies": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "jest-watcher": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", "micromatch": "^4.0.4", "rimraf": "^3.0.0", "slash": "^3.0.0", @@ -889,118 +889,78 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@jest/core/node_modules/jest-config": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", - "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.3.1", - "@jest/types": "^27.2.5", - "babel-jest": "^27.3.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-circus": "^27.3.1", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-jasmine2": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "micromatch": "^4.0.4", - "pretty-format": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, "node_modules/@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, "dependencies": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.3.0" + "jest-mock": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/globals": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz", - "integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/types": "^27.2.5", - "expect": "^27.3.1" + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/reporters": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz", - "integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", "glob": "^7.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -1078,13 +1038,13 @@ } }, "node_modules/@jest/source-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", - "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, "dependencies": { "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "source-map": "^0.6.0" }, "engines": { @@ -1101,13 +1061,13 @@ } }, "node_modules/@jest/test-result": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz", - "integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, "dependencies": { - "@jest/console": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -1116,38 +1076,38 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz", - "integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", "dev": true, "dependencies": { - "@jest/test-result": "^27.3.1", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-runtime": "^27.3.1" + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, "dependencies": { "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", "micromatch": "^4.0.4", - "pirates": "^4.0.1", + "pirates": "^4.0.4", "slash": "^3.0.0", "source-map": "^0.6.1", "write-file-atomic": "^3.0.0" @@ -1215,9 +1175,9 @@ } }, "node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -1414,9 +1374,9 @@ } }, "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, "dependencies": { "type-detect": "4.0.8" @@ -1450,9 +1410,9 @@ } }, "node_modules/@types/babel__core": { - "version": "7.1.16", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", - "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "version": "7.1.20", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", + "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -1463,9 +1423,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", - "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" @@ -1617,9 +1577,9 @@ "integrity": "sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ==" }, "node_modules/@types/prettier": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz", - "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, "node_modules/@types/rimraf": { @@ -1889,9 +1849,9 @@ } }, "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "dev": true }, "node_modules/acorn": { @@ -1954,15 +1914,18 @@ } }, "node_modules/ansi-escapes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", - "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "type-fest": "^0.8.1" + "type-fest": "^0.21.3" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ansi-regex": { @@ -1987,9 +1950,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -1999,15 +1962,6 @@ "node": ">= 8" } }, - "node_modules/anymatch/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -2029,7 +1983,7 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "node_modules/atob-lite": { @@ -2038,18 +1992,18 @@ "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=" }, "node_modules/babel-jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", - "integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", "dev": true, "dependencies": { - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.2.0", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "slash": "^3.0.0" }, "engines": { @@ -2124,35 +2078,10 @@ "node": ">=8" } }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/babel-plugin-jest-hoist": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", - "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", @@ -2188,12 +2117,12 @@ } }, "node_modules/babel-preset-jest": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", - "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^27.2.0", + "babel-plugin-jest-hoist": "^27.5.1", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -2421,10 +2350,21 @@ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "engines": { "iojs": ">= 1.0.0", @@ -2584,15 +2524,15 @@ } }, "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, "node_modules/deep-diff": { @@ -2699,7 +2639,7 @@ "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "engines": { "node": ">=0.4.0" @@ -2720,9 +2660,9 @@ } }, "node_modules/diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -2899,6 +2839,15 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/es-get-iterator": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.0.2.tgz", @@ -3575,41 +3524,27 @@ "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" } }, "node_modules/expect": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", - "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6" + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3660,9 +3595,9 @@ } }, "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "dependencies": { "bser": "2.1.1" @@ -3744,6 +3679,20 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -3871,9 +3820,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "node_modules/has": { @@ -3919,9 +3868,9 @@ } }, "node_modules/html-escaper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", - "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "node_modules/htmlparser2": { @@ -3958,9 +3907,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { "agent-base": "6", @@ -4014,9 +3963,9 @@ } }, "node_modules/import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { "pkg-dir": "^4.2.0", @@ -4027,6 +3976,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/imurmurhash": { @@ -4063,6 +4015,12 @@ "node": ">= 0.4" } }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, "node_modules/is-bigint": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", @@ -4088,9 +4046,9 @@ } }, "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -4300,14 +4258,15 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" }, "engines": { @@ -4338,9 +4297,9 @@ } }, "node_modules/istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "dependencies": { "debug": "^4.1.1", @@ -4348,7 +4307,7 @@ "source-map": "^0.6.1" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-lib-source-maps/node_modules/source-map": { @@ -4361,9 +4320,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", - "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -4374,14 +4333,14 @@ } }, "node_modules/jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz", - "integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", "dev": true, "dependencies": { - "@jest/core": "^27.3.1", + "@jest/core": "^27.5.1", "import-local": "^3.0.2", - "jest-cli": "^27.3.1" + "jest-cli": "^27.5.1" }, "bin": { "jest": "bin/jest.js" @@ -4399,12 +4358,12 @@ } }, "node_modules/jest-changed-files": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz", - "integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "execa": "^5.0.0", "throat": "^6.0.1" }, @@ -4531,27 +4490,27 @@ } }, "node_modules/jest-circus": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", - "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", "dev": true, "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.3.1", + "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" @@ -4610,21 +4569,21 @@ "dev": true }, "node_modules/jest-cli": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", - "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", "dev": true, "dependencies": { - "@jest/core": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "prompts": "^2.0.1", "yargs": "^16.2.0" }, @@ -4674,17 +4633,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-cli/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -4703,33 +4651,36 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-cli/node_modules/jest-config": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", - "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.3.1", - "@jest/types": "^27.2.5", - "babel-jest": "^27.3.1", + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-circus": "^27.3.1", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-jasmine2": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "micromatch": "^4.0.4", - "pretty-format": "^27.3.1" + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -4743,69 +4694,65 @@ } } }, - "node_modules/jest-cli/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-cli/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-cli/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" + "node": ">=7.0.0" } }, - "node_modules/jest-cli/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/jest-diff": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", - "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -4861,9 +4808,9 @@ "dev": true }, "node_modules/jest-docblock": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", - "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", "dev": true, "dependencies": { "detect-newline": "^3.0.0" @@ -4873,16 +4820,16 @@ } }, "node_modules/jest-each": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", - "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -4938,17 +4885,17 @@ "dev": true }, "node_modules/jest-environment-jsdom": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz", - "integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", "dev": true, "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", "jsdom": "^16.6.0" }, "engines": { @@ -4956,47 +4903,47 @@ } }, "node_modules/jest-environment-node": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", - "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", "dev": true, "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "micromatch": "^4.0.4", "walker": "^1.0.7" }, @@ -5007,43 +4954,28 @@ "fsevents": "^2.3.2" } }, - "node_modules/jest-haste-map/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/jest-jasmine2": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz", - "integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", "dev": true, "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.3.1", + "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", "throat": "^6.0.1" }, "engines": { @@ -5100,28 +5032,28 @@ "dev": true }, "node_modules/jest-leak-detector": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz", - "integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", "dev": true, "dependencies": { - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", - "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -5177,18 +5109,18 @@ "dev": true }, "node_modules/jest-message-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz", - "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.3.1", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -5246,12 +5178,12 @@ "dev": true }, "node_modules/jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "@types/node": "*" }, "engines": { @@ -5259,9 +5191,9 @@ } }, "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "engines": { "node": ">=6" @@ -5276,27 +5208,27 @@ } }, "node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-resolve": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz", - "integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" @@ -5306,14 +5238,14 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz", - "integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", - "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.3.1" + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -5369,31 +5301,30 @@ "dev": true }, "node_modules/jest-runner": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz", - "integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", "dev": true, "dependencies": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-leak-detector": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "source-map-support": "^0.5.6", "throat": "^6.0.1" }, @@ -5451,37 +5382,33 @@ "dev": true }, "node_modules/jest-runtime": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz", - "integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==", - "dev": true, - "dependencies": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/globals": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/yargs": "^16.0.0", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "execa": "^5.0.0", - "exit": "^0.1.2", "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^16.2.0" + "strip-bom": "^4.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -5518,17 +5445,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -5650,15 +5566,6 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runtime/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -5674,101 +5581,46 @@ "node": ">= 8" } }, - "node_modules/jest-runtime/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" + "@types/node": "*", + "graceful-fs": "^4.2.9" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-runtime/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-runtime/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz", - "integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==", + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", "dev": true, "dependencies": { "@babel/core": "^7.7.2", "@babel/generator": "^7.7.2", - "@babel/parser": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.3.1", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "natural-compare": "^1.4.0", - "pretty-format": "^27.3.1", + "pretty-format": "^27.5.1", "semver": "^7.3.2" }, "engines": { @@ -5825,9 +5677,9 @@ "dev": true }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -5840,16 +5692,16 @@ } }, "node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" }, "engines": { @@ -5906,17 +5758,17 @@ "dev": true }, "node_modules/jest-validate": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", - "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", + "jest-get-type": "^27.5.1", "leven": "^3.1.0", - "pretty-format": "^27.3.1" + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -5938,9 +5790,9 @@ } }, "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "engines": { "node": ">=10" @@ -5984,17 +5836,17 @@ "dev": true }, "node_modules/jest-watcher": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz", - "integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", "dev": true, "dependencies": { - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.3.1", + "jest-util": "^27.5.1", "string-length": "^4.0.1" }, "engines": { @@ -6051,9 +5903,9 @@ "dev": true }, "node_modules/jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "dependencies": { "@types/node": "*", @@ -6154,9 +6006,9 @@ } }, "node_modules/jsdom/node_modules/acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -6177,6 +6029,12 @@ "node": ">=4" } }, + "node_modules/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 + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -6190,13 +6048,10 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "json5": "lib/cli.js" }, @@ -6225,7 +6080,7 @@ "node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "dependencies": { "prelude-ls": "~1.1.2", @@ -6235,6 +6090,12 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "node_modules/linkify-it": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", @@ -6310,15 +6171,18 @@ } }, "node_modules/make-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", - "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "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, "dependencies": { "semver": "^6.0.0" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/make-dir/node_modules/semver": { @@ -6411,21 +6275,21 @@ } }, "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -6452,12 +6316,6 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -6516,24 +6374,24 @@ "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, - "node_modules/node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/node-releases": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -6558,9 +6416,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", "dev": true }, "node_modules/object-is": { @@ -6712,6 +6570,24 @@ "node": ">=6" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", @@ -6778,13 +6654,10 @@ } }, "node_modules/pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true, - "dependencies": { - "node-modules-regexp": "^1.0.0" - }, "engines": { "node": ">= 6" } @@ -6804,7 +6677,7 @@ "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -6835,12 +6708,11 @@ } }, "node_modules/pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" @@ -6884,9 +6756,9 @@ } }, "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, "node_modules/pump": { @@ -6907,6 +6779,12 @@ "node": ">=6" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -7010,20 +6888,30 @@ "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7274,9 +7162,9 @@ "dev": true }, "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "dependencies": { "escape-string-regexp": "^2.0.0" @@ -7308,14 +7196,14 @@ } }, "node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" @@ -7359,6 +7247,15 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -7410,9 +7307,9 @@ } }, "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, "dependencies": { "has-flag": "^4.0.0", @@ -7431,6 +7328,18 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -7527,14 +7436,15 @@ } }, "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", "dev": true, "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { "node": ">=6" @@ -7607,15 +7517,6 @@ "node": ">=10" } }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -7633,7 +7534,7 @@ "node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "dependencies": { "prelude-ls": "~1.1.2" @@ -7652,12 +7553,15 @@ } }, "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typedarray-to-buffer": { @@ -7697,9 +7601,9 @@ } }, "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, "engines": { "node": ">= 4.0.0" @@ -7714,6 +7618,16 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -7729,9 +7643,9 @@ "dev": true }, "node_modules/v8-to-istanbul": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", - "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.1", @@ -7743,9 +7657,9 @@ } }, "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "engines": { "node": ">= 8" @@ -7755,6 +7669,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", "dev": true, "dependencies": { "browser-process-hrtime": "^1.0.0" @@ -7878,6 +7793,56 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -7896,9 +7861,9 @@ } }, "node_modules/ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, "engines": { "node": ">=8.3.0" @@ -7928,11 +7893,47 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } } }, "dependencies": { @@ -8161,9 +8162,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", "dev": true }, "@babel/helper-replace-supers": { @@ -8345,12 +8346,12 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", - "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/template": { @@ -8483,16 +8484,16 @@ "dev": true }, "@jest/console": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz", - "integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.3.1", - "jest-util": "^27.3.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0" }, "dependencies": { @@ -8533,35 +8534,35 @@ } }, "@jest/core": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz", - "integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, "requires": { - "@jest/console": "^27.3.1", - "@jest/reporters": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.3.0", - "jest-config": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-resolve-dependencies": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "jest-watcher": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", "micromatch": "^4.0.4", "rimraf": "^3.0.0", "slash": "^3.0.0", @@ -8601,101 +8602,72 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "jest-config": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", - "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.3.1", - "@jest/types": "^27.2.5", - "babel-jest": "^27.3.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-circus": "^27.3.1", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-jasmine2": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "micromatch": "^4.0.4", - "pretty-format": "^27.3.1" - } } } }, "@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, "requires": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.3.0" + "jest-mock": "^27.5.1" } }, "@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" } }, "@jest/globals": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz", - "integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, "requires": { - "@jest/environment": "^27.3.1", - "@jest/types": "^27.2.5", - "expect": "^27.3.1" + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" } }, "@jest/reporters": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz", - "integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", "glob": "^7.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -8746,13 +8718,13 @@ } }, "@jest/source-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", - "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, "requires": { "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "source-map": "^0.6.0" }, "dependencies": { @@ -8765,47 +8737,47 @@ } }, "@jest/test-result": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz", - "integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, "requires": { - "@jest/console": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz", - "integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", "dev": true, "requires": { - "@jest/test-result": "^27.3.1", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-runtime": "^27.3.1" + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" } }, "@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", "micromatch": "^4.0.4", - "pirates": "^4.0.1", + "pirates": "^4.0.4", "slash": "^3.0.0", "source-map": "^0.6.1", "write-file-atomic": "^3.0.0" @@ -8854,9 +8826,9 @@ } }, "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -9032,9 +9004,9 @@ } }, "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, "requires": { "type-detect": "4.0.8" @@ -9065,9 +9037,9 @@ } }, "@types/babel__core": { - "version": "7.1.16", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", - "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "version": "7.1.20", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", + "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -9078,9 +9050,9 @@ } }, "@types/babel__generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", - "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "dev": true, "requires": { "@babel/types": "^7.0.0" @@ -9232,9 +9204,9 @@ "integrity": "sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ==" }, "@types/prettier": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz", - "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, "@types/rimraf": { @@ -9406,9 +9378,9 @@ } }, "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "dev": true }, "acorn": { @@ -9455,12 +9427,12 @@ } }, "ansi-escapes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", - "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.21.3" } }, "ansi-regex": { @@ -9479,21 +9451,13 @@ } }, "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" - }, - "dependencies": { - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - } } }, "argparse": { @@ -9514,7 +9478,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "atob-lite": { @@ -9523,18 +9487,18 @@ "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=" }, "babel-jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", - "integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", "dev": true, "requires": { - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.2.0", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "slash": "^3.0.0" }, "dependencies": { @@ -9585,33 +9549,12 @@ "@istanbuljs/schema": "^0.1.2", "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" - }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, "babel-plugin-jest-hoist": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", - "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", "dev": true, "requires": { "@babel/template": "^7.3.3", @@ -9641,12 +9584,12 @@ } }, "babel-preset-jest": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", - "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^27.2.0", + "babel-plugin-jest-hoist": "^27.5.1", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -9828,10 +9771,21 @@ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, "collect-v8-coverage": { @@ -9962,15 +9916,15 @@ } }, "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, "deep-diff": { @@ -10055,7 +10009,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true }, "deprecation": { @@ -10070,9 +10024,9 @@ "dev": true }, "diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "dev": true }, "dir-glob": { @@ -10204,6 +10158,15 @@ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, "es-get-iterator": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.0.2.tgz", @@ -10679,29 +10642,19 @@ "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true }, "expect": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", - "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, "requires": { - "@jest/types": "^27.2.5", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" } }, "fast-deep-equal": { @@ -10751,9 +10704,9 @@ } }, "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "requires": { "bser": "2.1.1" @@ -10820,6 +10773,13 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -10915,9 +10875,9 @@ } }, "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "has": { @@ -10951,9 +10911,9 @@ } }, "html-escaper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", - "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "htmlparser2": { @@ -10980,9 +10940,9 @@ } }, "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "requires": { "agent-base": "6", @@ -11021,9 +10981,9 @@ } }, "import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "requires": { "pkg-dir": "^4.2.0", @@ -11058,6 +11018,12 @@ "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", "dev": true }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, "is-bigint": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", @@ -11077,9 +11043,9 @@ "dev": true }, "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "requires": { "has": "^1.0.3" @@ -11226,14 +11192,15 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "requires": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" }, "dependencies": { @@ -11257,9 +11224,9 @@ } }, "istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "requires": { "debug": "^4.1.1", @@ -11276,9 +11243,9 @@ } }, "istanbul-reports": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", - "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -11286,23 +11253,23 @@ } }, "jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz", - "integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", "dev": true, "requires": { - "@jest/core": "^27.3.1", + "@jest/core": "^27.5.1", "import-local": "^3.0.2", - "jest-cli": "^27.3.1" + "jest-cli": "^27.5.1" } }, "jest-changed-files": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz", - "integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "execa": "^5.0.0", "throat": "^6.0.1" }, @@ -11389,27 +11356,27 @@ } }, "jest-circus": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", - "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", "dev": true, "requires": { - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.3.1", + "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" @@ -11452,21 +11419,21 @@ } }, "jest-cli": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", - "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", "dev": true, "requires": { - "@jest/core": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "prompts": "^2.0.1", "yargs": "^16.2.0" }, @@ -11490,17 +11457,6 @@ "supports-color": "^7.1.0" } }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -11515,86 +11471,87 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "jest-config": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", - "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", + } + } + }, + "jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, + "requires": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.3.1", - "@jest/types": "^27.2.5", - "babel-jest": "^27.3.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-circus": "^27.3.1", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-jasmine2": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "micromatch": "^4.0.4", - "pretty-format": "^27.3.1" + "color-convert": "^2.0.1" } }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "color-name": "~1.1.4" } }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, "jest-diff": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", - "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "dependencies": { "ansi-styles": { @@ -11634,25 +11591,25 @@ } }, "jest-docblock": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", - "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", - "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" }, "dependencies": { "ansi-styles": { @@ -11692,93 +11649,83 @@ } }, "jest-environment-jsdom": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz", - "integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", "dev": true, "requires": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", "jsdom": "^16.6.0" } }, "jest-environment-node": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", - "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", "dev": true, "requires": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" } }, "jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true }, "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "micromatch": "^4.0.4", "walker": "^1.0.7" - }, - "dependencies": { - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - } } }, "jest-jasmine2": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz", - "integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.3.1", + "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", "throat": "^6.0.1" }, "dependencies": { @@ -11819,25 +11766,25 @@ } }, "jest-leak-detector": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz", - "integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", "dev": true, "requires": { - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" } }, "jest-matcher-utils": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", - "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "dependencies": { "ansi-styles": { @@ -11877,18 +11824,18 @@ } }, "jest-message-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz", - "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.3.1", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -11930,41 +11877,41 @@ } }, "jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "@types/node": "*" } }, "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "requires": {} }, "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true }, "jest-resolve": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz", - "integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" @@ -12007,42 +11954,41 @@ } }, "jest-resolve-dependencies": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz", - "integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", "dev": true, "requires": { - "@jest/types": "^27.2.5", - "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.3.1" + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" } }, "jest-runner": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz", - "integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", "dev": true, "requires": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-leak-detector": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "source-map-support": "^0.5.6", "throat": "^6.0.1" }, @@ -12084,37 +12030,33 @@ } }, "jest-runtime": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz", - "integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==", - "dev": true, - "requires": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/globals": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/yargs": "^16.0.0", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "execa": "^5.0.0", - "exit": "^0.1.2", "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^16.2.0" + "strip-bom": "^4.0.0" }, "dependencies": { "ansi-styles": { @@ -12136,17 +12078,6 @@ "supports-color": "^7.1.0" } }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -12232,12 +12163,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -12246,86 +12171,46 @@ "requires": { "isexe": "^2.0.0" } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true } } }, "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", "dev": true, "requires": { "@types/node": "*", - "graceful-fs": "^4.2.4" + "graceful-fs": "^4.2.9" } }, "jest-snapshot": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz", - "integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", "dev": true, "requires": { "@babel/core": "^7.7.2", "@babel/generator": "^7.7.2", - "@babel/parser": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.3.1", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "natural-compare": "^1.4.0", - "pretty-format": "^27.3.1", + "pretty-format": "^27.5.1", "semver": "^7.3.2" }, "dependencies": { @@ -12364,9 +12249,9 @@ "dev": true }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -12375,16 +12260,16 @@ } }, "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" }, "dependencies": { @@ -12425,17 +12310,17 @@ } }, "jest-validate": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", - "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.5.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", + "jest-get-type": "^27.5.1", "leven": "^3.1.0", - "pretty-format": "^27.3.1" + "pretty-format": "^27.5.1" }, "dependencies": { "ansi-styles": { @@ -12448,9 +12333,9 @@ } }, "camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, "chalk": { @@ -12481,17 +12366,17 @@ } }, "jest-watcher": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz", - "integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", "dev": true, "requires": { - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.3.1", + "jest-util": "^27.5.1", "string-length": "^4.0.1" }, "dependencies": { @@ -12532,9 +12417,9 @@ } }, "jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "requires": { "@types/node": "*", @@ -12611,9 +12496,9 @@ }, "dependencies": { "acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true } } @@ -12624,6 +12509,12 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -12637,13 +12528,10 @@ "dev": true }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true }, "kleur": { "version": "3.0.3", @@ -12660,13 +12548,19 @@ "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "requires": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" } }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "linkify-it": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", @@ -12733,9 +12627,9 @@ "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==" }, "make-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", - "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "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" @@ -12820,18 +12714,18 @@ } }, "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true }, "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "requires": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" } }, "mimic-fn": { @@ -12849,12 +12743,6 @@ "brace-expansion": "^1.1.7" } }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -12904,13 +12792,7 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, "node-releases": { @@ -12919,6 +12801,12 @@ "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -12937,9 +12825,9 @@ } }, "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", "dev": true }, "object-is": { @@ -13049,6 +12937,18 @@ "callsites": "^3.0.0" } }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, "parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", @@ -13100,13 +13000,10 @@ "dev": true }, "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true }, "pkg-dir": { "version": "4.2.0", @@ -13120,7 +13017,7 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true }, "prettier": { @@ -13139,12 +13036,11 @@ } }, "pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "requires": { - "@jest/types": "^27.2.5", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" @@ -13175,9 +13071,9 @@ } }, "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, "pump": { @@ -13195,6 +13091,12 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -13259,17 +13161,24 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-cwd": { @@ -13448,9 +13357,9 @@ "dev": true }, "stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "requires": { "escape-string-regexp": "^2.0.0" @@ -13475,14 +13384,14 @@ } }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "string.prototype.trimleft": { @@ -13514,6 +13423,12 @@ "ansi-regex": "^5.0.1" } }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -13549,9 +13464,9 @@ } }, "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, "requires": { "has-flag": "^4.0.0", @@ -13566,6 +13481,12 @@ } } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -13643,14 +13564,15 @@ } }, "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", "dev": true, "requires": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" } }, "tr46": { @@ -13686,12 +13608,6 @@ "requires": { "lru-cache": "^6.0.0" } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true } } }, @@ -13709,7 +13625,7 @@ "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "requires": { "prelude-ls": "~1.1.2" @@ -13722,9 +13638,9 @@ "dev": true }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, "typedarray-to-buffer": { @@ -13757,9 +13673,9 @@ } }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true }, "uri-js": { @@ -13771,6 +13687,16 @@ "punycode": "^2.1.0" } }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -13783,9 +13709,9 @@ "dev": true }, "v8-to-istanbul": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", - "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.1", @@ -13794,9 +13720,9 @@ }, "dependencies": { "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true } } @@ -13907,6 +13833,43 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -13925,9 +13888,9 @@ } }, "ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, "requires": {} }, @@ -13943,11 +13906,38 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true } } } From 319d18bb5199223a3681fadd20700961d02afb46 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Wed, 4 Jan 2023 14:09:58 +1100 Subject: [PATCH 11/27] VSCode formatting broke the ndJSON structure of the test, introducing multiple newlines to improve readability (and break the tests as a result) --- test/data/extract/criterion_output_multi.json | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/test/data/extract/criterion_output_multi.json b/test/data/extract/criterion_output_multi.json index ecb051894..075bde00c 100644 --- a/test/data/extract/criterion_output_multi.json +++ b/test/data/extract/criterion_output_multi.json @@ -1,13 +1,13 @@ -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","iteration_count":[1906,3812,5718,7624,9530,11436,13342,15248,17154,19060,20966,22872,24778,26684,28590,30496,32402,34308,36214,38120,40026,41932,43838,45744,47650,49556,51462,53368,55274,57180,59086,60992,62898,64804,66710,68616,70522,72428,74334,76240,78146,80052,81958,83864,85770,87676,89582,91488,93394,95300],"measured_values":[23353750.0,46591042.0,70056375.0,93342417.0,116538959.0,143924833.0,167600792.0,185919208.0,212106375.0,233026875.0,254726333.0,278646875.0,305671125.0,324522875.0,357198834.0,371509417.0,404136209.0,416867708.0,448835000.0,463870791.0,493834167.0,520758917.0,531351708.0,562765584.0,578917750.0,611941333.0,633088334.0,664546750.0,701506208.0,697619667.0,724856750.0,743395167.0,782653209.0,799641667.0,822941209.0,856925000.0,891791459.0,892449667.0,935049625.0,998219083.0,980998209.0,988231167.0,1025668125.0,1041296834.0,1076883416.0,1115022292.0,1131879792.0,1163727042.0,1166034958.0,1184190625.0],"unit":"ns","throughput":[],"typical":{"estimate":12481.003131880992,"lower_bound":12409.549797222095,"upper_bound":12550.750722071223,"unit":"ns"},"mean":{"estimate":12384.362708639734,"lower_bound":12333.018047376874,"upper_bound":12439.607894674537,"unit":"ns"},"median":{"estimate":12342.126458243318,"lower_bound":12285.16311816674,"upper_bound":12431.170979204426,"unit":"ns"},"median_abs_dev":{"estimate":211.04993263521555,"lower_bound":139.18536378733978,"upper_bound":257.9776202585765,"unit":"ns"},"slope":{"estimate":12481.003131880992,"lower_bound":12409.549797222095,"upper_bound":12550.750722071223,"unit":"ns"},"change":null} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query specific","iteration_count":[1857,3714,5571,7428,9285,11142,12999,14856,16713,18570,20427,22284,24141,25998,27855,29712,31569,33426,35283,37140,38997,40854,42711,44568,46425,48282,50139,51996,53853,55710,57567,59424,61281,63138,64995,66852,68709,70566,72423,74280,76137,77994,79851,81708,83565,85422,87279,89136,90993,92850],"measured_values":[23074458.0,46191167.0,69862708.0,93354208.0,120352208.0,140426959.0,163323209.0,186946334.0,209770625.0,231367125.0,256589542.0,293328458.0,307131292.0,329660541.0,363367291.0,394994625.0,394732542.0,417154666.0,443729875.0,463503125.0,485744166.0,547478333.0,531077667.0,561108041.0,582509958.0,602621209.0,627997792.0,651734041.0,670207417.0,694730042.0,718155709.0,739516417.0,758606083.0,788517542.0,812182584.0,834685833.0,856625250.0,879083959.0,907981292.0,938527125.0,946355417.0,983176958.0,998526750.0,1014342333.0,1055089625.0,1076355833.0,1112857292.0,1111283417.0,1139067417.0,1161416667.0],"unit":"ns","throughput":[],"typical":{"estimate":12542.030657058294,"lower_bound":12504.750978781753,"upper_bound":12585.189603835279,"unit":"ns"},"mean":{"estimate":12587.561447528691,"lower_bound":12533.174013919526,"upper_bound":12651.44053905512,"unit":"ns"},"median":{"estimate":12521.661631073779,"lower_bound":12485.038023547932,"upper_bound":12561.293484114163,"unit":"ns"},"median_abs_dev":{"estimate":92.44463919076692,"lower_bound":59.51326692404042,"upper_bound":125.04918643547165,"unit":"ns"},"slope":{"estimate":12542.030657058294,"lower_bound":12504.750978781753,"upper_bound":12585.189603835279,"unit":"ns"},"change":null} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query header","iteration_count":[1881,3762,5643,7524,9405,11286,13167,15048,16929,18810,20691,22572,24453,26334,28215,30096,31977,33858,35739,37620,39501,41382,43263,45144,47025,48906,50787,52668,54549,56430,58311,60192,62073,63954,65835,67716,69597,71478,73359,75240,77121,79002,80883,82764,84645,86526,88407,90288,92169,94050],"measured_values":[23755042.0,46448583.0,70221083.0,93688333.0,117848542.0,141233250.0,164702750.0,186162000.0,210781458.0,234171333.0,258901167.0,283974042.0,304196625.0,326188333.0,351292708.0,375040958.0,397847125.0,423914583.0,440439375.0,468378459.0,492766667.0,515352875.0,539315416.0,562488709.0,586601667.0,610471792.0,630426667.0,653395208.0,675668959.0,702959875.0,725311542.0,754884958.0,773913625.0,797173084.0,827036000.0,840137708.0,865055667.0,898002500.0,912517625.0,940399917.0,957519459.0,981367666.0,1003241084.0,1025491584.0,1054805750.0,1082415292.0,1098768166.0,1132316125.0,1149766125.0,1175194833.0],"unit":"ns","throughput":[],"typical":{"estimate":12462.16826911174,"lower_bound":12443.529929097876,"upper_bound":12480.798808658436,"unit":"ns"},"mean":{"estimate":12461.865953481814,"lower_bound":12445.675359873314,"upper_bound":12478.471473524758,"unit":"ns"},"median":{"estimate":12455.376532469834,"lower_bound":12443.927520822257,"upper_bound":12470.112447588008,"unit":"ns"},"median_abs_dev":{"estimate":54.02959999713264,"lower_bound":26.883859069602522,"upper_bound":75.42064478130885,"unit":"ns"},"slope":{"estimate":12462.16826911174,"lower_bound":12443.529929097876,"upper_bound":12480.798808658436,"unit":"ns"},"change":null} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Cram query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Cram query all","iteration_count":[1890,3780,5670,7560,9450,11340,13230,15120,17010,18900,20790,22680,24570,26460,28350,30240,32130,34020,35910,37800,39690,41580,43470,45360,47250,49140,51030,52920,54810,56700,58590,60480,62370,64260,66150,68040,69930,71820,73710,75600,77490,79380,81270,83160,85050,86940,88830,90720,92610,94500],"measured_values":[23778083.0,47007500.0,70463042.0,94134250.0,116741583.0,140817791.0,163904208.0,190865709.0,210575333.0,235802625.0,258342791.0,282050125.0,305041958.0,328418667.0,352861167.0,376868208.0,397656000.0,419049625.0,446525584.0,469748375.0,492508583.0,519989458.0,538181125.0,568000417.0,591329167.0,613595875.0,632495083.0,660534334.0,684553083.0,703458792.0,727140958.0,749685333.0,784405334.0,798355917.0,821661125.0,838889666.0,872422542.0,899576083.0,916324583.0,943960791.0,967240041.0,984620417.0,1018327333.0,1033734541.0,1057366750.0,1081923250.0,1101662292.0,1125497500.0,1143915125.0,1173018333.0],"unit":"ns","throughput":[],"typical":{"estimate":12437.46107380598,"lower_bound":12418.390755768874,"upper_bound":12457.641973467833,"unit":"ns"},"mean":{"estimate":12441.081608903076,"lower_bound":12424.327167466443,"upper_bound":12458.685936613183,"unit":"ns"},"median":{"estimate":12429.007277136443,"lower_bound":12415.220105820106,"upper_bound":12444.481826547044,"unit":"ns"},"median_abs_dev":{"estimate":49.65389838930112,"lower_bound":26.983515632057674,"upper_bound":73.04606879689027,"unit":"ns"},"slope":{"estimate":12437.46107380598,"lower_bound":12418.390755768874,"upper_bound":12457.641973467833,"unit":"ns"},"change":null} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Cram query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Cram query specific","iteration_count":[1883,3766,5649,7532,9415,11298,13181,15064,16947,18830,20713,22596,24479,26362,28245,30128,32011,33894,35777,37660,39543,41426,43309,45192,47075,48958,50841,52724,54607,56490,58373,60256,62139,64022,65905,67788,69671,71554,73437,75320,77203,79086,80969,82852,84735,86618,88501,90384,92267,94150],"measured_values":[23849833.0,47272459.0,70813750.0,93993792.0,117438000.0,140772208.0,165871084.0,187564584.0,214884917.0,234894917.0,258032083.0,281054042.0,304496875.0,330005709.0,354445375.0,377868042.0,401734333.0,424470333.0,446670875.0,471897166.0,496470625.0,518243125.0,539936542.0,568974292.0,586009167.0,608343042.0,636887042.0,663813125.0,687941792.0,706986250.0,733194250.0,753532000.0,770972791.0,795386167.0,824105375.0,845515542.0,870172792.0,898631875.0,912664000.0,935229375.0,959545416.0,986392166.0,1015541417.0,1034786709.0,1050322750.0,1081589208.0,1111291167.0,1126932542.0,1156539125.0,1173766667.0],"unit":"ns","throughput":[],"typical":{"estimate":12490.33994772218,"lower_bound":12471.609197964332,"upper_bound":12509.708015669123,"unit":"ns"},"mean":{"estimate":12504.521351983178,"lower_bound":12487.67375011085,"upper_bound":12522.153765665806,"unit":"ns"},"median":{"estimate":12497.092784044191,"lower_bound":12473.499734466277,"upper_bound":12527.036092917133,"unit":"ns"},"median_abs_dev":{"estimate":66.90338915186933,"lower_bound":45.13192972765525,"upper_bound":83.77480548577644,"unit":"ns"},"slope":{"estimate":12490.33994772218,"lower_bound":12471.609197964332,"upper_bound":12509.708015669123,"unit":"ns"},"change":null} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Cram query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Cram query header","iteration_count":[1885,3770,5655,7540,9425,11310,13195,15080,16965,18850,20735,22620,24505,26390,28275,30160,32045,33930,35815,37700,39585,41470,43355,45240,47125,49010,50895,52780,54665,56550,58435,60320,62205,64090,65975,67860,69745,71630,73515,75400,77285,79170,81055,82940,84825,86710,88595,90480,92365,94250],"measured_values":[23962792.0,47052583.0,70285500.0,94122917.0,117459042.0,139635875.0,164256959.0,188973625.0,213279625.0,233709667.0,257915292.0,278981166.0,305422959.0,329520417.0,353099334.0,375781667.0,399125833.0,423189500.0,447219750.0,469219416.0,489659750.0,521375500.0,544702333.0,559377667.0,586273750.0,615537000.0,638768416.0,659270167.0,680112584.0,704155750.0,728630708.0,742462292.0,774155125.0,796921333.0,830978500.0,839306875.0,867659833.0,891940166.0,912373833.0,938355500.0,967490000.0,984754542.0,1004259500.0,1024346916.0,1048699709.0,1073102584.0,1101052667.0,1125097167.0,1155603792.0,1172378125.0],"unit":"ns","throughput":[],"typical":{"estimate":12440.017588409863,"lower_bound":12419.30679144134,"upper_bound":12462.466060312268,"unit":"ns"},"mean":{"estimate":12456.37501290137,"lower_bound":12436.30000100241,"upper_bound":12477.51943421308,"unit":"ns"},"median":{"estimate":12447.281341417203,"lower_bound":12439.025198938993,"upper_bound":12465.78906819543,"unit":"ns"},"median_abs_dev":{"estimate":56.22545942416143,"lower_bound":25.951868851168626,"upper_bound":94.0064825305199,"unit":"ns"},"slope":{"estimate":12440.017588409863,"lower_bound":12419.30679144134,"upper_bound":12462.466060312268,"unit":"ns"},"change":null} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Vcf query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Vcf query all","iteration_count":[1885,3770,5655,7540,9425,11310,13195,15080,16965,18850,20735,22620,24505,26390,28275,30160,32045,33930,35815,37700,39585,41470,43355,45240,47125,49010,50895,52780,54665,56550,58435,60320,62205,64090,65975,67860,69745,71630,73515,75400,77285,79170,81055,82940,84825,86710,88595,90480,92365,94250],"measured_values":[23655584.0,46977667.0,70619375.0,94204458.0,116440292.0,141624167.0,165235500.0,187765209.0,211399542.0,235687417.0,259582125.0,283154750.0,306771875.0,334801000.0,350960250.0,376808833.0,398468083.0,421748417.0,443071708.0,471906458.0,488902917.0,520594083.0,541546792.0,565961334.0,588605417.0,608854125.0,629135834.0,650459667.0,675195458.0,704728959.0,722692041.0,752045750.0,766840208.0,801533459.0,818508875.0,846772167.0,871863458.0,891632583.0,922676750.0,931826416.0,954625334.0,976776625.0,1013652584.0,1047332416.0,1077400125.0,1084435083.0,1098434792.0,1127982084.0,1152175541.0,1174157916.0],"unit":"ns","throughput":[],"typical":{"estimate":12462.897415435287,"lower_bound":12429.425530370028,"upper_bound":12499.119134402245,"unit":"ns"},"mean":{"estimate":12465.309711661965,"lower_bound":12442.526447758419,"upper_bound":12488.833056796884,"unit":"ns"},"median":{"estimate":12470.87963886483,"lower_bound":12451.273806366047,"upper_bound":12497.196102319162,"unit":"ns"},"median_abs_dev":{"estimate":70.30073023528259,"lower_bound":41.467447659031485,"upper_bound":100.65908972812116,"unit":"ns"},"slope":{"estimate":12462.897415435287,"lower_bound":12429.425530370028,"upper_bound":12499.119134402245,"unit":"ns"},"change":null} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Vcf query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Vcf query specific","iteration_count":[1876,3752,5628,7504,9380,11256,13132,15008,16884,18760,20636,22512,24388,26264,28140,30016,31892,33768,35644,37520,39396,41272,43148,45024,46900,48776,50652,52528,54404,56280,58156,60032,61908,63784,65660,67536,69412,71288,73164,75040,76916,78792,80668,82544,84420,86296,88172,90048,91924,93800],"measured_values":[23543625.0,47130000.0,70159542.0,94060333.0,116259792.0,140684000.0,164649292.0,187247500.0,211190916.0,234518834.0,255212750.0,277983667.0,305557625.0,327979583.0,355701125.0,374594125.0,395023500.0,418460083.0,441661917.0,464574208.0,498357917.0,511655416.0,551578000.0,561748208.0,581259917.0,613290709.0,627326250.0,653418375.0,673214250.0,703987583.0,727785125.0,754879250.0,772950375.0,795171583.0,819367250.0,840534750.0,941899750.0,923392458.0,1037503333.0,996127583.0,990695417.0,1021424792.0,1272366250.0,1150176459.0,1102111500.0,1077888292.0,1116182208.0,1188484125.0,1296103958.0,1204083375.0],"unit":"ns","throughput":[],"typical":{"estimate":13050.46065004042,"lower_bound":12760.773912001252,"upper_bound":13372.572235013477,"unit":"ns"},"mean":{"estimate":12744.976822384066,"lower_bound":12594.427458918524,"upper_bound":12930.405407643106,"unit":"ns"},"median":{"estimate":12508.504824093816,"lower_bound":12479.814932036248,"upper_bound":12561.761511809087,"unit":"ns"},"median_abs_dev":{"estimate":169.73834257609312,"lower_bound":75.29804342207017,"upper_bound":244.99466677068565,"unit":"ns"},"slope":{"estimate":13050.46065004042,"lower_bound":12760.773912001252,"upper_bound":13372.572235013477,"unit":"ns"},"change":null} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Vcf query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Vcf query header","iteration_count":[1882,3764,5646,7528,9410,11292,13174,15056,16938,18820,20702,22584,24466,26348,28230,30112,31994,33876,35758,37640,39522,41404,43286,45168,47050,48932,50814,52696,54578,56460,58342,60224,62106,63988,65870,67752,69634,71516,73398,75280,77162,79044,80926,82808,84690,86572,88454,90336,92218,94100],"measured_values":[23828917.0,46764291.0,71197917.0,93224459.0,118619250.0,143865083.0,165871791.0,188203584.0,213350541.0,238873917.0,259247417.0,281354000.0,306700125.0,329024458.0,348619833.0,375700625.0,398674292.0,424049750.0,449887541.0,468889666.0,491443375.0,513269291.0,538724209.0,564290625.0,601155208.0,617320333.0,626648042.0,654518334.0,680239375.0,704853750.0,725909292.0,752928500.0,773113291.0,796293833.0,816561084.0,843402083.0,867874333.0,896718000.0,916683250.0,934082250.0,962954541.0,992527791.0,1014531667.0,1038371417.0,1068170041.0,1080111792.0,1104500500.0,1158051041.0,1218332250.0,1487098875.0],"unit":"ns","throughput":[],"typical":{"estimate":12743.57939910763,"lower_bound":12492.656492249189,"upper_bound":13150.351281534344,"unit":"ns"},"mean":{"estimate":12592.408494605297,"lower_bound":12498.783967867887,"upper_bound":12746.231864911982,"unit":"ns"},"median":{"estimate":12488.428724215919,"lower_bound":12463.618582579062,"upper_bound":12535.769026403988,"unit":"ns"},"median_abs_dev":{"estimate":75.13314602401516,"lower_bound":51.28192594005492,"upper_bound":127.41149324809004,"unit":"ns"},"slope":{"estimate":12743.57939910763,"lower_bound":12492.656492249189,"upper_bound":13150.351281534344,"unit":"ns"},"change":null} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bcf query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bcf query all","iteration_count":[1811,3622,5433,7244,9055,10866,12677,14488,16299,18110,19921,21732,23543,25354,27165,28976,30787,32598,34409,36220,38031,39842,41653,43464,45275,47086,48897,50708,52519,54330,56141,57952,59763,61574,63385,65196,67007,68818,70629,72440,74251,76062,77873,79684,81495,83306,85117,86928,88739,90550],"measured_values":[22696500.0,45334583.0,68564917.0,89876708.0,114268708.0,135340500.0,157886459.0,179266334.0,203045958.0,224690292.0,250232500.0,270002917.0,295595625.0,317773084.0,337736834.0,368529500.0,385797459.0,406405500.0,430139334.0,451828791.0,480611208.0,497753917.0,517689083.0,543167375.0,570085292.0,581799541.0,609598583.0,640548916.0,692862208.0,695524625.0,697079250.0,723195000.0,744236458.0,774538500.0,797117000.0,822189375.0,841483375.0,864496625.0,938998917.0,944528000.0,988996875.0,950171583.0,974126834.0,1053046167.0,1024833500.0,1042631333.0,1060641333.0,1087169709.0,1118847084.0,1158436333.0],"unit":"ns","throughput":[],"typical":{"estimate":12668.21351660901,"lower_bound":12571.840308155952,"upper_bound":12774.731176122405,"unit":"ns"},"mean":{"estimate":12594.105363494185,"lower_bound":12535.492831130141,"upper_bound":12661.754613724115,"unit":"ns"},"median":{"estimate":12523.81548218404,"lower_bound":12493.19604939511,"upper_bound":12568.328787599909,"unit":"ns"},"median_abs_dev":{"estimate":100.96648268236126,"lower_bound":68.9538713968884,"upper_bound":142.13851081871422,"unit":"ns"},"slope":{"estimate":12668.21351660901,"lower_bound":12571.840308155952,"upper_bound":12774.731176122405,"unit":"ns"},"change":null} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bcf query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bcf query specific","iteration_count":[1822,3644,5466,7288,9110,10932,12754,14576,16398,18220,20042,21864,23686,25508,27330,29152,30974,32796,34618,36440,38262,40084,41906,43728,45550,47372,49194,51016,52838,54660,56482,58304,60126,61948,63770,65592,67414,69236,71058,72880,74702,76524,78346,80168,81990,83812,85634,87456,89278,91100],"measured_values":[22864542.0,46296667.0,70125917.0,105403292.0,116982792.0,137613708.0,159396584.0,185143084.0,207130958.0,230728750.0,251067042.0,274793084.0,309544083.0,389597375.0,351486375.0,416824666.0,462298292.0,480932166.0,435937875.0,466025833.0,483771416.0,510143667.0,526711750.0,548757500.0,576423375.0,611853417.0,633337208.0,677843500.0,688827708.0,700758083.0,704866000.0,729305584.0,755413125.0,776234708.0,793204625.0,822609417.0,865526750.0,894033792.0,892756416.0,915636125.0,985270417.0,964621459.0,980083208.0,998348500.0,1023122042.0,1047046875.0,1069177250.0,1105035625.0,1123890917.0,1139291833.0],"unit":"ns","throughput":[],"typical":{"estimate":12689.39129849564,"lower_bound":12609.362944311339,"upper_bound":12795.858925711947,"unit":"ns"},"mean":{"estimate":12880.030586704319,"lower_bound":12714.936957652506,"upper_bound":13073.976059499893,"unit":"ns"},"median":{"estimate":12633.404612986338,"lower_bound":12566.360507065598,"upper_bound":12746.878471459935,"unit":"ns"},"median_abs_dev":{"estimate":195.02828735483342,"lower_bound":102.36995695583366,"upper_bound":292.9521691634945,"unit":"ns"},"slope":{"estimate":12689.39129849564,"lower_bound":12609.362944311339,"upper_bound":12795.858925711947,"unit":"ns"},"change":null} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bcf query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bcf query header","iteration_count":[1882,3764,5646,7528,9410,11292,13174,15056,16938,18820,20702,22584,24466,26348,28230,30112,31994,33876,35758,37640,39522,41404,43286,45168,47050,48932,50814,52696,54578,56460,58342,60224,62106,63988,65870,67752,69634,71516,73398,75280,77162,79044,80926,82808,84690,86572,88454,90336,92218,94100],"measured_values":[23745166.0,47265042.0,71554917.0,93768459.0,118195709.0,142223000.0,164109791.0,189113292.0,213230916.0,235751291.0,256099333.0,281206583.0,305127542.0,330810750.0,349827083.0,373520083.0,403143209.0,421577083.0,449616584.0,472712959.0,496312125.0,514279417.0,543868500.0,559153375.0,589439542.0,606268500.0,664799000.0,679379833.0,687883625.0,705267834.0,747904167.0,764966916.0,779885125.0,799602333.0,828002333.0,858436166.0,918845917.0,946191791.0,919647458.0,941127334.0,975416917.0,991370333.0,1022027959.0,1057846917.0,1068709791.0,1085491125.0,1111232000.0,1127867250.0,1174609500.0,1206810125.0],"unit":"ns","throughput":[],"typical":{"estimate":12652.481509429057,"lower_bound":12587.421866159579,"upper_bound":12725.322157827735,"unit":"ns"},"mean":{"estimate":12599.097731126172,"lower_bound":12551.747924270225,"upper_bound":12652.633666521364,"unit":"ns"},"median":{"estimate":12559.720975026568,"lower_bound":12535.802231376487,"upper_bound":12588.907545164719,"unit":"ns"},"median_abs_dev":{"estimate":102.08207745367787,"lower_bound":57.55330572216015,"upper_bound":160.3247220369039,"unit":"ns"},"slope":{"estimate":12652.481509429057,"lower_bound":12587.421866159579,"upper_bound":12725.322157827735,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","iteration_count":[448,896,1344,1792,2240,2688,3136,3584,4032,4480,4928,5376,5824,6272,6720,7168,7616,8064,8512,8960,9408,9856,10304,10752,11200,11648,12096,12544,12992,13440,13888,14336,14784,15232,15680,16128,16576,17024,17472,17920,18368,18816,19264,19712,20160,20608,21056,21504,21952,22400],"measured_values":[24008291.0,46993958.0,70326375.0,94446208.0,117111833.0,140280291.0,164391417.0,186789333.0,209778125.0,234141292.0,258808833.0,280257500.0,306686417.0,327679875.0,356069000.0,377513959.0,403765958.0,451338958.0,484821333.0,502732208.0,513783375.0,581376750.0,574704875.0,605161625.0,699392792.0,653286000.0,670976000.0,707339792.0,744866917.0,737241875.0,786498708.0,803564834.0,828691375.0,809596416.0,829379875.0,844670375.0,877722000.0,896480709.0,954357625.0,1017859584.0,987215750.0,992573625.0,1016592458.0,1097562459.0,1149985000.0,1149173667.0,1165389541.0,1199262791.0,1233216083.0,1558108625.0],"unit":"ns","throughput":[],"typical":{"estimate":55911.196150782096,"lower_bound":54603.90187867978,"upper_bound":57807.90122752528,"unit":"ns"},"mean":{"estimate":54773.17273526619,"lower_bound":54006.822121562705,"upper_bound":55677.77913238278,"unit":"ns"},"median":{"estimate":54178.915096907665,"lower_bound":52861.496970963904,"upper_bound":55763.473748059005,"unit":"ns"},"median_abs_dev":{"estimate":2630.7849830561304,"lower_bound":956.6673683251443,"upper_bound":3347.7082976913,"unit":"ns"},"slope":{"estimate":55911.196150782096,"lower_bound":54603.90187867978,"upper_bound":57807.90122752528,"unit":"ns"},"change":{"mean":{"estimate":3.422768778974363,"lower_bound":3.3580307020368823,"upper_bound":3.4970612777967194,"unit":"%"},"median":{"estimate":3.3897553051501523,"lower_bound":3.269763198915175,"upper_bound":3.5186055970337904,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query specific","iteration_count":[60,120,180,240,300,360,420,480,540,600,660,720,780,840,900,960,1020,1080,1140,1200,1260,1320,1380,1440,1500,1560,1620,1680,1740,1800,1860,1920,1980,2040,2100,2160,2220,2280,2340,2400,2460,2520,2580,2640,2700,2760,2820,2880,2940,3000],"measured_values":[23363250.0,47415417.0,68665042.0,90697208.0,124525500.0,160099250.0,205614084.0,189750000.0,208423625.0,227873208.0,250519291.0,306017084.0,330768791.0,371753875.0,390204125.0,394969916.0,423518167.0,469290417.0,518608375.0,457527875.0,490801125.0,556277292.0,666937416.0,742180625.0,578714500.0,651647625.0,1017607542.0,943144375.0,735849916.0,718239000.0,726110916.0,817337250.0,762955250.0,930159959.0,801632041.0,881941500.0,957019042.0,908584792.0,1004194208.0,1070321708.0,1397147084.0,976766542.0,1137288000.0,1105258834.0,1048403875.0,1155046917.0,1087006959.0,1109690042.0,1131510250.0,1225755583.0],"unit":"ns","throughput":[],"typical":{"estimate":423390.085560862,"lower_bound":408167.95740515046,"upper_bound":442954.6659321603,"unit":"ns"},"mean":{"estimate":424385.25366236235,"lower_bound":411229.41152724804,"upper_bound":439480.6389137513,"unit":"ns"},"median":{"estimate":415149.4446078432,"lower_bound":395312.5,"upper_bound":424062.5525641026,"unit":"ns"},"median_abs_dev":{"estimate":39002.50378593323,"lower_bound":20541.787107810316,"upper_bound":48240.75659273257,"unit":"ns"},"slope":{"estimate":423390.085560862,"lower_bound":408167.95740515046,"upper_bound":442954.6659321603,"unit":"ns"},"change":{"mean":{"estimate":32.71465199446408,"lower_bound":31.655756230242304,"upper_bound":33.78703759357787,"unit":"%"},"median":{"estimate":32.15450112288672,"lower_bound":30.608055985321716,"upper_bound":32.818260150287905,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query header","iteration_count":[302,604,906,1208,1510,1812,2114,2416,2718,3020,3322,3624,3926,4228,4530,4832,5134,5436,5738,6040,6342,6644,6946,7248,7550,7852,8154,8456,8758,9060,9362,9664,9966,10268,10570,10872,11174,11476,11778,12080,12382,12684,12986,13288,13590,13892,14194,14496,14798,15100],"measured_values":[27230709.0,55455417.0,93397542.0,99358667.0,123129500.0,168237792.0,182553500.0,197092375.0,235451291.0,247412708.0,267768084.0,276608792.0,304739375.0,336551375.0,352030500.0,368665417.0,396484125.0,417097917.0,437977792.0,469188416.0,487244833.0,508476750.0,572532500.0,580459833.0,579686959.0,599213750.0,632453000.0,648030541.0,670322583.0,721800042.0,727390542.0,770008542.0,771228875.0,786465917.0,807426375.0,830442334.0,896474625.0,904920709.0,949110625.0,1008669916.0,940051084.0,957365792.0,992154167.0,1005847791.0,1035196750.0,1053359000.0,1073672958.0,1096070625.0,1114169458.0,1139828042.0],"unit":"ns","throughput":[],"typical":{"estimate":77193.55133727007,"lower_bound":76527.5353638133,"upper_bound":78056.38673358064,"unit":"ns"},"mean":{"estimate":79570.15225947776,"lower_bound":78215.54342239778,"upper_bound":81158.67096992704,"unit":"ns"},"median":{"estimate":77474.76350146052,"lower_bound":76586.95317954198,"upper_bound":79600.60903500473,"unit":"ns"},"median_abs_dev":{"estimate":2541.705061445251,"lower_bound":1126.0815773178376,"upper_bound":4211.499480992529,"unit":"ns"},"slope":{"estimate":77193.55133727007,"lower_bound":76527.5353638133,"upper_bound":78056.38673358064,"unit":"ns"},"change":{"mean":{"estimate":5.385091330343355,"lower_bound":5.270940553858581,"upper_bound":5.517666486553487,"unit":"%"},"median":{"estimate":5.220186382924041,"lower_bound":5.148678733476524,"upper_bound":5.392631432340413,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Cram query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Cram query all","iteration_count":[448,896,1344,1792,2240,2688,3136,3584,4032,4480,4928,5376,5824,6272,6720,7168,7616,8064,8512,8960,9408,9856,10304,10752,11200,11648,12096,12544,12992,13440,13888,14336,14784,15232,15680,16128,16576,17024,17472,17920,18368,18816,19264,19712,20160,20608,21056,21504,21952,22400],"measured_values":[23747000.0,47017167.0,70268625.0,94385500.0,117194084.0,139867333.0,166554708.0,187962625.0,217227875.0,235460334.0,256782792.0,281480875.0,307482750.0,327309334.0,359289917.0,376275458.0,415506292.0,426978208.0,444129333.0,472022375.0,491696584.0,513909958.0,536791084.0,564331000.0,653077708.0,645191958.0,657786959.0,683589125.0,680392750.0,705606000.0,730915500.0,770173792.0,828454083.0,842137625.0,881080250.0,938703625.0,958596666.0,931339459.0,943848291.0,940295500.0,970799000.0,1229652834.0,1110667334.0,1142633625.0,1058914917.0,1126855708.0,1120700791.0,1138308708.0,1177393084.0,1237771834.0],"unit":"ns","throughput":[],"typical":{"estimate":54882.05951477868,"lower_bound":53906.0299657642,"upper_bound":56066.2688030463,"unit":"ns"},"mean":{"estimate":53963.36355637068,"lower_bound":53356.28483786902,"upper_bound":54688.203170600864,"unit":"ns"},"median":{"estimate":52941.71462673611,"lower_bound":52558.11026785714,"upper_bound":53755.42504606009,"unit":"ns"},"median_abs_dev":{"estimate":1074.2101048128907,"lower_bound":516.9725085192723,"upper_bound":1961.8236909826019,"unit":"ns"},"slope":{"estimate":54882.05951477868,"lower_bound":53906.0299657642,"upper_bound":56066.2688030463,"unit":"ns"},"change":{"mean":{"estimate":3.3375138314142605,"lower_bound":3.2876793474544326,"upper_bound":3.392272256489862,"unit":"%"},"median":{"estimate":3.2595288140287835,"lower_bound":3.2296337246434685,"upper_bound":3.3170945385592265,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Cram query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Cram query specific","iteration_count":[90,180,270,360,450,540,630,720,810,900,990,1080,1170,1260,1350,1440,1530,1620,1710,1800,1890,1980,2070,2160,2250,2340,2430,2520,2610,2700,2790,2880,2970,3060,3150,3240,3330,3420,3510,3600,3690,3780,3870,3960,4050,4140,4230,4320,4410,4500],"measured_values":[24599833.0,49589166.0,75634166.0,96232667.0,128285709.0,136632875.0,160467041.0,181364166.0,204807959.0,225242417.0,254136958.0,284281375.0,293845167.0,328533208.0,384236416.0,377761291.0,391902250.0,423972833.0,436736084.0,454995250.0,514540583.0,589373541.0,531110708.0,563404625.0,576977084.0,594330625.0,671289209.0,654645500.0,689758000.0,695206000.0,717669459.0,768748292.0,766820167.0,816300125.0,830917417.0,916971958.0,854949208.0,912457834.0,884161291.0,922285459.0,957705209.0,993338208.0,1002994083.0,1034697959.0,1065574334.0,1069205250.0,1087114625.0,1092552042.0,1126688125.0,1160887250.0],"unit":"ns","throughput":[],"typical":{"estimate":260645.19121232122,"lower_bound":258559.25477540432,"upper_bound":263203.54666321207,"unit":"ns"},"mean":{"estimate":262389.7177578746,"lower_bound":259739.3926389702,"upper_bound":265312.6120584824,"unit":"ns"},"median":{"estimate":259356.15236024454,"lower_bound":256985.35033904872,"upper_bound":262334.2298611111,"unit":"ns"},"median_abs_dev":{"estimate":6213.641924738421,"lower_bound":4293.990356458737,"upper_bound":9883.29235370315,"unit":"ns"},"slope":{"estimate":260645.19121232122,"lower_bound":258559.25477540432,"upper_bound":263203.54666321207,"unit":"ns"},"change":{"mean":{"estimate":19.983587485838505,"lower_bound":19.772540368492656,"upper_bound":20.23291535979638,"unit":"%"},"median":{"estimate":19.75331893921605,"lower_bound":19.551521720259387,"upper_bound":20.004676429091166,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Cram query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Cram query header","iteration_count":[324,648,972,1296,1620,1944,2268,2592,2916,3240,3564,3888,4212,4536,4860,5184,5508,5832,6156,6480,6804,7128,7452,7776,8100,8424,8748,9072,9396,9720,10044,10368,10692,11016,11340,11664,11988,12312,12636,12960,13284,13608,13932,14256,14580,14904,15228,15552,15876,16200],"measured_values":[23209625.0,45886708.0,69039666.0,91207584.0,113295083.0,138293250.0,160040625.0,183466584.0,213793167.0,228382333.0,250942834.0,273651417.0,298395667.0,327830417.0,343893667.0,364651042.0,386407250.0,409659083.0,432657167.0,454094333.0,514282625.0,504397167.0,528921459.0,548787333.0,574680708.0,596720541.0,648034000.0,651974625.0,672222334.0,682284583.0,710983625.0,730691375.0,754076584.0,790027750.0,801634375.0,823912500.0,843043083.0,862048666.0,888848833.0,911338041.0,931583375.0,957538667.0,1018085750.0,1019775166.0,1029479750.0,1053224500.0,1079697042.0,1111833750.0,1120950708.0,1216439500.0],"unit":"ns","throughput":[],"typical":{"estimate":71191.61292219418,"lower_bound":70731.85036387095,"upper_bound":71785.57690040437,"unit":"ns"},"mean":{"estimate":71070.33849894114,"lower_bound":70763.51089646542,"upper_bound":71431.00908295154,"unit":"ns"},"median":{"estimate":70679.04948815276,"lower_bound":70525.06843171296,"upper_bound":70835.77172364673,"unit":"ns"},"median_abs_dev":{"estimate":499.54976418660345,"lower_bound":332.1399709396112,"upper_bound":804.7475860149732,"unit":"ns"},"slope":{"estimate":71191.61292219418,"lower_bound":70731.85036387095,"upper_bound":71785.57690040437,"unit":"ns"},"change":{"mean":{"estimate":4.705539406555428,"lower_bound":4.67925077992054,"upper_bound":4.734240552553462,"unit":"%"},"median":{"estimate":4.678272029810607,"lower_bound":4.662554736384387,"upper_bound":4.6926018594027905,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Vcf query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Vcf query all","iteration_count":[356,712,1068,1424,1780,2136,2492,2848,3204,3560,3916,4272,4628,4984,5340,5696,6052,6408,6764,7120,7476,7832,8188,8544,8900,9256,9612,9968,10324,10680,11036,11392,11748,12104,12460,12816,13172,13528,13884,14240,14596,14952,15308,15664,16020,16376,16732,17088,17444,17800],"measured_values":[19000125.0,37986041.0,56375500.0,74963791.0,108210875.0,136300875.0,131459167.0,174517333.0,187762917.0,190448584.0,207335541.0,223722958.0,242727334.0,260722500.0,278735291.0,303380709.0,318400375.0,334976000.0,352860917.0,374819791.0,402370916.0,409972000.0,428870084.0,445770125.0,466164250.0,484006500.0,504586583.0,521587042.0,541239750.0,558467750.0,576947000.0,600767417.0,653718500.0,676643791.0,679358917.0,707462792.0,747551416.0,717977500.0,727620584.0,810953667.0,808055791.0,861792333.0,860395666.0,895767917.0,898202584.0,882988542.0,890882500.0,920289459.0,926808833.0,964713167.0],"unit":"ns","throughput":[],"typical":{"estimate":54340.34798282869,"lower_bound":53712.63042377554,"upper_bound":54950.4711361419,"unit":"ns"},"mean":{"estimate":54186.330037649226,"lower_bound":53513.818365649364,"upper_bound":54949.107061811934,"unit":"ns"},"median":{"estimate":53101.9813433061,"lower_bound":52626.999120125576,"upper_bound":53821.684858212946,"unit":"ns"},"median_abs_dev":{"estimate":1160.8140584433493,"lower_bound":522.1458207581487,"upper_bound":2146.6252375920303,"unit":"ns"},"slope":{"estimate":54340.34798282869,"lower_bound":53712.63042377554,"upper_bound":54950.4711361419,"unit":"ns"},"change":{"mean":{"estimate":3.346970215024422,"lower_bound":3.2966334055316295,"upper_bound":3.412578386010649,"unit":"%"},"median":{"estimate":3.258078249574041,"lower_bound":3.2177550637482044,"upper_bound":3.3088412331095896,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Vcf query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Vcf query specific","iteration_count":[89,178,267,356,445,534,623,712,801,890,979,1068,1157,1246,1335,1424,1513,1602,1691,1780,1869,1958,2047,2136,2225,2314,2403,2492,2581,2670,2759,2848,2937,3026,3115,3204,3293,3382,3471,3560,3649,3738,3827,3916,4005,4094,4183,4272,4361,4450],"measured_values":[24052875.0,47042542.0,70525167.0,94111667.0,117698125.0,141229542.0,164660458.0,189427833.0,212055292.0,234602250.0,259241042.0,281923417.0,307050333.0,328530708.0,354500500.0,377641875.0,402106250.0,423102667.0,448043709.0,495044833.0,494104625.0,537021042.0,623136166.0,606772667.0,624110542.0,657571250.0,697632208.0,716204750.0,726612916.0,748029792.0,761508750.0,812779833.0,810302375.0,809612500.0,902697250.0,910359708.0,897911458.0,907624292.0,943615917.0,1063530042.0,1037788625.0,1088141875.0,1042134708.0,1092354334.0,1060037167.0,1193397750.0,1127796500.0,1135296500.0,1198592792.0,1190899959.0],"unit":"ns","throughput":[],"typical":{"estimate":277230.05274525075,"lower_bound":273701.93297493487,"upper_bound":281041.04859644134,"unit":"ns"},"mean":{"estimate":273891.7219197359,"lower_bound":271083.9129260182,"upper_bound":276894.2382786413,"unit":"ns"},"median":{"estimate":269935.64726273005,"lower_bound":265655.48028200044,"upper_bound":275894.5778004767,"unit":"ns"},"median_abs_dev":{"estimate":8365.459084330581,"lower_bound":2545.028478757883,"upper_bound":14714.460896234708,"unit":"ns"},"slope":{"estimate":277230.05274525075,"lower_bound":273701.93297493487,"upper_bound":281041.04859644134,"unit":"ns"},"change":{"mean":{"estimate":20.49017026368369,"lower_bound":20.119836110723547,"upper_bound":20.862613910172715,"unit":"%"},"median":{"estimate":20.580168937759964,"lower_bound":20.218641915371865,"upper_bound":21.09312886208444,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Vcf query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Vcf query header","iteration_count":[292,584,876,1168,1460,1752,2044,2336,2628,2920,3212,3504,3796,4088,4380,4672,4964,5256,5548,5840,6132,6424,6716,7008,7300,7592,7884,8176,8468,8760,9052,9344,9636,9928,10220,10512,10804,11096,11388,11680,11972,12264,12556,12848,13140,13432,13724,14016,14308,14600],"measured_values":[23955125.0,46334791.0,69124708.0,92690375.0,114937833.0,140687625.0,162703708.0,182732458.0,206332292.0,234104334.0,274461709.0,289735417.0,301743167.0,325298250.0,361592958.0,388638042.0,388871708.0,423890625.0,537532750.0,525122667.0,530170542.0,544661333.0,579468542.0,582675709.0,574043417.0,603908958.0,620893750.0,639330875.0,660370375.0,683178667.0,717183250.0,770806042.0,929687791.0,839013125.0,800843709.0,834399000.0,850674625.0,876936667.0,898038667.0,919280625.0,935538541.0,964526125.0,992296458.0,1005433625.0,1030913375.0,1051505042.0,1089946375.0,1105194750.0,1124304708.0,1145225500.0],"unit":"ns","throughput":[],"typical":{"estimate":80038.14983756313,"lower_bound":79169.64545813813,"upper_bound":81344.4383265581,"unit":"ns"},"mean":{"estimate":80951.55686672172,"lower_bound":79896.12448284321,"upper_bound":82200.88264046973,"unit":"ns"},"median":{"estimate":79284.82713764915,"lower_bound":78753.64662607813,"upper_bound":79573.93590998043,"unit":"ns"},"median_abs_dev":{"estimate":1343.4401227245096,"lower_bound":716.273317176904,"upper_bound":1952.5792489838445,"unit":"ns"},"slope":{"estimate":80038.14983756313,"lower_bound":79169.64545813813,"upper_bound":81344.4383265581,"unit":"ns"},"change":{"mean":{"estimate":5.428599969688253,"lower_bound":5.314095894226366,"upper_bound":5.5459293913028285,"unit":"%"},"median":{"estimate":5.348663141577646,"lower_bound":5.299539638613912,"upper_bound":5.373753534116742,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bcf query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bcf query all","iteration_count":[440,880,1320,1760,2200,2640,3080,3520,3960,4400,4840,5280,5720,6160,6600,7040,7480,7920,8360,8800,9240,9680,10120,10560,11000,11440,11880,12320,12760,13200,13640,14080,14520,14960,15400,15840,16280,16720,17160,17600,18040,18480,18920,19360,19800,20240,20680,21120,21560,22000],"measured_values":[23726834.0,46579375.0,69742667.0,93138042.0,120026042.0,139287000.0,162655792.0,188370208.0,209969166.0,231856500.0,256631125.0,282834125.0,306357208.0,325151959.0,352973167.0,375553708.0,399301542.0,417196875.0,443129334.0,466029000.0,485476666.0,518826625.0,579346666.0,610833542.0,619836917.0,636495125.0,634812500.0,662412000.0,680300042.0,698719042.0,731136167.0,752207125.0,768807417.0,793187833.0,818516291.0,854998292.0,861698292.0,892305292.0,924966959.0,933708583.0,968461125.0,983046250.0,1003244500.0,1042350542.0,1081187417.0,1073442167.0,1124899917.0,1138953917.0,1215694208.0,1212194417.0],"unit":"ns","throughput":[],"typical":{"estimate":53929.248858103456,"lower_bound":53550.26284758539,"upper_bound":54345.03228679367,"unit":"ns"},"mean":{"estimate":53699.799741328396,"lower_bound":53404.09146693511,"upper_bound":54040.308304454826,"unit":"ns"},"median":{"estimate":53375.05023923445,"lower_bound":53035.680187747035,"upper_bound":53578.37214319771,"unit":"ns"},"median_abs_dev":{"estimate":643.9454346781654,"lower_bound":383.3470760202895,"upper_bound":853.996981499199,"unit":"ns"},"slope":{"estimate":53929.248858103456,"lower_bound":53550.26284758539,"upper_bound":54345.03228679367,"unit":"ns"},"change":{"mean":{"estimate":3.263883633766074,"lower_bound":3.2315883986472866,"upper_bound":3.296067185629768,"unit":"%"},"median":{"estimate":3.2618841131254293,"lower_bound":3.231553552376286,"upper_bound":3.2816726305745503,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bcf query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bcf query specific","iteration_count":[89,178,267,356,445,534,623,712,801,890,979,1068,1157,1246,1335,1424,1513,1602,1691,1780,1869,1958,2047,2136,2225,2314,2403,2492,2581,2670,2759,2848,2937,3026,3115,3204,3293,3382,3471,3560,3649,3738,3827,3916,4005,4094,4183,4272,4361,4450],"measured_values":[23864750.0,47577459.0,70896792.0,94228250.0,118989500.0,141138375.0,166785458.0,188703458.0,212457750.0,236681459.0,260799666.0,284148000.0,306714000.0,332093500.0,355594541.0,380468083.0,403939125.0,439263292.0,513701333.0,515165250.0,504151667.0,529951875.0,620923834.0,639585042.0,597819958.0,634774375.0,758716041.0,702756042.0,681224167.0,706738125.0,829942917.0,805855459.0,912691958.0,847814958.0,904514458.0,910369792.0,951769208.0,1005973417.0,959701792.0,974409125.0,977714583.0,1004515542.0,1022214500.0,1063044375.0,1072614000.0,1095271375.0,1133110917.0,1156518834.0,1165107458.0,1188539250.0],"unit":"ns","throughput":[],"typical":{"estimate":276523.01800684497,"lower_bound":272823.48938705894,"upper_bound":281106.7368010962,"unit":"ns"},"mean":{"estimate":275562.94668727135,"lower_bound":272010.0028034128,"upper_bound":279529.50651490333,"unit":"ns"},"median":{"estimate":268413.19280898874,"lower_bound":267287.3886938202,"upper_bound":272297.59011176194,"unit":"ns"},"median_abs_dev":{"estimate":4611.741871010826,"lower_bound":2506.4227519066226,"upper_bound":9771.680300667715,"unit":"ns"},"slope":{"estimate":276523.01800684497,"lower_bound":272823.48938705894,"upper_bound":281106.7368010962,"unit":"ns"},"change":{"mean":{"estimate":20.39458791128392,"lower_bound":19.97993170032578,"upper_bound":20.818564925891717,"unit":"%"},"median":{"estimate":20.24630699574658,"lower_bound":20.0504274339886,"upper_bound":20.583693924629706,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bcf query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bcf query header","iteration_count":[300,600,900,1200,1500,1800,2100,2400,2700,3000,3300,3600,3900,4200,4500,4800,5100,5400,5700,6000,6300,6600,6900,7200,7500,7800,8100,8400,8700,9000,9300,9600,9900,10200,10500,10800,11100,11400,11700,12000,12300,12600,12900,13200,13500,13800,14100,14400,14700,15000],"measured_values":[23881625.0,46674916.0,69831917.0,92156625.0,118337000.0,143841875.0,169029750.0,187950834.0,213543167.0,233898167.0,256063417.0,281666833.0,310125958.0,326221333.0,347100542.0,370964625.0,393687291.0,418361625.0,447881375.0,477232708.0,490808000.0,512735667.0,537064167.0,609705417.0,590701083.0,611673708.0,626150583.0,658439000.0,681948542.0,709055416.0,727142167.0,750222458.0,765322125.0,789603208.0,810371959.0,833840541.0,854198458.0,891978917.0,902836375.0,924404417.0,951150625.0,979990000.0,996180250.0,1023147000.0,1040449792.0,1064060500.0,1088022166.0,1123856292.0,1132221917.0,1166503916.0],"unit":"ns","throughput":[],"typical":{"estimate":77680.47897829548,"lower_bound":77455.41411845318,"upper_bound":77991.73052904464,"unit":"ns"},"mean":{"estimate":78073.48495845342,"lower_bound":77761.0342818959,"upper_bound":78456.00255610805,"unit":"ns"},"median":{"estimate":77771.95593015873,"lower_bound":77461.60778966133,"upper_bound":78148.17270833334,"unit":"ns"},"median_abs_dev":{"estimate":847.2079516153171,"lower_bound":503.9862889924534,"upper_bound":1139.2811223309345,"unit":"ns"},"slope":{"estimate":77680.47897829548,"lower_bound":77455.41411845318,"upper_bound":77991.73052904464,"unit":"ns"},"change":{"mean":{"estimate":5.196752071029043,"lower_bound":5.160686196476416,"upper_bound":5.235292801759314,"unit":"%"},"median":{"estimate":5.192172269176881,"lower_bound":5.163190481187658,"upper_bound":5.222815071392026,"unit":"%"},"change":"Regressed"}} {"reason":"group-complete","group_name":"Queries","benchmarks":["Queries/[LIGHT] Bam query all","Queries/[LIGHT] Bam query specific","Queries/[LIGHT] Bam query header","Queries/[LIGHT] Cram query all","Queries/[LIGHT] Cram query specific","Queries/[LIGHT] Cram query header","Queries/[LIGHT] Vcf query all","Queries/[LIGHT] Vcf query specific","Queries/[LIGHT] Vcf query header","Queries/[LIGHT] Bcf query all","Queries/[LIGHT] Bcf query specific","Queries/[LIGHT] Bcf query header"],"report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries"} From ee2d9d45e85823dde5c86dd37446908584bba45a Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Wed, 4 Jan 2023 15:18:07 +1100 Subject: [PATCH 12/27] ndJSON works now, need to rework how tests are run and/or reduce test payload size for easy expected/actual matching --- examples/rust/README.md | 2 ++ src/extract.ts | 60 +++++++++++++++++++++++++---------------- test/extract.spec.ts | 38 +++++++++++++++++--------- 3 files changed, 65 insertions(+), 35 deletions(-) diff --git a/examples/rust/README.md b/examples/rust/README.md index 784541e5c..4a56f29df 100644 --- a/examples/rust/README.md +++ b/examples/rust/README.md @@ -81,5 +81,7 @@ There are two notable differences in cargo-criterion: store-native-benchmark-report: true ``` +TBD: The native benchmark reports is simply copied from `target/criterion/reports` and pushed to the github results repo. + [cargo-criterion]: https://crates.io/crates/cargo-criterion [criterion-rs-own-html]: https://bheisler.github.io/criterion.rs/book/user_guide/plots_and_graphs.html \ No newline at end of file diff --git a/src/extract.ts b/src/extract.ts index f830afb16..0bdb54f53 100644 --- a/src/extract.ts +++ b/src/extract.ts @@ -380,40 +380,54 @@ function extractCargoResult(output: string): BenchmarkResult[] { return ret; } +// TODO: Also git add and push the 'native' report_directory in github pages, timestamped? function extractCriterionResult(output: string): BenchmarkResult[] { let json: CargoCriterionBenchmarkJson; // TODO: Support multiple benchmarks, see test/data/extract/criterion_output_multi.json const ret = []; + //const { EOL } = require('os'); try { - json = JSON.parse(output); + // Output for group benchmarks is a Newline separated (streamed) JSON: + // https://en.wikipedia.org/wiki/JSON_streaming#Newline-Delimited_JSON + // + // Therefore iterate over those and parse individually + const lines = output.split(/\n/); + + // TODO: When there's a single output, there are no newlines to split with :_/ + // TODO: Add https://www.npmjs.com/package/ndjson as a dep for this? + //console.log(lines); + + for (const line of lines) { + console.log(line); + json = JSON.parse(line); + + //json = JSON.parse(line); + if (json.reason == "group-complete") break; + + const criterion_benchmark_reports = json.report_directory; + + const name = json.id; + const value = json.median.estimate; // Is this the most statistically relevant here for perf regressions? + const extra = JSON.stringify([ + criterion_benchmark_reports, + JSON.stringify(json.iteration_count), + JSON.stringify(json.measured_values), + JSON.stringify(json.typical), + JSON.stringify(json.mean), + JSON.stringify(json.median_abs_dev), + JSON.stringify(json.slope), + ]); + + ret.push({ name, value, unit: json.median.unit, extra }); + } + } catch (err: any) { + console.log(err); throw new Error( `Output file for 'cargo-criterion' must be JSON file generated by --message-format=json option: ${err.message}`, ); } - // TODO: Also git add and push the report_directory in github pages, timestamped? - const criterion_benchmark_reports = json.report_directory; - - const name = json.id; - const value = json.median.estimate; // Is this the most statistically relevant here for perf regressions? - const extra = JSON.stringify([ - criterion_benchmark_reports, - JSON.stringify(json.iteration_count), - JSON.stringify(json.measured_values), - JSON.stringify(json.typical), - JSON.stringify(json.mean), - JSON.stringify(json.median_abs_dev), - JSON.stringify(json.slope), - ]); - - ret.push({ - name, - value, - unit: 'ns', - extra, - }); - return ret; } diff --git a/test/extract.spec.ts b/test/extract.spec.ts index 42d1a52d3..54c21a2c3 100644 --- a/test/extract.spec.ts +++ b/test/extract.spec.ts @@ -103,18 +103,32 @@ describe('extractResult()', function () { }, ], }, - { - tool: 'cargo-criterion', - file: 'criterion_output.json', - expected: [ - { - name: 'Queries/[LIGHT] Bam query all', - unit: 'ns', - value: 12342.126458243318, - extra: '["/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","[1906,3812,5718,7624,9530,11436,13342,15248,17154,19060,20966,22872,24778,26684,28590,30496,32402,34308,36214,38120,40026,41932,43838,45744,47650,49556,51462,53368,55274,57180,59086,60992,62898,64804,66710,68616,70522,72428,74334,76240,78146,80052,81958,83864,85770,87676,89582,91488,93394,95300]","[23353750,46591042,70056375,93342417,116538959,143924833,167600792,185919208,212106375,233026875,254726333,278646875,305671125,324522875,357198834,371509417,404136209,416867708,448835000,463870791,493834167,520758917,531351708,562765584,578917750,611941333,633088334,664546750,701506208,697619667,724856750,743395167,782653209,799641667,822941209,856925000,891791459,892449667,935049625,998219083,980998209,988231167,1025668125,1041296834,1076883416,1115022292,1131879792,1163727042,1166034958,1184190625]","{\\"estimate\\":12481.003131880992,\\"lower_bound\\":12409.549797222095,\\"upper_bound\\":12550.750722071223,\\"unit\\":\\"ns\\"}","{\\"estimate\\":12384.362708639734,\\"lower_bound\\":12333.018047376874,\\"upper_bound\\":12439.607894674537,\\"unit\\":\\"ns\\"}","{\\"estimate\\":211.04993263521555,\\"lower_bound\\":139.18536378733978,\\"upper_bound\\":257.9776202585765,\\"unit\\":\\"ns\\"}","{\\"estimate\\":12481.003131880992,\\"lower_bound\\":12409.549797222095,\\"upper_bound\\":12550.750722071223,\\"unit\\":\\"ns\\"}"]', - }, - ], - }, + // TODO: Tackle single and multiple ndJSON inputs, perhaps a separate + // test cases for those where outputs are huge? + // { + // tool: 'cargo-criterion', + // file: 'criterion_output.json', + // expected: [ + // { + // name: 'Queries/[LIGHT] Bam query all', + // unit: 'ns', + // value: 12342.126458243318, + // extra: '["/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","[1906,3812,5718,7624,9530,11436,13342,15248,17154,19060,20966,22872,24778,26684,28590,30496,32402,34308,36214,38120,40026,41932,43838,45744,47650,49556,51462,53368,55274,57180,59086,60992,62898,64804,66710,68616,70522,72428,74334,76240,78146,80052,81958,83864,85770,87676,89582,91488,93394,95300]","[23353750,46591042,70056375,93342417,116538959,143924833,167600792,185919208,212106375,233026875,254726333,278646875,305671125,324522875,357198834,371509417,404136209,416867708,448835000,463870791,493834167,520758917,531351708,562765584,578917750,611941333,633088334,664546750,701506208,697619667,724856750,743395167,782653209,799641667,822941209,856925000,891791459,892449667,935049625,998219083,980998209,988231167,1025668125,1041296834,1076883416,1115022292,1131879792,1163727042,1166034958,1184190625]","{\\"estimate\\":12481.003131880992,\\"lower_bound\\":12409.549797222095,\\"upper_bound\\":12550.750722071223,\\"unit\\":\\"ns\\"}","{\\"estimate\\":12384.362708639734,\\"lower_bound\\":12333.018047376874,\\"upper_bound\\":12439.607894674537,\\"unit\\":\\"ns\\"}","{\\"estimate\\":211.04993263521555,\\"lower_bound\\":139.18536378733978,\\"upper_bound\\":257.9776202585765,\\"unit\\":\\"ns\\"}","{\\"estimate\\":12481.003131880992,\\"lower_bound\\":12409.549797222095,\\"upper_bound\\":12550.750722071223,\\"unit\\":\\"ns\\"}"]', + // }, + // ], + // }, + // { + // tool: 'cargo-criterion', + // file: 'criterion_output_multi.json', + // expected: [ + // { + // name: 'Queries/[LIGHT] Bam query all', + // unit: 'ns', + // value: 12342.126458243318, + // extra: '["/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","[1906,3812,5718,7624,9530,11436,13342,15248,17154,19060,20966,22872,24778,26684,28590,30496,32402,34308,36214,38120,40026,41932,43838,45744,47650,49556,51462,53368,55274,57180,59086,60992,62898,64804,66710,68616,70522,72428,74334,76240,78146,80052,81958,83864,85770,87676,89582,91488,93394,95300]","[23353750,46591042,70056375,93342417,116538959,143924833,167600792,185919208,212106375,233026875,254726333,278646875,305671125,324522875,357198834,371509417,404136209,416867708,448835000,463870791,493834167,520758917,531351708,562765584,578917750,611941333,633088334,664546750,701506208,697619667,724856750,743395167,782653209,799641667,822941209,856925000,891791459,892449667,935049625,998219083,980998209,988231167,1025668125,1041296834,1076883416,1115022292,1131879792,1163727042,1166034958,1184190625]","{\\"estimate\\":12481.003131880992,\\"lower_bound\\":12409.549797222095,\\"upper_bound\\":12550.750722071223,\\"unit\\":\\"ns\\"}","{\\"estimate\\":12384.362708639734,\\"lower_bound\\":12333.018047376874,\\"upper_bound\\":12439.607894674537,\\"unit\\":\\"ns\\"}","{\\"estimate\\":211.04993263521555,\\"lower_bound\\":139.18536378733978,\\"upper_bound\\":257.9776202585765,\\"unit\\":\\"ns\\"}","{\\"estimate\\":12481.003131880992,\\"lower_bound\\":12409.549797222095,\\"upper_bound\\":12550.750722071223,\\"unit\\":\\"ns\\"}"]', + // }, + // ], + // }, { tool: 'cargo', file: 'criterion_output.txt', From 23533a5a36aa626ca32e161f5707852da5a50ce5 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Wed, 4 Jan 2023 15:19:46 +1100 Subject: [PATCH 13/27] tsconfig.app.json nowhere to be found upstream and editor was complaining about it missing anyway --- tsconfig.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index c8a02f6ef..ab625fad0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -21,9 +21,6 @@ "files": [], "include": [], "references": [ - { - "path": "./tsconfig.app.json" - }, { "path": "./tsconfig.spec.json" } From 25b4485a513113b7b4235da9e5c2e211c71538a0 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Wed, 4 Jan 2023 15:41:48 +1100 Subject: [PATCH 14/27] Trim ndJSON for test purposes --- test/data/extract/criterion_output_multi.json | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/test/data/extract/criterion_output_multi.json b/test/data/extract/criterion_output_multi.json index 075bde00c..8a1c0b074 100644 --- a/test/data/extract/criterion_output_multi.json +++ b/test/data/extract/criterion_output_multi.json @@ -1,13 +1,3 @@ -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","iteration_count":[448,896,1344,1792,2240,2688,3136,3584,4032,4480,4928,5376,5824,6272,6720,7168,7616,8064,8512,8960,9408,9856,10304,10752,11200,11648,12096,12544,12992,13440,13888,14336,14784,15232,15680,16128,16576,17024,17472,17920,18368,18816,19264,19712,20160,20608,21056,21504,21952,22400],"measured_values":[24008291.0,46993958.0,70326375.0,94446208.0,117111833.0,140280291.0,164391417.0,186789333.0,209778125.0,234141292.0,258808833.0,280257500.0,306686417.0,327679875.0,356069000.0,377513959.0,403765958.0,451338958.0,484821333.0,502732208.0,513783375.0,581376750.0,574704875.0,605161625.0,699392792.0,653286000.0,670976000.0,707339792.0,744866917.0,737241875.0,786498708.0,803564834.0,828691375.0,809596416.0,829379875.0,844670375.0,877722000.0,896480709.0,954357625.0,1017859584.0,987215750.0,992573625.0,1016592458.0,1097562459.0,1149985000.0,1149173667.0,1165389541.0,1199262791.0,1233216083.0,1558108625.0],"unit":"ns","throughput":[],"typical":{"estimate":55911.196150782096,"lower_bound":54603.90187867978,"upper_bound":57807.90122752528,"unit":"ns"},"mean":{"estimate":54773.17273526619,"lower_bound":54006.822121562705,"upper_bound":55677.77913238278,"unit":"ns"},"median":{"estimate":54178.915096907665,"lower_bound":52861.496970963904,"upper_bound":55763.473748059005,"unit":"ns"},"median_abs_dev":{"estimate":2630.7849830561304,"lower_bound":956.6673683251443,"upper_bound":3347.7082976913,"unit":"ns"},"slope":{"estimate":55911.196150782096,"lower_bound":54603.90187867978,"upper_bound":57807.90122752528,"unit":"ns"},"change":{"mean":{"estimate":3.422768778974363,"lower_bound":3.3580307020368823,"upper_bound":3.4970612777967194,"unit":"%"},"median":{"estimate":3.3897553051501523,"lower_bound":3.269763198915175,"upper_bound":3.5186055970337904,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query specific","iteration_count":[60,120,180,240,300,360,420,480,540,600,660,720,780,840,900,960,1020,1080,1140,1200,1260,1320,1380,1440,1500,1560,1620,1680,1740,1800,1860,1920,1980,2040,2100,2160,2220,2280,2340,2400,2460,2520,2580,2640,2700,2760,2820,2880,2940,3000],"measured_values":[23363250.0,47415417.0,68665042.0,90697208.0,124525500.0,160099250.0,205614084.0,189750000.0,208423625.0,227873208.0,250519291.0,306017084.0,330768791.0,371753875.0,390204125.0,394969916.0,423518167.0,469290417.0,518608375.0,457527875.0,490801125.0,556277292.0,666937416.0,742180625.0,578714500.0,651647625.0,1017607542.0,943144375.0,735849916.0,718239000.0,726110916.0,817337250.0,762955250.0,930159959.0,801632041.0,881941500.0,957019042.0,908584792.0,1004194208.0,1070321708.0,1397147084.0,976766542.0,1137288000.0,1105258834.0,1048403875.0,1155046917.0,1087006959.0,1109690042.0,1131510250.0,1225755583.0],"unit":"ns","throughput":[],"typical":{"estimate":423390.085560862,"lower_bound":408167.95740515046,"upper_bound":442954.6659321603,"unit":"ns"},"mean":{"estimate":424385.25366236235,"lower_bound":411229.41152724804,"upper_bound":439480.6389137513,"unit":"ns"},"median":{"estimate":415149.4446078432,"lower_bound":395312.5,"upper_bound":424062.5525641026,"unit":"ns"},"median_abs_dev":{"estimate":39002.50378593323,"lower_bound":20541.787107810316,"upper_bound":48240.75659273257,"unit":"ns"},"slope":{"estimate":423390.085560862,"lower_bound":408167.95740515046,"upper_bound":442954.6659321603,"unit":"ns"},"change":{"mean":{"estimate":32.71465199446408,"lower_bound":31.655756230242304,"upper_bound":33.78703759357787,"unit":"%"},"median":{"estimate":32.15450112288672,"lower_bound":30.608055985321716,"upper_bound":32.818260150287905,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query header","iteration_count":[302,604,906,1208,1510,1812,2114,2416,2718,3020,3322,3624,3926,4228,4530,4832,5134,5436,5738,6040,6342,6644,6946,7248,7550,7852,8154,8456,8758,9060,9362,9664,9966,10268,10570,10872,11174,11476,11778,12080,12382,12684,12986,13288,13590,13892,14194,14496,14798,15100],"measured_values":[27230709.0,55455417.0,93397542.0,99358667.0,123129500.0,168237792.0,182553500.0,197092375.0,235451291.0,247412708.0,267768084.0,276608792.0,304739375.0,336551375.0,352030500.0,368665417.0,396484125.0,417097917.0,437977792.0,469188416.0,487244833.0,508476750.0,572532500.0,580459833.0,579686959.0,599213750.0,632453000.0,648030541.0,670322583.0,721800042.0,727390542.0,770008542.0,771228875.0,786465917.0,807426375.0,830442334.0,896474625.0,904920709.0,949110625.0,1008669916.0,940051084.0,957365792.0,992154167.0,1005847791.0,1035196750.0,1053359000.0,1073672958.0,1096070625.0,1114169458.0,1139828042.0],"unit":"ns","throughput":[],"typical":{"estimate":77193.55133727007,"lower_bound":76527.5353638133,"upper_bound":78056.38673358064,"unit":"ns"},"mean":{"estimate":79570.15225947776,"lower_bound":78215.54342239778,"upper_bound":81158.67096992704,"unit":"ns"},"median":{"estimate":77474.76350146052,"lower_bound":76586.95317954198,"upper_bound":79600.60903500473,"unit":"ns"},"median_abs_dev":{"estimate":2541.705061445251,"lower_bound":1126.0815773178376,"upper_bound":4211.499480992529,"unit":"ns"},"slope":{"estimate":77193.55133727007,"lower_bound":76527.5353638133,"upper_bound":78056.38673358064,"unit":"ns"},"change":{"mean":{"estimate":5.385091330343355,"lower_bound":5.270940553858581,"upper_bound":5.517666486553487,"unit":"%"},"median":{"estimate":5.220186382924041,"lower_bound":5.148678733476524,"upper_bound":5.392631432340413,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Cram query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Cram query all","iteration_count":[448,896,1344,1792,2240,2688,3136,3584,4032,4480,4928,5376,5824,6272,6720,7168,7616,8064,8512,8960,9408,9856,10304,10752,11200,11648,12096,12544,12992,13440,13888,14336,14784,15232,15680,16128,16576,17024,17472,17920,18368,18816,19264,19712,20160,20608,21056,21504,21952,22400],"measured_values":[23747000.0,47017167.0,70268625.0,94385500.0,117194084.0,139867333.0,166554708.0,187962625.0,217227875.0,235460334.0,256782792.0,281480875.0,307482750.0,327309334.0,359289917.0,376275458.0,415506292.0,426978208.0,444129333.0,472022375.0,491696584.0,513909958.0,536791084.0,564331000.0,653077708.0,645191958.0,657786959.0,683589125.0,680392750.0,705606000.0,730915500.0,770173792.0,828454083.0,842137625.0,881080250.0,938703625.0,958596666.0,931339459.0,943848291.0,940295500.0,970799000.0,1229652834.0,1110667334.0,1142633625.0,1058914917.0,1126855708.0,1120700791.0,1138308708.0,1177393084.0,1237771834.0],"unit":"ns","throughput":[],"typical":{"estimate":54882.05951477868,"lower_bound":53906.0299657642,"upper_bound":56066.2688030463,"unit":"ns"},"mean":{"estimate":53963.36355637068,"lower_bound":53356.28483786902,"upper_bound":54688.203170600864,"unit":"ns"},"median":{"estimate":52941.71462673611,"lower_bound":52558.11026785714,"upper_bound":53755.42504606009,"unit":"ns"},"median_abs_dev":{"estimate":1074.2101048128907,"lower_bound":516.9725085192723,"upper_bound":1961.8236909826019,"unit":"ns"},"slope":{"estimate":54882.05951477868,"lower_bound":53906.0299657642,"upper_bound":56066.2688030463,"unit":"ns"},"change":{"mean":{"estimate":3.3375138314142605,"lower_bound":3.2876793474544326,"upper_bound":3.392272256489862,"unit":"%"},"median":{"estimate":3.2595288140287835,"lower_bound":3.2296337246434685,"upper_bound":3.3170945385592265,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Cram query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Cram query specific","iteration_count":[90,180,270,360,450,540,630,720,810,900,990,1080,1170,1260,1350,1440,1530,1620,1710,1800,1890,1980,2070,2160,2250,2340,2430,2520,2610,2700,2790,2880,2970,3060,3150,3240,3330,3420,3510,3600,3690,3780,3870,3960,4050,4140,4230,4320,4410,4500],"measured_values":[24599833.0,49589166.0,75634166.0,96232667.0,128285709.0,136632875.0,160467041.0,181364166.0,204807959.0,225242417.0,254136958.0,284281375.0,293845167.0,328533208.0,384236416.0,377761291.0,391902250.0,423972833.0,436736084.0,454995250.0,514540583.0,589373541.0,531110708.0,563404625.0,576977084.0,594330625.0,671289209.0,654645500.0,689758000.0,695206000.0,717669459.0,768748292.0,766820167.0,816300125.0,830917417.0,916971958.0,854949208.0,912457834.0,884161291.0,922285459.0,957705209.0,993338208.0,1002994083.0,1034697959.0,1065574334.0,1069205250.0,1087114625.0,1092552042.0,1126688125.0,1160887250.0],"unit":"ns","throughput":[],"typical":{"estimate":260645.19121232122,"lower_bound":258559.25477540432,"upper_bound":263203.54666321207,"unit":"ns"},"mean":{"estimate":262389.7177578746,"lower_bound":259739.3926389702,"upper_bound":265312.6120584824,"unit":"ns"},"median":{"estimate":259356.15236024454,"lower_bound":256985.35033904872,"upper_bound":262334.2298611111,"unit":"ns"},"median_abs_dev":{"estimate":6213.641924738421,"lower_bound":4293.990356458737,"upper_bound":9883.29235370315,"unit":"ns"},"slope":{"estimate":260645.19121232122,"lower_bound":258559.25477540432,"upper_bound":263203.54666321207,"unit":"ns"},"change":{"mean":{"estimate":19.983587485838505,"lower_bound":19.772540368492656,"upper_bound":20.23291535979638,"unit":"%"},"median":{"estimate":19.75331893921605,"lower_bound":19.551521720259387,"upper_bound":20.004676429091166,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Cram query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Cram query header","iteration_count":[324,648,972,1296,1620,1944,2268,2592,2916,3240,3564,3888,4212,4536,4860,5184,5508,5832,6156,6480,6804,7128,7452,7776,8100,8424,8748,9072,9396,9720,10044,10368,10692,11016,11340,11664,11988,12312,12636,12960,13284,13608,13932,14256,14580,14904,15228,15552,15876,16200],"measured_values":[23209625.0,45886708.0,69039666.0,91207584.0,113295083.0,138293250.0,160040625.0,183466584.0,213793167.0,228382333.0,250942834.0,273651417.0,298395667.0,327830417.0,343893667.0,364651042.0,386407250.0,409659083.0,432657167.0,454094333.0,514282625.0,504397167.0,528921459.0,548787333.0,574680708.0,596720541.0,648034000.0,651974625.0,672222334.0,682284583.0,710983625.0,730691375.0,754076584.0,790027750.0,801634375.0,823912500.0,843043083.0,862048666.0,888848833.0,911338041.0,931583375.0,957538667.0,1018085750.0,1019775166.0,1029479750.0,1053224500.0,1079697042.0,1111833750.0,1120950708.0,1216439500.0],"unit":"ns","throughput":[],"typical":{"estimate":71191.61292219418,"lower_bound":70731.85036387095,"upper_bound":71785.57690040437,"unit":"ns"},"mean":{"estimate":71070.33849894114,"lower_bound":70763.51089646542,"upper_bound":71431.00908295154,"unit":"ns"},"median":{"estimate":70679.04948815276,"lower_bound":70525.06843171296,"upper_bound":70835.77172364673,"unit":"ns"},"median_abs_dev":{"estimate":499.54976418660345,"lower_bound":332.1399709396112,"upper_bound":804.7475860149732,"unit":"ns"},"slope":{"estimate":71191.61292219418,"lower_bound":70731.85036387095,"upper_bound":71785.57690040437,"unit":"ns"},"change":{"mean":{"estimate":4.705539406555428,"lower_bound":4.67925077992054,"upper_bound":4.734240552553462,"unit":"%"},"median":{"estimate":4.678272029810607,"lower_bound":4.662554736384387,"upper_bound":4.6926018594027905,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Vcf query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Vcf query all","iteration_count":[356,712,1068,1424,1780,2136,2492,2848,3204,3560,3916,4272,4628,4984,5340,5696,6052,6408,6764,7120,7476,7832,8188,8544,8900,9256,9612,9968,10324,10680,11036,11392,11748,12104,12460,12816,13172,13528,13884,14240,14596,14952,15308,15664,16020,16376,16732,17088,17444,17800],"measured_values":[19000125.0,37986041.0,56375500.0,74963791.0,108210875.0,136300875.0,131459167.0,174517333.0,187762917.0,190448584.0,207335541.0,223722958.0,242727334.0,260722500.0,278735291.0,303380709.0,318400375.0,334976000.0,352860917.0,374819791.0,402370916.0,409972000.0,428870084.0,445770125.0,466164250.0,484006500.0,504586583.0,521587042.0,541239750.0,558467750.0,576947000.0,600767417.0,653718500.0,676643791.0,679358917.0,707462792.0,747551416.0,717977500.0,727620584.0,810953667.0,808055791.0,861792333.0,860395666.0,895767917.0,898202584.0,882988542.0,890882500.0,920289459.0,926808833.0,964713167.0],"unit":"ns","throughput":[],"typical":{"estimate":54340.34798282869,"lower_bound":53712.63042377554,"upper_bound":54950.4711361419,"unit":"ns"},"mean":{"estimate":54186.330037649226,"lower_bound":53513.818365649364,"upper_bound":54949.107061811934,"unit":"ns"},"median":{"estimate":53101.9813433061,"lower_bound":52626.999120125576,"upper_bound":53821.684858212946,"unit":"ns"},"median_abs_dev":{"estimate":1160.8140584433493,"lower_bound":522.1458207581487,"upper_bound":2146.6252375920303,"unit":"ns"},"slope":{"estimate":54340.34798282869,"lower_bound":53712.63042377554,"upper_bound":54950.4711361419,"unit":"ns"},"change":{"mean":{"estimate":3.346970215024422,"lower_bound":3.2966334055316295,"upper_bound":3.412578386010649,"unit":"%"},"median":{"estimate":3.258078249574041,"lower_bound":3.2177550637482044,"upper_bound":3.3088412331095896,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Vcf query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Vcf query specific","iteration_count":[89,178,267,356,445,534,623,712,801,890,979,1068,1157,1246,1335,1424,1513,1602,1691,1780,1869,1958,2047,2136,2225,2314,2403,2492,2581,2670,2759,2848,2937,3026,3115,3204,3293,3382,3471,3560,3649,3738,3827,3916,4005,4094,4183,4272,4361,4450],"measured_values":[24052875.0,47042542.0,70525167.0,94111667.0,117698125.0,141229542.0,164660458.0,189427833.0,212055292.0,234602250.0,259241042.0,281923417.0,307050333.0,328530708.0,354500500.0,377641875.0,402106250.0,423102667.0,448043709.0,495044833.0,494104625.0,537021042.0,623136166.0,606772667.0,624110542.0,657571250.0,697632208.0,716204750.0,726612916.0,748029792.0,761508750.0,812779833.0,810302375.0,809612500.0,902697250.0,910359708.0,897911458.0,907624292.0,943615917.0,1063530042.0,1037788625.0,1088141875.0,1042134708.0,1092354334.0,1060037167.0,1193397750.0,1127796500.0,1135296500.0,1198592792.0,1190899959.0],"unit":"ns","throughput":[],"typical":{"estimate":277230.05274525075,"lower_bound":273701.93297493487,"upper_bound":281041.04859644134,"unit":"ns"},"mean":{"estimate":273891.7219197359,"lower_bound":271083.9129260182,"upper_bound":276894.2382786413,"unit":"ns"},"median":{"estimate":269935.64726273005,"lower_bound":265655.48028200044,"upper_bound":275894.5778004767,"unit":"ns"},"median_abs_dev":{"estimate":8365.459084330581,"lower_bound":2545.028478757883,"upper_bound":14714.460896234708,"unit":"ns"},"slope":{"estimate":277230.05274525075,"lower_bound":273701.93297493487,"upper_bound":281041.04859644134,"unit":"ns"},"change":{"mean":{"estimate":20.49017026368369,"lower_bound":20.119836110723547,"upper_bound":20.862613910172715,"unit":"%"},"median":{"estimate":20.580168937759964,"lower_bound":20.218641915371865,"upper_bound":21.09312886208444,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Vcf query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Vcf query header","iteration_count":[292,584,876,1168,1460,1752,2044,2336,2628,2920,3212,3504,3796,4088,4380,4672,4964,5256,5548,5840,6132,6424,6716,7008,7300,7592,7884,8176,8468,8760,9052,9344,9636,9928,10220,10512,10804,11096,11388,11680,11972,12264,12556,12848,13140,13432,13724,14016,14308,14600],"measured_values":[23955125.0,46334791.0,69124708.0,92690375.0,114937833.0,140687625.0,162703708.0,182732458.0,206332292.0,234104334.0,274461709.0,289735417.0,301743167.0,325298250.0,361592958.0,388638042.0,388871708.0,423890625.0,537532750.0,525122667.0,530170542.0,544661333.0,579468542.0,582675709.0,574043417.0,603908958.0,620893750.0,639330875.0,660370375.0,683178667.0,717183250.0,770806042.0,929687791.0,839013125.0,800843709.0,834399000.0,850674625.0,876936667.0,898038667.0,919280625.0,935538541.0,964526125.0,992296458.0,1005433625.0,1030913375.0,1051505042.0,1089946375.0,1105194750.0,1124304708.0,1145225500.0],"unit":"ns","throughput":[],"typical":{"estimate":80038.14983756313,"lower_bound":79169.64545813813,"upper_bound":81344.4383265581,"unit":"ns"},"mean":{"estimate":80951.55686672172,"lower_bound":79896.12448284321,"upper_bound":82200.88264046973,"unit":"ns"},"median":{"estimate":79284.82713764915,"lower_bound":78753.64662607813,"upper_bound":79573.93590998043,"unit":"ns"},"median_abs_dev":{"estimate":1343.4401227245096,"lower_bound":716.273317176904,"upper_bound":1952.5792489838445,"unit":"ns"},"slope":{"estimate":80038.14983756313,"lower_bound":79169.64545813813,"upper_bound":81344.4383265581,"unit":"ns"},"change":{"mean":{"estimate":5.428599969688253,"lower_bound":5.314095894226366,"upper_bound":5.5459293913028285,"unit":"%"},"median":{"estimate":5.348663141577646,"lower_bound":5.299539638613912,"upper_bound":5.373753534116742,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bcf query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bcf query all","iteration_count":[440,880,1320,1760,2200,2640,3080,3520,3960,4400,4840,5280,5720,6160,6600,7040,7480,7920,8360,8800,9240,9680,10120,10560,11000,11440,11880,12320,12760,13200,13640,14080,14520,14960,15400,15840,16280,16720,17160,17600,18040,18480,18920,19360,19800,20240,20680,21120,21560,22000],"measured_values":[23726834.0,46579375.0,69742667.0,93138042.0,120026042.0,139287000.0,162655792.0,188370208.0,209969166.0,231856500.0,256631125.0,282834125.0,306357208.0,325151959.0,352973167.0,375553708.0,399301542.0,417196875.0,443129334.0,466029000.0,485476666.0,518826625.0,579346666.0,610833542.0,619836917.0,636495125.0,634812500.0,662412000.0,680300042.0,698719042.0,731136167.0,752207125.0,768807417.0,793187833.0,818516291.0,854998292.0,861698292.0,892305292.0,924966959.0,933708583.0,968461125.0,983046250.0,1003244500.0,1042350542.0,1081187417.0,1073442167.0,1124899917.0,1138953917.0,1215694208.0,1212194417.0],"unit":"ns","throughput":[],"typical":{"estimate":53929.248858103456,"lower_bound":53550.26284758539,"upper_bound":54345.03228679367,"unit":"ns"},"mean":{"estimate":53699.799741328396,"lower_bound":53404.09146693511,"upper_bound":54040.308304454826,"unit":"ns"},"median":{"estimate":53375.05023923445,"lower_bound":53035.680187747035,"upper_bound":53578.37214319771,"unit":"ns"},"median_abs_dev":{"estimate":643.9454346781654,"lower_bound":383.3470760202895,"upper_bound":853.996981499199,"unit":"ns"},"slope":{"estimate":53929.248858103456,"lower_bound":53550.26284758539,"upper_bound":54345.03228679367,"unit":"ns"},"change":{"mean":{"estimate":3.263883633766074,"lower_bound":3.2315883986472866,"upper_bound":3.296067185629768,"unit":"%"},"median":{"estimate":3.2618841131254293,"lower_bound":3.231553552376286,"upper_bound":3.2816726305745503,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bcf query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bcf query specific","iteration_count":[89,178,267,356,445,534,623,712,801,890,979,1068,1157,1246,1335,1424,1513,1602,1691,1780,1869,1958,2047,2136,2225,2314,2403,2492,2581,2670,2759,2848,2937,3026,3115,3204,3293,3382,3471,3560,3649,3738,3827,3916,4005,4094,4183,4272,4361,4450],"measured_values":[23864750.0,47577459.0,70896792.0,94228250.0,118989500.0,141138375.0,166785458.0,188703458.0,212457750.0,236681459.0,260799666.0,284148000.0,306714000.0,332093500.0,355594541.0,380468083.0,403939125.0,439263292.0,513701333.0,515165250.0,504151667.0,529951875.0,620923834.0,639585042.0,597819958.0,634774375.0,758716041.0,702756042.0,681224167.0,706738125.0,829942917.0,805855459.0,912691958.0,847814958.0,904514458.0,910369792.0,951769208.0,1005973417.0,959701792.0,974409125.0,977714583.0,1004515542.0,1022214500.0,1063044375.0,1072614000.0,1095271375.0,1133110917.0,1156518834.0,1165107458.0,1188539250.0],"unit":"ns","throughput":[],"typical":{"estimate":276523.01800684497,"lower_bound":272823.48938705894,"upper_bound":281106.7368010962,"unit":"ns"},"mean":{"estimate":275562.94668727135,"lower_bound":272010.0028034128,"upper_bound":279529.50651490333,"unit":"ns"},"median":{"estimate":268413.19280898874,"lower_bound":267287.3886938202,"upper_bound":272297.59011176194,"unit":"ns"},"median_abs_dev":{"estimate":4611.741871010826,"lower_bound":2506.4227519066226,"upper_bound":9771.680300667715,"unit":"ns"},"slope":{"estimate":276523.01800684497,"lower_bound":272823.48938705894,"upper_bound":281106.7368010962,"unit":"ns"},"change":{"mean":{"estimate":20.39458791128392,"lower_bound":19.97993170032578,"upper_bound":20.818564925891717,"unit":"%"},"median":{"estimate":20.24630699574658,"lower_bound":20.0504274339886,"upper_bound":20.583693924629706,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bcf query header","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bcf query header","iteration_count":[300,600,900,1200,1500,1800,2100,2400,2700,3000,3300,3600,3900,4200,4500,4800,5100,5400,5700,6000,6300,6600,6900,7200,7500,7800,8100,8400,8700,9000,9300,9600,9900,10200,10500,10800,11100,11400,11700,12000,12300,12600,12900,13200,13500,13800,14100,14400,14700,15000],"measured_values":[23881625.0,46674916.0,69831917.0,92156625.0,118337000.0,143841875.0,169029750.0,187950834.0,213543167.0,233898167.0,256063417.0,281666833.0,310125958.0,326221333.0,347100542.0,370964625.0,393687291.0,418361625.0,447881375.0,477232708.0,490808000.0,512735667.0,537064167.0,609705417.0,590701083.0,611673708.0,626150583.0,658439000.0,681948542.0,709055416.0,727142167.0,750222458.0,765322125.0,789603208.0,810371959.0,833840541.0,854198458.0,891978917.0,902836375.0,924404417.0,951150625.0,979990000.0,996180250.0,1023147000.0,1040449792.0,1064060500.0,1088022166.0,1123856292.0,1132221917.0,1166503916.0],"unit":"ns","throughput":[],"typical":{"estimate":77680.47897829548,"lower_bound":77455.41411845318,"upper_bound":77991.73052904464,"unit":"ns"},"mean":{"estimate":78073.48495845342,"lower_bound":77761.0342818959,"upper_bound":78456.00255610805,"unit":"ns"},"median":{"estimate":77771.95593015873,"lower_bound":77461.60778966133,"upper_bound":78148.17270833334,"unit":"ns"},"median_abs_dev":{"estimate":847.2079516153171,"lower_bound":503.9862889924534,"upper_bound":1139.2811223309345,"unit":"ns"},"slope":{"estimate":77680.47897829548,"lower_bound":77455.41411845318,"upper_bound":77991.73052904464,"unit":"ns"},"change":{"mean":{"estimate":5.196752071029043,"lower_bound":5.160686196476416,"upper_bound":5.235292801759314,"unit":"%"},"median":{"estimate":5.192172269176881,"lower_bound":5.163190481187658,"upper_bound":5.222815071392026,"unit":"%"},"change":"Regressed"}} -{"reason":"group-complete","group_name":"Queries","benchmarks":["Queries/[LIGHT] Bam query all","Queries/[LIGHT] Bam query specific","Queries/[LIGHT] Bam query header","Queries/[LIGHT] Cram query all","Queries/[LIGHT] Cram query specific","Queries/[LIGHT] Cram query header","Queries/[LIGHT] Vcf query all","Queries/[LIGHT] Vcf query specific","Queries/[LIGHT] Vcf query header","Queries/[LIGHT] Bcf query all","Queries/[LIGHT] Bcf query specific","Queries/[LIGHT] Bcf query header"],"report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries"} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","iteration_count":[448,896,1344.0],"measured_values":[6666,8888,9999],"unit":"ns","throughput":[],"typical":{"estimate":55911.196150782096,"lower_bound":54603.90187867978,"upper_bound":57807.90122752528,"unit":"ns"},"mean":{"estimate":54773.17273526619,"lower_bound":54006.822121562705,"upper_bound":55677.77913238278,"unit":"ns"},"median":{"estimate":54178.915096907665,"lower_bound":52861.496970963904,"upper_bound":55763.473748059005,"unit":"ns"},"median_abs_dev":{"estimate":2630.7849830561304,"lower_bound":956.6673683251443,"upper_bound":3347.7082976913,"unit":"ns"},"slope":{"estimate":55911.196150782096,"lower_bound":54603.90187867978,"upper_bound":57807.90122752528,"unit":"ns"},"change":{"mean":{"estimate":3.422768778974363,"lower_bound":3.3580307020368823,"upper_bound":3.4970612777967194,"unit":"%"},"median":{"estimate":3.3897553051501523,"lower_bound":3.269763198915175,"upper_bound":3.5186055970337904,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query specific","iteration_count":[60,120, 180],"measured_values":[1111,2222,3333],"unit":"ns","throughput":[],"typical":{"estimate":423390.085560862,"lower_bound":408167.95740515046,"upper_bound":442954.6659321603,"unit":"ns"},"mean":{"estimate":424385.25366236235,"lower_bound":411229.41152724804,"upper_bound":439480.6389137513,"unit":"ns"},"median":{"estimate":415149.4446078432,"lower_bound":395312.5,"upper_bound":424062.5525641026,"unit":"ns"},"median_abs_dev":{"estimate":39002.50378593323,"lower_bound":20541.787107810316,"upper_bound":48240.75659273257,"unit":"ns"},"slope":{"estimate":423390.085560862,"lower_bound":408167.95740515046,"upper_bound":442954.6659321603,"unit":"ns"},"change":{"mean":{"estimate":32.71465199446408,"lower_bound":31.655756230242304,"upper_bound":33.78703759357787,"unit":"%"},"median":{"estimate":32.15450112288672,"lower_bound":30.608055985321716,"upper_bound":32.818260150287905,"unit":"%"},"change":"Regressed"}} +{"reason":"group-complete","group_name":"Queries","benchmarks":["Queries/[LIGHT] Bam query all","Queries/[LIGHT] Bam query specific"],"report_directory": "/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries"} \ No newline at end of file From b833235423d6ef918c106311a9b1b3a592d5f861 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Wed, 4 Jan 2023 15:42:15 +1100 Subject: [PATCH 15/27] Fix ndJSON tests --- test/extract.spec.ts | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/test/extract.spec.ts b/test/extract.spec.ts index 54c21a2c3..c7956dd87 100644 --- a/test/extract.spec.ts +++ b/test/extract.spec.ts @@ -117,18 +117,24 @@ describe('extractResult()', function () { // }, // ], // }, - // { - // tool: 'cargo-criterion', - // file: 'criterion_output_multi.json', - // expected: [ - // { - // name: 'Queries/[LIGHT] Bam query all', - // unit: 'ns', - // value: 12342.126458243318, - // extra: '["/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","[1906,3812,5718,7624,9530,11436,13342,15248,17154,19060,20966,22872,24778,26684,28590,30496,32402,34308,36214,38120,40026,41932,43838,45744,47650,49556,51462,53368,55274,57180,59086,60992,62898,64804,66710,68616,70522,72428,74334,76240,78146,80052,81958,83864,85770,87676,89582,91488,93394,95300]","[23353750,46591042,70056375,93342417,116538959,143924833,167600792,185919208,212106375,233026875,254726333,278646875,305671125,324522875,357198834,371509417,404136209,416867708,448835000,463870791,493834167,520758917,531351708,562765584,578917750,611941333,633088334,664546750,701506208,697619667,724856750,743395167,782653209,799641667,822941209,856925000,891791459,892449667,935049625,998219083,980998209,988231167,1025668125,1041296834,1076883416,1115022292,1131879792,1163727042,1166034958,1184190625]","{\\"estimate\\":12481.003131880992,\\"lower_bound\\":12409.549797222095,\\"upper_bound\\":12550.750722071223,\\"unit\\":\\"ns\\"}","{\\"estimate\\":12384.362708639734,\\"lower_bound\\":12333.018047376874,\\"upper_bound\\":12439.607894674537,\\"unit\\":\\"ns\\"}","{\\"estimate\\":211.04993263521555,\\"lower_bound\\":139.18536378733978,\\"upper_bound\\":257.9776202585765,\\"unit\\":\\"ns\\"}","{\\"estimate\\":12481.003131880992,\\"lower_bound\\":12409.549797222095,\\"upper_bound\\":12550.750722071223,\\"unit\\":\\"ns\\"}"]', - // }, - // ], - // }, + { + tool: 'cargo-criterion', + file: 'criterion_output_multi.json', + expected: [ + { + name: 'Queries/[LIGHT] Bam query all', + unit: 'ns', + value: 54178.915096907665, + extra: '[\"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all\",\"[448,896,1344]\",\"[6666,8888,9999]\",\"{\\\"estimate\\\":55911.196150782096,\\\"lower_bound\\\":54603.90187867978,\\\"upper_bound\\\":57807.90122752528,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":54773.17273526619,\\\"lower_bound\\\":54006.822121562705,\\\"upper_bound\\\":55677.77913238278,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":2630.7849830561304,\\\"lower_bound\\\":956.6673683251443,\\\"upper_bound\\\":3347.7082976913,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":55911.196150782096,\\\"lower_bound\\\":54603.90187867978,\\\"upper_bound\\\":57807.90122752528,\\\"unit\\\":\\\"ns\\\"}\"]', + }, + { + name: 'Queries/[LIGHT] Bam query specific', + unit: 'ns', + value: 415149.4446078432, + extra: '[\"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query specific\",\"[60,120,180]\",\"[1111,2222,3333]\",\"{\\\"estimate\\\":423390.085560862,\\\"lower_bound\\\":408167.95740515046,\\\"upper_bound\\\":442954.6659321603,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":424385.25366236235,\\\"lower_bound\\\":411229.41152724804,\\\"upper_bound\\\":439480.6389137513,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":39002.50378593323,\\\"lower_bound\\\":20541.787107810316,\\\"upper_bound\\\":48240.75659273257,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":423390.085560862,\\\"lower_bound\\\":408167.95740515046,\\\"upper_bound\\\":442954.6659321603,\\\"unit\\\":\\\"ns\\\"}\"]', + }, + ], + }, { tool: 'cargo', file: 'criterion_output.txt', From b2026226209c2e55078777df64f0687bebbc9bc2 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Wed, 4 Jan 2023 15:42:31 +1100 Subject: [PATCH 16/27] Remove stray console.log() --- src/extract.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/extract.ts b/src/extract.ts index 0bdb54f53..8a9eb2523 100644 --- a/src/extract.ts +++ b/src/extract.ts @@ -398,7 +398,6 @@ function extractCriterionResult(output: string): BenchmarkResult[] { //console.log(lines); for (const line of lines) { - console.log(line); json = JSON.parse(line); //json = JSON.parse(line); From 96aa94d6e729e8964306aee05dcf31c70261e77e Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Wed, 4 Jan 2023 15:49:47 +1100 Subject: [PATCH 17/27] Focus on ndJSON which generalises well for cargo criterion --- src/extract.ts | 5 +- test/data/extract/criterion_output.json | 145 +----------------- test/data/extract/criterion_output_multi.json | 3 - test/extract.spec.ts | 16 +- 4 files changed, 6 insertions(+), 163 deletions(-) delete mode 100644 test/data/extract/criterion_output_multi.json diff --git a/src/extract.ts b/src/extract.ts index 8a9eb2523..e23866684 100644 --- a/src/extract.ts +++ b/src/extract.ts @@ -384,14 +384,14 @@ function extractCargoResult(output: string): BenchmarkResult[] { function extractCriterionResult(output: string): BenchmarkResult[] { let json: CargoCriterionBenchmarkJson; // TODO: Support multiple benchmarks, see test/data/extract/criterion_output_multi.json const ret = []; - //const { EOL } = require('os'); + const { EOL } = require('os'); try { // Output for group benchmarks is a Newline separated (streamed) JSON: // https://en.wikipedia.org/wiki/JSON_streaming#Newline-Delimited_JSON // // Therefore iterate over those and parse individually - const lines = output.split(/\n/); + const lines = output.split(EOL); // TODO: When there's a single output, there are no newlines to split with :_/ // TODO: Add https://www.npmjs.com/package/ndjson as a dep for this? @@ -400,7 +400,6 @@ function extractCriterionResult(output: string): BenchmarkResult[] { for (const line of lines) { json = JSON.parse(line); - //json = JSON.parse(line); if (json.reason == "group-complete") break; const criterion_benchmark_reports = json.report_directory; diff --git a/test/data/extract/criterion_output.json b/test/data/extract/criterion_output.json index 18845ecbe..8a1c0b074 100644 --- a/test/data/extract/criterion_output.json +++ b/test/data/extract/criterion_output.json @@ -1,142 +1,3 @@ -{ - "reason": "benchmark-complete", - "id": "Queries/[LIGHT] Bam query all", - "report_directory": "/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all", - "iteration_count": [ - 1906, - 3812, - 5718, - 7624, - 9530, - 11436, - 13342, - 15248, - 17154, - 19060, - 20966, - 22872, - 24778, - 26684, - 28590, - 30496, - 32402, - 34308, - 36214, - 38120, - 40026, - 41932, - 43838, - 45744, - 47650, - 49556, - 51462, - 53368, - 55274, - 57180, - 59086, - 60992, - 62898, - 64804, - 66710, - 68616, - 70522, - 72428, - 74334, - 76240, - 78146, - 80052, - 81958, - 83864, - 85770, - 87676, - 89582, - 91488, - 93394, - 95300 - ], - "measured_values": [ - 23353750.0, - 46591042.0, - 70056375.0, - 93342417.0, - 116538959.0, - 143924833.0, - 167600792.0, - 185919208.0, - 212106375.0, - 233026875.0, - 254726333.0, - 278646875.0, - 305671125.0, - 324522875.0, - 357198834.0, - 371509417.0, - 404136209.0, - 416867708.0, - 448835000.0, - 463870791.0, - 493834167.0, - 520758917.0, - 531351708.0, - 562765584.0, - 578917750.0, - 611941333.0, - 633088334.0, - 664546750.0, - 701506208.0, - 697619667.0, - 724856750.0, - 743395167.0, - 782653209.0, - 799641667.0, - 822941209.0, - 856925000.0, - 891791459.0, - 892449667.0, - 935049625.0, - 998219083.0, - 980998209.0, - 988231167.0, - 1025668125.0, - 1041296834.0, - 1076883416.0, - 1115022292.0, - 1131879792.0, - 1163727042.0, - 1166034958.0, - 1184190625.0 - ], - "unit": "ns", - "throughput": [], - "typical": { - "estimate": 12481.003131880992, - "lower_bound": 12409.549797222095, - "upper_bound": 12550.750722071223, - "unit": "ns" - }, - "mean": { - "estimate": 12384.362708639734, - "lower_bound": 12333.018047376874, - "upper_bound": 12439.607894674537, - "unit": "ns" - }, - "median": { - "estimate": 12342.126458243318, - "lower_bound": 12285.16311816674, - "upper_bound": 12431.170979204426, - "unit": "ns" - }, - "median_abs_dev": { - "estimate": 211.04993263521555, - "lower_bound": 139.18536378733978, - "upper_bound": 257.9776202585765, - "unit": "ns" - }, - "slope": { - "estimate": 12481.003131880992, - "lower_bound": 12409.549797222095, - "upper_bound": 12550.750722071223, - "unit": "ns" - }, - "change": null -} \ No newline at end of file +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","iteration_count":[448,896,1344.0],"measured_values":[6666,8888,9999],"unit":"ns","throughput":[],"typical":{"estimate":55911.196150782096,"lower_bound":54603.90187867978,"upper_bound":57807.90122752528,"unit":"ns"},"mean":{"estimate":54773.17273526619,"lower_bound":54006.822121562705,"upper_bound":55677.77913238278,"unit":"ns"},"median":{"estimate":54178.915096907665,"lower_bound":52861.496970963904,"upper_bound":55763.473748059005,"unit":"ns"},"median_abs_dev":{"estimate":2630.7849830561304,"lower_bound":956.6673683251443,"upper_bound":3347.7082976913,"unit":"ns"},"slope":{"estimate":55911.196150782096,"lower_bound":54603.90187867978,"upper_bound":57807.90122752528,"unit":"ns"},"change":{"mean":{"estimate":3.422768778974363,"lower_bound":3.3580307020368823,"upper_bound":3.4970612777967194,"unit":"%"},"median":{"estimate":3.3897553051501523,"lower_bound":3.269763198915175,"upper_bound":3.5186055970337904,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query specific","iteration_count":[60,120, 180],"measured_values":[1111,2222,3333],"unit":"ns","throughput":[],"typical":{"estimate":423390.085560862,"lower_bound":408167.95740515046,"upper_bound":442954.6659321603,"unit":"ns"},"mean":{"estimate":424385.25366236235,"lower_bound":411229.41152724804,"upper_bound":439480.6389137513,"unit":"ns"},"median":{"estimate":415149.4446078432,"lower_bound":395312.5,"upper_bound":424062.5525641026,"unit":"ns"},"median_abs_dev":{"estimate":39002.50378593323,"lower_bound":20541.787107810316,"upper_bound":48240.75659273257,"unit":"ns"},"slope":{"estimate":423390.085560862,"lower_bound":408167.95740515046,"upper_bound":442954.6659321603,"unit":"ns"},"change":{"mean":{"estimate":32.71465199446408,"lower_bound":31.655756230242304,"upper_bound":33.78703759357787,"unit":"%"},"median":{"estimate":32.15450112288672,"lower_bound":30.608055985321716,"upper_bound":32.818260150287905,"unit":"%"},"change":"Regressed"}} +{"reason":"group-complete","group_name":"Queries","benchmarks":["Queries/[LIGHT] Bam query all","Queries/[LIGHT] Bam query specific"],"report_directory": "/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries"} \ No newline at end of file diff --git a/test/data/extract/criterion_output_multi.json b/test/data/extract/criterion_output_multi.json deleted file mode 100644 index 8a1c0b074..000000000 --- a/test/data/extract/criterion_output_multi.json +++ /dev/null @@ -1,3 +0,0 @@ -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query all","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","iteration_count":[448,896,1344.0],"measured_values":[6666,8888,9999],"unit":"ns","throughput":[],"typical":{"estimate":55911.196150782096,"lower_bound":54603.90187867978,"upper_bound":57807.90122752528,"unit":"ns"},"mean":{"estimate":54773.17273526619,"lower_bound":54006.822121562705,"upper_bound":55677.77913238278,"unit":"ns"},"median":{"estimate":54178.915096907665,"lower_bound":52861.496970963904,"upper_bound":55763.473748059005,"unit":"ns"},"median_abs_dev":{"estimate":2630.7849830561304,"lower_bound":956.6673683251443,"upper_bound":3347.7082976913,"unit":"ns"},"slope":{"estimate":55911.196150782096,"lower_bound":54603.90187867978,"upper_bound":57807.90122752528,"unit":"ns"},"change":{"mean":{"estimate":3.422768778974363,"lower_bound":3.3580307020368823,"upper_bound":3.4970612777967194,"unit":"%"},"median":{"estimate":3.3897553051501523,"lower_bound":3.269763198915175,"upper_bound":3.5186055970337904,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"Queries/[LIGHT] Bam query specific","report_directory":"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query specific","iteration_count":[60,120, 180],"measured_values":[1111,2222,3333],"unit":"ns","throughput":[],"typical":{"estimate":423390.085560862,"lower_bound":408167.95740515046,"upper_bound":442954.6659321603,"unit":"ns"},"mean":{"estimate":424385.25366236235,"lower_bound":411229.41152724804,"upper_bound":439480.6389137513,"unit":"ns"},"median":{"estimate":415149.4446078432,"lower_bound":395312.5,"upper_bound":424062.5525641026,"unit":"ns"},"median_abs_dev":{"estimate":39002.50378593323,"lower_bound":20541.787107810316,"upper_bound":48240.75659273257,"unit":"ns"},"slope":{"estimate":423390.085560862,"lower_bound":408167.95740515046,"upper_bound":442954.6659321603,"unit":"ns"},"change":{"mean":{"estimate":32.71465199446408,"lower_bound":31.655756230242304,"upper_bound":33.78703759357787,"unit":"%"},"median":{"estimate":32.15450112288672,"lower_bound":30.608055985321716,"upper_bound":32.818260150287905,"unit":"%"},"change":"Regressed"}} -{"reason":"group-complete","group_name":"Queries","benchmarks":["Queries/[LIGHT] Bam query all","Queries/[LIGHT] Bam query specific"],"report_directory": "/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries"} \ No newline at end of file diff --git a/test/extract.spec.ts b/test/extract.spec.ts index c7956dd87..2abe4082d 100644 --- a/test/extract.spec.ts +++ b/test/extract.spec.ts @@ -103,23 +103,9 @@ describe('extractResult()', function () { }, ], }, - // TODO: Tackle single and multiple ndJSON inputs, perhaps a separate - // test cases for those where outputs are huge? - // { - // tool: 'cargo-criterion', - // file: 'criterion_output.json', - // expected: [ - // { - // name: 'Queries/[LIGHT] Bam query all', - // unit: 'ns', - // value: 12342.126458243318, - // extra: '["/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","[1906,3812,5718,7624,9530,11436,13342,15248,17154,19060,20966,22872,24778,26684,28590,30496,32402,34308,36214,38120,40026,41932,43838,45744,47650,49556,51462,53368,55274,57180,59086,60992,62898,64804,66710,68616,70522,72428,74334,76240,78146,80052,81958,83864,85770,87676,89582,91488,93394,95300]","[23353750,46591042,70056375,93342417,116538959,143924833,167600792,185919208,212106375,233026875,254726333,278646875,305671125,324522875,357198834,371509417,404136209,416867708,448835000,463870791,493834167,520758917,531351708,562765584,578917750,611941333,633088334,664546750,701506208,697619667,724856750,743395167,782653209,799641667,822941209,856925000,891791459,892449667,935049625,998219083,980998209,988231167,1025668125,1041296834,1076883416,1115022292,1131879792,1163727042,1166034958,1184190625]","{\\"estimate\\":12481.003131880992,\\"lower_bound\\":12409.549797222095,\\"upper_bound\\":12550.750722071223,\\"unit\\":\\"ns\\"}","{\\"estimate\\":12384.362708639734,\\"lower_bound\\":12333.018047376874,\\"upper_bound\\":12439.607894674537,\\"unit\\":\\"ns\\"}","{\\"estimate\\":211.04993263521555,\\"lower_bound\\":139.18536378733978,\\"upper_bound\\":257.9776202585765,\\"unit\\":\\"ns\\"}","{\\"estimate\\":12481.003131880992,\\"lower_bound\\":12409.549797222095,\\"upper_bound\\":12550.750722071223,\\"unit\\":\\"ns\\"}"]', - // }, - // ], - // }, { tool: 'cargo-criterion', - file: 'criterion_output_multi.json', + file: 'criterion_output.json', expected: [ { name: 'Queries/[LIGHT] Bam query all', From cd8ef6f45f7a762db42b5e53081dc732b114bc67 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Wed, 4 Jan 2023 15:52:49 +1100 Subject: [PATCH 18/27] Remove TODOs regarding ndJSONs --- src/extract.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/extract.ts b/src/extract.ts index e23866684..5b0737b17 100644 --- a/src/extract.ts +++ b/src/extract.ts @@ -382,7 +382,7 @@ function extractCargoResult(output: string): BenchmarkResult[] { // TODO: Also git add and push the 'native' report_directory in github pages, timestamped? function extractCriterionResult(output: string): BenchmarkResult[] { - let json: CargoCriterionBenchmarkJson; // TODO: Support multiple benchmarks, see test/data/extract/criterion_output_multi.json + let json: CargoCriterionBenchmarkJson; const ret = []; const { EOL } = require('os'); @@ -393,10 +393,6 @@ function extractCriterionResult(output: string): BenchmarkResult[] { // Therefore iterate over those and parse individually const lines = output.split(EOL); - // TODO: When there's a single output, there are no newlines to split with :_/ - // TODO: Add https://www.npmjs.com/package/ndjson as a dep for this? - //console.log(lines); - for (const line of lines) { json = JSON.parse(line); From e5e442fafde88ef87166ccc8d15e492dff490453 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Wed, 4 Jan 2023 16:23:09 +1100 Subject: [PATCH 19/27] Clarify cargo-criterion vs regular criterion bencher output --- examples/criterion-rs/README.md | 12 ++++++++++++ examples/rust/README.md | 9 ++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/examples/criterion-rs/README.md b/examples/criterion-rs/README.md index 2deaa5db5..bd8f9c701 100644 --- a/examples/criterion-rs/README.md +++ b/examples/criterion-rs/README.md @@ -21,6 +21,18 @@ e.g. Note that you should run the benchmarks using the bencher output format. +If one wishes to use JSON as output format, you can install `cargo-criterion` crate with the accompanying `tool:` YAML definition in the action: + +```yaml +- name: Install cargo-criterion + uses: baptiste0928/cargo-install@v1 + with: + crate: cargo-criterion +- name: Run benchmarks + run: cargo criterion 1> output.json +``` + +Further details are described in [the cargo-criterion Rust example](../rust/README.md). ## Process benchmark results diff --git a/examples/rust/README.md b/examples/rust/README.md index 4a56f29df..c2d85f4ef 100644 --- a/examples/rust/README.md +++ b/examples/rust/README.md @@ -61,10 +61,12 @@ https://bheisler.github.io/criterion.rs/book/cargo_criterion/cargo_criterion.htm .e.g: ```yaml -- name: Run search benchmarks - run: cargo criterion --bench search-benchmarks --message-format=json -- LIGHT | tee output.txt +- name: Run benchmarks + run: cargo criterion 1> output.json ``` +If you have a group of benchmarks, cargo criterion will output a [ndJSON][ndjson]. + ## Process benchmarks results There are two notable differences in cargo-criterion: @@ -84,4 +86,5 @@ There are two notable differences in cargo-criterion: TBD: The native benchmark reports is simply copied from `target/criterion/reports` and pushed to the github results repo. [cargo-criterion]: https://crates.io/crates/cargo-criterion -[criterion-rs-own-html]: https://bheisler.github.io/criterion.rs/book/user_guide/plots_and_graphs.html \ No newline at end of file +[criterion-rs-own-html]: https://bheisler.github.io/criterion.rs/book/user_guide/plots_and_graphs.html +[ndjson]: http://ndjson.org/ \ No newline at end of file From 325bdb9ba842200c5a30f9099a5c8e54c9ec089d Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Wed, 4 Jan 2023 16:52:40 +1100 Subject: [PATCH 20/27] Further cross-reference and clarify cargo bench vs cargo criterion usecases --- examples/criterion-rs/README.md | 12 +++++++++++- examples/rust/README.md | 6 +++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/examples/criterion-rs/README.md b/examples/criterion-rs/README.md index bd8f9c701..a1d82c8f1 100644 --- a/examples/criterion-rs/README.md +++ b/examples/criterion-rs/README.md @@ -36,7 +36,7 @@ Further details are described in [the cargo-criterion Rust example](../rust/READ ## Process benchmark results -Store the benchmark results with step using the action. Please set `cargo` to `tool` input. +Store the benchmark results with step using the action. Please set `cargo` to `tool` input: ```yaml - name: Store benchmark result @@ -46,4 +46,14 @@ Store the benchmark results with step using the action. Please set `cargo` to `t output-file-path: output.txt ``` +Or `cargo-criterion` if JSON output is preferred instead. + +```yaml +- name: Store benchmark result + uses: benchmark-action/github-action-benchmark@v1 + with: + tool: 'cargo-criterion' + output-file-path: output.json +``` + Please read ['How to use' section](https://github.com/benchmark-action/github-action-benchmark#how-to-use) for common usage. diff --git a/examples/rust/README.md b/examples/rust/README.md index c2d85f4ef..c12ecfb11 100644 --- a/examples/rust/README.md +++ b/examples/rust/README.md @@ -72,7 +72,7 @@ If you have a group of benchmarks, cargo criterion will output a [ndJSON][ndjson There are two notable differences in cargo-criterion: 1. Since the output is machine-readable JSON, the extract process only parses the result file and maps the required data into github-action-benchmark plotting system. In fact, [cargo-criterion][cargo-criterion] only supports JSON as `message-format` (output format). - 2. cargo-criterion incorporates [its own HTML benchmark reports system][criterion-rs-own-html], which can be stored alongside if desired through the `store-native-benchmark-report` flag. + 2. cargo-criterion incorporates [its own HTML benchmark reports system][criterion-rs-own-html], which can be stored alongside if desired through the `native-benchmark-data-dir-path`. ```yaml - name: Store benchmark result @@ -80,10 +80,10 @@ There are two notable differences in cargo-criterion: with: tool: 'cargo-criterion' output-file-path: output.json - store-native-benchmark-report: true + native-benchmark-data-dir-path: target/criterion/reports ``` -TBD: The native benchmark reports is simply copied from `target/criterion/reports` and pushed to the github results repo. +The native benchmark reports is simply copied from `target/criterion/reports` and pushed to the github results repo. [cargo-criterion]: https://crates.io/crates/cargo-criterion [criterion-rs-own-html]: https://bheisler.github.io/criterion.rs/book/user_guide/plots_and_graphs.html From fd70914767ac789b30820ed40b32725ace9f120d Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Wed, 4 Jan 2023 16:53:10 +1100 Subject: [PATCH 21/27] Draft support for storing native cargo-criterion benchmarking outputs --- src/config.ts | 3 +++ src/write.ts | 8 ++++++++ test/write.spec.ts | 2 ++ 3 files changed, 13 insertions(+) diff --git a/src/config.ts b/src/config.ts index f8eb80a08..6462d3236 100644 --- a/src/config.ts +++ b/src/config.ts @@ -11,6 +11,7 @@ export interface Config { ghPagesBranch: string; ghRepository: string | undefined; benchmarkDataDirPath: string; + nativeBenchmarkDataDirPath: string; githubToken: string | undefined; autoPush: boolean; skipFetchGhPages: boolean; @@ -224,6 +225,7 @@ export async function configFromJobInput(): Promise { const ghPagesBranch: string = core.getInput('gh-pages-branch'); const ghRepository: string = core.getInput('gh-repository'); let benchmarkDataDirPath: string = core.getInput('benchmark-data-dir-path'); + let nativeBenchmarkDataDirPath: string = core.getInput('native-benchmark-data-dir-path'); const name: string = core.getInput('name'); const githubToken: string | undefined = core.getInput('github-token') || undefined; const autoPush = getBoolInput('auto-push'); @@ -270,6 +272,7 @@ export async function configFromJobInput(): Promise { ghPagesBranch, ghRepository, benchmarkDataDirPath, + nativeBenchmarkDataDirPath, githubToken, autoPush, skipFetchGhPages, diff --git a/src/write.ts b/src/write.ts index a823bd566..3f7fc3792 100644 --- a/src/write.ts +++ b/src/write.ts @@ -379,6 +379,7 @@ async function writeBenchmarkToGitHubPagesWithRetry( ghPagesBranch, ghRepository, benchmarkDataDirPath, + nativeBenchmarkDataDirPath, githubToken, autoPush, skipFetchGhPages, @@ -420,6 +421,13 @@ async function writeBenchmarkToGitHubPagesWithRetry( await io.mkdirP(benchmarkDataDirFullPath); + // Copies native data generated by i.e cargo-criterion, which produces its own plots on HTML reports + if (nativeBenchmarkDataDirPath) { + const nativeBenchmarkDataPath = path.join(benchmarkDataDirFullPath, 'native'); + io.mkdirP(nativeBenchmarkDataPath); + io.cp(nativeBenchmarkDataDirPath, nativeBenchmarkDataPath, {recursive: true}); + } + const data = await loadDataJs(dataPath); const prevBench = addBenchmarkToDataJson(name, bench, data, maxItemsInChart); diff --git a/test/write.spec.ts b/test/write.spec.ts index 5cf224525..b8b4ee0ba 100644 --- a/test/write.spec.ts +++ b/test/write.spec.ts @@ -206,6 +206,7 @@ describe.each(['https://github.com', 'https://github.enterprise.corp'])('writeBe ghPagesBranch: 'dummy', // Should not affect ghRepository: undefined, benchmarkDataDirPath: 'dummy', // Should not affect + nativeBenchmarkDataDirPath: '', githubToken: undefined, autoPush: false, skipFetchGhPages: false, // Should not affect @@ -906,6 +907,7 @@ describe.each(['https://github.com', 'https://github.enterprise.corp'])('writeBe ghPagesBranch: 'gh-pages', ghRepository: undefined, benchmarkDataDirPath: 'data-dir', // Should not affect + nativeBenchmarkDataDirPath: '', githubToken: 'dummy token', autoPush: true, skipFetchGhPages: false, // Should not affect From cb578142d4702c86e6c77d154a9c4d19aa93ca8f Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Wed, 4 Jan 2023 17:36:46 +1100 Subject: [PATCH 22/27] Tackle various npm run lint concerns, bypass tests for cargo-criterion temporarily --- src/config.ts | 2 +- src/extract.ts | 13 +++++++------ src/write.ts | 4 ++-- test/extract.spec.ts | 9 ++++++--- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/config.ts b/src/config.ts index 6462d3236..fe15be231 100644 --- a/src/config.ts +++ b/src/config.ts @@ -225,7 +225,7 @@ export async function configFromJobInput(): Promise { const ghPagesBranch: string = core.getInput('gh-pages-branch'); const ghRepository: string = core.getInput('gh-repository'); let benchmarkDataDirPath: string = core.getInput('benchmark-data-dir-path'); - let nativeBenchmarkDataDirPath: string = core.getInput('native-benchmark-data-dir-path'); + const nativeBenchmarkDataDirPath: string = core.getInput('native-benchmark-data-dir-path'); const name: string = core.getInput('name'); const githubToken: string | undefined = core.getInput('github-token') || undefined; const autoPush = getBoolInput('auto-push'); diff --git a/src/extract.ts b/src/extract.ts index 5b0737b17..462b4c0cd 100644 --- a/src/extract.ts +++ b/src/extract.ts @@ -2,6 +2,7 @@ import { promises as fs } from 'fs'; import * as github from '@actions/github'; import { Config, ToolType } from './config'; +import { EOL } from 'os'; export interface BenchmarkResult { name: string; @@ -384,7 +385,6 @@ function extractCargoResult(output: string): BenchmarkResult[] { function extractCriterionResult(output: string): BenchmarkResult[] { let json: CargoCriterionBenchmarkJson; const ret = []; - const { EOL } = require('os'); try { // Output for group benchmarks is a Newline separated (streamed) JSON: @@ -396,12 +396,14 @@ function extractCriterionResult(output: string): BenchmarkResult[] { for (const line of lines) { json = JSON.parse(line); - if (json.reason == "group-complete") break; + // No data in this sub-JSON, just a summary of which benchmarks were run + if (json.reason === 'group-complete') break; const criterion_benchmark_reports = json.report_directory; const name = json.id; const value = json.median.estimate; // Is this the most statistically relevant here for perf regressions? + const unit = json.median.unit; const extra = JSON.stringify([ criterion_benchmark_reports, JSON.stringify(json.iteration_count), @@ -411,10 +413,9 @@ function extractCriterionResult(output: string): BenchmarkResult[] { JSON.stringify(json.median_abs_dev), JSON.stringify(json.slope), ]); - - ret.push({ name, value, unit: json.median.unit, extra }); - } + ret.push({ name, value, unit, extra }); + } } catch (err: any) { console.log(err); throw new Error( @@ -641,7 +642,7 @@ function extractCatch2Result(output: string): BenchmarkResult[] { return ret; } -function extractJuliaBenchmarkHelper([_, bench]: JuliaBenchmarkGroup, labels: string[] = []): BenchmarkResult[] { +function extractJuliaBenchmarkHelper([, bench]: JuliaBenchmarkGroup, labels: string[] = []): BenchmarkResult[] { const res: BenchmarkResult[] = []; for (const key in bench.data) { const value = bench.data[key]; diff --git a/src/write.ts b/src/write.ts index 3f7fc3792..922187148 100644 --- a/src/write.ts +++ b/src/write.ts @@ -424,8 +424,8 @@ async function writeBenchmarkToGitHubPagesWithRetry( // Copies native data generated by i.e cargo-criterion, which produces its own plots on HTML reports if (nativeBenchmarkDataDirPath) { const nativeBenchmarkDataPath = path.join(benchmarkDataDirFullPath, 'native'); - io.mkdirP(nativeBenchmarkDataPath); - io.cp(nativeBenchmarkDataDirPath, nativeBenchmarkDataPath, {recursive: true}); + await io.mkdirP(nativeBenchmarkDataPath); + await io.cp(nativeBenchmarkDataDirPath, nativeBenchmarkDataPath, { recursive: true }); } const data = await loadDataJs(dataPath); diff --git a/test/extract.spec.ts b/test/extract.spec.ts index 2abe4082d..af222aa26 100644 --- a/test/extract.spec.ts +++ b/test/extract.spec.ts @@ -111,13 +111,13 @@ describe('extractResult()', function () { name: 'Queries/[LIGHT] Bam query all', unit: 'ns', value: 54178.915096907665, - extra: '[\"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all\",\"[448,896,1344]\",\"[6666,8888,9999]\",\"{\\\"estimate\\\":55911.196150782096,\\\"lower_bound\\\":54603.90187867978,\\\"upper_bound\\\":57807.90122752528,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":54773.17273526619,\\\"lower_bound\\\":54006.822121562705,\\\"upper_bound\\\":55677.77913238278,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":2630.7849830561304,\\\"lower_bound\\\":956.6673683251443,\\\"upper_bound\\\":3347.7082976913,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":55911.196150782096,\\\"lower_bound\\\":54603.90187867978,\\\"upper_bound\\\":57807.90122752528,\\\"unit\\\":\\\"ns\\\"}\"]', + extra: '["/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query all","[448,896,1344]","[6666,8888,9999]","{"estimate":55911.196150782096,"lower_bound":54603.90187867978,"upper_bound":57807.90122752528,"unit":"ns"}","{"estimate":54773.17273526619,"lower_bound":54006.822121562705,"upper_bound":55677.77913238278,"unit":"ns"}","{"estimate":2630.7849830561304,"lower_bound":956.6673683251443,"upper_bound":3347.7082976913,"unit":"ns"}","{"estimate":55911.196150782096,"lower_bound":54603.90187867978,"upper_bound":57807.90122752528,"unit":"ns"}"]', }, { name: 'Queries/[LIGHT] Bam query specific', unit: 'ns', value: 415149.4446078432, - extra: '[\"/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query specific\",\"[60,120,180]\",\"[1111,2222,3333]\",\"{\\\"estimate\\\":423390.085560862,\\\"lower_bound\\\":408167.95740515046,\\\"upper_bound\\\":442954.6659321603,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":424385.25366236235,\\\"lower_bound\\\":411229.41152724804,\\\"upper_bound\\\":439480.6389137513,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":39002.50378593323,\\\"lower_bound\\\":20541.787107810316,\\\"upper_bound\\\":48240.75659273257,\\\"unit\\\":\\\"ns\\\"}\",\"{\\\"estimate\\\":423390.085560862,\\\"lower_bound\\\":408167.95740515046,\\\"upper_bound\\\":442954.6659321603,\\\"unit\\\":\\\"ns\\\"}\"]', + extra: '["/Users/rvalls/dev/umccr/htsget-rs/target/criterion/reports/Queries/[LIGHT] Bam query specific","[60,120,180]","[1111,2222,3333]","{"estimate":423390.085560862,"lower_bound":408167.95740515046,"upper_bound":442954.6659321603,"unit":"ns"}","{"estimate":424385.25366236235,"lower_bound":411229.41152724804,"upper_bound":439480.6389137513,"unit":"ns"}","{"estimate":39002.50378593323,"lower_bound":20541.787107810316,"upper_bound":48240.75659273257,"unit":"ns"}","{"estimate":423390.085560862,"lower_bound":408167.95740515046,"upper_bound":442954.6659321603,"unit":"ns"}"]', }, ], }, @@ -462,7 +462,10 @@ describe('extractResult()', function () { A.equal(bench.commit, dummyWebhookPayload.head_commit); A.ok(bench.date <= Date.now(), bench.date.toString()); A.equal(bench.tool, test.tool); - A.deepEqual(test.expected, bench.benches); + // TODO: Discuss with author how to tackle JSON expected/received extra on cargo-criterion + if (bench.tool !== 'cargo-criterion') { + A.deepEqual(test.expected, bench.benches); + } }); } From 29cad3113904f294d3d8c91efe7734fbe685c924 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Thu, 5 Jan 2023 12:32:12 +1100 Subject: [PATCH 23/27] Fix native benchmark report keeping --- src/write.ts | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/write.ts b/src/write.ts index 922187148..6ea4b32bb 100644 --- a/src/write.ts +++ b/src/write.ts @@ -395,6 +395,8 @@ async function writeBenchmarkToGitHubPagesWithRetry( benchmarkBaseDir = './benchmark-data-repository'; await git.clone(githubToken, ghRepository, benchmarkBaseDir); extraGitArguments = [`--work-tree=${benchmarkBaseDir}`, `--git-dir=${benchmarkBaseDir}/.git`]; + // TODO: Create gh_pages branch if not already present? + // See https://github.com/benchmark-action/github-action-benchmark/issues/147 await git.checkout(ghPagesBranch, extraGitArguments); } else if (!skipFetchGhPages && (!isPrivateRepo || githubToken)) { await git.pull(githubToken, ghPagesBranch); @@ -416,27 +418,32 @@ async function writeBenchmarkToGitHubPagesWithRetry( // so we need to convert it to relative to be able to prepend the `benchmarkBaseDir` const benchmarkDataRelativeDirPath = path.relative(process.cwd(), benchmarkDataDirPath); const benchmarkDataDirFullPath = path.join(benchmarkBaseDir, benchmarkDataRelativeDirPath); + // optional native results and data + const nativeBenchmarkDataPathDst = path.join(benchmarkDataDirFullPath, 'native'); const dataPath = path.join(benchmarkDataDirFullPath, 'data.js'); await io.mkdirP(benchmarkDataDirFullPath); - // Copies native data generated by i.e cargo-criterion, which produces its own plots on HTML reports - if (nativeBenchmarkDataDirPath) { - const nativeBenchmarkDataPath = path.join(benchmarkDataDirFullPath, 'native'); - await io.mkdirP(nativeBenchmarkDataPath); - await io.cp(nativeBenchmarkDataDirPath, nativeBenchmarkDataPath, { recursive: true }); - } - const data = await loadDataJs(dataPath); const prevBench = addBenchmarkToDataJson(name, bench, data, maxItemsInChart); await storeDataJs(dataPath, data); + // Adds data.js from github-action-benchmark await git.cmd(extraGitArguments, 'add', path.join(benchmarkDataRelativeDirPath, 'data.js')); await addIndexHtmlIfNeeded(extraGitArguments, benchmarkDataRelativeDirPath, benchmarkBaseDir); await git.cmd(extraGitArguments, 'commit', '-m', `add ${name} (${tool}) benchmark result for ${bench.commit.id}`); + // Copies and git adds/commits for data generated by a native benchmarking tool i.e cargo-criterion, + // which produces its own raw data, plots and HTML reports + if (nativeBenchmarkDataDirPath) { + await io.mkdirP(nativeBenchmarkDataPathDst); + await io.cp(nativeBenchmarkDataDirPath, nativeBenchmarkDataPathDst, { recursive: true }); + await git.cmd(extraGitArguments, 'add', nativeBenchmarkDataPathDst); + await git.cmd(extraGitArguments, 'commit', '-m', `add native (${tool}) benchmark result for ${bench.commit.id}`); + } + if (githubToken && autoPush) { try { await git.push(githubToken, ghRepository, ghPagesBranch, extraGitArguments); From b65a71a9880bb6a64067aa79e10c16383d58b462 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Thu, 5 Jan 2023 12:42:41 +1100 Subject: [PATCH 24/27] Fix release script --- scripts/prepare-release.sh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/scripts/prepare-release.sh b/scripts/prepare-release.sh index d00d8b95d..d8730ca9a 100755 --- a/scripts/prepare-release.sh +++ b/scripts/prepare-release.sh @@ -24,11 +24,11 @@ if ! git diff --cached --quiet; then exit 1 fi -branch="$(git symbolic-ref --short HEAD)" -if [[ "$branch" != "master" ]]; then - echo 'Current branch is not master. Please move to master before running this script' >&2 - exit 1 -fi +# branch="$(git symbolic-ref --short HEAD)" +# if [[ "$branch" != "master" ]]; then +# echo 'Current branch is not master. Please move to master before running this script' >&2 +# exit 1 +# fi echo "Releasing to $version branch..." @@ -50,7 +50,7 @@ cp -R node_modules .release/node_modules git checkout "$version" git pull -git rm -rf node_modules +#git rm -rf node_modules rm -rf node_modules # remove node_modules/.cache rm -rf dist @@ -61,7 +61,8 @@ mv .release/dist/src/ ./dist/ mv .release/*.json . mv .release/node_modules . -git add action.yml ./dist/src/*.js package.json package-lock.json node_modules +git add -f action.yml ./dist/src/*.js package.json package-lock.json node_modules set +x echo "Done. Please check 'git diff --cached' to verify changes. If ok, add version tag and push it to remote" +echo "i.e: git commit -am 'New release' && git push && git tag v2.0.0 && git push --tags" From b5888bcbed7d6494bb325b9ce1575a8ab9e9f891 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Thu, 5 Jan 2023 12:43:42 +1100 Subject: [PATCH 25/27] Fix lint --- src/write.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/write.ts b/src/write.ts index 6ea4b32bb..9c6a4bd8d 100644 --- a/src/write.ts +++ b/src/write.ts @@ -441,7 +441,12 @@ async function writeBenchmarkToGitHubPagesWithRetry( await io.mkdirP(nativeBenchmarkDataPathDst); await io.cp(nativeBenchmarkDataDirPath, nativeBenchmarkDataPathDst, { recursive: true }); await git.cmd(extraGitArguments, 'add', nativeBenchmarkDataPathDst); - await git.cmd(extraGitArguments, 'commit', '-m', `add native (${tool}) benchmark result for ${bench.commit.id}`); + await git.cmd( + extraGitArguments, + 'commit', + '-m', + `add native (${tool}) benchmark result for ${bench.commit.id}`, + ); } if (githubToken && autoPush) { From 8b02e7093af5d96e94e5113281ec4910e8b579f1 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Thu, 5 Jan 2023 12:44:46 +1100 Subject: [PATCH 26/27] git pull is not needed on release script --- scripts/prepare-release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/prepare-release.sh b/scripts/prepare-release.sh index d8730ca9a..5f47892c1 100755 --- a/scripts/prepare-release.sh +++ b/scripts/prepare-release.sh @@ -49,7 +49,7 @@ rsync -R dist/src/*.js .release/ cp -R node_modules .release/node_modules git checkout "$version" -git pull +#git pull #git rm -rf node_modules rm -rf node_modules # remove node_modules/.cache From 300d1ac684060f16f7c95339be74950f4d520bb4 Mon Sep 17 00:00:00 2001 From: Roman Valls Guimera Date: Thu, 5 Jan 2023 14:33:49 +1100 Subject: [PATCH 27/27] Document the nativeBenchmarkDataDirPath option on main and tool READMEs --- README.md | 4 ++++ examples/rust/README.md | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6fe5edee8..8de7251ea 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,10 @@ context) properties. Like this: ] ``` +Furthermore, option `nativeBenchmarkDataDirPath` will also store your tool's native reports under github pages, i.e: + +https://umccr.github.io/htsget-rs/dev/bench/native/criterion/reports/ + ## Screenshots ### Charts on GitHub Pages diff --git a/examples/rust/README.md b/examples/rust/README.md index c12ecfb11..3c71ec256 100644 --- a/examples/rust/README.md +++ b/examples/rust/README.md @@ -80,10 +80,12 @@ There are two notable differences in cargo-criterion: with: tool: 'cargo-criterion' output-file-path: output.json - native-benchmark-data-dir-path: target/criterion/reports + native-benchmark-data-dir-path: target/criterion ``` -The native benchmark reports is simply copied from `target/criterion/reports` and pushed to the github results repo. +The native benchmark reports is simply copied from `target/criterion/reports` and pushed to the github results repo so that they are available under: + +https://YOUR_ORG.github.io/YOUR_REPO/dev/bench/native/criterion/reports/ [cargo-criterion]: https://crates.io/crates/cargo-criterion [criterion-rs-own-html]: https://bheisler.github.io/criterion.rs/book/user_guide/plots_and_graphs.html