diff --git a/demos/server.js b/demos/server.js index 9dd8c05..0daa974 100644 --- a/demos/server.js +++ b/demos/server.js @@ -2,6 +2,8 @@ let express = require('express'); let app = express(); let path = require('path'); let bodyParser = require('body-parser'); +let FormData = require('form-data'); +const Readable = require('stream').Readable; let constellation = require('../lib/constellation'); app.use(bodyParser.json()); @@ -50,3 +52,30 @@ app.post('/postSpecs', function(req,res) { res.status(405).send(String(error)); } }); + +app.post('/sendToKnox', function(req,res) { + + let form = new FormData(); + let sbolDocs = JSON.parse(req.body['sbolDocs[]']); + + for(let sbol of sbolDocs){ + let stream = new Readable(); + stream.push(sbol); + stream.push(null); + form.append('inputSBOLFiles[]', stream, { + filename : 'test.xml', + contentType: 'application/xml', + knownLength: sbol.length + }); //extra fields necessary + } + form.append('outputSpaceID', req.body.designName); + + form.submit('http://localhost:8080/sbol/importCombinatorial', function(error, result) { + if (error) { + console.log('Error!'); + res.status(405).send(String(error)); + } else{ + res.status(200).send(String(result)); + } + }); +}); diff --git a/demos/static/client.html b/demos/static/client.html index 873ca90..63ae7e9 100644 --- a/demos/static/client.html +++ b/demos/static/client.html @@ -7,7 +7,8 @@ - + + @@ -46,7 +47,7 @@

Constellation


- +
@@ -94,6 +95,10 @@

Constellation




+
+


+ +

diff --git a/demos/static/css/style.css b/demos/static/css/style.css index 1efd0d2..2c0f1ea 100644 --- a/demos/static/css/style.css +++ b/demos/static/css/style.css @@ -31,6 +31,13 @@ textarea { font-size: 20px; } +#knoxBtn { + margin: auto; + background-color: white; + display: block; + font-size: 20px; +} + h5 { color: rgb(120, 120, 120); font-family: 'Montserrat', 'monospace'; @@ -122,4 +129,4 @@ input[type="button"]{ /* .dropdown:hover .dropdown-content {display: block;} */ /* Change the background color of the dropdown button when the dropdown content is shown */ -/* .dropdown:hover .dropbtn {background-color: #30729f;} */ \ No newline at end of file +/* .dropdown:hover .dropbtn {background-color: #30729f;} */ diff --git a/demos/static/favicon.png b/demos/static/favicon.png new file mode 100644 index 0000000..0fb33a5 Binary files /dev/null and b/demos/static/favicon.png differ diff --git a/demos/static/js/client.js b/demos/static/js/client.js index 9fd613c..6ddc447 100644 --- a/demos/static/js/client.js +++ b/demos/static/js/client.js @@ -5,7 +5,8 @@ const IMAGESIZE = 30; const RADIUS = 7; const INTERMEDIATE = 'intermediate'; -let nodePointer, linkPointer, simulationPointer, svgPointer, circlePointer, imagePointer, textPointer, width, height; +let nodePointer, linkPointer, simulationPointer, svgPointer, circlePointer, imagePointer, textPointer, width, height, sbolDocs; +let designName = 'Constellation'; /* * * * * * */ /* DESIGNS */ @@ -176,9 +177,10 @@ function drawNodes(nodes) { .append('svg:image') .attr('xlink:href', function(d) { switch (d.text) { + case 'ribosomeBindingSite': case 'promoter': case 'terminator': - case 'CDS': + case 'cds': case 'restriction_enzyme_assembly_scar': case 'restriction_enzyme_recognition_site': case 'protein_stability_element': @@ -367,24 +369,34 @@ $(document).ready(function() { editors.specEditor.setOption("theme", THEME); editors.catEditor.setOption("theme", THEME); - editors.catEditor.setValue('{"promoter": ["BBa_R0040", "BBa_J23100"],\n "ribosomeBindingSite": ["BBa_B0032", "BBa_B0034"], \n"cds": ["BBa_E0040", "BBa_E1010"],\n"spacer": ["BBa_F0010"],\n"terminator": ["BBa_B0010"]}'); + editors.catEditor.setValue('{"promoter": ["BBa_R0040", "BBa_J23100"],\n "ribosomeBindingSite": ["BBa_B0032", "BBa_B0034"], \n"cds": ["BBa_E0040", "BBa_E1010"],\n"nonCodingRna": ["BBa_F0010"],\n"terminator": ["BBa_B0010"]}'); editors.designsEditor.setOption("theme", THEME); $('#demo-option').on('click', function() { - editors.specEditor.setValue('one-or-more(one-or-more(promoter then spacer)then cds then \n (zero-or-more \n (spacer or (one-or-more \n (spacer then promoter then spacer) then cds)) then \n (terminator or (terminator then spacer) or (spacer then terminator)))))') + editors.specEditor.setValue('one-or-more(one-or-more(promoter then nonCodingRna)then cds then \n (zero-or-more \n (nonCodingRna or (one-or-more \n (nonCodingRna then promoter then nonCodingRna) then cds)) then \n (terminator or (terminator then nonCodingRna) or (nonCodingRna then terminator)))))') }); - + $('#debug-option').on('click', function() { editors.specEditor.setValue('one-or-more (promoter or ribosomeBindingSite) then (zero-or-more cds) then terminator'); }); - + $("#knoxBtn").prop("disabled",true); + + $('#knoxBtn').on('click', function() { + $.post('http://localhost:8082/sendToKnox', { + 'designName': designName, + 'sbolDocs[]': JSON.stringify(sbolDocs)}) + .fail((response) => { + alert(response.responseText); + }); + }); + + $("#submitBtn").click(function(){ // Reset UI resetDiagram(); displayDesigns(editors, ''); - let designName = 'Constellation'; let maxCycles = 0; let numDesigns = 10; @@ -412,8 +424,14 @@ $(document).ready(function() { } else { displayDesigns(editors, JSON.stringify(data.designs, null, "\t")); } + sbolDocs = data.sbols; + $("#knoxBtn").prop("disabled",false); }).fail((response) => { alert(response.responseText); }); }); + + }); + + diff --git a/demos/static/sbol/CDS.svg b/demos/static/sbol/CDS.svg deleted file mode 100644 index 8317bd5..0000000 --- a/demos/static/sbol/CDS.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/demos/static/sbol/RNA_stability_element.svg b/demos/static/sbol/RNA_stability_element.svg deleted file mode 100644 index c7626db..0000000 --- a/demos/static/sbol/RNA_stability_element.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/demos/static/sbol/aptamer.svg b/demos/static/sbol/aptamer.svg new file mode 100644 index 0000000..972d32a --- /dev/null +++ b/demos/static/sbol/aptamer.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/demos/static/sbol/assemblyScar.svg b/demos/static/sbol/assemblyScar.svg new file mode 100644 index 0000000..dc487eb --- /dev/null +++ b/demos/static/sbol/assemblyScar.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/demos/static/sbol/bluntRestrictionSite.svg b/demos/static/sbol/bluntRestrictionSite.svg new file mode 100644 index 0000000..f9c7ad1 --- /dev/null +++ b/demos/static/sbol/bluntRestrictionSite.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/demos/static/sbol/blunt_end_restriction_enzyme_cleavage_site.svg b/demos/static/sbol/blunt_end_restriction_enzyme_cleavage_site.svg deleted file mode 100644 index 8e75d75..0000000 --- a/demos/static/sbol/blunt_end_restriction_enzyme_cleavage_site.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/demos/static/sbol/cds.svg b/demos/static/sbol/cds.svg new file mode 100644 index 0000000..306e154 --- /dev/null +++ b/demos/static/sbol/cds.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/demos/static/sbol/dnaStabilityElement.svg b/demos/static/sbol/dnaStabilityElement.svg new file mode 100644 index 0000000..0934c78 --- /dev/null +++ b/demos/static/sbol/dnaStabilityElement.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/demos/static/sbol/engineeredRegion.svg b/demos/static/sbol/engineeredRegion.svg new file mode 100644 index 0000000..a6a61bf --- /dev/null +++ b/demos/static/sbol/engineeredRegion.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/demos/static/sbol/user_defined.svg b/demos/static/sbol/fivePrimeOverhang.svg similarity index 86% rename from demos/static/sbol/user_defined.svg rename to demos/static/sbol/fivePrimeOverhang.svg index cdf0278..547809b 100644 --- a/demos/static/sbol/user_defined.svg +++ b/demos/static/sbol/fivePrimeOverhang.svg @@ -1,17 +1,18 @@ - - - - - - - - + + + + + + + + + diff --git a/demos/static/sbol/fivePrimeStickyRestrictionSite.svg b/demos/static/sbol/fivePrimeStickyRestrictionSite.svg new file mode 100644 index 0000000..0e593ae --- /dev/null +++ b/demos/static/sbol/fivePrimeStickyRestrictionSite.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/demos/static/sbol/five_prime_sticky_end_restriction_enzyme_cleavage_site.svg b/demos/static/sbol/five_prime_sticky_end_restriction_enzyme_cleavage_site.svg deleted file mode 100644 index 1de313e..0000000 --- a/demos/static/sbol/five_prime_sticky_end_restriction_enzyme_cleavage_site.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/demos/static/sbol/halfroundRectangle.svg b/demos/static/sbol/halfroundRectangle.svg new file mode 100644 index 0000000..3a3fef7 --- /dev/null +++ b/demos/static/sbol/halfroundRectangle.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/demos/static/sbol/insulator.svg b/demos/static/sbol/insulator.svg index f3d4669..22e940f 100644 --- a/demos/static/sbol/insulator.svg +++ b/demos/static/sbol/insulator.svg @@ -1 +1,17 @@ - \ No newline at end of file + + + + + + + + + diff --git a/demos/static/sbol/locationDna.svg b/demos/static/sbol/locationDna.svg new file mode 100644 index 0000000..951f7a0 --- /dev/null +++ b/demos/static/sbol/locationDna.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/demos/static/sbol/locationProtein.svg b/demos/static/sbol/locationProtein.svg new file mode 100644 index 0000000..30744d0 --- /dev/null +++ b/demos/static/sbol/locationProtein.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/demos/static/sbol/locationRna.svg b/demos/static/sbol/locationRna.svg new file mode 100644 index 0000000..69c4166 --- /dev/null +++ b/demos/static/sbol/locationRna.svg @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/demos/static/sbol/noGlyphAssigned.svg b/demos/static/sbol/noGlyphAssigned.svg new file mode 100644 index 0000000..dcff572 --- /dev/null +++ b/demos/static/sbol/noGlyphAssigned.svg @@ -0,0 +1,18 @@ + + + + + + + + [ ] + + diff --git a/demos/static/sbol/nonCodingRna.svg b/demos/static/sbol/nonCodingRna.svg new file mode 100644 index 0000000..e572b6a --- /dev/null +++ b/demos/static/sbol/nonCodingRna.svg @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/demos/static/sbol/omittedDetail.svg b/demos/static/sbol/omittedDetail.svg new file mode 100644 index 0000000..af3b80c --- /dev/null +++ b/demos/static/sbol/omittedDetail.svg @@ -0,0 +1,18 @@ + + + + + + + + ... + + diff --git a/demos/static/sbol/operator.svg b/demos/static/sbol/operator.svg index c1de322..058715d 100644 --- a/demos/static/sbol/operator.svg +++ b/demos/static/sbol/operator.svg @@ -1 +1,16 @@ - \ No newline at end of file + + + + + + + + diff --git a/demos/static/sbol/originOfReplication.svg b/demos/static/sbol/originOfReplication.svg new file mode 100644 index 0000000..d494341 --- /dev/null +++ b/demos/static/sbol/originOfReplication.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/demos/static/sbol/originOfTransfer.svg b/demos/static/sbol/originOfTransfer.svg new file mode 100644 index 0000000..b25a06d --- /dev/null +++ b/demos/static/sbol/originOfTransfer.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + diff --git a/demos/static/sbol/origin_of_replication.svg b/demos/static/sbol/origin_of_replication.svg deleted file mode 100644 index cfa420f..0000000 --- a/demos/static/sbol/origin_of_replication.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/demos/static/sbol/polyA.svg b/demos/static/sbol/polyA.svg new file mode 100644 index 0000000..da0a72e --- /dev/null +++ b/demos/static/sbol/polyA.svg @@ -0,0 +1,17 @@ + + + + + + + AAA + + diff --git a/demos/static/sbol/primerBindingSite.svg b/demos/static/sbol/primerBindingSite.svg new file mode 100644 index 0000000..1d73919 --- /dev/null +++ b/demos/static/sbol/primerBindingSite.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/demos/static/sbol/primer_binding_site.svg b/demos/static/sbol/primer_binding_site.svg deleted file mode 100644 index 84f514a..0000000 --- a/demos/static/sbol/primer_binding_site.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/demos/static/sbol/promoter.svg b/demos/static/sbol/promoter.svg index f452ef5..ab70826 100644 --- a/demos/static/sbol/promoter.svg +++ b/demos/static/sbol/promoter.svg @@ -1 +1,17 @@ - \ No newline at end of file + + + + + + + + + diff --git a/demos/static/sbol/proteaseSite.svg b/demos/static/sbol/proteaseSite.svg new file mode 100644 index 0000000..cd847f8 --- /dev/null +++ b/demos/static/sbol/proteaseSite.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + diff --git a/demos/static/sbol/protease_site.svg b/demos/static/sbol/protease_site.svg deleted file mode 100644 index 0c1d8f2..0000000 --- a/demos/static/sbol/protease_site.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/demos/static/sbol/proteinStabilityElement.svg b/demos/static/sbol/proteinStabilityElement.svg new file mode 100644 index 0000000..4218b26 --- /dev/null +++ b/demos/static/sbol/proteinStabilityElement.svg @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/demos/static/sbol/protein_stability_element.svg b/demos/static/sbol/protein_stability_element.svg deleted file mode 100644 index a4d383a..0000000 --- a/demos/static/sbol/protein_stability_element.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/demos/static/sbol/replacementGlyph.svg b/demos/static/sbol/replacementGlyph.svg new file mode 100644 index 0000000..3b43bd7 --- /dev/null +++ b/demos/static/sbol/replacementGlyph.svg @@ -0,0 +1,25 @@ + + + + + + + ? + diff --git a/demos/static/sbol/restrictionSite.svg b/demos/static/sbol/restrictionSite.svg new file mode 100644 index 0000000..14ac422 --- /dev/null +++ b/demos/static/sbol/restrictionSite.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/demos/static/sbol/restriction_enzyme_assembly_scar.svg b/demos/static/sbol/restriction_enzyme_assembly_scar.svg deleted file mode 100644 index acd5d8d..0000000 --- a/demos/static/sbol/restriction_enzyme_assembly_scar.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/demos/static/sbol/restriction_enzyme_five_prime_single_strand_overhang.svg b/demos/static/sbol/restriction_enzyme_five_prime_single_strand_overhang.svg deleted file mode 100644 index 141b795..0000000 --- a/demos/static/sbol/restriction_enzyme_five_prime_single_strand_overhang.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/demos/static/sbol/restriction_enzyme_recognition_site.svg b/demos/static/sbol/restriction_enzyme_recognition_site.svg deleted file mode 100644 index c8b9e85..0000000 --- a/demos/static/sbol/restriction_enzyme_recognition_site.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/demos/static/sbol/restriction_enzyme_three_prime_single_strand_overhang.svg b/demos/static/sbol/restriction_enzyme_three_prime_single_strand_overhang.svg deleted file mode 100644 index 7fb7bc8..0000000 --- a/demos/static/sbol/restriction_enzyme_three_prime_single_strand_overhang.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/demos/static/sbol/ribonucleaseSite.svg b/demos/static/sbol/ribonucleaseSite.svg new file mode 100644 index 0000000..56511ac --- /dev/null +++ b/demos/static/sbol/ribonucleaseSite.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + diff --git a/demos/static/sbol/ribonuclease_site.svg b/demos/static/sbol/ribonuclease_site.svg deleted file mode 100644 index 95eb33e..0000000 --- a/demos/static/sbol/ribonuclease_site.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/demos/static/sbol/ribosomeBindingSite.svg b/demos/static/sbol/ribosomeBindingSite.svg new file mode 100644 index 0000000..c35077e --- /dev/null +++ b/demos/static/sbol/ribosomeBindingSite.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/demos/static/sbol/ribosome_entry_site.svg b/demos/static/sbol/ribosome_entry_site.svg deleted file mode 100644 index 32622c0..0000000 --- a/demos/static/sbol/ribosome_entry_site.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/demos/static/sbol/ribozyme.svg b/demos/static/sbol/ribozyme.svg index c7626db..310f165 100644 --- a/demos/static/sbol/ribozyme.svg +++ b/demos/static/sbol/ribozyme.svg @@ -1 +1,18 @@ - \ No newline at end of file + + + + + + + + + + diff --git a/demos/static/sbol/rnaStabilityElement.svg b/demos/static/sbol/rnaStabilityElement.svg new file mode 100644 index 0000000..c632b2a --- /dev/null +++ b/demos/static/sbol/rnaStabilityElement.svg @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/demos/static/sbol/signature.svg b/demos/static/sbol/signature.svg index 34727fe..c8ea30c 100644 --- a/demos/static/sbol/signature.svg +++ b/demos/static/sbol/signature.svg @@ -1 +1,19 @@ - \ No newline at end of file + + + + + + + + + + + diff --git a/demos/static/sbol/specificRecombinationSite.svg b/demos/static/sbol/specificRecombinationSite.svg new file mode 100644 index 0000000..c7f8690 --- /dev/null +++ b/demos/static/sbol/specificRecombinationSite.svg @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/demos/static/sbol/terminator.svg b/demos/static/sbol/terminator.svg index 43068cc..8f249e1 100644 --- a/demos/static/sbol/terminator.svg +++ b/demos/static/sbol/terminator.svg @@ -1 +1,17 @@ - \ No newline at end of file + + + + + + + + + diff --git a/demos/static/sbol/threePrimeOverhang.svg b/demos/static/sbol/threePrimeOverhang.svg new file mode 100644 index 0000000..e859df9 --- /dev/null +++ b/demos/static/sbol/threePrimeOverhang.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/demos/static/sbol/threePrimeStickyEndRestrictionSite.svg b/demos/static/sbol/threePrimeStickyEndRestrictionSite.svg new file mode 100644 index 0000000..c2620e5 --- /dev/null +++ b/demos/static/sbol/threePrimeStickyEndRestrictionSite.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/demos/static/sbol/three_prime_sticky_end_restriction_enzyme_cleavage_site.svg b/demos/static/sbol/three_prime_sticky_end_restriction_enzyme_cleavage_site.svg deleted file mode 100644 index 848f2da..0000000 --- a/demos/static/sbol/three_prime_sticky_end_restriction_enzyme_cleavage_site.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/demos/static/testinput.txt b/demos/static/testinput.txt index bc60cdd..bc0a52e 100644 --- a/demos/static/testinput.txt +++ b/demos/static/testinput.txt @@ -1 +1 @@ -(blunt_end_restriction_enzyme_cleavage_site then CDS then five_prime_sticky_end_restriction_enzyme_cleavage_site then insulator then operator then origin_of_replication then primer_binding_site then promoter then protease_site then protein_stability_element then restriction_enzyme_assembly_scar then restriction_enzyme_five_prime_single_strand_overhang) or (restriction_enzyme_recognition_site then restriction_enzyme_three_prime_single_strand_overhang then ribonuclease_site then ribosome_entry_site then ribozyme then zero-or-more (RNA_stability_element) then signature then terminator then three_prime_sticky_end_restriction_enzyme_cleavage_site then example) \ No newline at end of file +aptamer then assemblyScar then bluntRestrictionSite then CDS then dnaStabilityElement then engineeredRegion then fivePrimeOverhang then fivePrimeStickyRestrictionSite then halfroundRectangle then insulator then locationDna then locationProtein then locationRna then noGlyphAssigned then nonCodingRna then omittedDetail then operator then originOfReplication then originOfTransfer then polyA then primerBindingSite then promoter then proteaseSite then proteinStabilityElement then replacementGlyph then restrictionSite then ribonucleaseSite then ribosomeBindingSite then ribozyme then rnaStabilityElement then signature then specificRecombinationSite then terminator then threePrimeOverhang then threePrimeStickyEndRestrictionSite diff --git a/lib/constellation.js b/lib/constellation.js index 052a995..90e73dd 100644 --- a/lib/constellation.js +++ b/lib/constellation.js @@ -4,6 +4,7 @@ if (typeof(window) === 'undefined') { graph = require('./graph'); designEnumeration = require('./designEnumeration'); imparse = require('imparse'); + sbol = require('./sbol'); } const GRAMMAR_DEF = [{'Seq':[{'Then':[['Exp'],'.',['Seq']]},{'Then':[['Exp'],'then',['Seq']]},{'':[['Exp']]}]},{'Exp':[{'Or':[['Term'],'or',['Exp']]},{'And':[['Term'],'and',['Exp']]},{'':[['Term']]}]},{'Term':[{'OneOrMore':['one-or-more',['Term']]},{'ZeroOrMore':['zero-or-more',['Term']]},{'ZeroOrMoreSBOL':['zero-or-more-sbol',['Term']]},{'':['{',['Seq'],'}']},{'':['(',['Seq'],')']},{'Atom':[{'RegExp':'([A-Za-z0-9]|-|_)+'}]}]}]; @@ -13,6 +14,7 @@ const GRAMMAR_DEF = [{'Seq':[{'Then':[['Exp'],'.',['Seq']]},{'Then':[['Exp'],'th /* * * * * * */ /** * Runs constellation + * @param designName Name of combinatorial design * @param langText Text with GOLDBAR specification input * @param categories Text with categories * @param numDesigns Maximum number of designs to output @@ -35,22 +37,33 @@ const constellation = function (designName, langText, categories, numDesigns, ma if (!langText) { throw new Error('No input received'); } + if (!designName) { + throw new Error('No design name is specified'); + } - let parsed, gra, designs; + let parsed, parsedSBOL, gra, graSBOL, designs, sbolDoc; try { parsed = parseGoldbar(langText); - parsedSBOL = parseGoldbar(langText.replace('zero-or-more', 'zero-or-more-sbol')); + //must use regex for pattern! If pattern is a string, only the first occurrence will be replaced + parsedSBOL = parseGoldbar(langText.replace(/zero-or-more/gi, 'zero-or-more-sbol')); categories = parseCategories(categories); } catch (error) { throw new Error('Parsing error!') } gra = graph(parsed, maxCycles); - graSBOL = graph(parsed, maxCycles).stateGraph; + graSBOL = graph(parsedSBOL, maxCycles).stateGraph; designs = designEnumeration(gra.paths, categories, numDesigns); - return {stateGraph: gra.stateGraph, sbolStateGraph: graSBOL, designs: designs, paths: gra.paths}; + try { + designName = String(designName).replace(/ /g, '_'); + sbolDoc = sbol(graSBOL, categories, designName); + } catch (error) { + console.log(error); + } + + return {stateGraph: gra.stateGraph, designs: designs, paths: gra.paths, sbols: [sbolDoc]}; //todo }; /** diff --git a/lib/designEnumeration.js b/lib/designEnumeration.js index 1342975..6de7d37 100644 --- a/lib/designEnumeration.js +++ b/lib/designEnumeration.js @@ -1,6 +1,7 @@ /*global Reservoir:true*/ if (typeof window === 'undefined') { Reservoir = require('reservoir'); + SBOLDocument = require('sboljs'); } /* * * * * * * * * * * * */ @@ -49,6 +50,9 @@ function generateDesigns(paths, categories) { for (let j = 0; j < path.length; j++) { const tempNode = path[j].text; + // if (!(tempNode in SBOLDocument.terms)) { + // throw new Error(`${tempNode} is not a valid SBOL part`); + // } if (!(tempNode in categories)) { throw new Error(`${tempNode} is not defined in categories`); } diff --git a/lib/graph.js b/lib/graph.js index c715c45..69318a0 100644 --- a/lib/graph.js +++ b/lib/graph.js @@ -465,13 +465,13 @@ function collapseEpsilons(stateGraph, epsilonMap) { epsilonMap[child].add(parentIds[0]); } } - parent.edges.push(child); + parent.edges.push(child); if (epsilon.operator !== undefined ) { const last = parent.operator.length - 1; // Do not add duplicate ORs for (var i = 0; i < epsilon.operator.length; i++) { if (parent.operator[last] !== OR || (epsilon.operator[0] !== OR)) { - parent.operator.push(epsilon.operator[i]); + parent.operator.push(epsilon.operator[i]); } } } @@ -515,6 +515,12 @@ graph.ATOM = ATOM; graph.ACCEPT = ACCEPT; graph.ROOT = ROOT; +graph.OR = OR; +graph.THEN = THEN; +graph.ONE_MORE = ONE_MORE; +graph.ZERO_MORE = ZERO_MORE; +graph.ZERO_SBOL = ZERO_SBOL; + if (typeof window === 'undefined') { module.exports = graph; } diff --git a/lib/sbol.js b/lib/sbol.js new file mode 100644 index 0000000..8785dea --- /dev/null +++ b/lib/sbol.js @@ -0,0 +1,519 @@ +if (typeof window === 'undefined') { + SBOLDocument = require('sboljs'); + graph = require('./graph'); +} + +let sequenceConstraintCount = 1; +let orRegionCount = 1; +let cycleRegionCount = 1; +let atomMap = {}; // {atomText: componentDefinition, variants[]} +let DESIGN_NAME = ''; + +const VERSION = '1'; +const DELIMITER = '/'; +const TEMPLATE = 'combinatorial_template'; +const COMBINATORIAL = '_combinatorial_derivation'; +const SEQUENCE_CONSTRAINT = '_sequence_constraint'; +const COMPONENT = '_component'; +const VARIABLE = '_variable'; +const ORREGION = 'or_unit'; +const ORSUBREGION = '_or_subunit'; +const CYCLEREGION = 'cyclical_unit'; + +const OPERATOR_URIS = { + [graph.ZERO_SBOL]: 'http://sbols.org/v2#zeroOrMore', + one: 'http://sbols.org/v2#one', + [graph.ONE_MORE]: 'http://sbols.org/v2#oneOrMore' +}; + +const SEQUENCE_CONSTRAINT_URIS = { + PRECEDE: 'http://sbols.org/v2#precedes', + SAMEORIENTATION: 'http://sbols.org/v2#sameOrientationAs', + OPPOSITEORIENTATION: 'http://sbols.org/v2#oppositeOrientationAs', + DIFFERENT: 'http://sbols.org/v2#differentFrom' +}; + + +/**************** + * HELPERS + ****************/ +function getRootId(stateGraph){ + for (let id in stateGraph) { + if (stateGraph[id].type === graph.ROOT){ + return id; + } + } +} + +/** + * Collapses the stack when there is only one atom inside a MORE + * @param stack + */ +function collapseStack(stack){ + for(let i=0; i 2){ + for(let i=0; i 0){ + // if there's already a template on the stack, then add component to the template + const lastTemplate = stacks.templates[stacks.templates.length-1].template; + const component = makeComponent(doc, componentDefinition, lastTemplate.persistentIdentity); + lastTemplate.addComponent(component); + stacks.variantComponents.push(createVariantComponentObj(operator, component, variantDerivations, variants)); + }else{ + // else, this is a new componentDef for the root + stacks.componentDefs.push(createComponentDefObj(operator, componentDefinition, variantDerivations, variants)); + } +} + +function addComponentsAndRestraintsToTemplate(doc, templateCD, stack, cv){ + if (!cv){ + cv = makeCombinatorialDerivation(doc, templateCD); + } + let subject; + let object; + + for(let stackObj of stack){ + let component = stackObj.component; + if(!component){ + component = makeComponent(doc, stackObj.componentDef, templateCD.persistentIdentity); + templateCD.addComponent(component); + } + + const variableComponent = makeVariableComponent(doc, cv.persistentIdentity, component, stackObj.operator, + stackObj.variantDVs, stackObj.variants); + cv.addVariableComponent(variableComponent); + + object = component; + if (subject && object){ + const sequenceConstraint = makeSequenceConstraint(doc, templateCD, subject, object); + templateCD.addSequenceConstraint(sequenceConstraint); + } + subject = object; + } + return cv; +} + +function createVariantComponentObj(operator, component, variantDVs, variants){ + return { + operator: operator, + component: component, + variantDVs: variantDVs, + variants: variants + } +} + +function createComponentDefObj(operator, componentDef, variantDVs, variants){ + return { + operator: operator, + componentDef: componentDef, + variantDVs: variantDVs, + variants: variants + } +} + +function createTemplateObj(operator, template, combDV, id){ + return { + operator: operator, + template: template, //component definition + combDV: combDV, //combinatorial derivation + id: id + } +} + +/**************** + * SBOL HELPERS + ****************/ +function makeCombinatorialDerivation(doc, templateComponentDefinition){ + const displayId = templateComponentDefinition.displayId + COMBINATORIAL; + const persistentId = templateComponentDefinition.persistentIdentity + DELIMITER + displayId; + const combinatorialDerivation = doc.combinatorialDerivation(persistentId + DELIMITER + VERSION); + combinatorialDerivation.template = templateComponentDefinition; + combinatorialDerivation.displayId = displayId; + combinatorialDerivation.persistentIdentity = persistentId; + combinatorialDerivation.version = VERSION; + + return combinatorialDerivation; +} + +/* +temporary function so that atoms/variants are consistent +TODO remove after we can fetch from SBH +*/ +function makeAtomComponentDefinition(doc, name){ + const prefix = 'http://constellationcad.org/generic_definition/'; + const persistentId = prefix + name; + const componentDefinition = doc.componentDefinition(persistentId + DELIMITER + VERSION); + componentDefinition.displayId = name; + componentDefinition.persistentIdentity = persistentId; + componentDefinition.version = VERSION; + const role = SBOLDocument.terms[name]; + if (role){ + componentDefinition.addRole(role); + } + componentDefinition.addType(SBOLDocument.terms.engineeredRegion); + + //add to atomMap + atomMap[name] = {}; + atomMap[name].componentDefinition = componentDefinition; + return componentDefinition; +} + +function makeComponentDefinition(doc, name, makeTemplate, makeRoot){ + if(name in atomMap && !makeTemplate && !makeRoot){ + return atomMap[name].componentDefinition; + } + + const PREFIX = 'http://constellationcad.org' + DELIMITER + DESIGN_NAME + DELIMITER; + const ROOT_PREFIX = PREFIX + 'root_template' + DELIMITER; + const TEMPLATE_PREFIX = PREFIX + TEMPLATE + DELIMITER; + + let displayId = name; + const prefix = makeRoot? ROOT_PREFIX: makeTemplate? TEMPLATE_PREFIX : PREFIX; + const persistentId = prefix + displayId; + const componentDefinition = doc.componentDefinition(persistentId + DELIMITER + VERSION); + componentDefinition.displayId = displayId; + componentDefinition.persistentIdentity = persistentId; + componentDefinition.version = VERSION; + const role = SBOLDocument.terms[name]; + if (role){ + componentDefinition.addRole(role); + } + componentDefinition.addType(SBOLDocument.terms.engineeredRegion); + + //add to atomMap + if(!makeTemplate && !makeRoot){ + atomMap[name] = {}; + atomMap[name].componentDefinition = componentDefinition; + } + return componentDefinition; +} + +function makeComponent(doc, componentDefinition, templateId){ + const displayId = componentDefinition.displayId + COMPONENT; + const persistentId = templateId + DELIMITER + displayId; + const atomComponent = doc.component(persistentId + DELIMITER + VERSION); + atomComponent.displayId = displayId; + atomComponent.persistentIdentity = persistentId; + atomComponent.version = VERSION; + atomComponent.definition = componentDefinition; + return atomComponent; +} + +function makeVariableComponent(doc, templateId, component, operator, variantDerivations, variants){ + let displayId = component.displayId + VARIABLE; + const persistentId = templateId + DELIMITER + displayId; + const variableComponent = doc.variableComponent(persistentId + DELIMITER + VERSION); + variableComponent.displayId = displayId; + variableComponent.persistentIdentity = persistentId; + variableComponent.version = VERSION; + variableComponent.variable = component; + variableComponent.operator = OPERATOR_URIS[operator]; + + if(variants){ + variants.forEach(function(vt) { + variableComponent.addVariant(atomMap[vt].componentDefinition); + }); + } + + if(variantDerivations){ + variantDerivations.forEach(function(vd) { + variableComponent.addVariantDerivation(vd); + }); + } + + return variableComponent; +} + +function makeSequenceConstraint(doc, templateCD, subject, object){ + //subject precedes object + let displayId = templateCD.displayId + SEQUENCE_CONSTRAINT + sequenceConstraintCount; + const persistentId = templateCD.persistentIdentity + DELIMITER + displayId; + const sequenceConstraint = doc.sequenceConstraint(persistentId + DELIMITER + VERSION); + sequenceConstraint.displayId = displayId; + sequenceConstraint.persistentIdentity = persistentId; + sequenceConstraint.version = VERSION; + sequenceConstraint.subject = subject; + sequenceConstraint.object = object; + sequenceConstraint.restriction = SEQUENCE_CONSTRAINT_URIS.PRECEDE; + sequenceConstraintCount += 1; + + return sequenceConstraint +} + + + + +/** + * breadth width search of the state graph + * to create a structure that is better for SBOL generation + * @param stateGraph constellation graph for visualization + * @param stateStack structure that SBOL is generated from + * @param id the id to start the traverse from + */ +function makeStackFromStateGraph(stateGraph, stateStack, id){ + let endIds = []; //prevent redundant ends + let queue = []; + queue.push(id); + + while (queue.length !== 0){ + let id = queue.shift(); + + if (stateGraph[id].visited){ + if (stateGraph[id].type !== graph.ATOM + && !endIds.includes(id)){ + stateStack.push({end: id}); + endIds.push(id); + } + continue; + } + + if (stateGraph[id].type === graph.ACCEPT){ + continue; + } + if (stateGraph[id].type === graph.ATOM){ + stateStack.push({atom: stateGraph[id].text}); + } + + let lastEdge = handleOperations(stateGraph, stateStack, id, endIds); + stateGraph[id].visited = true; + if (lastEdge){ //from OR + id = lastEdge; + handleOperations(stateGraph, stateStack, id, endIds); + } + queue.push(...stateGraph[id].edges); + } +} + +function handleOperations(stateGraph, stack, id, endIds){ + let lastEdge; + for (let operation of stateGraph[id].operator){ + if (operation === graph.OR){ + lastEdge = traverseOr(stateGraph, stack, id, endIds); + } else { + stack.push({[operation]: id}); + } + } + return lastEdge; +} + +/** + * The OR operator must be done depth first + **/ +function traverseOr(stateGraph, stateStack, id, endIds){ + let orStack = []; + let lastEdge; + stateStack.push({[graph.OR]: orStack}); + stateGraph[id].visited = true; + stateGraph[id].edges.forEach(function (edge){ + let orSubStack = []; + lastEdge = traverseOrEdges(stateGraph, stateStack, orSubStack, edge, endIds); + orStack.push(orSubStack); + }); + return lastEdge; +} + +function traverseOrEdges(stateGraph, stack, subStack, id, endIds, moreStartId){ + + if (stateGraph[id].visited && endIds.includes(id)){ + return null; + } + + if (stateGraph[id].visited){ + // if the MORE started within the OR, then end it on this stack + if (id === moreStartId){ + subStack.push({end: id}); + endIds.push(id); + } // else end it on the original stack + else if (stateGraph[id].operator.includes(graph.ONE_MORE) + || stateGraph[id].operator.includes(graph.ZERO_SBOL)){ + stack.push({end: id}); + endIds.push(id); + } + return null; + } + + if (stateGraph[id].type === graph.ACCEPT){ + return null; + } + if (stateGraph[id].type === graph.ATOM){ + subStack.push({atom: stateGraph[id].text}); + } + + if (stateGraph[id].operator.length === 1 && + (stateGraph[id].operator[0] === graph.ONE_MORE || + stateGraph[id].operator[0] === graph.ZERO_SBOL)){ + moreStartId = id; + } + + let lastEdge; + for (let operation of stateGraph[id].operator){ + if (stateGraph[id].type === graph.EPSILON + && operation === graph.THEN){ + stateGraph[id].visited = false; //reset + return id; //a 'then' that's not on the atom is not part of the OR + } + if (operation === graph.OR){ + lastEdge = traverseOr(stateGraph, subStack, id, endIds); + } else { + subStack.push({[operation]: id}); + } + } + + stateGraph[id].visited = true; + if (lastEdge){ //from OR + id = lastEdge; + handleOperations(stateGraph, subStack, id, endIds); + } + for (let edge of stateGraph[id].edges){ + lastEdge = traverseOrEdges(stateGraph, stack, subStack, edge, endIds, moreStartId); + } + return lastEdge; //the last node of the OR chain +} + +/** + * Traverse the stack to make the SBOL + * @param doc SBOL doc + * @param stateStack custom stack generated from Constellation state graph + * @param componentDefStack Component Definitions returned to one level above + */ +function makeSBOLFromStack(doc, stateStack, componentDefStack){ + let stacks = {}; + stacks.templates = []; + stacks.variantComponents = []; + stacks.componentDefs = componentDefStack; + collapseStack(stateStack); + // console.log('collapsed:'); + // console.log(JSON.stringify(stateStack, null, 2)); + + stateStack.forEach(function(stackObj){ + const key = Object.keys(stackObj)[0]; + switch (key) { + case graph.ATOM: + addToStacks(doc, stacks, stackObj[key], 'one', null, null); + break; + case graph.OR: + let orIdentity = ORREGION + orRegionCount; + orRegionCount += 1; + let variantDerivations = []; + let orVariants = []; + addToStacks(doc, stacks, orIdentity, 'one', variantDerivations, orVariants); + + let orSubRegionCount = 1; + for (let orRegion of stackObj[key]){ + let orStack = []; + makeSBOLFromStack(doc, orRegion, orStack); + if (orStack.length === 1 && orStack[0].operator === 'one'){ + orVariants.push(...orStack[0].variants); + } else { + let orSubIdentity = orIdentity + ORSUBREGION + orSubRegionCount; + orSubRegionCount += 1; + const orTemplate = makeComponentDefinition(doc, orSubIdentity, true); + const cv = addComponentsAndRestraintsToTemplate(doc, orTemplate, orStack); + variantDerivations.push(cv); + } + } + break; + case graph.ONE_MORE: //fall through + case graph.ZERO_SBOL: + // only one atom within the -or-more operator + if (Array.isArray(stackObj[key])){ + addToStacks(doc, stacks, stackObj[key][0], key, null, null); + } else{ + let identity = CYCLEREGION + cycleRegionCount; + cycleRegionCount += 1; + const templateCD = makeComponentDefinition(doc, identity, true); + const cv = makeCombinatorialDerivation(doc, templateCD); + addToStacks(doc, stacks, identity, key, [cv], null); + stacks.templates.push(createTemplateObj(key, templateCD, cv, stackObj[key])); + } + break; + case 'end': + // remove the last template + const index = stacks.templates.indexOf(template => template.id === stackObj[key]); + const templateObj = stacks.templates.splice(index, 1)[0]; + const cv = templateObj.combDV; + + // get length of components under the CD and pop + // the same number from the temp VariantComponent stack + const lengthOfComponents = templateObj.template._components.length; + let componentsStack = stacks.variantComponents.splice(stacks.variantComponents.length-lengthOfComponents, lengthOfComponents); + addComponentsAndRestraintsToTemplate(doc, templateObj.template, componentsStack, cv); + break; + } + }); +} + + +function generateCombinatorialSBOL(stateGraph, categories, designName){ + const doc = new SBOLDocument(); + DESIGN_NAME = designName; + + // traverse stateGraph and mark all as not visited + //create ComponentDefinition for every atom and add to atomMap + Object.keys(stateGraph).forEach(function(id){ + stateGraph[id].visited = false; + let atomType = stateGraph[id].type; + let atomText = stateGraph[id].text; + if (atomType === graph.ATOM && !(atomText in atomMap)){ + makeAtomComponentDefinition(doc, atomText); + categories[atomText].forEach(function(variant){ + makeAtomComponentDefinition(doc, variant); + if (!atomMap[atomText].variants){ + atomMap[atomText].variants = []; + } + atomMap[atomText].variants.push(variant); + }); + } + }); + + //create a stateStack from the stateGraph + const rootId = getRootId(stateGraph); + let stateStack = []; + makeStackFromStateGraph(stateGraph, stateStack, rootId); + //console.log(JSON.stringify(stateStack, null, 2)); + + //use stateStack to generate SBOL + let componentDefStack = []; + makeSBOLFromStack(doc, stateStack, componentDefStack); + const rootTemplate = makeComponentDefinition(doc, designName, false, true); + addComponentsAndRestraintsToTemplate(doc, rootTemplate, componentDefStack); + + //clean up + sequenceConstraintCount = 1; + orRegionCount = 1; + cycleRegionCount = 1; + for (let atom in atomMap) delete atomMap[atom]; + + return doc.serializeXML(); +} + +let sbol = generateCombinatorialSBOL; + +if (typeof window === 'undefined') { + module.exports = sbol; +} diff --git a/output.txt b/output.txt new file mode 100644 index 0000000..70b3836 --- /dev/null +++ b/output.txt @@ -0,0 +1,130 @@ + +> constellation-js@1.0.0 test /Users/lucyqin/Documents/hicsail/constellation-js +> nyc mocha + + + + Basic operators + ✓ atom + ✓ or + ✓ then + ✓ then as dot + ✓ one-or-more + ✓ zero-or-more + + Chained expressions + ✓ Multiple then + ✓ Multiple or + ✓ Multiple one-or-more + ✓ Multiple zero-or-more + ✓ Mixing functions + ✓ Then downstream from cycle + + Cycles + ✓ Atom + ✓ Linear operators + ✓ one-or-more + ✓ zero-or-more + ✓ Multiple one-or-more + ✓ Multiple zero-or-more + ✓ Then downstream from cycle + + Sanitise specification input + ✓ Atom not in categories + ✓ Mismatched brackets + ✓ Empty specification + Invalid characters + ✓ Tabs used should not throw errors + ✓ _ + + Sanitise category input + ✓ Empty categories + ✓ Handle defined but empty category + ✓ Mismatched brackets + Invalid characters + ✓ Whitespace should not be included in designs + ✓ Other symbols should be parsed into category + + Design enumeration + ✓ Enumerate designs for one atom + ✓ Handle defined but empty category + ✓ Handle empty categories + ✓ Handle undefined atom + ✓ Enumerate all duplicates in category + Number of designs chosen + ✓ Select 1 of 2 designs + ✓ Select 0 designs + + Cartesian product tests + ✓ Empty setA + ✓ Empty setB + ✓ Product test + + SBOL Generation: basic operators + + + + +rbs +1 + + + + +a1 +1 + + + + +a2 +1 + + + + +design +1 + + + + +rbs_component +1 + + + + + + + +design_combinatorial_derivation +1 + + + + +rbs_component_variable +1 + + + + + + + + + ✓ atom + + + 40 passing (111ms) + +----------------------|----------|----------|----------|----------|-------------------| +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | +----------------------|----------|----------|----------|----------|-------------------| +All files | 90.69 | 80.08 | 88.14 | 90.82 | | + constellation.js | 84.62 | 52.94 | 100 | 84.62 | 26,29,32,35,41,63 | + designEnumeration.js | 94.44 | 82.14 | 100 | 94.44 | 19,25,45 | + graph.js | 96.26 | 87.5 | 90 | 96.26 |... 38,539,540,542 | + sbol.js | 87.03 | 79.03 | 82.14 | 87.26 |... 48,449,450,453 | +----------------------|----------|----------|----------|----------|-------------------| diff --git a/package-lock.json b/package-lock.json index 7867897..8e973be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "constellation-js", - "version": "0.1.0", + "version": "1.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -20,10 +20,10 @@ "dev": true, "requires": { "@babel/types": "7.0.0-beta.51", - "jsesc": "^2.5.1", - "lodash": "^4.17.5", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "jsesc": "2.5.1", + "lodash": "4.17.10", + "source-map": "0.5.7", + "trim-right": "1.0.1" } }, "@babel/helper-function-name": { @@ -61,9 +61,9 @@ "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=", "dev": true, "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" + "chalk": "2.4.1", + "esutils": "2.0.2", + "js-tokens": "3.0.2" } }, "@babel/parser": { @@ -81,7 +81,7 @@ "@babel/code-frame": "7.0.0-beta.51", "@babel/parser": "7.0.0-beta.51", "@babel/types": "7.0.0-beta.51", - "lodash": "^4.17.5" + "lodash": "4.17.10" } }, "@babel/traverse": { @@ -96,10 +96,10 @@ "@babel/helper-split-export-declaration": "7.0.0-beta.51", "@babel/parser": "7.0.0-beta.51", "@babel/types": "7.0.0-beta.51", - "debug": "^3.1.0", - "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.17.5" + "debug": "3.1.0", + "globals": "11.7.0", + "invariant": "2.2.4", + "lodash": "4.17.10" }, "dependencies": { "debug": { @@ -119,9 +119,9 @@ "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.5", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "2.0.0" } }, "accepts": { @@ -129,20 +129,20 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "~2.1.18", + "mime-types": "2.1.18", "negotiator": "0.6.1" } }, "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz", + "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==", "dev": true, "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" } }, "ansi-styles": { @@ -151,7 +151,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.2" } }, "argparse": { @@ -160,7 +160,7 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "sprintf-js": "1.0.3" } }, "array-flatten": { @@ -169,10 +169,13 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } }, "assert-plus": { "version": "1.0.0", @@ -189,8 +192,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "aws-sign2": { "version": "0.7.0", @@ -199,9 +201,9 @@ "dev": true }, "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, "balanced-match": { @@ -210,13 +212,12 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, - "optional": true, "requires": { - "tweetnacl": "^0.14.3" + "tweetnacl": "0.14.5" } }, "body-parser": { @@ -226,15 +227,15 @@ "dev": true, "requires": { "bytes": "3.0.0", - "content-type": "~1.0.4", + "content-type": "1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", + "depd": "1.1.2", + "http-errors": "1.6.3", "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", + "on-finished": "2.3.0", "qs": "6.5.2", "raw-body": "2.3.3", - "type-is": "~1.6.16" + "type-is": "1.6.16" }, "dependencies": { "depd": { @@ -249,10 +250,10 @@ "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, "requires": { - "depd": "~1.1.2", + "depd": "1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "statuses": "1.5.0" } }, "mime-db": { @@ -267,7 +268,7 @@ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "dev": true, "requires": { - "mime-db": "~1.33.0" + "mime-db": "1.33.0" } }, "qs": { @@ -289,7 +290,7 @@ "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "~2.1.18" + "mime-types": "2.1.18" } } } @@ -299,7 +300,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -325,12 +326,12 @@ "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", "dev": true, "requires": { - "assertion-error": "^1.0.1", - "check-error": "^1.0.1", - "deep-eql": "^3.0.0", - "get-func-name": "^2.0.0", - "pathval": "^1.0.0", - "type-detect": "^4.0.0" + "assertion-error": "1.1.0", + "check-error": "1.0.2", + "deep-eql": "3.0.1", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.8" } }, "chalk": { @@ -339,9 +340,9 @@ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" }, "dependencies": { "has-flag": { @@ -356,7 +357,7 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -367,12 +368,6 @@ "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", "dev": true }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, "color-convert": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", @@ -389,12 +384,11 @@ "dev": true }, "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "dev": true, + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "commander": { @@ -439,11 +433,11 @@ "integrity": "sha512-FAzXwiDOYLGDWH+zgoIA+8GbWv50hlx+kpEJyvzLKOdnIBv9uWoVl4DhqGgyUHpiRjAlF8KYZSipWXYtllWH6Q==", "dev": true, "requires": { - "js-yaml": "^3.6.1", - "lcov-parse": "^0.0.10", - "log-driver": "^1.2.5", - "minimist": "^1.2.0", - "request": "^2.79.0" + "js-yaml": "3.12.0", + "lcov-parse": "0.0.10", + "log-driver": "1.2.7", + "minimist": "1.2.0", + "request": "2.88.0" } }, "d3-collection": { @@ -461,10 +455,10 @@ "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.1.0.tgz", "integrity": "sha512-2HVQz3/VCQs0QeRNZTYb7GxoUCeb6bOzMp/cGcLa87awY9ZsPvXOGeZm0iaGBjXic6I1ysKwMn+g+5jSAdzwcg==", "requires": { - "d3-collection": "1", - "d3-dispatch": "1", - "d3-quadtree": "1", - "d3-timer": "1" + "d3-collection": "1.0.4", + "d3-dispatch": "1.0.3", + "d3-quadtree": "1.0.3", + "d3-timer": "1.0.7" } }, "d3-quadtree": { @@ -483,7 +477,7 @@ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "debug": { @@ -500,14 +494,13 @@ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { - "type-detect": "^4.0.0" + "type-detect": "4.0.8" } }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "depd": { "version": "1.1.2", @@ -525,13 +518,13 @@ "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==" }, "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, - "optional": true, "requires": { - "jsbn": "~0.1.0" + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" } }, "ee-first": { @@ -576,36 +569,36 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", "requires": { - "accepts": "~1.3.5", + "accepts": "1.3.5", "array-flatten": "1.1.1", "body-parser": "1.18.2", "content-disposition": "0.5.2", - "content-type": "~1.0.4", + "content-type": "1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "finalhandler": "1.1.1", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.3", + "proxy-addr": "2.0.3", "qs": "6.5.1", - "range-parser": "~1.2.0", + "range-parser": "1.2.0", "safe-buffer": "5.1.1", "send": "0.16.2", "serve-static": "1.13.2", "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", + "statuses": "1.4.0", + "type-is": "1.6.16", "utils-merge": "1.0.1", - "vary": "~1.1.2" + "vary": "1.1.2" }, "dependencies": { "body-parser": { @@ -614,15 +607,15 @@ "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", "requires": { "bytes": "3.0.0", - "content-type": "~1.0.4", + "content-type": "1.0.4", "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", + "depd": "1.1.2", + "http-errors": "1.6.3", "iconv-lite": "0.4.19", - "on-finished": "~2.3.0", + "on-finished": "2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "~1.6.15" + "type-is": "1.6.16" } }, "iconv-lite": { @@ -659,7 +652,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" + "statuses": "1.4.0" } }, "setprototypeof": { @@ -677,9 +670,9 @@ } }, "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, "extsprintf": { @@ -689,9 +682,9 @@ "dev": true }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, "fast-json-stable-stringify": { @@ -706,12 +699,12 @@ "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.4.0", + "unpipe": "1.0.0" } }, "forever-agent": { @@ -721,14 +714,13 @@ "dev": true }, "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "dev": true, + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" + "asynckit": "0.4.0", + "combined-stream": "1.0.7", + "mime-types": "2.1.18" } }, "forwarded": { @@ -758,7 +750,7 @@ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "glob": { @@ -766,12 +758,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "globals": { @@ -792,13 +784,13 @@ "dev": true }, "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "dev": true, "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" + "ajv": "6.7.0", + "har-schema": "2.0.0" } }, "has-flag": { @@ -816,10 +808,10 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "depd": "~1.1.2", + "depd": "1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "statuses": "1.4.0" } }, "http-signature": { @@ -828,9 +820,9 @@ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.16.0" } }, "iconv-lite": { @@ -839,7 +831,7 @@ "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "imparse": { @@ -852,8 +844,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -867,7 +859,7 @@ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.3.1" } }, "ipaddr.js": { @@ -904,8 +896,8 @@ "@babel/template": "7.0.0-beta.51", "@babel/traverse": "7.0.0-beta.51", "@babel/types": "7.0.0-beta.51", - "istanbul-lib-coverage": "^2.0.0", - "semver": "^5.5.0" + "istanbul-lib-coverage": "2.0.0", + "semver": "5.5.0" } }, "js-tokens": { @@ -920,16 +912,15 @@ "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.10", + "esprima": "4.0.0" } }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true + "dev": true }, "jsesc": { "version": "2.5.1", @@ -944,9 +935,9 @@ "dev": true }, "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "json-stringify-safe": { @@ -991,7 +982,7 @@ "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { - "js-tokens": "^3.0.0" + "js-tokens": "3.0.2" } }, "media-typer": { @@ -1024,7 +1015,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "~1.33.0" + "mime-db": "1.33.0" } }, "minimatch": { @@ -1032,7 +1023,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -1105,33 +1096,33 @@ "integrity": "sha1-ikpO1pCWbBHsWH/4fuoMEsl0upk=", "dev": true, "requires": { - "archy": "^1.0.0", - "arrify": "^1.0.1", - "caching-transform": "^1.0.0", - "convert-source-map": "^1.5.1", - "debug-log": "^1.0.1", - "default-require-extensions": "^1.0.0", - "find-cache-dir": "^0.1.1", - "find-up": "^2.1.0", - "foreground-child": "^1.5.3", - "glob": "^7.0.6", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-hook": "^1.1.0", - "istanbul-lib-instrument": "^2.1.0", - "istanbul-lib-report": "^1.1.3", - "istanbul-lib-source-maps": "^1.2.5", - "istanbul-reports": "^1.4.1", - "md5-hex": "^1.2.0", - "merge-source-map": "^1.1.0", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.0", - "resolve-from": "^2.0.0", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.1", - "spawn-wrap": "^1.4.2", - "test-exclude": "^4.2.0", + "archy": "1.0.0", + "arrify": "1.0.1", + "caching-transform": "1.0.1", + "convert-source-map": "1.5.1", + "debug-log": "1.0.1", + "default-require-extensions": "1.0.0", + "find-cache-dir": "0.1.1", + "find-up": "2.1.0", + "foreground-child": "1.5.6", + "glob": "7.1.2", + "istanbul-lib-coverage": "1.2.0", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "2.3.0", + "istanbul-lib-report": "1.1.3", + "istanbul-lib-source-maps": "1.2.5", + "istanbul-reports": "1.4.1", + "md5-hex": "1.3.0", + "merge-source-map": "1.1.0", + "micromatch": "3.1.10", + "mkdirp": "0.5.1", + "resolve-from": "2.0.0", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "spawn-wrap": "1.4.2", + "test-exclude": "4.2.1", "yargs": "11.1.0", - "yargs-parser": "^8.0.0" + "yargs-parser": "8.1.0" }, "dependencies": { "align-text": { @@ -1139,9 +1130,9 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" } }, "amdefine": { @@ -1159,7 +1150,7 @@ "bundled": true, "dev": true, "requires": { - "default-require-extensions": "^1.0.0" + "default-require-extensions": "1.0.0" } }, "archy": { @@ -1217,13 +1208,13 @@ "bundled": true, "dev": true, "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" }, "dependencies": { "define-property": { @@ -1231,7 +1222,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "is-accessor-descriptor": { @@ -1239,7 +1230,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -1247,7 +1238,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -1255,9 +1246,9 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "kind-of": { @@ -1272,7 +1263,7 @@ "bundled": true, "dev": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -1281,16 +1272,16 @@ "bundled": true, "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -1298,7 +1289,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -1313,15 +1304,15 @@ "bundled": true, "dev": true, "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" } }, "caching-transform": { @@ -1329,9 +1320,9 @@ "bundled": true, "dev": true, "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" } }, "camelcase": { @@ -1346,8 +1337,8 @@ "dev": true, "optional": true, "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" + "align-text": "0.1.4", + "lazy-cache": "1.0.4" } }, "class-utils": { @@ -1355,10 +1346,10 @@ "bundled": true, "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" }, "dependencies": { "define-property": { @@ -1366,7 +1357,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } @@ -1377,8 +1368,8 @@ "dev": true, "optional": true, "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", + "center-align": "0.1.3", + "right-align": "0.1.3", "wordwrap": "0.0.2" }, "dependencies": { @@ -1400,8 +1391,8 @@ "bundled": true, "dev": true, "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "map-visit": "1.0.0", + "object-visit": "1.0.1" } }, "commondir": { @@ -1434,8 +1425,8 @@ "bundled": true, "dev": true, "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" + "lru-cache": "4.1.3", + "which": "1.3.1" } }, "debug": { @@ -1466,7 +1457,7 @@ "bundled": true, "dev": true, "requires": { - "strip-bom": "^2.0.0" + "strip-bom": "2.0.0" } }, "define-property": { @@ -1474,8 +1465,8 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "is-descriptor": "1.0.2", + "isobject": "3.0.1" }, "dependencies": { "is-accessor-descriptor": { @@ -1483,7 +1474,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -1491,7 +1482,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -1499,9 +1490,9 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "kind-of": { @@ -1516,7 +1507,7 @@ "bundled": true, "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "is-arrayish": "0.2.1" } }, "execa": { @@ -1524,13 +1515,13 @@ "bundled": true, "dev": true, "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" }, "dependencies": { "cross-spawn": { @@ -1538,9 +1529,9 @@ "bundled": true, "dev": true, "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "lru-cache": "4.1.3", + "shebang-command": "1.2.0", + "which": "1.3.1" } } } @@ -1550,13 +1541,13 @@ "bundled": true, "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "debug": { @@ -1572,7 +1563,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -1580,7 +1571,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -1590,8 +1581,8 @@ "bundled": true, "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -1599,7 +1590,7 @@ "bundled": true, "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -1609,14 +1600,14 @@ "bundled": true, "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -1624,7 +1615,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -1632,7 +1623,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -1640,7 +1631,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -1648,7 +1639,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -1656,9 +1647,9 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "kind-of": { @@ -1673,10 +1664,10 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -1684,7 +1675,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -1694,9 +1685,9 @@ "bundled": true, "dev": true, "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" } }, "find-up": { @@ -1704,7 +1695,7 @@ "bundled": true, "dev": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "2.0.0" } }, "for-in": { @@ -1717,8 +1708,8 @@ "bundled": true, "dev": true, "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" } }, "fragment-cache": { @@ -1726,7 +1717,7 @@ "bundled": true, "dev": true, "requires": { - "map-cache": "^0.2.2" + "map-cache": "0.2.2" } }, "fs.realpath": { @@ -1754,12 +1745,12 @@ "bundled": true, "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "graceful-fs": { @@ -1772,10 +1763,10 @@ "bundled": true, "dev": true, "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" }, "dependencies": { "source-map": { @@ -1783,7 +1774,7 @@ "bundled": true, "dev": true, "requires": { - "amdefine": ">=0.0.4" + "amdefine": "1.0.1" } } } @@ -1793,9 +1784,9 @@ "bundled": true, "dev": true, "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" } }, "has-values": { @@ -1803,8 +1794,8 @@ "bundled": true, "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "3.0.0", + "kind-of": "4.0.0" }, "dependencies": { "kind-of": { @@ -1812,7 +1803,7 @@ "bundled": true, "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -1832,8 +1823,8 @@ "bundled": true, "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -1851,7 +1842,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-arrayish": { @@ -1869,7 +1860,7 @@ "bundled": true, "dev": true, "requires": { - "builtin-modules": "^1.0.0" + "builtin-modules": "1.1.1" } }, "is-data-descriptor": { @@ -1877,7 +1868,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-descriptor": { @@ -1885,9 +1876,9 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { @@ -1912,7 +1903,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-odd": { @@ -1920,7 +1911,7 @@ "bundled": true, "dev": true, "requires": { - "is-number": "^4.0.0" + "is-number": "4.0.0" }, "dependencies": { "is-number": { @@ -1935,7 +1926,7 @@ "bundled": true, "dev": true, "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" } }, "is-stream": { @@ -1978,7 +1969,7 @@ "bundled": true, "dev": true, "requires": { - "append-transform": "^0.4.0" + "append-transform": "0.4.0" } }, "istanbul-lib-report": { @@ -1986,10 +1977,10 @@ "bundled": true, "dev": true, "requires": { - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" }, "dependencies": { "has-flag": { @@ -2002,7 +1993,7 @@ "bundled": true, "dev": true, "requires": { - "has-flag": "^1.0.0" + "has-flag": "1.0.0" } } } @@ -2012,11 +2003,11 @@ "bundled": true, "dev": true, "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" + "debug": "3.1.0", + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" } }, "istanbul-reports": { @@ -2024,7 +2015,7 @@ "bundled": true, "dev": true, "requires": { - "handlebars": "^4.0.3" + "handlebars": "4.0.11" } }, "kind-of": { @@ -2032,7 +2023,7 @@ "bundled": true, "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } }, "lazy-cache": { @@ -2046,7 +2037,7 @@ "bundled": true, "dev": true, "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "1.0.0" } }, "load-json-file": { @@ -2054,11 +2045,11 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" } }, "locate-path": { @@ -2066,8 +2057,8 @@ "bundled": true, "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "2.0.0", + "path-exists": "3.0.0" }, "dependencies": { "path-exists": { @@ -2087,8 +2078,8 @@ "bundled": true, "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "pseudomap": "1.0.2", + "yallist": "2.1.2" } }, "map-cache": { @@ -2101,7 +2092,7 @@ "bundled": true, "dev": true, "requires": { - "object-visit": "^1.0.0" + "object-visit": "1.0.1" } }, "md5-hex": { @@ -2109,7 +2100,7 @@ "bundled": true, "dev": true, "requires": { - "md5-o-matic": "^0.1.1" + "md5-o-matic": "0.1.1" } }, "md5-o-matic": { @@ -2122,7 +2113,7 @@ "bundled": true, "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "1.2.0" } }, "merge-source-map": { @@ -2130,7 +2121,7 @@ "bundled": true, "dev": true, "requires": { - "source-map": "^0.6.1" + "source-map": "0.6.1" }, "dependencies": { "source-map": { @@ -2145,19 +2136,19 @@ "bundled": true, "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "kind-of": { @@ -2177,7 +2168,7 @@ "bundled": true, "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -2190,8 +2181,8 @@ "bundled": true, "dev": true, "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "for-in": "1.0.2", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -2199,7 +2190,7 @@ "bundled": true, "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -2222,18 +2213,18 @@ "bundled": true, "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "kind-of": { @@ -2248,10 +2239,10 @@ "bundled": true, "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "2.6.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" } }, "npm-run-path": { @@ -2259,7 +2250,7 @@ "bundled": true, "dev": true, "requires": { - "path-key": "^2.0.0" + "path-key": "2.0.1" } }, "number-is-nan": { @@ -2277,9 +2268,9 @@ "bundled": true, "dev": true, "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" }, "dependencies": { "define-property": { @@ -2287,7 +2278,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } @@ -2297,7 +2288,7 @@ "bundled": true, "dev": true, "requires": { - "isobject": "^3.0.0" + "isobject": "3.0.1" } }, "object.pick": { @@ -2305,7 +2296,7 @@ "bundled": true, "dev": true, "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" } }, "once": { @@ -2313,7 +2304,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "optimist": { @@ -2321,8 +2312,8 @@ "bundled": true, "dev": true, "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "minimist": "0.0.8", + "wordwrap": "0.0.3" } }, "os-homedir": { @@ -2335,9 +2326,9 @@ "bundled": true, "dev": true, "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" } }, "p-finally": { @@ -2350,7 +2341,7 @@ "bundled": true, "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "1.0.0" } }, "p-locate": { @@ -2358,7 +2349,7 @@ "bundled": true, "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "1.2.0" } }, "p-try": { @@ -2371,7 +2362,7 @@ "bundled": true, "dev": true, "requires": { - "error-ex": "^1.2.0" + "error-ex": "1.3.1" } }, "pascalcase": { @@ -2384,7 +2375,7 @@ "bundled": true, "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "pinkie-promise": "2.0.1" } }, "path-is-absolute": { @@ -2407,9 +2398,9 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" } }, "pify": { @@ -2427,7 +2418,7 @@ "bundled": true, "dev": true, "requires": { - "pinkie": "^2.0.0" + "pinkie": "2.0.4" } }, "pkg-dir": { @@ -2435,7 +2426,7 @@ "bundled": true, "dev": true, "requires": { - "find-up": "^1.0.0" + "find-up": "1.1.2" }, "dependencies": { "find-up": { @@ -2443,8 +2434,8 @@ "bundled": true, "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" } } } @@ -2464,9 +2455,9 @@ "bundled": true, "dev": true, "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" } }, "read-pkg-up": { @@ -2474,8 +2465,8 @@ "bundled": true, "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "find-up": "1.1.2", + "read-pkg": "1.1.0" }, "dependencies": { "find-up": { @@ -2483,8 +2474,8 @@ "bundled": true, "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" } } } @@ -2494,8 +2485,8 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" } }, "repeat-element": { @@ -2539,7 +2530,7 @@ "dev": true, "optional": true, "requires": { - "align-text": "^0.1.1" + "align-text": "0.1.4" } }, "rimraf": { @@ -2547,7 +2538,7 @@ "bundled": true, "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "7.1.2" } }, "safe-regex": { @@ -2555,7 +2546,7 @@ "bundled": true, "dev": true, "requires": { - "ret": "~0.1.10" + "ret": "0.1.15" } }, "semver": { @@ -2573,10 +2564,10 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" }, "dependencies": { "extend-shallow": { @@ -2584,7 +2575,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -2594,7 +2585,7 @@ "bundled": true, "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "1.0.0" } }, "shebang-regex": { @@ -2617,14 +2608,14 @@ "bundled": true, "dev": true, "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.2", + "use": "3.1.0" }, "dependencies": { "debug": { @@ -2640,7 +2631,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -2648,7 +2639,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -2658,9 +2649,9 @@ "bundled": true, "dev": true, "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" }, "dependencies": { "define-property": { @@ -2668,7 +2659,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "is-accessor-descriptor": { @@ -2676,7 +2667,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -2684,7 +2675,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -2692,9 +2683,9 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "kind-of": { @@ -2709,7 +2700,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^3.2.0" + "kind-of": "3.2.2" } }, "source-map": { @@ -2722,11 +2713,11 @@ "bundled": true, "dev": true, "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "atob": "2.1.1", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" } }, "source-map-url": { @@ -2739,12 +2730,12 @@ "bundled": true, "dev": true, "requires": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.2", - "which": "^1.3.0" + "foreground-child": "1.5.6", + "mkdirp": "0.5.1", + "os-homedir": "1.0.2", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "which": "1.3.1" } }, "spdx-correct": { @@ -2752,8 +2743,8 @@ "bundled": true, "dev": true, "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" } }, "spdx-exceptions": { @@ -2766,8 +2757,8 @@ "bundled": true, "dev": true, "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" } }, "spdx-license-ids": { @@ -2780,7 +2771,7 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "^3.0.0" + "extend-shallow": "3.0.2" } }, "static-extend": { @@ -2788,8 +2779,8 @@ "bundled": true, "dev": true, "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" + "define-property": "0.2.5", + "object-copy": "0.1.0" }, "dependencies": { "define-property": { @@ -2797,7 +2788,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } @@ -2807,8 +2798,8 @@ "bundled": true, "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" } }, "strip-ansi": { @@ -2816,7 +2807,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" } }, "strip-bom": { @@ -2824,7 +2815,7 @@ "bundled": true, "dev": true, "requires": { - "is-utf8": "^0.2.0" + "is-utf8": "0.2.1" } }, "strip-eof": { @@ -2837,11 +2828,11 @@ "bundled": true, "dev": true, "requires": { - "arrify": "^1.0.1", - "micromatch": "^3.1.8", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" + "arrify": "1.0.1", + "micromatch": "3.1.10", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" } }, "to-object-path": { @@ -2849,7 +2840,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "to-regex": { @@ -2857,10 +2848,10 @@ "bundled": true, "dev": true, "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" } }, "to-regex-range": { @@ -2868,8 +2859,8 @@ "bundled": true, "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "3.0.0", + "repeat-string": "1.6.1" } }, "uglify-js": { @@ -2878,9 +2869,9 @@ "dev": true, "optional": true, "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" }, "dependencies": { "yargs": { @@ -2889,9 +2880,9 @@ "dev": true, "optional": true, "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", "window-size": "0.1.0" } } @@ -2908,10 +2899,10 @@ "bundled": true, "dev": true, "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" }, "dependencies": { "extend-shallow": { @@ -2919,7 +2910,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "set-value": { @@ -2927,10 +2918,10 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" } } } @@ -2940,8 +2931,8 @@ "bundled": true, "dev": true, "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "has-value": "0.3.1", + "isobject": "3.0.1" }, "dependencies": { "has-value": { @@ -2949,9 +2940,9 @@ "bundled": true, "dev": true, "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" }, "dependencies": { "isobject": { @@ -2981,7 +2972,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^6.0.2" + "kind-of": "6.0.2" }, "dependencies": { "kind-of": { @@ -2996,8 +2987,8 @@ "bundled": true, "dev": true, "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" } }, "which": { @@ -3005,7 +2996,7 @@ "bundled": true, "dev": true, "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } }, "which-module": { @@ -3029,8 +3020,8 @@ "bundled": true, "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "string-width": "1.0.2", + "strip-ansi": "3.0.1" }, "dependencies": { "ansi-regex": { @@ -3043,7 +3034,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "string-width": { @@ -3051,9 +3042,9 @@ "bundled": true, "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "strip-ansi": { @@ -3061,7 +3052,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -3076,9 +3067,9 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" } }, "y18n": { @@ -3096,18 +3087,18 @@ "bundled": true, "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "cliui": "4.1.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" }, "dependencies": { "camelcase": { @@ -3120,9 +3111,9 @@ "bundled": true, "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" } }, "yargs-parser": { @@ -3130,7 +3121,7 @@ "bundled": true, "dev": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "4.1.0" } } } @@ -3140,7 +3131,7 @@ "bundled": true, "dev": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "4.1.0" }, "dependencies": { "camelcase": { @@ -3153,9 +3144,9 @@ } }, "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, "on-finished": { @@ -3171,7 +3162,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "parseurl": { @@ -3206,14 +3197,20 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.1.2", "ipaddr.js": "1.6.0" } }, + "psl": { + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true + }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, "qs": { @@ -3251,10 +3248,10 @@ "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, "requires": { - "depd": "~1.1.2", + "depd": "1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "statuses": "1.5.0" } }, "statuses": { @@ -3266,31 +3263,48 @@ } }, "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "dev": true, "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.7", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.3", + "har-validator": "5.1.3", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.21", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.4.3", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" + }, + "dependencies": { + "mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "dev": true + }, + "mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "dev": true, + "requires": { + "mime-db": "1.37.0" + } + } } }, "reservoir": { @@ -3310,6 +3324,870 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "sboljs": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/sboljs/-/sboljs-2.1.13.tgz", + "integrity": "sha512-5wd2ft7KTxGZ3ifuGAaF3HBtO5ZPRjQS8Jewmntdlax96VPCECRqDy01WgYAMZVXci59L3h8R13603L4MUnQiw==", + "requires": { + "extend": "3.0.0", + "json-stringify-safe": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "rdf-ext": "git://github.com/rdf-ext/rdf-ext.git#a01be12f62a55182edfffc3c81ff37befcbc85b8", + "rdf-graph-array": "git+https://github.com/udp/rdf-graph-array.git#98b1a0c674ed2b07993d54ab7d2a3b84e661bc3e", + "rdf-parser-rdfxml": "0.3.1", + "request": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "urijs": "https://registry.npmjs.org/urijs/-/urijs-1.18.7.tgz", + "xml": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "xmlhttprequest": "1.8.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "requires": { + "hoek": "4.2.0" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "cheerio": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.19.0.tgz", + "integrity": "sha1-dy5wFfLuKZZQltcepBdbdas1SSU=", + "requires": { + "css-select": "1.0.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.8.3", + "lodash": "3.10.1" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", + "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.2.3", + "typedarray": "0.0.6" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "css-select": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.0.0.tgz", + "integrity": "sha1-sRIcpRhI3SZOIkTQWM7iVN7rRLA=", + "requires": { + "boolbase": "1.0.0", + "css-what": "1.0.0", + "domutils": "1.4.3", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-1.0.0.tgz", + "integrity": "sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "diff": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=" + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + }, + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz", + "integrity": "sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8=", + "requires": { + "domelementtype": "1.3.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + }, + "escape-string-regexp": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", + "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=" + }, + "extend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", + "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + }, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + } + } + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.3.0", + "domutils": "1.5.1", + "entities": "1.0.0", + "readable-stream": "2.2.3" + }, + "dependencies": { + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jade": { + "version": "0.26.3", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", + "requires": { + "commander": "0.6.1", + "mkdirp": "0.3.0" + }, + "dependencies": { + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=" + }, + "mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=" + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stringify-safe": { + "version": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "requires": { + "mime-db": "1.30.0" + } + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", + "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", + "requires": { + "commander": "2.3.0", + "debug": "2.2.0", + "diff": "1.4.0", + "escape-string-regexp": "1.0.2", + "glob": "3.2.11", + "growl": "1.9.2", + "jade": "0.26.3", + "mkdirp": "0.5.1", + "supports-color": "1.2.0", + "to-iso-string": "0.0.2" + }, + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "requires": { + "inherits": "2.0.3", + "minimatch": "0.3.0" + } + } + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "requires": { + "boolbase": "1.0.0" + } + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "rdf-ext": { + "version": "git://github.com/rdf-ext/rdf-ext.git#a01be12f62a55182edfffc3c81ff37befcbc85b8", + "requires": { + "es6-promise": "3.3.1", + "rdf-graph-array": "git+https://github.com/udp/rdf-graph-array.git#98b1a0c674ed2b07993d54ab7d2a3b84e661bc3e", + "rdf-store-inmemory": "0.3.0" + } + }, + "rdf-graph-abstract": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/rdf-graph-abstract/-/rdf-graph-abstract-0.3.0.tgz", + "integrity": "sha1-gAZBZNzWCQflO++XLIv/DmGsFDM=", + "requires": { + "rdf-normalize": "0.3.0" + } + }, + "rdf-graph-array": { + "version": "git+https://github.com/udp/rdf-graph-array.git#98b1a0c674ed2b07993d54ab7d2a3b84e661bc3e", + "requires": { + "inherits": "2.0.3", + "rdf-graph-abstract": "0.3.0" + } + }, + "rdf-normalize": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/rdf-normalize/-/rdf-normalize-0.3.0.tgz", + "integrity": "sha1-J2H1sh0kYyW4+zxOk9+Vn2L5Zqg=" + }, + "rdf-parser-rdfxml": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/rdf-parser-rdfxml/-/rdf-parser-rdfxml-0.3.1.tgz", + "integrity": "sha1-0ZPs/BqE7a93SIQPJGb7QxQ8h4o=", + "requires": { + "rdf-ext": "git://github.com/rdf-ext/rdf-ext.git#a01be12f62a55182edfffc3c81ff37befcbc85b8", + "rdf-parser-dom": "0.3.0" + }, + "dependencies": { + "rdf-parser-dom": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/rdf-parser-dom/-/rdf-parser-dom-0.3.0.tgz", + "integrity": "sha1-RkNb7/vGf6Nat2x23tdfumsEly4=", + "requires": { + "rdf-parser-abstract": "0.3.0", + "xmldom": "0.1.27" + }, + "dependencies": { + "rdf-parser-abstract": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/rdf-parser-abstract/-/rdf-parser-abstract-0.3.0.tgz", + "integrity": "sha1-6gH2zFrmhZMyXUSvwLVINTMCPi4=", + "requires": { + "concat-stream": "1.6.0", + "mocha": "2.5.3" + } + } + } + } + } + }, + "rdf-store-abstract": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/rdf-store-abstract/-/rdf-store-abstract-0.3.0.tgz", + "integrity": "sha1-s6RlB5D0E7CRlX+HrMiByYt6g6I=" + }, + "rdf-store-inmemory": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/rdf-store-inmemory/-/rdf-store-inmemory-0.3.0.tgz", + "integrity": "sha1-051xLtt7Rk4qcMwBm6O+6nFiO3A=", + "requires": { + "rdf-ext": "git://github.com/rdf-ext/rdf-ext.git#a01be12f62a55182edfffc3c81ff37befcbc85b8", + "rdf-store-abstract": "0.3.0" + } + }, + "readable-stream": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.3.tgz", + "integrity": "sha1-nPSUY5hd8BbIrogTCXqSk6mzNyk=", + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + }, + "dependencies": { + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + } + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "requires": { + "hoek": "4.2.0" + } + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, + "supports-color": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", + "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=" + }, + "to-iso-string": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", + "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=" + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "urijs": { + "version": "https://registry.npmjs.org/urijs/-/urijs-1.18.7.tgz", + "integrity": "sha1-YT7kGURS/ma4ctYkaJRt+TqUFJI=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xml": { + "version": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=" + }, + "xmldom": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + } + } + }, "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", @@ -3322,18 +4200,18 @@ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", + "http-errors": "1.6.3", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" } }, "serve-static": { @@ -3341,9 +4219,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", "send": "0.16.2" } }, @@ -3370,20 +4248,20 @@ "dev": true }, "sshpk": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", - "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz", + "integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==", "dev": true, "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" } }, "statuses": { @@ -3396,7 +4274,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "requires": { - "has-flag": "^2.0.0" + "has-flag": "2.0.0" } }, "to-fast-properties": { @@ -3406,12 +4284,21 @@ "dev": true }, "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "dev": true, "requires": { - "punycode": "^1.4.1" + "psl": "1.1.31", + "punycode": "1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } } }, "trim-right": { @@ -3426,15 +4313,14 @@ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.2" } }, "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true + "dev": true }, "type-detect": { "version": "4.0.8", @@ -3448,7 +4334,7 @@ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "requires": { "media-typer": "0.3.0", - "mime-types": "~2.1.18" + "mime-types": "2.1.18" } }, "unpipe": { @@ -3456,6 +4342,15 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "2.1.1" + } + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -3486,9 +4381,9 @@ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { - "assert-plus": "^1.0.0", + "assert-plus": "1.0.0", "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "extsprintf": "1.3.0" } }, "wrappy": { diff --git a/package.json b/package.json index 5b00fdf..51b512f 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Constellation is a tool for parsing a language specifying genetic parts and their relationships", "main": "constellation.js", "scripts": { - "test": "nyc mocha", + "test": "nyc mocha --timeout 200000", "coverage": "nyc report --reporter=text-lcov | coveralls" }, "repository": { @@ -30,9 +30,11 @@ "dependencies": { "d3-force": "^1.1.0", "express": "^4.16.3", + "form-data": "^2.3.3", "imparse": "0.0.2", "mocha": "^4.1.0", "reservoir": "^0.1.2", + "sboljs": "^2.1.13", "uuidv4": "^0.5.0" }, "devDependencies": { diff --git a/test/constellationTests.js b/test/constellationTests.js index 42663ee..cfa0e39 100644 --- a/test/constellationTests.js +++ b/test/constellationTests.js @@ -42,13 +42,6 @@ module.exports = function() { expect(result.designs).to.contain('a2,c1'); }); - // it('and', function() { - // const result = constellation(DESIGN_NAME, '(a or c) and a', categories, 10); - // expect(result.designs.length).to.equal(1); - // expect(result.designs).to.contain('a1'); - // expect(result.designs).to.contain('a2'); - // }); - it('one-or-more', function() { let result = constellation(DESIGN_NAME, 'one-or-more a', CATEGORIES, 10, 0); expect(result.designs.length).to.equal(ACATS); diff --git a/test/sbolResults/atom.txt b/test/sbolResults/atom.txt new file mode 100644 index 0000000..c902c9b --- /dev/null +++ b/test/sbolResults/atom.txt @@ -0,0 +1 @@ +XXXXXXXXXXXXXXrbsXXXXX1XXXXXXXXXXXXXXXXXXXXXa1XXXXX1XXXXXXXXXXXXXXXXXXXXXa2XXXXX1XXXXXXXXXXXXXXXXXXXXXdesignXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXrbs_componentXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXdesign_combinatorial_derivationXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXrbs_component_variableXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \ No newline at end of file diff --git a/test/sbolResults/error.txt b/test/sbolResults/error.txt new file mode 100644 index 0000000..5e40c08 --- /dev/null +++ b/test/sbolResults/error.txt @@ -0,0 +1 @@ +asdf \ No newline at end of file diff --git a/test/sbolResults/paperEx.txt b/test/sbolResults/paperEx.txt new file mode 100644 index 0000000..e9118d9 --- /dev/null +++ b/test/sbolResults/paperEx.txt @@ -0,0 +1,632 @@ + + + + + promoter + 1 + + + + + + c1 + 1 + + + + + cds + 1 + + + + + + b1 + 1 + + + + + b2 + 1 + + + + + b3 + 1 + + + + + terminator + 1 + + + + + + t + 1 + + + + + cyclical_unit1 + 1 + + + + + cyclical_unit2_component + 1 + + + + + + + + cds_component + 1 + + + + + + + + cyclical_unit3_component + 1 + + + + + + + + or_unit2_component + 1 + + + + + + + + cyclical_unit1_sequence_constraint7 + 1 + + + + + + + + + cyclical_unit1_sequence_constraint8 + 1 + + + + + + + + + cyclical_unit1_sequence_constraint9 + 1 + + + + + + + + + cyclical_unit1 + 1 + + + + + cyclical_unit2 + 1 + + + + + promoter_component + 1 + + + + + + + + cds_component + 1 + + + + + + + + cyclical_unit2_sequence_constraint1 + 1 + + + + + + + + + cyclical_unit2 + 1 + + + + + cyclical_unit3 + 1 + + + + + or_unit1_component + 1 + + + + + + + + cyclical_unit3 + 1 + + + + + or_unit1 + 1 + + + + + cyclical_unit4 + 1 + + + + + cds_component + 1 + + + + + + + + promoter_component + 1 + + + + + + + + cds_component + 1 + + + + + + + + cyclical_unit4_sequence_constraint2 + 1 + + + + + + + + + cyclical_unit4_sequence_constraint3 + 1 + + + + + + + + + cyclical_unit4 + 1 + + + + + or_unit1_or_subunit1 + 1 + + + + + cyclical_unit4_component + 1 + + + + + + + + cds_component + 1 + + + + + + + + or_unit1_or_subunit1_sequence_constraint4 + 1 + + + + + + + + + or_unit2 + 1 + + + + + or_unit2_or_subunit1 + 1 + + + + + cds_component + 1 + + + + + + + + terminator_component + 1 + + + + + + + + or_unit2_or_subunit1_sequence_constraint5 + 1 + + + + + + + + + or_unit2_or_subunit2 + 1 + + + + + terminator_component + 1 + + + + + + + + cds_component + 1 + + + + + + + + or_unit2_or_subunit2_sequence_constraint6 + 1 + + + + + + + + + design + 1 + + + + + cyclical_unit1_component + 1 + + + + + + + + cyclical_unit1_combinatorial_derivation + 1 + + + + + cyclical_unit2_component_variable + 1 + + + + + + + + + cds_component_variable + 1 + + + + + + + + + + + cyclical_unit3_component_variable + 1 + + + + + + + + + or_unit2_component_variable + 1 + + + + + + + + + + + cyclical_unit2_combinatorial_derivation + 1 + + + + + promoter_component_variable + 1 + + + + + + + + + cds_component_variable + 1 + + + + + + + + + + + cyclical_unit3_combinatorial_derivation + 1 + + + + + or_unit1_component_variable + 1 + + + + + + + + + + + + cyclical_unit4_combinatorial_derivation + 1 + + + + + cds_component_variable + 1 + + + + + + + + + + + promoter_component_variable + 1 + + + + + + + + + cds_component_variable + 1 + + + + + + + + + + + or_unit1_or_subunit1_combinatorial_derivation + 1 + + + + + cyclical_unit4_component_variable + 1 + + + + + + + + + cds_component_variable + 1 + + + + + + + + + + + or_unit2_or_subunit1_combinatorial_derivation + 1 + + + + + cds_component_variable + 1 + + + + + + + + + + + terminator_component_variable + 1 + + + + + + + + + or_unit2_or_subunit2_combinatorial_derivation + 1 + + + + + terminator_component_variable + 1 + + + + + + + + + cds_component_variable + 1 + + + + + + + + + + + design_combinatorial_derivation + 1 + + + + + cyclical_unit1_component_variable + 1 + + + + + + + + ✓ Spec for paper (1765ms) + + + 41 passing (2s) + +----------------------|----------|----------|----------|----------|-------------------| +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | +----------------------|----------|----------|----------|----------|-------------------| +All files | 96.05 | 87.83 | 94.74 | 96.21 | | + constellation.js | 84.62 | 52.94 | 100 | 84.62 | 26,29,32,35,41,63 | + designEnumeration.js | 94.44 | 82.14 | 100 | 94.44 | 19,25,45 | + graph.js | 96.26 | 87.5 | 90 | 96.26 |... 38,539,540,542 | + sbol.js | 97.82 | 94.69 | 96.15 | 98.17 |... 43,381,389,390 | +----------------------|----------|----------|----------|----------|-------------------| diff --git a/test/sbolTests.js b/test/sbolTests.js new file mode 100644 index 0000000..35d65c2 --- /dev/null +++ b/test/sbolTests.js @@ -0,0 +1,48 @@ + +const constellation = require('../lib/constellation'); +const expect = require('chai').expect; +var fs = require('fs'); + + +var DESIGN_NAME = 'design'; +const CATEGORIES = '{"rbs":["a1","a2"],"cds":["b1","b2","b3"],"promoter":["c1"], "terminator": ["t"]}'; + +function trim(str) { + return str.replace(/\s/g, "X"); + +} + + +function readModuleFile(path, callback) { + try { + var filename = require.resolve(path); + fs.readFile(filename, 'utf8', callback); + } catch (e) { + callback(e); + } +} + +module.exports = function() { + // + describe('SBOL Generation', function() { + it('atom', function(done) { + let result = constellation(DESIGN_NAME, 'rbs', CATEGORIES, 10, 0); + + readModuleFile('./sbolResults/atom.txt', function (err, words) { + expect(err).to.be.a('null'); + expect(trim(result.sbols[0])).to.eql(trim(words)); + done(); + }); + }); + + it('Spec for paper', function() { + let result = constellation(DESIGN_NAME, 'one-or-more(one-or-more(promoter then cds)then cds then (zero-or-more (cds or (one-or-more (cds then promoter then cds) then cds)) then (terminator or (terminator then cds) or (cds then terminator)))))', CATEGORIES, 10, 0); + + readModuleFile('./sbolResults/paperEx.txt', function (err, words) { + expect(err).to.be.a('null'); + expect(trim(result.sbols[0])).to.eql(trim(words)); + done(); + }); + }); + }); +} diff --git a/test/test.js b/test/test.js index 7ee0a36..f91faf6 100644 --- a/test/test.js +++ b/test/test.js @@ -3,7 +3,9 @@ // const graphTests = require('./graphTests'); const enumerationTests = require('./enumerationTests'); const constellationTests = require('./constellationTests'); +const sbolTests = require('./sbolTests'); constellationTests(); enumerationTests(); // graphTests(); +sbolTests(); \ No newline at end of file