From 865adf9b2c811f0599feeacc419962ffb2855acf Mon Sep 17 00:00:00 2001 From: Jonathan Thiry Date: Wed, 6 Nov 2019 15:04:54 +0100 Subject: [PATCH 01/16] Discard UTC timestamp for delimited header format --- src/main/js/portal/main/config.ts | 2 +- .../cp/data/services/upload/IngestionUploadTask.scala | 9 +++++---- src/test/resources/sites_delimiter.csv | 2 +- .../SitesDelimitedHeaderCsvStreamsTests.scala | 6 +++--- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/js/portal/main/config.ts b/src/main/js/portal/main/config.ts index b6b8c7adc..855e80940 100644 --- a/src/main/js/portal/main/config.ts +++ b/src/main/js/portal/main/config.ts @@ -51,7 +51,7 @@ export type CategoryType = keyof CategoryNamesDict; export const placeholders: {[E in Envri]: CategoryNamesDict} = { ICOS: defaultCategNames, - SITES: {...defaultCategNames, station: 'Station'}, + SITES: {...defaultCategNames, station: 'Station', project: 'Thematic program'}, }; export const prefixes = { diff --git a/src/main/scala/se/lu/nateko/cp/data/services/upload/IngestionUploadTask.scala b/src/main/scala/se/lu/nateko/cp/data/services/upload/IngestionUploadTask.scala index c173ec9c5..98806d16a 100644 --- a/src/main/scala/se/lu/nateko/cp/data/services/upload/IngestionUploadTask.scala +++ b/src/main/scala/se/lu/nateko/cp/data/services/upload/IngestionUploadTask.scala @@ -47,13 +47,13 @@ class IngestionUploadTask( case `asciiEtcTimeSer` => defaultStandardSink(ecocsv.EcoCsvStreams.ecoCsvParser) - + case `asciiOtcSocatTimeSer` => defaultStandardSink(otc.OtcCsvStreams.socatTsvParser) - + case `asciiOtcProductCsv` => defaultStandardSink(otc.OtcCsvStreams.otcProductParser) - + case `simpleSitesCsvTimeSer` => standardSink{nRows => val colFormats = ColumnsMetaWithTsCol(colsMeta, "UTC_TIMESTAMP") @@ -65,7 +65,8 @@ class IngestionUploadTask( case `sitesDelimitedHeaderCsvTimeSer` => standardSink{nRows => - delimitedheadercsv.SitesDelimitedHeaderCsvStreams.standardCsvParser(nRows, defaultColumnFormats) + val colFormats = ColumnsMetaWithTsCol(colsMeta, "TEMP_UTC_TIMESTAMP_FOR_EXTRACTING_DATES") + delimitedheadercsv.SitesDelimitedHeaderCsvStreams.standardCsvParser(nRows, colFormats) } case `asciiEtcHalfHourlyProdTimeSer` => diff --git a/src/test/resources/sites_delimiter.csv b/src/test/resources/sites_delimiter.csv index 4da663dcb..a500776de 100644 --- a/src/test/resources/sites_delimiter.csv +++ b/src/test/resources/sites_delimiter.csv @@ -15,7 +15,7 @@ WS_MAX Explanation and unit PREC Explanation and unit PA Explanation and unit #### -TIME,SR_IN,PPFD,TA,RH,PH2O,TW_1m,TW_3m,TW_15m,WS,WV,WD,WD_STD,WS_MAX,PREC,PA +TIMESTAMP,SR_IN,PPFD,TA,RH,PH2O,TW_1m,TW_3m,TW_15m,WS,WV,WD,WD_STD,WS_MAX,PREC,PA 2015-01-01 00:00,3.149, NaN,0.61, NaN, NaN,0.274,0.249,0.804,4.424,4.391,260,6.95, NaN, NaN, NaN 2015-01-01 01:00,2.76,0,1.489, NaN, NaN,0.204,0.209,0.987,6.794,6.776,261.5,4.23, NaN, NaN, NaN 2015-01-01 02:00,2.824,0,1.856, NaN, NaN,0.214,0.239,0.927,5.7,5.672,262.9,5.71, NaN, NaN, NaN diff --git a/src/test/scala/se/lu/nateko/cp/data/test/formats/delimitedheadercsv/SitesDelimitedHeaderCsvStreamsTests.scala b/src/test/scala/se/lu/nateko/cp/data/test/formats/delimitedheadercsv/SitesDelimitedHeaderCsvStreamsTests.scala index ae273a884..ccf7eb208 100644 --- a/src/test/scala/se/lu/nateko/cp/data/test/formats/delimitedheadercsv/SitesDelimitedHeaderCsvStreamsTests.scala +++ b/src/test/scala/se/lu/nateko/cp/data/test/formats/delimitedheadercsv/SitesDelimitedHeaderCsvStreamsTests.scala @@ -31,12 +31,12 @@ class SitesDelimitedHeaderCsvStreamsTests extends FunSuite with BeforeAndAfterAl private val formats = ColumnsMetaWithTsCol( new ColumnsMeta(Seq( - PlainColumn(Iso8601DateTime, "TIME", isOptional = false), + PlainColumn(IsoLikeLocalDateTime, "TIMESTAMP", isOptional = false), PlainColumn(FloatValue, "SR_IN", isOptional = false), PlainColumn(FloatValue, "PPFD", isOptional = false), PlainColumn(FloatValue, "TA", isOptional = true) )), - "TIME" + "TEMP_UTC_TIMESTAMP_FOR_EXTRACTING_DATES" ) private val rowsSource = StreamConverters @@ -69,7 +69,7 @@ class SitesDelimitedHeaderCsvStreamsTests extends FunSuite with BeforeAndAfterAl val ((readResult, firstRow), nRowsWritten) = Await.result(graph.run(), 1.second) - assert(readResult.count === 1166) + assert(readResult.count === 1171) assert(firstRow.header.nRows === nRows) assert(nRowsWritten === nRows) assert(formats.colsMeta.plainCols.keySet.diff(firstRow.header.columnNames.toSet) === From dd6f2a57e7c5b1f783d6daf9e56e82f10fcd6e1e Mon Sep 17 00:00:00 2001 From: Jonathan Thiry Date: Thu, 7 Nov 2019 15:26:35 +0100 Subject: [PATCH 02/16] Support daily delimited header csv format --- .../se/lu/nateko/cp/data/api/MetaVocab.scala | 1 + .../DailyDelimitedHeaderCsvStreams.scala | 33 ++++++++ .../services/upload/IngestionUploadTask.scala | 6 ++ src/test/resources/sites_daily_delimiter.csv | 24 ++++++ ...sDailyDelimitedHeaderCsvStreamsTests.scala | 80 +++++++++++++++++++ .../SitesDelimitedHeaderCsvStreamsTests.scala | 2 +- 6 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 src/main/scala/se/lu/nateko/cp/data/formats/delimitedheadercsv/DailyDelimitedHeaderCsvStreams.scala create mode 100644 src/test/resources/sites_daily_delimiter.csv create mode 100644 src/test/scala/se/lu/nateko/cp/data/test/formats/delimitedheadercsv/SitesDailyDelimitedHeaderCsvStreamsTests.scala diff --git a/src/main/scala/se/lu/nateko/cp/data/api/MetaVocab.scala b/src/main/scala/se/lu/nateko/cp/data/api/MetaVocab.scala index 71077c477..957807287 100644 --- a/src/main/scala/se/lu/nateko/cp/data/api/MetaVocab.scala +++ b/src/main/scala/se/lu/nateko/cp/data/api/MetaVocab.scala @@ -47,4 +47,5 @@ object SitesMetaVocab extends MetaVocab(new URI("https://meta.fieldsites.se/onto val simpleSitesCsvTimeSer = getRelative("simpleSitesCsv") val dailySitesCsvTimeSer = getRelative("dailySitesCsv") val sitesDelimitedHeaderCsvTimeSer = getRelative("delimitedHeaderCsv") + val sitesDailyDelimitedHeaderCsvTimeSer = getRelative("dailyDelimitedHeaderCsv") } diff --git a/src/main/scala/se/lu/nateko/cp/data/formats/delimitedheadercsv/DailyDelimitedHeaderCsvStreams.scala b/src/main/scala/se/lu/nateko/cp/data/formats/delimitedheadercsv/DailyDelimitedHeaderCsvStreams.scala new file mode 100644 index 000000000..c6fadbe28 --- /dev/null +++ b/src/main/scala/se/lu/nateko/cp/data/formats/delimitedheadercsv/DailyDelimitedHeaderCsvStreams.scala @@ -0,0 +1,33 @@ +package se.lu.nateko.cp.data.formats.delimitedheadercsv + +import scala.concurrent.ExecutionContext +import akka.stream.scaladsl.Flow + +import se.lu.nateko.cp.data.formats.TimeSeriesStreams._ +import se.lu.nateko.cp.data.formats._ +import scala.concurrent.Future +import java.time.Instant +import se.lu.nateko.cp.meta.core.data.IngestionMetadataExtract +import akka.stream.scaladsl.Keep +import java.time.temporal.ChronoUnit +import java.time.{ Instant, LocalDate, LocalTime, ZoneOffset } +import java.time.format.DateTimeFormatter + +object SitesDailyDelimitedHeaderCsvStreams extends StandardCsvStreams { + import DelimitedHeaderCsvParser._ + + private val columnSeparator = "," + private val headerDelimitor = "####" + + def isNull(value: String, format: ValueFormat): Boolean = format match { + case FloatValue => value == "NaN" || value == "" + case _ => false + } + + def makeTimeStamp(cells: Array[String]): Instant = + LocalDate.parse(cells(0)).atTime(LocalTime.MIN).toInstant(ZoneOffset.ofHours(1)) + + def makeParser(format: ColumnsMetaWithTsCol): TextFormatParser = + new DelimitedHeaderCsvParser(format.colsMeta, columnSeparator, headerDelimitor) + +} diff --git a/src/main/scala/se/lu/nateko/cp/data/services/upload/IngestionUploadTask.scala b/src/main/scala/se/lu/nateko/cp/data/services/upload/IngestionUploadTask.scala index 98806d16a..70b59bb38 100644 --- a/src/main/scala/se/lu/nateko/cp/data/services/upload/IngestionUploadTask.scala +++ b/src/main/scala/se/lu/nateko/cp/data/services/upload/IngestionUploadTask.scala @@ -69,6 +69,12 @@ class IngestionUploadTask( delimitedheadercsv.SitesDelimitedHeaderCsvStreams.standardCsvParser(nRows, colFormats) } + case `sitesDailyDelimitedHeaderCsvTimeSer` => + standardSink{nRows => + val colFormats = ColumnsMetaWithTsCol(colsMeta, "TEMP_UTC_TIMESTAMP_FOR_EXTRACTING_DATES") + delimitedheadercsv.SitesDailyDelimitedHeaderCsvStreams.standardCsvParser(nRows, colFormats) + } + case `asciiEtcHalfHourlyProdTimeSer` => defaultStandardSink(new etcprod.EtcHalfHourlyProductStreams(utcOffset).standardCsvParser) diff --git a/src/test/resources/sites_daily_delimiter.csv b/src/test/resources/sites_daily_delimiter.csv new file mode 100644 index 000000000..fe334e39d --- /dev/null +++ b/src/test/resources/sites_daily_delimiter.csv @@ -0,0 +1,24 @@ +TIME Explanation and unit +SR_IN Explanation and unit +PPFD Explanation and unit +TA Explanation and unit +RH Explanation and unit +PH20 Explanation and unit +TW_1m Explanation and unit +TW_3m Explanation and unit +TW_15m Explanation and unit +WS Explanation and unit +WV Explanation and unit +WD Explanation and unit +WD_STD Explanation and unit +WS_MAX Explanation and unit +PREC Explanation and unit +PA Explanation and unit +#### +TIMESTAMP,SR_IN,PPFD,TA,RH,PH2O,TW_1m,TW_3m,TW_15m,WS,WV,WD,WD_STD,WS_MAX,PREC,PA +2015-01-01,3.149, NaN,0.61, NaN, NaN,0.274,0.249,0.804,4.424,4.391,260,6.95, NaN, NaN, NaN +2015-01-02,2.76,0,1.489, NaN, NaN,0.204,0.209,0.987,6.794,6.776,261.5,4.23, NaN, NaN, NaN +2015-01-03,2.824,0,1.856, NaN, NaN,0.214,0.239,0.927,5.7,5.672,262.9,5.71, NaN, NaN, NaN +2015-01-04,3.125,0,2.303, NaN, NaN,0.187,0.214,0.866,5.802,5.766,259.7,6.38, NaN, NaN, NaN +2015-01-05,2.996,0,2.635, NaN, NaN,0.174,0.211,0.89,6.493,6.451,258.2,6.58, NaN, NaN, NaN +2015-01-06,2.582,0,2.404, NaN, NaN,0.171,0.221,0.871,7.03,7,261.9,5.47, NaN, NaN, NaN diff --git a/src/test/scala/se/lu/nateko/cp/data/test/formats/delimitedheadercsv/SitesDailyDelimitedHeaderCsvStreamsTests.scala b/src/test/scala/se/lu/nateko/cp/data/test/formats/delimitedheadercsv/SitesDailyDelimitedHeaderCsvStreamsTests.scala new file mode 100644 index 000000000..1a6c6fe5a --- /dev/null +++ b/src/test/scala/se/lu/nateko/cp/data/test/formats/delimitedheadercsv/SitesDailyDelimitedHeaderCsvStreamsTests.scala @@ -0,0 +1,80 @@ +package se.lu.nateko.cp.data.test.formats.delimitedheadercsv + +import java.io.File + +import akka.actor.ActorSystem +import akka.stream.ActorMaterializer +import akka.stream.scaladsl.{Sink, StreamConverters} +import org.scalatest.{BeforeAndAfterAll, FunSuite} +import se.lu.nateko.cp.data.formats._ +import se.lu.nateko.cp.data.formats.bintable.BinTableSink +import se.lu.nateko.cp.data.formats.delimitedheadercsv.SitesDailyDelimitedHeaderCsvStreams + +import scala.concurrent.Await +import scala.concurrent.duration.DurationInt + +class SitesDailyDelimitedHeaderCsvStreamsTests extends FunSuite with BeforeAndAfterAll { + + private implicit val system: ActorSystem = ActorSystem("sitesdailydelimitedheadercsvstreamstest") + private implicit val materializer: ActorMaterializer = ActorMaterializer() + import system.dispatcher + + override def afterAll(): Unit = { + Await.ready(system.terminate(), 3.seconds) + } + + private val nRows = 6 + private val binTableSink = BinTableSink( + new File(getClass.getResource("/").getFile + "/sites_daily_delimiter.cpb"), + overwrite = true + ) + + private val formats = ColumnsMetaWithTsCol( + new ColumnsMeta(Seq( + PlainColumn(Iso8601Date, "TIMESTAMP", isOptional = false), + PlainColumn(FloatValue, "SR_IN", isOptional = false), + PlainColumn(FloatValue, "PPFD", isOptional = false), + PlainColumn(FloatValue, "TA", isOptional = true) + )), + "TEMP_UTC_TIMESTAMP_FOR_EXTRACTING_DATES" + ) + + private val rowsSource = StreamConverters + .fromInputStream(() => getClass.getResourceAsStream("/sites_daily_delimiter.csv")) + .via(TimeSeriesStreams.linesFromUtf8Binary) + .via(SitesDailyDelimitedHeaderCsvStreams.standardCsvParser(nRows, formats)) + + test("Parsing a SITES time series with delimited header example") { + val rowsFut = rowsSource.runWith(Sink.seq) + val rows = Await.result(rowsFut, 1.second) + + assert(rows.size === nRows) + } + + test("Timestamp column is injected into the table") { + val rowFut = rowsSource + .runWith(Sink.head[TableRow]) + val row = Await.result(rowFut, 1.second) + + assert(row.header.columnNames.contains(formats.timeStampColumn)) + assert(row.cells.contains("2014-12-31T23:00:00Z")) + } + + test("Parsing a SITES time series with delimited header example and streaming to bintable") { + val converter = new TimeSeriesToBinTableConverter(formats.colsMeta) + val graph = rowsSource + .wireTapMat(Sink.head[TableRow])(_ zip _) + .map(converter.parseRow) + .toMat(binTableSink)(_ zip _) + + val ((readResult, firstRow), nRowsWritten) = Await.result(graph.run(), 1.second) + + assert(readResult.count === 1135) + assert(firstRow.header.nRows === nRows) + assert(nRowsWritten === nRows) + assert(formats.colsMeta.plainCols.keySet.diff(firstRow.header.columnNames.toSet) === + Set()) + assert(formats.colsMeta.findMissingColumns(firstRow.header.columnNames.toSeq).toSet === Set()) + } + +} diff --git a/src/test/scala/se/lu/nateko/cp/data/test/formats/delimitedheadercsv/SitesDelimitedHeaderCsvStreamsTests.scala b/src/test/scala/se/lu/nateko/cp/data/test/formats/delimitedheadercsv/SitesDelimitedHeaderCsvStreamsTests.scala index ccf7eb208..19958a0b2 100644 --- a/src/test/scala/se/lu/nateko/cp/data/test/formats/delimitedheadercsv/SitesDelimitedHeaderCsvStreamsTests.scala +++ b/src/test/scala/se/lu/nateko/cp/data/test/formats/delimitedheadercsv/SitesDelimitedHeaderCsvStreamsTests.scala @@ -44,7 +44,7 @@ class SitesDelimitedHeaderCsvStreamsTests extends FunSuite with BeforeAndAfterAl .via(TimeSeriesStreams.linesFromUtf8Binary) .via(SitesDelimitedHeaderCsvStreams.standardCsvParser(nRows, formats)) - test("Parsing a SITEStime series with delimited header example") { + test("Parsing a SITES time series with delimited header example") { val rowsFut = rowsSource.runWith(Sink.seq) val rows = Await.result(rowsFut, 1.second) From 9092de9fb472b12f8b5ab596f9dc05a3247a220e Mon Sep 17 00:00:00 2001 From: Jonathan Thiry Date: Thu, 7 Nov 2019 16:38:29 +0100 Subject: [PATCH 03/16] Delete unused SITES formats --- .../se/lu/nateko/cp/data/api/MetaVocab.scala | 2 - .../dailysitescsv/DailySitesCsvStreams.scala | 19 ----- .../DailyDelimitedHeaderCsvStreams.scala | 2 + .../SimpleSitesCsvStreams.scala | 20 ----- .../services/upload/IngestionUploadTask.scala | 9 --- src/test/resources/sdp_c5chem_2004.csv | 30 ------- .../DailySitesCsvStreamsTests.scala | 80 ------------------- 7 files changed, 2 insertions(+), 160 deletions(-) delete mode 100644 src/main/scala/se/lu/nateko/cp/data/formats/dailysitescsv/DailySitesCsvStreams.scala delete mode 100644 src/main/scala/se/lu/nateko/cp/data/formats/simplesitescsv/SimpleSitesCsvStreams.scala delete mode 100644 src/test/resources/sdp_c5chem_2004.csv delete mode 100644 src/test/scala/se/lu/nateko/cp/data/test/formats/dailysitescsv/DailySitesCsvStreamsTests.scala diff --git a/src/main/scala/se/lu/nateko/cp/data/api/MetaVocab.scala b/src/main/scala/se/lu/nateko/cp/data/api/MetaVocab.scala index 957807287..64903a93d 100644 --- a/src/main/scala/se/lu/nateko/cp/data/api/MetaVocab.scala +++ b/src/main/scala/se/lu/nateko/cp/data/api/MetaVocab.scala @@ -44,8 +44,6 @@ object CpMetaVocab extends MetaVocab(new URI("http://meta.icos-cp.eu/ontologies/ object SitesMetaVocab extends MetaVocab(new URI("https://meta.fieldsites.se/ontologies/sites/")) { - val simpleSitesCsvTimeSer = getRelative("simpleSitesCsv") - val dailySitesCsvTimeSer = getRelative("dailySitesCsv") val sitesDelimitedHeaderCsvTimeSer = getRelative("delimitedHeaderCsv") val sitesDailyDelimitedHeaderCsvTimeSer = getRelative("dailyDelimitedHeaderCsv") } diff --git a/src/main/scala/se/lu/nateko/cp/data/formats/dailysitescsv/DailySitesCsvStreams.scala b/src/main/scala/se/lu/nateko/cp/data/formats/dailysitescsv/DailySitesCsvStreams.scala deleted file mode 100644 index cf4d0fdaa..000000000 --- a/src/main/scala/se/lu/nateko/cp/data/formats/dailysitescsv/DailySitesCsvStreams.scala +++ /dev/null @@ -1,19 +0,0 @@ -package se.lu.nateko.cp.data.formats.dailysitescsv - -import java.time.{ Instant, LocalDate, LocalTime, ZoneOffset } -import java.time.temporal.ChronoUnit - -import se.lu.nateko.cp.data.formats._ - -object DailySitesCsvStreams extends SimpleCsvStreams(","){ - - override def makeTimeStamp(cells: Array[String]): Instant = { - val parsedTime = LocalDate.parse(cells(0)).atTime(LocalTime.MIN) - parsedTime.toInstant(ZoneOffset.ofHours(1)) - } - - override def isNull(value: String, format: ValueFormat): Boolean = false - - override def acqIntervalTimeStep = Some(1L -> ChronoUnit.DAYS) - -} diff --git a/src/main/scala/se/lu/nateko/cp/data/formats/delimitedheadercsv/DailyDelimitedHeaderCsvStreams.scala b/src/main/scala/se/lu/nateko/cp/data/formats/delimitedheadercsv/DailyDelimitedHeaderCsvStreams.scala index c6fadbe28..d4e33a2d5 100644 --- a/src/main/scala/se/lu/nateko/cp/data/formats/delimitedheadercsv/DailyDelimitedHeaderCsvStreams.scala +++ b/src/main/scala/se/lu/nateko/cp/data/formats/delimitedheadercsv/DailyDelimitedHeaderCsvStreams.scala @@ -30,4 +30,6 @@ object SitesDailyDelimitedHeaderCsvStreams extends StandardCsvStreams { def makeParser(format: ColumnsMetaWithTsCol): TextFormatParser = new DelimitedHeaderCsvParser(format.colsMeta, columnSeparator, headerDelimitor) + override def acqIntervalTimeStep = Some(1L -> ChronoUnit.DAYS) + } diff --git a/src/main/scala/se/lu/nateko/cp/data/formats/simplesitescsv/SimpleSitesCsvStreams.scala b/src/main/scala/se/lu/nateko/cp/data/formats/simplesitescsv/SimpleSitesCsvStreams.scala deleted file mode 100644 index 153411387..000000000 --- a/src/main/scala/se/lu/nateko/cp/data/formats/simplesitescsv/SimpleSitesCsvStreams.scala +++ /dev/null @@ -1,20 +0,0 @@ -package se.lu.nateko.cp.data.formats.simplesitescsv - -import java.time.{ Instant, LocalDateTime, ZoneOffset } -import java.time.format.DateTimeFormatter - -import se.lu.nateko.cp.data.formats._ - -object SimpleSitesCsvStreams extends SimpleCsvStreams(","){ - - private val isoLikeDateFormater = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm") - - def isNull(value: String, format: ValueFormat): Boolean = format match { - case FloatValue => value == "NaN" || value == "" - case _ => false - } - - def makeTimeStamp(cells: Array[String]): Instant = - LocalDateTime.parse(cells(0), isoLikeDateFormater).toInstant(ZoneOffset.ofHours(1)) - -} diff --git a/src/main/scala/se/lu/nateko/cp/data/services/upload/IngestionUploadTask.scala b/src/main/scala/se/lu/nateko/cp/data/services/upload/IngestionUploadTask.scala index 70b59bb38..004b06e01 100644 --- a/src/main/scala/se/lu/nateko/cp/data/services/upload/IngestionUploadTask.scala +++ b/src/main/scala/se/lu/nateko/cp/data/services/upload/IngestionUploadTask.scala @@ -54,15 +54,6 @@ class IngestionUploadTask( case `asciiOtcProductCsv` => defaultStandardSink(otc.OtcCsvStreams.otcProductParser) - case `simpleSitesCsvTimeSer` => - standardSink{nRows => - val colFormats = ColumnsMetaWithTsCol(colsMeta, "UTC_TIMESTAMP") - simplesitescsv.SimpleSitesCsvStreams.standardCsvParser(nRows, colFormats) - } - - case `dailySitesCsvTimeSer` => - defaultStandardSink(dailysitescsv.DailySitesCsvStreams.standardCsvParser) - case `sitesDelimitedHeaderCsvTimeSer` => standardSink{nRows => val colFormats = ColumnsMetaWithTsCol(colsMeta, "TEMP_UTC_TIMESTAMP_FOR_EXTRACTING_DATES") diff --git a/src/test/resources/sdp_c5chem_2004.csv b/src/test/resources/sdp_c5chem_2004.csv deleted file mode 100644 index fd0eb3634..000000000 --- a/src/test/resources/sdp_c5chem_2004.csv +++ /dev/null @@ -1,30 +0,0 @@ -Date,pH,EC (µS/cm),TOC (mg/l),Al (µg/l),Ca (µg/l),Fe (µg/l),K (µg/l),Mg (µg/l),Mn (µg/l),Na (µg/l),P (µg/l),S (µg/l),Si (µg/l),Zn (µg/l) -2004-01-14,4.57,,21.83,,,,,,,,,,, -2004-03-04,4.57,,20.53,,,,,,,,,,, -2004-03-30,5.19,,19.78,139.509,1628.486,2121.631,302.591,554.908,14.122,1241.822,,818.105,3526.816,69.389 -2004-04-06,5.13,,19.88,129.672,1650,2076,239.448,520.825,13.457,1119,,751.654,3348,65.471 -2004-04-12,5.19,,20.28,134.255,1706.748,2205.53,667.582,539.876,14.133,1188.913,,799.392,3614.49,52.757 -2004-04-15,5.07,,20.51,137.379,1741.057,2123.04,437.783,562.934,15.011,1284.746,,893.79,3660.827,91.678 -2004-04-17,5.01,,14.01,,,,,,,,,,, -2004-04-19,5.52,,14.99,84.302,1139.705,1146.796,193.364,391.791,10.484,851.814,,583.91,2440.333,50.256 -2004-04-20,5.69,,19.24,138.901,1809,2138,342.838,549.97,15.2,1285,,858.664,3611,223.359 -2004-04-22,4.51,,27.18,133.183,1445,2188,400.63,516.242,21.968,1005,,745.011,3259,49.883 -2004-04-26,4.43,,26.36,117.467,1213,1823,398.11,438.676,21.417,856.018,,670.791,2767,55.077 -2004-04-28,4.54,,26.62,114.009,1105.352,1911.057,398.667,423.539,20.087,839.223,,658.654,2672.726,18.941 -2004-04-30,4.39,,25.15,96.816,957.299,1585.609,408.392,357.187,17.638,773.152,,594.142,2327.505,32.338 -2004-05-03,4.56,,19.32,82.348,819.387,1317.982,363.436,282.137,12.724,629.784,,511.43,1860.347,16.645 -2004-05-05,4.35,,23.04,80.83,785.294,1428.059,398.379,273.97,12.585,675.484,,539.233,1825.452,22.417 -2004-05-07,4.63,,19.84,102.152,1127,1587,365.358,370.637,13.859,820.569,,625.395,2330,4960 -2004-05-10,4.67,,20.67,102.636,1154.512,1750.997,324.103,380.104,14.116,810.868,,591.267,2546.714,48.574 -2004-05-13,4.77,,20.14,106.009,1152.164,1884.844,318.941,389.52,14.359,851.139,,605.531,2670.206,38.003 -2004-05-17,4.88,,20.49,105.879,1162.833,1885.11,302.796,405.091,14.5,866.862,,590.093,2809.068,12.22 -2004-05-20,4.77,,20.61,106.001,1179.555,1841.972,293.127,409.049,14.226,883.48,,602.232,2804.05,14.891 -2004-05-24,4.92,,20.5,107.009,1236.503,1715.208,290.277,405.037,13.961,884.394,,615.656,2881.341,20.963 -2004-05-28,4.87,,20.76,107.337,1207.855,1677.202,280.423,402.08,13.896,886.649,,624.219,2830.752,17.127 -2004-06-04,4.87,,19.87,106.666,1256.17,1656.595,288.201,406.861,13.786,901.851,,642.833,2770.727,23.846 -2004-06-10,5.05,,19.08,111.294,1270.724,1676.968,304.24,424.292,14.569,964.01,,647.691,2793.883,25.409 -2004-07-07,4.79,,19.34,105.912,1167.86,1601.852,229.658,395.566,11.959,842.045,,588.807,2590.945,3.979 -2004-08-27,4.93,,19.61,126.724,1231.316,1848.6,214.917,437.461,12.304,916.106,,572.955,2635.112,11.024 -2004-10-06,4.72,,23.07,128.799,1209.003,1939.142,157.976,410.846,10.013,844.188,,539.211,2482.546,5.001 -2004-11-02,4.7,,24.53,134.724,1278.281,1964.212,163.227,442.691,10.612,908.273,,596.508,2739.772,3.755 -2004-12-08,4.78,,25.49,143.119,1334.147,2053.723,179.021,464.477,10.793,971.92,,639.574,2981.173,4.154 diff --git a/src/test/scala/se/lu/nateko/cp/data/test/formats/dailysitescsv/DailySitesCsvStreamsTests.scala b/src/test/scala/se/lu/nateko/cp/data/test/formats/dailysitescsv/DailySitesCsvStreamsTests.scala deleted file mode 100644 index 74e56779c..000000000 --- a/src/test/scala/se/lu/nateko/cp/data/test/formats/dailysitescsv/DailySitesCsvStreamsTests.scala +++ /dev/null @@ -1,80 +0,0 @@ -package se.lu.nateko.cp.data.test.formats.dailysitescsv - -import java.io.File - -import akka.actor.ActorSystem -import akka.stream.ActorMaterializer -import akka.stream.scaladsl.{Sink, StreamConverters} -import org.scalatest.{BeforeAndAfterAll, FunSuite} -import se.lu.nateko.cp.data.formats._ -import se.lu.nateko.cp.data.formats.bintable.BinTableSink -import se.lu.nateko.cp.data.formats.dailysitescsv.DailySitesCsvStreams - -import scala.concurrent.Await -import scala.concurrent.duration.DurationInt - -class DailySitesCsvStreamsTests extends FunSuite with BeforeAndAfterAll { - - private implicit val system: ActorSystem = ActorSystem("dailysitescsvstreamstest") - private implicit val materializer: ActorMaterializer = ActorMaterializer() - import system.dispatcher - - override def afterAll(): Unit = { - Await.ready(system.terminate(), 3.seconds) - } - - private val nRows = 29 - private val binTableSink = BinTableSink( - new File(getClass.getResource("/").getFile + "/atcCsvBinTest.cpb"), - overwrite = true - ) - - private val formats = ColumnsMetaWithTsCol( - new ColumnsMeta(Seq( - PlainColumn(Iso8601DateTime, "TIMESTAMP", isOptional = false), - PlainColumn(FloatValue, "pH", isOptional = false), - PlainColumn(FloatValue, "Al (µg/l)", isOptional = false), - PlainColumn(FloatValue, "Optional column", isOptional = true) - )), - "TIMESTAMP" - ) - - private val rowsSource = StreamConverters - .fromInputStream(() => getClass.getResourceAsStream("/sdp_c5chem_2004.csv")) - .via(TimeSeriesStreams.linesFromUtf8Binary) - .via(DailySitesCsvStreams.standardCsvParser(nRows, formats)) - - test("Parsing a daily SITES time series example") { - val rowsFut = rowsSource.runWith(Sink.seq) - val rows = Await.result(rowsFut, 1.second) - - assert(rows.size === nRows) - } - - test("Timestamp column is injected into the table") { - val rowFut = rowsSource - .runWith(Sink.head[TableRow]) - val row = Await.result(rowFut, 1.second) - - assert(row.header.columnNames.contains(formats.timeStampColumn)) - assert(row.cells.contains("2004-01-13T23:00:00Z")) - } - - test("Parsing a daily SITES time series example and streaming to bintable") { - val converter = new TimeSeriesToBinTableConverter(formats.colsMeta) - val graph = rowsSource - .wireTapMat(Sink.head[TableRow])(_ zip _) - .map(converter.parseRow) - .toMat(binTableSink)(_ zip _) - - val ((readResult, firstRow), nRowsWritten) = Await.result(graph.run(), 1.second) - - assert(readResult.count === 2873) - assert(firstRow.header.nRows === nRows) - assert(nRowsWritten === nRows) - assert(formats.colsMeta.plainCols.keySet.diff(firstRow.header.columnNames.toSet) === - Set("Optional column")) - assert(formats.colsMeta.findMissingColumns(firstRow.header.columnNames.toSeq).toSet === Set()) - } - -} From 11fabef0ad580b7e9bbaf399d8be2e3de75b3aed Mon Sep 17 00:00:00 2001 From: Jonathan Thiry Date: Tue, 12 Nov 2019 10:04:36 +0100 Subject: [PATCH 04/16] [portal] Fix temporal resolution not showing --- src/main/js/portal/main/backend.ts | 3 ++- src/main/js/portal/main/sparqlQueries.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/js/portal/main/backend.ts b/src/main/js/portal/main/backend.ts index b4006ac9d..fb56777e5 100644 --- a/src/main/js/portal/main/backend.ts +++ b/src/main/js/portal/main/backend.ts @@ -31,7 +31,8 @@ const fetchSpecBasics = () => { format: b.format.value, formatLabel: b.formatLabel.value, theme: b.theme.value, - themeLabel: b.themeLabel.value + themeLabel: b.themeLabel.value, + temporalResolution: b.temporalResolution ? b.temporalResolution.value : undefined })); }; diff --git a/src/main/js/portal/main/sparqlQueries.ts b/src/main/js/portal/main/sparqlQueries.ts index 84de7d04d..cca86eab9 100644 --- a/src/main/js/portal/main/sparqlQueries.ts +++ b/src/main/js/portal/main/sparqlQueries.ts @@ -8,7 +8,7 @@ const config = Object.assign(commonConfig, localConfig); export const SPECCOL = 'spec'; -export function specBasics(): Query<"spec" | "type" | "specLabel" | "level" | "format" | "formatLabel" | "theme" | "themeLabel", "dataset"> { +export function specBasics(): Query<"spec" | "type" | "specLabel" | "level" | "format" | "formatLabel" | "theme" | "themeLabel", "dataset" | "temporalResolution"> { const text = `prefix cpmeta: <${config.cpmetaOntoUri}> select ?spec (?spec as ?type) ?specLabel ?level ?dataset ?format ?formatLabel ?theme (if(bound(?theme), ?themeLbl, "(not applicable)") as ?themeLabel) ?temporalResolution where{ From b3809a1ba862a452a8b998e89fd78b42fff53c8b Mon Sep 17 00:00:00 2001 From: Oleg Mirzov Date: Thu, 14 Nov 2019 15:54:34 +0100 Subject: [PATCH 05/16] [map-graph] Switching to Typescript in the build chain --- src/main/js/map-graph/build.sh | 9 +- src/main/js/map-graph/gulpfile.babel.js | 17 +- src/main/js/map-graph/main/actions.js | 2 +- src/main/js/map-graph/main/components/Map.jsx | 2 +- src/main/js/map-graph/main/components/test.ts | 8 - src/main/js/map-graph/package-lock.json | 1028 ++++++++++------- src/main/js/map-graph/package.json | 77 +- src/main/js/map-graph/publish.sh | 3 + src/main/js/map-graph/tsconfig.json | 30 + 9 files changed, 708 insertions(+), 468 deletions(-) delete mode 100644 src/main/js/map-graph/main/components/test.ts create mode 100755 src/main/js/map-graph/publish.sh create mode 100644 src/main/js/map-graph/tsconfig.json diff --git a/src/main/js/map-graph/build.sh b/src/main/js/map-graph/build.sh index 61db7d5f6..67738440e 100755 --- a/src/main/js/map-graph/build.sh +++ b/src/main/js/map-graph/build.sh @@ -1,3 +1,10 @@ #!/bin/bash -gulp buildWatch +rm -rf ./tsTarget/* + +npx tsc +npx tsc --watch & +npx gulp buildWatch 2>&1 + +echo '"gulp buildWatch" has exited. Build script is waiting for termination.' +sleep inf diff --git a/src/main/js/map-graph/gulpfile.babel.js b/src/main/js/map-graph/gulpfile.babel.js index ed933d247..a7c69d717 100644 --- a/src/main/js/map-graph/gulpfile.babel.js +++ b/src/main/js/map-graph/gulpfile.babel.js @@ -3,20 +3,24 @@ import gulp from 'gulp'; import del from 'del'; -import buildConf from '../common/main/buildConf.js'; +import buildConf from '../common/main/buildConf'; const currentPath = __dirname; const project = currentPath.split('/').pop(); +const tsTarget = './tsTarget/'; const replaceSearch = "url(node_modules/leaflet/dist/images/"; const replacement = "url(/style/map-graph/images/"; const paths = { - main: 'main/main.jsx', - src: 'main/**/*.js*', - commonjs: '../common/main/**/*.js*', + main: `${tsTarget}${project}/main/main.jsx`, + src: `${tsTarget}${project}/main/**/*.js*`, imagesSource: 'node_modules/leaflet/dist/**/*.png', styleTargetDir: buildConf.buildTarget + 'style/' + project + '/', + copyCss: { + from: '../common/main/Dygraphs.css', + to: `${tsTarget}/common/main/` + }, bundleFile: project + '.js' }; @@ -34,8 +38,11 @@ const copyImages = _ => { return gulp.src(paths.imagesSource).pipe(gulp.dest(paths.styleTargetDir)); }; +const copyCss = _ => { + return gulp.src(paths.copyCss.from).pipe(gulp.dest(paths.copyCss.to)); +}; -gulp.task('build', gulp.series(clean, copyImages, compileSrc)); +gulp.task('build', gulp.series(clean, copyImages, copyCss, compileSrc)); gulp.task('buildWatch', gulp.series('build', buildConf.watch([paths.src], gulp.series('build')))); diff --git a/src/main/js/map-graph/main/actions.js b/src/main/js/map-graph/main/actions.js index 494cb8379..097861524 100644 --- a/src/main/js/map-graph/main/actions.js +++ b/src/main/js/map-graph/main/actions.js @@ -87,7 +87,7 @@ export const selectVar = valueIdx => (dispatch, getState) => { } else if (valueIdx === value2Idx){ dispatch(selectVarY2(binTableData.valueIdx2DataIdx(valueIdx))); } else { - dispatch(failWithError({message: "Could not determine what axel was selected"})); + dispatch(failWithError({message: "Could not determine which axis was selected"})); } }; diff --git a/src/main/js/map-graph/main/components/Map.jsx b/src/main/js/map-graph/main/components/Map.jsx index 6a7c07e02..59345077b 100644 --- a/src/main/js/map-graph/main/components/Map.jsx +++ b/src/main/js/map-graph/main/components/Map.jsx @@ -1,6 +1,6 @@ import React, { Component } from 'react'; import L from 'leaflet'; -import '../../node_modules/leaflet/dist/leaflet.css'; +import '../../../../node_modules/leaflet/dist/leaflet.css';//path from within tsTarget ts compiler output import * as LCommon from 'icos-cp-leaflet-common'; import PointReducer from '../models/PointReducer'; import {colorMaker} from "../models/colorMaker"; diff --git a/src/main/js/map-graph/main/components/test.ts b/src/main/js/map-graph/main/components/test.ts deleted file mode 100644 index 1791ce9d8..000000000 --- a/src/main/js/map-graph/main/components/test.ts +++ /dev/null @@ -1,8 +0,0 @@ -interface IPerson { - firstName: string; - lastName: string; -} - -export const greeter = (person: IPerson) => { - return "Hello, " + person.firstName + " " + person.lastName; -}; diff --git a/src/main/js/map-graph/package-lock.json b/src/main/js/map-graph/package-lock.json index 5a6967cdf..83c562386 100644 --- a/src/main/js/map-graph/package-lock.json +++ b/src/main/js/map-graph/package-lock.json @@ -1,13 +1,13 @@ { "name": "cpdata-frontend", - "version": "0.1.0", + "version": "0.2.0", "lockfileVersion": 1, "requires": true, "dependencies": { "@babel/cli": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.6.3.tgz", - "integrity": "sha512-kWKOEeuylpa781yCeA5//eEx1u3WtLZqbi2VWXLKmb3QDPb5T2f7Yk311MK7bvvjR70dluAeiu4VXXsG1WwJsw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.7.0.tgz", + "integrity": "sha512-jECEqAq6Ngf3pOhLSg7od9WKyrIacyh1oNNYtRXNn+ummSHCTXBamGywOAtiae34Vk7zKuQNnLvo2BKTMCoV4A==", "dev": true, "requires": { "chokidar": "^2.1.8", @@ -16,10 +16,17 @@ "fs-readdir-recursive": "^1.1.0", "glob": "^7.0.0", "lodash": "^4.17.13", - "mkdirp": "^0.5.1", - "output-file-sync": "^2.0.0", + "make-dir": "^2.1.0", "slash": "^2.0.0", - "source-map": "^0.6.1" + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/code-frame": { @@ -32,27 +39,36 @@ } }, "@babel/core": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.3.tgz", - "integrity": "sha512-QfQ5jTBgXLzJuo7Mo8bZK/ePywmgNRgk/UQykiKwEtZPiFIn8ZqE6jB+AnD1hbB1S2xQyL4//it5vuAUOVAMTw==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.2.tgz", + "integrity": "sha512-eeD7VEZKfhK1KUXGiyPFettgF3m513f8FoBSWiQ1xTvl1RAopLs42Wp9+Ze911I6H0N9lNqJMDgoZT7gHsipeQ==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.3", - "@babel/helpers": "^7.6.2", - "@babel/parser": "^7.6.3", - "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.3", - "@babel/types": "^7.6.3", - "convert-source-map": "^1.1.0", + "@babel/generator": "^7.7.2", + "@babel/helpers": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.7.2", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", "json5": "^2.1.0", "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", - "source-map": "^0.6.1" + "source-map": "^0.5.0" }, "dependencies": { + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -67,164 +83,188 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, "@babel/generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.3.tgz", - "integrity": "sha512-hLhYbAb3pHwxjlijC4AQ7mqZdcoujiNaW7izCT04CIowHK8psN0IN8QjDv0iyFtycF5FowUOTwDloIheI25aMw==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", "dev": true, "requires": { - "@babel/types": "^7.6.3", + "@babel/types": "^7.7.2", "jsesc": "^2.5.1", "lodash": "^4.17.13", - "source-map": "^0.6.1" + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", - "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.0.tgz", + "integrity": "sha512-k50CQxMlYTYo+GGyUGFwpxKVtxVJi9yh61sXZji3zYHccK9RYliZGSTOgci85T+r+0VFN2nWbGM04PIqwfrpMg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.7.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", - "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.0.tgz", + "integrity": "sha512-Cd8r8zs4RKDwMG/92lpZcnn5WPQ3LAMQbCw42oqUh4s7vsSN5ANUZjMel0OOnxDLq57hoDDbai+ryygYfCTOsw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-explode-assignable-expression": "^7.7.0", + "@babel/types": "^7.7.0" } }, "@babel/helper-builder-react-jsx": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz", - "integrity": "sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.7.0.tgz", + "integrity": "sha512-LSln3cexwInTMYYoFeVLKnYPPMfWNJ8PubTBs3hkh7wCu9iBaqq1OOyW+xGmEdLxT1nhsl+9SJ+h2oUDYz0l2A==", "dev": true, "requires": { - "@babel/types": "^7.3.0", + "@babel/types": "^7.7.0", "esutils": "^2.0.0" } }, "@babel/helper-call-delegate": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", - "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.0.tgz", + "integrity": "sha512-Su0Mdq7uSSWGZayGMMQ+z6lnL00mMCnGAbO/R0ZO9odIdB/WNU/VfQKqMQU0fdIsxQYbRjDM4BixIa93SQIpvw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/helper-hoist-variables": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.6.0.tgz", - "integrity": "sha512-O1QWBko4fzGju6VoVvrZg0RROCVifcLxiApnGP3OWfWzvxRZFCoBD81K5ur5e3bVY2Vf/5rIJm8cqPKn8HUJng==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.0.tgz", + "integrity": "sha512-MZiB5qvTWoyiFOgootmRSDV1udjIqJW/8lmxgzKq6oDqxdmHUjeP2ZUOmgHdYjmUVNABqRrHjYAYRvj8Eox/UA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-member-expression-to-functions": "^7.5.5", - "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-member-expression-to-functions": "^7.7.0", + "@babel/helper-optimise-call-expression": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5", - "@babel/helper-split-export-declaration": "^7.4.4" + "@babel/helper-replace-supers": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.2.tgz", + "integrity": "sha512-pAil/ZixjTlrzNpjx+l/C/wJk002Wo7XbbZ8oujH/AoJ3Juv0iN/UTcPUHXKMFLqsfS0Hy6Aow8M31brUYBlQQ==", + "dev": true, + "requires": { + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.6.0" } }, "@babel/helper-define-map": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz", - "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.0.tgz", + "integrity": "sha512-kPKWPb0dMpZi+ov1hJiwse9dWweZsz3V9rP4KdytnX1E7z3cTNmFGglwklzFPuqIcHLIY3bgKSs4vkwXXdflQA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.5.5", + "@babel/helper-function-name": "^7.7.0", + "@babel/types": "^7.7.0", "lodash": "^4.17.13" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.0.tgz", + "integrity": "sha512-CDs26w2shdD1urNUAji2RJXyBFCaR+iBEGnFz3l7maizMkQe3saVw9WtjG1tz8CwbjvlFnaSLVhgnu1SWaherg==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.7.0" } }, "@babel/helper-hoist-variables": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", - "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.0.tgz", + "integrity": "sha512-LUe/92NqsDAkJjjCEWkNe+/PcpnisvnqdlRe19FahVapa4jndeuJ+FBiTX1rcAKWKcJGE+C3Q3tuEuxkSmCEiQ==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.7.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz", - "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.0.tgz", + "integrity": "sha512-QaCZLO2RtBcmvO/ekOLp8p7R5X2JriKRizeDpm5ChATAFWrrYDcDxPuCIBXKyBjY+i1vYSdcUTMIb8psfxHDPA==", "dev": true, "requires": { - "@babel/types": "^7.5.5" + "@babel/types": "^7.7.0" } }, "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.0.tgz", + "integrity": "sha512-Dv3hLKIC1jyfTkClvyEkYP2OlkzNvWs5+Q8WgPbxM5LMeorons7iPP91JM+DU7tRbhqA1ZeooPaMFvQrn23RHw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.7.0" } }, "@babel/helper-module-transforms": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz", - "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.0.tgz", + "integrity": "sha512-rXEefBuheUYQyX4WjV19tuknrJFwyKw0HgzRwbkyTbB+Dshlq7eqkWbyjzToLrMZk/5wKVKdWFluiAsVkHXvuQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/types": "^7.5.5", + "@babel/helper-module-imports": "^7.7.0", + "@babel/helper-simple-access": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0", "lodash": "^4.17.13" } }, "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.0.tgz", + "integrity": "sha512-48TeqmbazjNU/65niiiJIJRc5JozB8acui1OS7bSd6PgxfuovWsvjfWSzlgx+gPFdVveNzUdpdIg5l56Pl5jqg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.7.0" } }, "@babel/helper-plugin-utils": { @@ -243,70 +283,70 @@ } }, "@babel/helper-remap-async-to-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", - "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.0.tgz", + "integrity": "sha512-pHx7RN8X0UNHPB/fnuDnRXVZ316ZigkO8y8D835JlZ2SSdFKb6yH9MIYRU4fy/KPe5sPHDFOPvf8QLdbAGGiyw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.7.0", + "@babel/helper-wrap-function": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" } }, "@babel/helper-replace-supers": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz", - "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.0.tgz", + "integrity": "sha512-5ALYEul5V8xNdxEeWvRsBzLMxQksT7MaStpxjJf9KsnLxpAKBtfw5NeMKZJSYDa0lKdOcy0g+JT/f5mPSulUgg==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.5.5", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5" + "@babel/helper-member-expression-to-functions": "^7.7.0", + "@babel/helper-optimise-call-expression": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" } }, "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.0.tgz", + "integrity": "sha512-AJ7IZD7Eem3zZRuj5JtzFAptBw7pMlS3y8Qv09vaBWoFsle0d1kAn5Wq6Q9MyBXITPOKnxwkZKoAm4bopmv26g==", "dev": true, "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.7.0" } }, "@babel/helper-wrap-function": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", - "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.0.tgz", + "integrity": "sha512-sd4QjeMgQqzshSjecZjOp8uKfUtnpmCyQhKQrVJBBgeHAB/0FPi33h3AbVlVp07qQtMD4QgYSzaMI7VwncNK/w==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" + "@babel/helper-function-name": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" } }, "@babel/helpers": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.2.tgz", - "integrity": "sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.0.tgz", + "integrity": "sha512-VnNwL4YOhbejHb7x/b5F39Zdg5vIQpUUNzJwx0ww1EcVRt41bbGRZWhAURrfY32T5zTT3qwNOQFWpn+P0i0a2g==", "dev": true, "requires": { - "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.2", - "@babel/types": "^7.6.0" + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" } }, "@babel/highlight": { @@ -321,36 +361,36 @@ } }, "@babel/parser": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.3.tgz", - "integrity": "sha512-sUZdXlva1dt2Vw2RqbMkmfoImubO0D0gaCrNngV6Hi0DA4x3o4mlrq0tbfY0dZEUIccH8I6wQ4qgEtwcpOR6Qg==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.0.tgz", + "integrity": "sha512-ot/EZVvf3mXtZq0Pd0+tSOfGWMizqmOohXmNZg6LNFjHOV+wOPv7BvVYh8oPR8LhpIP3ye8nNooKL50YRWxpYA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/helper-remap-async-to-generator": "^7.7.0", "@babel/plugin-syntax-async-generators": "^7.2.0" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.5.tgz", - "integrity": "sha512-AF79FsnWFxjlaosgdi421vmYG6/jg79bVD0dpD44QdgobzHKuLZ6S3vl8la9qIeSwGi8i1fS0O1mfuDAAdo1/A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.0.tgz", + "integrity": "sha512-tufDcFA1Vj+eWvwHN+jvMN6QsV5o+vUlytNKrbMiCeDL0F2j92RURzUsUMWE5EJkLyWxjdUslCsMQa9FWth16A==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.5.5", + "@babel/helper-create-class-features-plugin": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz", - "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.0.tgz", + "integrity": "sha512-7poL3Xi+QFPC7sGAzEIbXUyYzGJwbc2+gSD0AkiC5k52kH2cqHdqxm5hNFfLW3cRSTcx9bN0Fl7/6zWcLLnKAQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -388,14 +428,13 @@ } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz", - "integrity": "sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.0.tgz", + "integrity": "sha512-mk34H+hp7kRBWJOOAR0ZMGCydgKMD4iN9TpDRp3IIcbunltxEY89XSimc6WbtSLCDrwcdy/EEw7h5CFCzxTchw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" + "@babel/helper-create-regexp-features-plugin": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-async-generators": { @@ -452,6 +491,15 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.0.tgz", + "integrity": "sha512-hi8FUNiFIY1fnUI2n1ViB1DR0R4QeK4iHcTlW6aJkrPoTdb8Rf1EMQ6GT3f67DDkYyWgew9DFoOZ6gOoEsdzTA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, "@babel/plugin-syntax-typescript": { "version": "7.3.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz", @@ -471,14 +519,14 @@ } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz", - "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.0.tgz", + "integrity": "sha512-vLI2EFLVvRBL3d8roAMqtVY0Bm9C1QzLkdS57hiKrjUBSqsQYrBsMCeOg/0KK7B0eK9V71J5mWcha9yyoI2tZw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-module-imports": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" + "@babel/helper-remap-async-to-generator": "^7.7.0" } }, "@babel/plugin-transform-block-scoped-functions": { @@ -501,18 +549,18 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", - "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.0.tgz", + "integrity": "sha512-/b3cKIZwGeUesZheU9jNYcwrEA7f/Bo4IdPmvp7oHgvks2majB5BoT5byAql44fiNQYOPzhk2w8DbgfuafkMoA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.5.5", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-annotate-as-pure": "^7.7.0", + "@babel/helper-define-map": "^7.7.0", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-optimise-call-expression": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5", - "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/helper-replace-supers": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", "globals": "^11.1.0" } }, @@ -535,14 +583,13 @@ } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz", - "integrity": "sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.0.tgz", + "integrity": "sha512-3QQlF7hSBnSuM1hQ0pS3pmAbWLax/uGNCbPBND9y+oJ4Y776jsyujG2k0Sn2Aj2a0QwVOiOFL5QVPA7spjvzSA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" + "@babel/helper-create-regexp-features-plugin": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-duplicate-keys": { @@ -574,12 +621,12 @@ } }, "@babel/plugin-transform-function-name": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", - "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.0.tgz", + "integrity": "sha512-P5HKu0d9+CzZxP5jcrWdpe7ZlFDe24bmqP6a6X8BHEBl/eizAsY8K6LX8LASZL0Jxdjm5eEfzp+FIrxCm/p8bA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", + "@babel/helper-function-name": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0" } }, @@ -630,45 +677,45 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz", - "integrity": "sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.0.tgz", + "integrity": "sha512-KEMyWNNWnjOom8vR/1+d+Ocz/mILZG/eyHHO06OuBQ2aNhxT62fr4y6fGOplRx+CxCSp3IFwesL8WdINfY/3kg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.4.4", + "@babel/helper-module-transforms": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-simple-access": "^7.7.0", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", - "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.0.tgz", + "integrity": "sha512-ZAuFgYjJzDNv77AjXRqzQGlQl4HdUM6j296ee4fwKVZfhDR9LAGxfvXjBkb06gNETPnN0sLqRm9Gxg4wZH6dXg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", + "@babel/helper-hoist-variables": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.0.tgz", + "integrity": "sha512-u7eBA03zmUswQ9LQ7Qw0/ieC1pcAkbp5OQatbWUzY1PaBccvuJXUkYzoN1g7cqp7dbTu6Dp9bXyalBvD04AANA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-module-transforms": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz", - "integrity": "sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.0.tgz", + "integrity": "sha512-+SicSJoKouPctL+j1pqktRVCgy+xAch1hWWTMy13j0IflnyNjaoskj+DwRQFimHbLqO3sq2oN2CXMvXq3Bgapg==", "dev": true, "requires": { - "regexpu-core": "^4.6.0" + "@babel/helper-create-regexp-features-plugin": "^7.7.0" } }, "@babel/plugin-transform-new-target": { @@ -720,12 +767,12 @@ } }, "@babel/plugin-transform-react-jsx": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz", - "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.7.0.tgz", + "integrity": "sha512-mXhBtyVB1Ujfy+0L6934jeJcSXj/VCg6whZzEcgiiZHNS0PGC7vUCsZDQCxxztkpIdF+dY1fUMcjAgEOC3ZOMQ==", "dev": true, "requires": { - "@babel/helper-builder-react-jsx": "^7.3.0", + "@babel/helper-builder-react-jsx": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-jsx": "^7.2.0" } @@ -751,9 +798,9 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", - "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.0.tgz", + "integrity": "sha512-AXmvnC+0wuj/cFkkS/HFHIojxH3ffSXE+ttulrqWjZZRaUOonfJc60e1wSNT4rV8tIunvu/R3wCp71/tLAa9xg==", "dev": true, "requires": { "regenerator-transform": "^0.14.0" @@ -816,78 +863,78 @@ } }, "@babel/plugin-transform-typescript": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.6.3.tgz", - "integrity": "sha512-aiWINBrPMSC3xTXRNM/dfmyYuPNKY/aexYqBgh0HBI5Y+WO5oRAqW/oROYeYHrF4Zw12r9rK4fMk/ZlAmqx/FQ==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.7.2.tgz", + "integrity": "sha512-UWhDaJRqdPUtdK1s0sKYdoRuqK0NepjZto2UZltvuCgMoMZmdjhgz5hcRokie/3aYEaSz3xvusyoayVaq4PjRg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.6.0", + "@babel/helper-create-class-features-plugin": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-typescript": "^7.2.0" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz", - "integrity": "sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.0.tgz", + "integrity": "sha512-RrThb0gdrNwFAqEAAx9OWgtx6ICK69x7i9tCnMdVrxQwSDp/Abu9DXFU5Hh16VP33Rmxh04+NGW28NsIkFvFKA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" + "@babel/helper-create-regexp-features-plugin": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/preset-env": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.3.tgz", - "integrity": "sha512-CWQkn7EVnwzlOdR5NOm2+pfgSNEZmvGjOhlCHBDq0J8/EStr+G+FvPEiz9B56dR6MoiUFjXhfE4hjLoAKKJtIQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.1.tgz", + "integrity": "sha512-/93SWhi3PxcVTDpSqC+Dp4YxUu3qZ4m7I76k0w73wYfn7bGVuRIO4QUz95aJksbS+AD1/mT1Ie7rbkT0wSplaA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-module-imports": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-dynamic-import": "^7.5.0", + "@babel/plugin-proposal-async-generator-functions": "^7.7.0", + "@babel/plugin-proposal-dynamic-import": "^7.7.0", "@babel/plugin-proposal-json-strings": "^7.2.0", "@babel/plugin-proposal-object-rest-spread": "^7.6.2", "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.6.2", + "@babel/plugin-proposal-unicode-property-regex": "^7.7.0", "@babel/plugin-syntax-async-generators": "^7.2.0", "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-syntax-json-strings": "^7.2.0", "@babel/plugin-syntax-object-rest-spread": "^7.2.0", "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-syntax-top-level-await": "^7.7.0", "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.5.0", + "@babel/plugin-transform-async-to-generator": "^7.7.0", "@babel/plugin-transform-block-scoped-functions": "^7.2.0", "@babel/plugin-transform-block-scoping": "^7.6.3", - "@babel/plugin-transform-classes": "^7.5.5", + "@babel/plugin-transform-classes": "^7.7.0", "@babel/plugin-transform-computed-properties": "^7.2.0", "@babel/plugin-transform-destructuring": "^7.6.0", - "@babel/plugin-transform-dotall-regex": "^7.6.2", + "@babel/plugin-transform-dotall-regex": "^7.7.0", "@babel/plugin-transform-duplicate-keys": "^7.5.0", "@babel/plugin-transform-exponentiation-operator": "^7.2.0", "@babel/plugin-transform-for-of": "^7.4.4", - "@babel/plugin-transform-function-name": "^7.4.4", + "@babel/plugin-transform-function-name": "^7.7.0", "@babel/plugin-transform-literals": "^7.2.0", "@babel/plugin-transform-member-expression-literals": "^7.2.0", "@babel/plugin-transform-modules-amd": "^7.5.0", - "@babel/plugin-transform-modules-commonjs": "^7.6.0", - "@babel/plugin-transform-modules-systemjs": "^7.5.0", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.3", + "@babel/plugin-transform-modules-commonjs": "^7.7.0", + "@babel/plugin-transform-modules-systemjs": "^7.7.0", + "@babel/plugin-transform-modules-umd": "^7.7.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.0", "@babel/plugin-transform-new-target": "^7.4.4", "@babel/plugin-transform-object-super": "^7.5.5", "@babel/plugin-transform-parameters": "^7.4.4", "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", + "@babel/plugin-transform-regenerator": "^7.7.0", "@babel/plugin-transform-reserved-words": "^7.2.0", "@babel/plugin-transform-shorthand-properties": "^7.2.0", "@babel/plugin-transform-spread": "^7.6.2", "@babel/plugin-transform-sticky-regex": "^7.2.0", "@babel/plugin-transform-template-literals": "^7.4.4", "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.6.2", - "@babel/types": "^7.6.3", + "@babel/plugin-transform-unicode-regex": "^7.7.0", + "@babel/types": "^7.7.1", "browserslist": "^4.6.0", "core-js-compat": "^3.1.1", "invariant": "^2.2.2", @@ -1424,45 +1471,45 @@ } }, "@babel/preset-react": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.6.3.tgz", - "integrity": "sha512-07yQhmkZmRAfwREYIQgW0HEwMY9GBJVuPY4Q12UC72AbfaawuupVWa8zQs2tlL+yun45Nv/1KreII/0PLfEsgA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.7.0.tgz", + "integrity": "sha512-IXXgSUYBPHUGhUkH+89TR6faMcBtuMW0h5OHbMuVbL3/5wK2g6a2M2BBpkLa+Kw0sAHiZ9dNVgqJMDP/O4GRBA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.7.0", "@babel/plugin-transform-react-jsx-self": "^7.0.0", "@babel/plugin-transform-react-jsx-source": "^7.0.0" } }, "@babel/preset-typescript": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.6.0.tgz", - "integrity": "sha512-4xKw3tTcCm0qApyT6PqM9qniseCE79xGHiUnNdKGdxNsGUc2X7WwZybqIpnTmoukg3nhPceI5KPNzNqLNeIJww==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.7.2.tgz", + "integrity": "sha512-1B4HthAelaLGfNRyrWqJtBEjXX1ulThCrLQ5B2VOtEAznWFIFXFJahgXImqppy66lx/Oh+cOSCQdJzZqh2Jh5g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.6.0" + "@babel/plugin-transform-typescript": "^7.7.2" } }, "@babel/register": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.6.2.tgz", - "integrity": "sha512-xgZk2LRZvt6i2SAUWxc7ellk4+OYRgS3Zpsnr13nMS1Qo25w21Uu8o6vTOAqNaxiqrnv30KTYzh9YWY2k21CeQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.7.0.tgz", + "integrity": "sha512-HV3GJzTvSoyOMWGYn2TAh6uL6g+gqKTgEZ99Q3+X9UURT1VPT/WcU46R61XftIc5rXytcOHZ4Z0doDlsjPomIg==", "dev": true, "requires": { "find-cache-dir": "^2.0.0", "lodash": "^4.17.13", - "mkdirp": "^0.5.1", + "make-dir": "^2.1.0", "pirates": "^4.0.0", - "source-map-support": "^0.5.9" + "source-map-support": "^0.5.16" } }, "@babel/runtime": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz", - "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz", + "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==", "requires": { "regenerator-runtime": "^0.13.2" }, @@ -1475,28 +1522,28 @@ } }, "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" } }, "@babel/traverse": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz", - "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.3", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.3", - "@babel/types": "^7.6.3", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" @@ -1520,9 +1567,9 @@ } }, "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1530,6 +1577,71 @@ "to-fast-properties": "^2.0.0" } }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "12.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.7.tgz", + "integrity": "sha512-E6Zn0rffhgd130zbCbAr/JdXfXkoOUFAKNs/rF8qnafSJ8KYaA/j3oz7dcwal+lYjLA7xvdd5J4wdYpCTlP8+w==", + "dev": true + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ansi-colors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", @@ -1708,18 +1820,9 @@ } }, "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, "array-unique": { @@ -1953,14 +2056,14 @@ } }, "browserslist": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", - "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz", + "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000989", - "electron-to-chromium": "^1.3.247", - "node-releases": "^1.1.29" + "caniuse-lite": "^1.0.30001004", + "electron-to-chromium": "^1.3.295", + "node-releases": "^1.1.38" } }, "buffer-equal": { @@ -1999,9 +2102,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30000999", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000999.tgz", - "integrity": "sha512-1CUyKyecPeksKwXZvYw0tEoaMCo/RwBlXmEtN5vVnabvO0KPd9RQLcaAuR9/1F+KDMv6esmOFWlsXuzDk+8rxg==", + "version": "1.0.30001008", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001008.tgz", + "integrity": "sha512-b8DJyb+VVXZGRgJUa30cbk8gKHZ3LOZTBLaUEEVr2P4xpmFigOCc62CO4uzquW641Ouq1Rm9N+rWLWdSYDaDIw==", "dev": true }, "chalk": { @@ -2067,6 +2170,12 @@ "source-map": "~0.6.0" } }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -2221,12 +2330,12 @@ "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" }, "core-js-compat": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.1.tgz", - "integrity": "sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4.0.tgz", + "integrity": "sha512-pgQUcgT2+v9/yxHgMynYjNj7nmxLRXv3UC39rjCjDwpe63ev2rioQTju1PKLYUBbPCQQvZNWvQC8tBJd65q11g==", "dev": true, "requires": { - "browserslist": "^4.6.6", + "browserslist": "^4.7.2", "semver": "^6.3.0" }, "dependencies": { @@ -2383,23 +2492,25 @@ } }, "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", + "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", + "dev": true, + "requires": { + "globby": "^10.0.1", + "graceful-fs": "^4.2.2", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.1", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0" }, "dependencies": { - "pify": { + "slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true } } @@ -2410,6 +2521,23 @@ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", "dev": true }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + }, + "dependencies": { + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -2444,9 +2572,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.279", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.279.tgz", - "integrity": "sha512-iiBT/LeUWKnhd7d/n4IZsx/NIacs7gjFgAT1q5/i0POiS+5d0rVnbbyCRMmsBW7vaQJOUhWyh4PsyIVZb/Ax5Q==", + "version": "1.3.306", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.306.tgz", + "integrity": "sha512-frDqXvrIROoYvikSKTIKbHbzO6M3/qC6kCIt/1FOa9kALe++c4VAJnwjSFvf1tYLEUsP2n9XZ4XSCyqc3l7A/A==", "dev": true }, "encoding": { @@ -2679,6 +2807,82 @@ "time-stamp": "^1.0.0" } }, + "fast-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.0.tgz", + "integrity": "sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "fastq": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", + "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==", + "dev": true, + "requires": { + "reusify": "^1.0.0" + } + }, "fbjs": { "version": "0.8.17", "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", @@ -3484,22 +3688,25 @@ "dev": true }, "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", + "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" }, "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true } } @@ -3663,12 +3870,12 @@ } }, "icos-cp-backend": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/icos-cp-backend/-/icos-cp-backend-0.3.20.tgz", - "integrity": "sha512-WBr+vG2NjnuyJymSxX+J7fK233x8aHwtAL6po1zP8HsV2IhfGA1mAsoajQlI6o5Jn7l5YhKzXpCqL0G/fve3qw==", - "requires": { - "babel-runtime": "^6.20.0", - "whatwg-fetch": "^2.0.3" + "version": "file:../../../../../npms/icos-cp-backend", + "dependencies": { + "typescript": { + "version": "3.7.2", + "bundled": true + } } }, "icos-cp-fade": { @@ -3695,9 +3902,9 @@ } }, "icos-cp-leaflet-common": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/icos-cp-leaflet-common/-/icos-cp-leaflet-common-0.2.4.tgz", - "integrity": "sha512-VSfAWFT36CI9hJPOBoJx3qqI+VbxHZgTdB0M8svkKAea5vIp9nT33qDLQr2JmfmWeiOFIMw5lsCBorUlptLN/A==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/icos-cp-leaflet-common/-/icos-cp-leaflet-common-0.2.3.tgz", + "integrity": "sha1-LQmigDT3FeYBF4hWk6v6DrDqNpg=", "requires": { "babel-runtime": "^6.20.0" } @@ -3742,6 +3949,18 @@ "babel-runtime": "^6.20.0" } }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3941,33 +4160,15 @@ } }, "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", "dev": true }, "is-plain-object": { @@ -4102,14 +4303,6 @@ "dev": true, "requires": { "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } } }, "just-debounce": { @@ -4162,9 +4355,9 @@ } }, "leaflet": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.5.1.tgz", - "integrity": "sha512-ekM9KAeG99tYisNBg0IzEywAlp0hYI5XRipsqRXyRTeuU8jcuntilpp+eFf5gaE0xubc9RuSNIVtByEKwqFV0w==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.4.0.tgz", + "integrity": "sha512-x9j9tGY1+PDLN9pcWTx9/y6C5nezoTMB8BLK5jTakx+H7bPlnbCHfi9Hjg+Qt36sgDz/cb9lrSpNQXmk45Tvhw==" }, "liftoff": { "version": "3.1.0", @@ -4302,6 +4495,12 @@ "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", "dev": true }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -4339,9 +4538,9 @@ } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, "mixin-deep": { @@ -4365,15 +4564,6 @@ } } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -4434,9 +4624,9 @@ "dev": true }, "node-releases": { - "version": "1.1.35", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.35.tgz", - "integrity": "sha512-JGcM/wndCN/2elJlU0IGdVEJQQnJwsLbgPCFd2pY7V0mxf17bZ0Gb/lgOtL29ZQhvEX5shnVhxQyZz3ex94N8w==", + "version": "1.1.39", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.39.tgz", + "integrity": "sha512-8MRC/ErwNCHOlAFycy9OPca46fQYUjbJRDcZTHVWIGXIjYLM73k70vv3WkYutVnM4cCo4hE0MqBVVZjP6vjISA==", "dev": true, "requires": { "semver": "^6.3.0" @@ -4618,17 +4808,6 @@ "lcid": "^1.0.0" } }, - "output-file-sync": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", - "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "is-plain-obj": "^1.1.0", - "mkdirp": "^0.5.1" - } - }, "p-limit": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", @@ -4648,10 +4827,13 @@ } }, "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } }, "p-try": { "version": "2.2.0", @@ -4715,12 +4897,6 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", @@ -4761,6 +4937,12 @@ } } }, + "picomatch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", + "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==", + "dev": true + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -4864,9 +5046,9 @@ } }, "react": { - "version": "16.10.2", - "resolved": "https://registry.npmjs.org/react/-/react-16.10.2.tgz", - "integrity": "sha512-MFVIq0DpIhrHFyqLU0S3+4dIcBhhOvBE8bJ/5kHPVOVaGdo0KuiQzpcjCPsf585WvhypqtrMILyoE2th6dT+Lw==", + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.11.0.tgz", + "integrity": "sha512-M5Y8yITaLmU0ynd0r1Yvfq98Rmll6q8AxaEe88c8e7LxO8fZ2cNgmFt0aGAS9wzf1Ao32NKXtCl+/tVVtkxq6g==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -4874,14 +5056,14 @@ } }, "react-dom": { - "version": "16.10.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.10.2.tgz", - "integrity": "sha512-kWGDcH3ItJK4+6Pl9DZB16BXYAZyrYQItU4OMy0jAkv5aNqc+mAKb4TpFtAteI6TJZu+9ZlNhaeNQSVQDHJzkw==", + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.11.0.tgz", + "integrity": "sha512-nrRyIUE1e7j8PaXSPtyRKtz+2y9ubW/ghNgqKFHHAHaeP0fpF5uXR+sq8IMRHC+ZUxw7W9NyCDTBtwWxvkb0iA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.16.2" + "scheduler": "^0.17.0" } }, "react-is": { @@ -4890,9 +5072,9 @@ "integrity": "sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA==" }, "react-redux": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.1.1.tgz", - "integrity": "sha512-QsW0vcmVVdNQzEkrgzh2W3Ksvr8cqpAv5FhEk7tNEft+5pp7rXxAudTz3VOPawRkLIepItpkEIyLcN/VVXzjTg==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.1.3.tgz", + "integrity": "sha512-uI1wca+ECG9RoVkWQFF4jDMqmaw0/qnvaSvOoL/GA4dNxf6LoV8sUAcNDvE5NWKs4hFpn0t6wswNQnY3f7HT3w==", "requires": { "@babel/runtime": "^7.5.5", "hoist-non-react-statics": "^3.3.0", @@ -5196,15 +5378,27 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", + "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", "dev": true, "requires": { "glob": "^7.1.3" } }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -5226,9 +5420,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-BqYVWqwz6s1wZMhjFvLfVR5WXP7ZY32M/wYPo04CcuPM7XZEbV2TBNW7Z0UkguPTl0dWMA59VbNXxK6q+pHItg==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.17.0.tgz", + "integrity": "sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -5422,9 +5616,9 @@ } }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -5748,6 +5942,12 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "typescript": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", + "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==", + "dev": true + }, "ua-parser-js": { "version": "0.7.20", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", diff --git a/src/main/js/map-graph/package.json b/src/main/js/map-graph/package.json index 95a9b4ca3..ca7a8d312 100644 --- a/src/main/js/map-graph/package.json +++ b/src/main/js/map-graph/package.json @@ -1,13 +1,13 @@ { "name": "cpdata-frontend", - "version": "0.1.0", + "version": "0.2.0", "private": true, - "description": "Carbon Portal Data Service", + "description": "Carbon Portal visualization for marine VOS time series", "main": "gulpfile.babel.js", "scripts": { - "default": "gulp publish", - "publish": "gulp publish", - "build": "gulp buildWatch", + "default": "./publish.sh", + "publish": "./publish.sh", + "build": "./build.sh", "gulp": "gulp" }, "repository": { @@ -18,12 +18,13 @@ "ICOS", "Carbon", "Portal", - "NetCDF", + "VOS", + "OTC", "data" ], "contributors": [ - "Oleg Mirzov", "Roger Groth", + "Oleg Mirzov", "Jonathan Thiry" ], "license": "ISC", @@ -33,8 +34,7 @@ "homepage": "https://github.com/ICOS-Carbon-Portal/data#readme", "babel": { "presets": [ - "@babel/preset-env", - "@babel/typescript" + "@babel/preset-env" ], "plugins": [ "@babel/proposal-class-properties", @@ -42,36 +42,37 @@ ] }, "devDependencies": { - "@babel/cli": "^7.4.3", - "@babel/core": "^7.4.3", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/preset-env": "^7.4.3", - "@babel/preset-es2015": "^7.0.0-beta.53", - "@babel/preset-react": "^7.0.0", - "@babel/register": "^7.4.4", - "@babel/plugin-proposal-class-properties": "^7.4.4", - "@babel/plugin-proposal-object-rest-spread": "^7.4.4", - "@babel/preset-typescript": "^7.3.3", - "gulp-replace": "^1.0.0", - "del": "^3.0.0", - "gulp": "^4.0.1", - "browserify-css": "^0.15.0" + "@babel/cli": "7.7.0", + "@babel/core": "7.7.2", + "@babel/plugin-syntax-dynamic-import": "7.2.0", + "@babel/preset-env": "7.7.1", + "@babel/preset-es2015": "7.0.0-beta.53", + "@babel/preset-react": "7.7.0", + "@babel/register": "7.7.0", + "@babel/plugin-proposal-class-properties": "7.7.0", + "@babel/plugin-proposal-object-rest-spread": "7.6.2", + "@babel/preset-typescript": "7.7.2", + "gulp-replace": "1.0.0", + "del": "5.1.0", + "gulp": "4.0.2", + "browserify-css": "0.15.0", + "typescript": "3.7.2" }, "dependencies": { - "babel-polyfill": "^6.26.0", - "deep-equal": "^1.0.1", - "dygraphs": "^2.1.0", - "icos-cp-backend": "^0.3.9", - "icos-cp-leaflet-common": "^0.2.3", - "icos-cp-spatial": "^0.2.1", - "icos-cp-toaster": "^0.5.1", - "icos-cp-utils": "^0.1.5", - "leaflet": "^1.4.0", - "react": "^16.8.6", - "react-dom": "^16.8.6", - "react-redux": "^7.0.3", - "redux": "^4.0.1", - "redux-thunk": "^2.3.0", - "topojson": "^3.0.2" + "babel-polyfill": "6.26.0", + "deep-equal": "1.1.0", + "dygraphs": "2.1.0", + "icos-cp-backend": "file:///home/oleg/workspace/npms/icos-cp-backend/", + "icos-cp-leaflet-common": "0.2.3", + "icos-cp-spatial": "0.2.1", + "icos-cp-toaster": "0.5.1", + "icos-cp-utils": "0.1.5", + "leaflet": "1.4.0", + "react": "16.11.0", + "react-dom": "16.11.0", + "react-redux": "7.1.3", + "redux": "4.0.4", + "redux-thunk": "2.3.0", + "topojson": "3.0.2" } } diff --git a/src/main/js/map-graph/publish.sh b/src/main/js/map-graph/publish.sh new file mode 100755 index 000000000..8b7aeef4e --- /dev/null +++ b/src/main/js/map-graph/publish.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +rm -rf ./tsTarget/* ; npx tsc ; gulp publish diff --git a/src/main/js/map-graph/tsconfig.json b/src/main/js/map-graph/tsconfig.json new file mode 100644 index 000000000..bd55cab67 --- /dev/null +++ b/src/main/js/map-graph/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "outDir": "./tsTarget/", + "removeComments": true, + "build": true, + // Enable incremental compilation by reading/writing information from prior compilations to a file on disk. This file is controlled by the --tsBuildInfoFile flag. + "incremental": true, + // Specify what file to store incremental build information in. + "tsBuildInfoFile": "./tsTarget/tsBuildInfoFile", + "skipLibCheck": true, + "jsx": "preserve", + // Target latest version of ECMAScript. + "target": "esnext", + // Search under node_modules for non-relative imports. + "moduleResolution": "node", + // Process & infer types from .js files. + "allowJs": true, + // Enable strictest settings like strictNullChecks & noImplicitAny. + "strict": true, + // Import non-ES modules as default imports. + "esModuleInterop": true + }, + "include": [ + "main/**/*.js", + "main/**/*.jsx", + "main/**/*.ts", + "../common/main/**/*.js", + "../common/main/**/*.ts" + ] +} From 27ee09aa172aec9cc610dd6a429035a9800d43d2 Mon Sep 17 00:00:00 2001 From: Oleg Mirzov Date: Thu, 14 Nov 2019 16:01:24 +0100 Subject: [PATCH 06/16] [portal][stats] Fixing a bug in SPARQL query. Bash script for dl-stats fetching. --- src/main/bash/dlStats.sh | 44 ++++++++++++++++++++++++ src/main/js/portal/main/sparqlQueries.ts | 2 +- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100755 src/main/bash/dlStats.sh diff --git a/src/main/bash/dlStats.sh b/src/main/bash/dlStats.sh new file mode 100755 index 000000000..c747f3f54 --- /dev/null +++ b/src/main/bash/dlStats.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# ICOS Sweden filter: +# --data-urlencode 'filter={"dobj.submission.submitter.self.uri": "http://meta.icos-cp.eu/resources/organizations/icosSweden"}' \ + +# Data L2 filter: +# --data-urlencode 'filter={"dobj.specification.dataLevel": 2}' \ + +# Lund University downloads filter: +# --data-urlencode 'filter={"ip": {"$regex": "^130\\.235.*"}}' \ + +function getDlStats { + STATION_ID=$1 + YEAR=$2 + + echo -n $STATION_ID $YEAR' ' + + curl -s -G \ + --data-urlencode 'filter={"dobj.specificInfo.acquisition.station.id": "'$STATION_ID'"}' \ + --data-urlencode 'filter={"ip": {"$regex": "^130\\.235.*"}}' \ + --data-urlencode 'filter={"time": {"$regex": "^'$YEAR'.*"}}' \ + 'https://restheart.icos-cp.eu/db/dobjdls?np&count&hal=f&pagesize=1' \ + | jq -r '._size' +} + +# for STATION_ID in HTM NOR SVB 'SE-Deg' 'SE-Htm' 'SE-Lnn' 'SE-Nor' 'SE-Sto' 'SE-Svb' 'SE-Oes'; do +# for YEAR in 2017 2018 2019; do +# sleep 0 +# getDlStats $STATION_ID $YEAR +# done +# done + +function saveGeoStats { + FILENAME=$1 + + curl -s -G \ + --data-urlencode 'keys={"country_code": 1, "_id": 0}' \ + --data-urlencode 'filter={"dobj.specificInfo.acquisition.station.id": {"$in": ["HTM", "NOR", "SVB", "SE-Deg", "SE_Htm", "SE-Lnn", "SE-Nor", "SE-Sto", "SE-Oes"]}}' \ + 'https://restheart.icos-cp.eu/db/dobjdls?np&pagesize=1000000' > $FILENAME + + cat $FILENAME | jq -r '.[] | [.country_code] | @tsv' | sort | uniq -c +} + +saveGeoStats geoStats.json \ No newline at end of file diff --git a/src/main/js/portal/main/sparqlQueries.ts b/src/main/js/portal/main/sparqlQueries.ts index cca86eab9..4b64739a0 100644 --- a/src/main/js/portal/main/sparqlQueries.ts +++ b/src/main/js/portal/main/sparqlQueries.ts @@ -160,7 +160,7 @@ export const listFilteredDataObjects = (options: any): Query<"dobj" | "spec" | " const submitterSearch = isEmpty(submitters) ? '' : `VALUES ?submitter {<${submitters.join('> <')}>} - ?dobj cpmeta:wasSubmittedBy/prov:wasAssociatedWith ?submitter`; + ?dobj cpmeta:wasSubmittedBy/prov:wasAssociatedWith ?submitter .`; const dobjStation = '?dobj cpmeta:wasAcquiredBy/prov:wasAssociatedWith '; From ad76e81951031ae402d9a0a3f39923b754a21b76 Mon Sep 17 00:00:00 2001 From: Jonathan Thiry Date: Tue, 19 Nov 2019 13:19:55 +0100 Subject: [PATCH 07/16] [portal] Show spec names until comma in title The specification label is cut after the first comma when it is displayed in a title on the SITES data portal. --- .../main/components/searchResult/SearchResultTableRow.jsx | 3 ++- src/main/js/portal/main/containers/Metadata.jsx | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/js/portal/main/components/searchResult/SearchResultTableRow.jsx b/src/main/js/portal/main/components/searchResult/SearchResultTableRow.jsx index 3d0f54502..92dc8056f 100644 --- a/src/main/js/portal/main/components/searchResult/SearchResultTableRow.jsx +++ b/src/main/js/portal/main/components/searchResult/SearchResultTableRow.jsx @@ -36,7 +36,8 @@ export default class SimpleObjectTableRow extends Component{ const location = extendedInfo && (extendedInfo.site ? extendedInfo.site : extendedInfo.station ? extendedInfo.station.trim() : undefined); const locationString = location ? ` from ${location}` : ''; const dateString = `${formatDate(objInfo.timeStart)} \u2013 ${formatDate(objInfo.timeEnd)}`; - const title = extendedInfo && extendedInfo.title ? extendedInfo.title : `${objInfo.specLabel}${locationString}, ${dateString}`; + const specLabel = config.envri === "SITES" ? objInfo.specLabel.substr(0, objInfo.specLabel.indexOf(',')) : objInfo.specLabel; + const title = extendedInfo && extendedInfo.title ? extendedInfo.title : `${specLabel}${locationString}, ${dateString}`; const samplingHeight = extendedInfo && extendedInfo.samplingHeight ? extendedInfo.samplingHeight + ' meters' : undefined; const checkboxDisabled = objInfo.level === 0; const checkBtnTitle = checkboxDisabled diff --git a/src/main/js/portal/main/containers/Metadata.jsx b/src/main/js/portal/main/containers/Metadata.jsx index 3021277a8..5f445dd3a 100644 --- a/src/main/js/portal/main/containers/Metadata.jsx +++ b/src/main/js/portal/main/containers/Metadata.jsx @@ -4,6 +4,7 @@ import PreviewBtn from '../components/buttons/PreviewBtn.jsx'; import { formatBytes, formatDate, formatDateTime } from '../utils'; import commonConfig from '../../../common/main/config'; import {LinkifyText} from "../components/LinkifyText"; +import config from '../config'; export default class Metadata extends Component { constructor(props) { @@ -171,11 +172,15 @@ export default class Metadata extends Component { export const MetadataTitle = props => { const { metadata } = props; const station = metadata && metadata.specificInfo && metadata.specificInfo.acquisition && metadata.specificInfo.acquisition.station; + const specLabel = metadata && config.envri === "SITES" + ? metadata.specification.self.label.substr(0, metadata.specification.self.label.indexOf(',')) + : metadata.specification.self.label; + return ( {metadata && metadata.specificInfo &&

- {metadata.specificInfo.title || metadata.specification.self.label} + {metadata.specificInfo.title || specLabel} {station && from {station.name}} {metadata.specificInfo.acquisition && caption(new Date(metadata.specificInfo.acquisition.interval.start), new Date(metadata.specificInfo.acquisition.interval.stop)) From 0097635e0832756a74c2a879a88a4acf42b30946 Mon Sep 17 00:00:00 2001 From: Jonathan Thiry Date: Tue, 19 Nov 2019 13:20:14 +0100 Subject: [PATCH 08/16] [portal] Remove SITES disclaimer --- src/main/js/portal/main/containers/App.jsx | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/main/js/portal/main/containers/App.jsx b/src/main/js/portal/main/containers/App.jsx index a56455140..dd921de48 100644 --- a/src/main/js/portal/main/containers/App.jsx +++ b/src/main/js/portal/main/containers/App.jsx @@ -45,9 +45,6 @@ export class App extends Component { />
- - - { } }; -const Disclaimer = () => { - return( - config.envri === "SITES" && - <div className="alert alert-warning" role="alert"> - <strong>Please note!</strong>  - The data portal is currently for preview only and is presenting test data. - </div> - ); -}; - function stateToProps(state){ return { lookup: state.lookup, From 128f291491c52e9c92bff0872b99ece37e63e5d3 Mon Sep 17 00:00:00 2001 From: Jonathan Thiry <github@jonathanthiry.com> Date: Wed, 20 Nov 2019 09:39:33 +0100 Subject: [PATCH 09/16] [portal] Update data level help text for SITES --- src/main/js/portal/main/models/HelpStorage.js | 75 ++++++++++++------- 1 file changed, 50 insertions(+), 25 deletions(-) diff --git a/src/main/js/portal/main/models/HelpStorage.js b/src/main/js/portal/main/models/HelpStorage.js index d072f5699..819aed0d4 100644 --- a/src/main/js/portal/main/models/HelpStorage.js +++ b/src/main/js/portal/main/models/HelpStorage.js @@ -109,31 +109,56 @@ const initItems = [ new Item( 'level', titles.level, - envri + ' distinguishes 4 levels of data in terms of how processed they are (ranging from raw data to modelling results):', - parseResourceInfo([ - { - label: 0, - comment: 'Data in physical units either directly provided by the instruments or converted from engineer units (e.g. mV, mA, Ω) to' + - ' physical units at the Thematic Centre. They may have been filtered by a quality check (e.g. thresholds).', - webpage: 'https://www.icos-cp.eu/about-icos-data#Sect2' - }, - { - label: 1, - comment: 'Near Real Time Data (NRT) or Internal Work data (IW).', - webpage: 'https://www.icos-cp.eu/about-icos-data#Sect2' - }, - { - label: 2, - comment: 'The final quality checked ICOS RI data set, published by the CFs, to be distributed through the Carbon Portal. This level is' + - ' the ICOS-data product and free available for users.', - webpage: 'https://www.icos-cp.eu/about-icos-data#Sect2' - }, - { - label: 3, - comment: 'All kinds of elaborated products by scientific communities that rely on ICOS data products are called Level 3 data.', - webpage: 'https://www.icos-cp.eu/about-icos-data#Sect2' - } - ]) + envri + ' distinguishes 4 levels of data in terms of how processed they are' + (envri === 'ICOS' ? ' (ranging from raw data to modelling results)' : '') + ':', + envri === 'SITES' + ? parseResourceInfo([ + { + label: 0, + comment: 'Unprocessed instrument or digtalized data at full time resolution with all available supplemental information to be used in' + + ' subsequent processing. Stored internally but not distributed by the Data Portal.Data are in physical units either directly provided' + + ' by the instruments or converted from engineer units.' + }, + { + label: 1, + comment: 'Calibrated, quality filtered internal working data in physical units. In case L0 data are already calibrated, L0 and L1 are' + + ' identical. L1 is internal working data that is generated as intermediate steps in the data processing for Level 2. Level 1 data is of' + + ' intended for internal use and normally not distributed by the Data Portal.' + }, + { + label: 2, + comment: 'Quality checked SITES data product. It is calibrated, quality filtered data in physical units, a aggregated to appropariate,' + + ' and within SITES community agreed, spatial and temporal output units and resolution. Distributed by the Data Portal.' + }, + { + label: 3, + comment: 'Environmental variables or products produced by SITES or anywere in the scientific community. The product is derived from' + + ' SITES L1 or L2 data Distributed by the Data Portal.' + } + ]) + : parseResourceInfo([ + { + label: 0, + comment: 'Data in physical units either directly provided by the instruments or converted from engineer units (e.g. mV, mA, Ω) to' + + ' physical units at the Thematic Centre. They may have been filtered by a quality check (e.g. thresholds).', + webpage: 'https://www.icos-cp.eu/about-icos-data#Sect2' + }, + { + label: 1, + comment: 'Near Real Time Data (NRT) or Internal Work data (IW).', + webpage: 'https://www.icos-cp.eu/about-icos-data#Sect2' + }, + { + label: 2, + comment: 'The final quality checked ICOS RI data set, published by the CFs, to be distributed through the Carbon Portal. This level is' + + ' the ICOS-data product and free available for users.', + webpage: 'https://www.icos-cp.eu/about-icos-data#Sect2' + }, + { + label: 3, + comment: 'All kinds of elaborated products by scientific communities that rely on ICOS data products are called Level 3 data.', + webpage: 'https://www.icos-cp.eu/about-icos-data#Sect2' + } + ]) ), new Item('format', titles.format, 'Technical file format, indicating which software module is needed to read the data'), From 84aa99b875d16a79f81f1a17d3bda75e8f135557 Mon Sep 17 00:00:00 2001 From: Jonathan Thiry <github@jonathanthiry.com> Date: Wed, 20 Nov 2019 09:55:13 +0100 Subject: [PATCH 10/16] [portal] Fix title breaking the page --- src/main/js/portal/main/containers/Metadata.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/js/portal/main/containers/Metadata.jsx b/src/main/js/portal/main/containers/Metadata.jsx index 5f445dd3a..1c3f1548f 100644 --- a/src/main/js/portal/main/containers/Metadata.jsx +++ b/src/main/js/portal/main/containers/Metadata.jsx @@ -172,9 +172,9 @@ export default class Metadata extends Component { export const MetadataTitle = props => { const { metadata } = props; const station = metadata && metadata.specificInfo && metadata.specificInfo.acquisition && metadata.specificInfo.acquisition.station; - const specLabel = metadata && config.envri === "SITES" + const specLabel = metadata && metadata.specification && (config.envri === "SITES" ? metadata.specification.self.label.substr(0, metadata.specification.self.label.indexOf(',')) - : metadata.specification.self.label; + : metadata.specification.self.label); return ( <React.Fragment> From 7be8a902595271e56e53a60719aa22d793a12fd2 Mon Sep 17 00:00:00 2001 From: Jonathan Thiry <github@jonathanthiry.com> Date: Wed, 20 Nov 2019 12:57:08 +0100 Subject: [PATCH 11/16] Require npm 6.12 or later --- src/main/js/common/.npmrc | 1 + src/main/js/common/package-lock.json | 41 +++++++++++++++------ src/main/js/common/package.json | 3 ++ src/main/js/dashboard/.npmrc | 1 + src/main/js/dashboard/package-lock.json | 41 +++++++++++++++------ src/main/js/dashboard/package.json | 3 ++ src/main/js/dygraph-light/.npmrc | 1 + src/main/js/dygraph-light/package-lock.json | 41 +++++++++++++++------ src/main/js/dygraph-light/package.json | 3 ++ src/main/js/map-graph/.npmrc | 1 + src/main/js/map-graph/package-lock.json | 41 +++++++++++++++------ src/main/js/map-graph/package.json | 3 ++ src/main/js/netcdf/.npmrc | 1 + src/main/js/netcdf/package-lock.json | 41 +++++++++++++++------ src/main/js/netcdf/package.json | 3 ++ src/main/js/portal/.npmrc | 1 + src/main/js/portal/package-lock.json | 41 +++++++++++++++------ src/main/js/portal/package.json | 3 ++ src/main/js/stats/.npmrc | 1 + src/main/js/stats/package-lock.json | 41 +++++++++++++++------ src/main/js/stats/package.json | 3 ++ src/main/js/wdcgg/.npmrc | 1 + src/main/js/wdcgg/package-lock.json | 41 +++++++++++++++------ src/main/js/wdcgg/package.json | 3 ++ 24 files changed, 272 insertions(+), 88 deletions(-) create mode 100644 src/main/js/common/.npmrc create mode 100644 src/main/js/dashboard/.npmrc create mode 100644 src/main/js/dygraph-light/.npmrc create mode 100644 src/main/js/map-graph/.npmrc create mode 100644 src/main/js/netcdf/.npmrc create mode 100644 src/main/js/portal/.npmrc create mode 100644 src/main/js/stats/.npmrc create mode 100644 src/main/js/wdcgg/.npmrc diff --git a/src/main/js/common/.npmrc b/src/main/js/common/.npmrc new file mode 100644 index 000000000..b6f27f135 --- /dev/null +++ b/src/main/js/common/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/src/main/js/common/package-lock.json b/src/main/js/common/package-lock.json index 77a9fdccb..006213a54 100644 --- a/src/main/js/common/package-lock.json +++ b/src/main/js/common/package-lock.json @@ -1926,7 +1926,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -1947,12 +1948,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1967,17 +1970,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2094,7 +2100,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2106,6 +2113,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2120,6 +2128,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2127,12 +2136,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2151,6 +2162,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2231,7 +2243,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2243,6 +2256,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -2328,7 +2342,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2364,6 +2379,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2383,6 +2399,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2426,12 +2443,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/main/js/common/package.json b/src/main/js/common/package.json index b11a2acfe..7aaee1a2b 100644 --- a/src/main/js/common/package.json +++ b/src/main/js/common/package.json @@ -1,6 +1,9 @@ { "name": "cpdata-frontend", "version": "0.1.0", + "engines": { + "npm": ">=6.12.0" + }, "private": true, "description": "Carbon Portal Data Service", "repository": { diff --git a/src/main/js/dashboard/.npmrc b/src/main/js/dashboard/.npmrc new file mode 100644 index 000000000..b6f27f135 --- /dev/null +++ b/src/main/js/dashboard/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/src/main/js/dashboard/package-lock.json b/src/main/js/dashboard/package-lock.json index 3773c5388..b9375175a 100644 --- a/src/main/js/dashboard/package-lock.json +++ b/src/main/js/dashboard/package-lock.json @@ -2827,7 +2827,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2848,12 +2849,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2868,17 +2871,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2995,7 +3001,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3007,6 +3014,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3021,6 +3029,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3028,12 +3037,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3052,6 +3063,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3132,7 +3144,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3144,6 +3157,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3229,7 +3243,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3265,6 +3280,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3284,6 +3300,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3327,12 +3344,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/main/js/dashboard/package.json b/src/main/js/dashboard/package.json index 3f1fee797..489c399aa 100644 --- a/src/main/js/dashboard/package.json +++ b/src/main/js/dashboard/package.json @@ -1,6 +1,9 @@ { "name": "cpdata-dashboard", "version": "0.1.0", + "engines": { + "npm": ">=6.12.0" + }, "private": true, "description": "Carbon Portal Data Service", "main": "gulpfile.babel.js", diff --git a/src/main/js/dygraph-light/.npmrc b/src/main/js/dygraph-light/.npmrc new file mode 100644 index 000000000..b6f27f135 --- /dev/null +++ b/src/main/js/dygraph-light/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/src/main/js/dygraph-light/package-lock.json b/src/main/js/dygraph-light/package-lock.json index 3f5209663..791bbb5ec 100644 --- a/src/main/js/dygraph-light/package-lock.json +++ b/src/main/js/dygraph-light/package-lock.json @@ -2790,7 +2790,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2811,12 +2812,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2831,17 +2834,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2958,7 +2964,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2970,6 +2977,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2984,6 +2992,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2991,12 +3000,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3015,6 +3026,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3095,7 +3107,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3107,6 +3120,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3192,7 +3206,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3228,6 +3243,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3247,6 +3263,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3290,12 +3307,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/main/js/dygraph-light/package.json b/src/main/js/dygraph-light/package.json index 03710a205..f0956b731 100644 --- a/src/main/js/dygraph-light/package.json +++ b/src/main/js/dygraph-light/package.json @@ -1,6 +1,9 @@ { "name": "cpdata-frontend", "version": "0.1.0", + "engines": { + "npm": ">=6.12.0" + }, "private": true, "description": "Carbon Portal Data Service", "main": "gulpfile.babel.js", diff --git a/src/main/js/map-graph/.npmrc b/src/main/js/map-graph/.npmrc new file mode 100644 index 000000000..b6f27f135 --- /dev/null +++ b/src/main/js/map-graph/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/src/main/js/map-graph/package-lock.json b/src/main/js/map-graph/package-lock.json index 5a6967cdf..1d35ec17a 100644 --- a/src/main/js/map-graph/package-lock.json +++ b/src/main/js/map-graph/package-lock.json @@ -2860,7 +2860,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2881,12 +2882,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2901,17 +2904,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3028,7 +3034,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3040,6 +3047,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3054,6 +3062,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3061,12 +3070,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3085,6 +3096,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3165,7 +3177,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3177,6 +3190,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3262,7 +3276,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3298,6 +3313,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3317,6 +3333,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3360,12 +3377,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/main/js/map-graph/package.json b/src/main/js/map-graph/package.json index 95a9b4ca3..6a237a603 100644 --- a/src/main/js/map-graph/package.json +++ b/src/main/js/map-graph/package.json @@ -1,6 +1,9 @@ { "name": "cpdata-frontend", "version": "0.1.0", + "engines": { + "npm": ">=6.12.0" + }, "private": true, "description": "Carbon Portal Data Service", "main": "gulpfile.babel.js", diff --git a/src/main/js/netcdf/.npmrc b/src/main/js/netcdf/.npmrc new file mode 100644 index 000000000..b6f27f135 --- /dev/null +++ b/src/main/js/netcdf/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/src/main/js/netcdf/package-lock.json b/src/main/js/netcdf/package-lock.json index f5a44bac4..f912ac6d2 100644 --- a/src/main/js/netcdf/package-lock.json +++ b/src/main/js/netcdf/package-lock.json @@ -2799,7 +2799,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2820,12 +2821,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2840,17 +2843,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2967,7 +2973,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2979,6 +2986,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2993,6 +3001,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3000,12 +3009,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3024,6 +3035,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3104,7 +3116,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3116,6 +3129,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3201,7 +3215,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3237,6 +3252,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3256,6 +3272,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3299,12 +3316,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/main/js/netcdf/package.json b/src/main/js/netcdf/package.json index bae99b863..906582c2f 100644 --- a/src/main/js/netcdf/package.json +++ b/src/main/js/netcdf/package.json @@ -1,6 +1,9 @@ { "name": "cpdata-frontend", "version": "0.1.0", + "engines": { + "npm": ">=6.12.0" + }, "private": true, "description": "Carbon Portal Data Service", "main": "gulpfile.babel.js", diff --git a/src/main/js/portal/.npmrc b/src/main/js/portal/.npmrc new file mode 100644 index 000000000..b6f27f135 --- /dev/null +++ b/src/main/js/portal/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/src/main/js/portal/package-lock.json b/src/main/js/portal/package-lock.json index ed18bed38..8862cfec8 100644 --- a/src/main/js/portal/package-lock.json +++ b/src/main/js/portal/package-lock.json @@ -3796,7 +3796,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -3817,12 +3818,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3837,17 +3840,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3964,7 +3970,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3976,6 +3983,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3990,6 +3998,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3997,12 +4006,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -4021,6 +4032,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -4101,7 +4113,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -4113,6 +4126,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -4198,7 +4212,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -4234,6 +4249,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -4253,6 +4269,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -4296,12 +4313,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/main/js/portal/package.json b/src/main/js/portal/package.json index 58a8bad06..d99d64691 100644 --- a/src/main/js/portal/package.json +++ b/src/main/js/portal/package.json @@ -1,6 +1,9 @@ { "name": "cpdata-frontend", "version": "0.1.0", + "engines": { + "npm": ">=6.12.0" + }, "private": true, "description": "Carbon Portal Data Service", "main": "gulpfile.babel.js", diff --git a/src/main/js/stats/.npmrc b/src/main/js/stats/.npmrc new file mode 100644 index 000000000..b6f27f135 --- /dev/null +++ b/src/main/js/stats/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/src/main/js/stats/package-lock.json b/src/main/js/stats/package-lock.json index 01a822097..d263416da 100644 --- a/src/main/js/stats/package-lock.json +++ b/src/main/js/stats/package-lock.json @@ -2836,7 +2836,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2857,12 +2858,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2877,17 +2880,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3004,7 +3010,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3016,6 +3023,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3030,6 +3038,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3037,12 +3046,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3061,6 +3072,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3141,7 +3153,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3153,6 +3166,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3238,7 +3252,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3274,6 +3289,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3293,6 +3309,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3336,12 +3353,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/main/js/stats/package.json b/src/main/js/stats/package.json index 2fbbe6b17..71b152115 100644 --- a/src/main/js/stats/package.json +++ b/src/main/js/stats/package.json @@ -1,6 +1,9 @@ { "name": "cpdata-frontend", "version": "0.1.0", + "engines": { + "npm": ">=6.12.0" + }, "private": true, "description": "Carbon Portal Data Service", "main": "gulpfile.babel.js", diff --git a/src/main/js/wdcgg/.npmrc b/src/main/js/wdcgg/.npmrc new file mode 100644 index 000000000..b6f27f135 --- /dev/null +++ b/src/main/js/wdcgg/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/src/main/js/wdcgg/package-lock.json b/src/main/js/wdcgg/package-lock.json index d840da8ae..b2bddb6be 100644 --- a/src/main/js/wdcgg/package-lock.json +++ b/src/main/js/wdcgg/package-lock.json @@ -3106,7 +3106,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -3127,12 +3128,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3147,17 +3150,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3274,7 +3280,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3286,6 +3293,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3300,6 +3308,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3307,12 +3316,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3331,6 +3342,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3411,7 +3423,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3423,6 +3436,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3508,7 +3522,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3544,6 +3559,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3563,6 +3579,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3606,12 +3623,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/main/js/wdcgg/package.json b/src/main/js/wdcgg/package.json index b927016f8..2fea5d029 100644 --- a/src/main/js/wdcgg/package.json +++ b/src/main/js/wdcgg/package.json @@ -1,6 +1,9 @@ { "name": "cpdata-frontend", "version": "0.1.0", + "engines": { + "npm": ">=6.12.0" + }, "private": true, "description": "Carbon Portal Data Service", "main": "gulpfile.babel.js", From 16214b1806a005a94ce91a26b57fcaed4b861d4a Mon Sep 17 00:00:00 2001 From: Oleg Mirzov <oleg.mirzov@nateko.lu.se> Date: Thu, 21 Nov 2019 15:50:29 +0100 Subject: [PATCH 12/16] [map-graph] Switching to ts-based icos-cp-backend 0.4.0; other projs stay on 0.3.20 --- src/main/js/common/package-lock.json | 41 ++++++++--- src/main/js/dashboard/package-lock.json | 41 ++++++++--- src/main/js/dashboard/package.json | 2 +- src/main/js/dygraph-light/package-lock.json | 41 ++++++++--- src/main/js/dygraph-light/package.json | 2 +- .../map-graph/main/{backend.js => backend.ts} | 11 ++- .../{BinTableData.js => BinTableData.ts} | 43 ++++++----- src/main/js/map-graph/main/sparqlQueries.js | 9 --- src/main/js/map-graph/main/sparqlQueries.ts | 19 +++++ src/main/js/map-graph/main/store.js | 18 ++--- src/main/js/map-graph/package-lock.json | 72 ++++++++++++++----- src/main/js/map-graph/package.json | 2 +- src/main/js/netcdf/package-lock.json | 41 ++++++++--- src/main/js/netcdf/package.json | 2 +- src/main/js/portal/package-lock.json | 41 ++++++++--- src/main/js/portal/package.json | 2 +- src/main/js/stats/package-lock.json | 41 ++++++++--- src/main/js/stats/package.json | 2 +- src/main/js/wdcgg/package-lock.json | 41 ++++++++--- src/main/js/wdcgg/package.json | 2 +- 20 files changed, 330 insertions(+), 143 deletions(-) rename src/main/js/map-graph/main/{backend.js => backend.ts} (67%) rename src/main/js/map-graph/main/models/{BinTableData.js => BinTableData.ts} (57%) delete mode 100644 src/main/js/map-graph/main/sparqlQueries.js create mode 100644 src/main/js/map-graph/main/sparqlQueries.ts diff --git a/src/main/js/common/package-lock.json b/src/main/js/common/package-lock.json index 77a9fdccb..006213a54 100644 --- a/src/main/js/common/package-lock.json +++ b/src/main/js/common/package-lock.json @@ -1926,7 +1926,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -1947,12 +1948,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1967,17 +1970,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2094,7 +2100,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2106,6 +2113,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2120,6 +2128,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2127,12 +2136,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2151,6 +2162,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2231,7 +2243,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2243,6 +2256,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -2328,7 +2342,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2364,6 +2379,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2383,6 +2399,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2426,12 +2443,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/main/js/dashboard/package-lock.json b/src/main/js/dashboard/package-lock.json index 3773c5388..b9375175a 100644 --- a/src/main/js/dashboard/package-lock.json +++ b/src/main/js/dashboard/package-lock.json @@ -2827,7 +2827,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2848,12 +2849,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2868,17 +2871,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2995,7 +3001,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3007,6 +3014,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3021,6 +3029,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3028,12 +3037,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3052,6 +3063,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3132,7 +3144,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3144,6 +3157,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3229,7 +3243,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3265,6 +3280,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3284,6 +3300,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3327,12 +3344,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/main/js/dashboard/package.json b/src/main/js/dashboard/package.json index 3f1fee797..2b3449508 100644 --- a/src/main/js/dashboard/package.json +++ b/src/main/js/dashboard/package.json @@ -58,7 +58,7 @@ }, "dependencies": { "deep-equal": "^1.0.1", - "icos-cp-backend": "^0.3.5", + "icos-cp-backend": "0.3.20", "icos-cp-toaster": "^0.5.1", "icos-cp-utils": "^0.1.5", "react": "^16.8.6", diff --git a/src/main/js/dygraph-light/package-lock.json b/src/main/js/dygraph-light/package-lock.json index 3f5209663..791bbb5ec 100644 --- a/src/main/js/dygraph-light/package-lock.json +++ b/src/main/js/dygraph-light/package-lock.json @@ -2790,7 +2790,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2811,12 +2812,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2831,17 +2834,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2958,7 +2964,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2970,6 +2977,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2984,6 +2992,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2991,12 +3000,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3015,6 +3026,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3095,7 +3107,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3107,6 +3120,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3192,7 +3206,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3228,6 +3243,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3247,6 +3263,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3290,12 +3307,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/main/js/dygraph-light/package.json b/src/main/js/dygraph-light/package.json index 03710a205..416432ee4 100644 --- a/src/main/js/dygraph-light/package.json +++ b/src/main/js/dygraph-light/package.json @@ -61,7 +61,7 @@ "dependencies": { "babel-polyfill": "^6.13.0", "dygraphs": "^2.1.0", - "icos-cp-backend": "^0.3.10", + "icos-cp-backend": "0.3.20", "icos-cp-spinner": "^0.1.4" } } diff --git a/src/main/js/map-graph/main/backend.js b/src/main/js/map-graph/main/backend.ts similarity index 67% rename from src/main/js/map-graph/main/backend.js rename to src/main/js/map-graph/main/backend.ts index a86199768..604f0cf16 100644 --- a/src/main/js/map-graph/main/backend.js +++ b/src/main/js/map-graph/main/backend.ts @@ -1,9 +1,8 @@ -import 'babel-polyfill'; -import {sparql, getBinaryTable, tableFormatForSpecies} from 'icos-cp-backend'; -import {objectSpecification} from './sparqlQueries'; +import {sparql, getBinaryTable, tableFormatForSpecies, TableFormat, BinTable} from 'icos-cp-backend'; +import {objectSpecification, Config} from './sparqlQueries'; -export function getTableFormatNrows(config, objId){ +export function getTableFormatNrows(config: Config, objId: string){ const query = objectSpecification(config, objId); return sparql(query, config.sparqlEndpoint) @@ -29,8 +28,8 @@ export function getTableFormatNrows(config, objId){ ); } -export function getBinTable(objId, tableFormat, nRows){ - const axisIndices = Array.from({length: tableFormat._columnsInfo.length}, (_, i) => i); +export function getBinTable(objId: string, tableFormat: TableFormat, nRows: number): Promise<BinTable>{ + const axisIndices = Array.from({length: tableFormat.columns.length}, (_, i) => i); const request = tableFormat.getRequest(objId, nRows, axisIndices); return getBinaryTable(request, '/portal/tabular'); } diff --git a/src/main/js/map-graph/main/models/BinTableData.js b/src/main/js/map-graph/main/models/BinTableData.ts similarity index 57% rename from src/main/js/map-graph/main/models/BinTableData.js rename to src/main/js/map-graph/main/models/BinTableData.ts index 947376af8..627561a21 100644 --- a/src/main/js/map-graph/main/models/BinTableData.js +++ b/src/main/js/map-graph/main/models/BinTableData.ts @@ -1,13 +1,20 @@ import config from '../config'; +import {TableFormat, BinTable, ColumnInfo} from 'icos-cp-backend'; + +type Indices = { + date: number + latitude: number + longitude: number + data: number[] +} export default class BinTableData{ - constructor(tableFormat, binTable){ - this._tableFormat = tableFormat; - this._indices = this._getIndices(tableFormat); - this._binTable = binTable; + readonly _indices: Indices + constructor(readonly _tableFormat: TableFormat, readonly _binTable: BinTable){ + this._indices = this._getIndices(_tableFormat); } - _getIndices(tableFormat){ + _getIndices(tableFormat: TableFormat): Indices{ if (tableFormat === undefined) { return { date: -1, @@ -18,7 +25,7 @@ export default class BinTableData{ } const specialColNames = [config.dateColName, config.latitudeColName, config.longitudeColName]; const [dateIdx, latitudeIdx, longitudeIdx] = specialColNames.map(i => tableFormat.getColumnIndex(i)); - const dataIndices = tableFormat._columnsInfo.reduce((acc, curr, idx) => { + const dataIndices = tableFormat.columns.reduce<number[]>((acc, curr, idx) => { if ( !specialColNames.includes(curr.name) && curr.valueFormat != config.flagColumnsFormat @@ -43,45 +50,45 @@ export default class BinTableData{ return indices.date >= 0 && indices.latitude >= 0 && indices.longitude >= 0 && indices.data.length > 0; } - withBinTable(binTable){ + withBinTable(binTable: BinTable){ return new BinTableData(this._tableFormat, binTable); } - data(columnsArr){ + data(columnsArr: number[]){ return this._binTable.values(columnsArr, r => r); } get allData(){ - return this.data(Array.from({length: this._tableFormat._columnsInfo.length}, (_, i) => i)); + return this.data(Array.from({length: this._tableFormat.columns.length}, (_, i) => i)); } - get columnsInfo(){ - return this._tableFormat._columnsInfo; + get columnsInfo(): ReadonlyArray<ColumnInfo>{ + return this._tableFormat.columns; } get dataColumnsInfo(){ return this.indices.data.map(idx => this.column(idx)); } - column(idx){ - return this._tableFormat.columns(idx); + column(idx: number){ + return this._tableFormat.columns[idx]; } - getColumnIndex(colName){ + getColumnIndex(colName: string){ return this._tableFormat.getColumnIndex(colName); } - dataIdx2ValueIdx(idx){ + dataIdx2ValueIdx(idx: number){ return this.indices.data[idx]; } - valueIdx2DataIdx(idx){ + valueIdx2DataIdx(idx: number){ return this.indices.data.findIndex(d => d === idx); } - getColumnIndexByLabel(colLabel){ - return this._tableFormat._columnsInfo.findIndex(col => col.label === colLabel); + getColumnIndexByLabel(colLabel: string){ + return this._tableFormat.columns.findIndex(col => col.label === colLabel); } get nRows(){ diff --git a/src/main/js/map-graph/main/sparqlQueries.js b/src/main/js/map-graph/main/sparqlQueries.js deleted file mode 100644 index 84617956f..000000000 --- a/src/main/js/map-graph/main/sparqlQueries.js +++ /dev/null @@ -1,9 +0,0 @@ -export function objectSpecification(config, objId){ - return `prefix cpmeta: <${config.cpmetaOntoUri}> -select * where{ - bind (<${config.cpmetaObjectUri}${objId}> as ?dobj) - ?dobj cpmeta:hasObjectSpec ?objSpec ; - cpmeta:hasNumberOfRows ?nRows . - OPTIONAL{?dobj cpmeta:hasActualColumnNames ?colNames} -}`; -} diff --git a/src/main/js/map-graph/main/sparqlQueries.ts b/src/main/js/map-graph/main/sparqlQueries.ts new file mode 100644 index 000000000..23110af91 --- /dev/null +++ b/src/main/js/map-graph/main/sparqlQueries.ts @@ -0,0 +1,19 @@ +import {Query} from 'icos-cp-backend'; + +export type Config = { + cpmetaOntoUri: string + cpmetaObjectUri: string + sparqlEndpoint: string +} + +export function objectSpecification(config: Config, objId: string): Query<"dobj" | "objSpec" | "nRows", "colNames">{ + const text = `prefix cpmeta: <${config.cpmetaOntoUri}> +select * where{ + bind (<${config.cpmetaObjectUri}${objId}> as ?dobj) + ?dobj cpmeta:hasObjectSpec ?objSpec ; + cpmeta:hasNumberOfRows ?nRows . + OPTIONAL{?dobj cpmeta:hasActualColumnNames ?colNames} +}`; + + return {text}; +} diff --git a/src/main/js/map-graph/main/store.js b/src/main/js/map-graph/main/store.js index c301a6494..c42064ef2 100644 --- a/src/main/js/map-graph/main/store.js +++ b/src/main/js/map-graph/main/store.js @@ -40,14 +40,16 @@ export const updateURL = store => () => { if (hasVals && !deepEqual(prevState, newHash)) { if (prevState.y1 !== newHash.y1 || prevState.y2 !== newHash.y2 || prevState.map !== newHash.map) { - const labels = state.binTableData.columnsInfo.map(ci => ci.label); - saveToRestheart({ - previewMapGraph: Object.assign({}, newHash, { - y1: labels[newHash.y1], - y2: labels[newHash.y2], - map: labels[newHash.map], - }) - }); + if(state.binTableData.columnsInfo){ + const labels = state.binTableData.columnsInfo.map(ci => ci.label); + saveToRestheart({ + previewMapGraph: Object.assign({}, newHash, { + y1: labels[newHash.y1], + y2: labels[newHash.y2], + map: labels[newHash.map], + }) + }); + } } const newURL = location.origin + location.pathname + '#' + JSON.stringify(newHash); diff --git a/src/main/js/map-graph/package-lock.json b/src/main/js/map-graph/package-lock.json index 83c562386..83c2aaab6 100644 --- a/src/main/js/map-graph/package-lock.json +++ b/src/main/js/map-graph/package-lock.json @@ -3064,7 +3064,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -3085,12 +3086,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3105,17 +3108,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3232,7 +3238,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3244,6 +3251,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3258,6 +3266,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3265,12 +3274,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3289,6 +3300,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3369,7 +3381,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3381,6 +3394,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3466,7 +3480,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3502,6 +3517,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3521,6 +3537,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3564,12 +3581,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -3870,13 +3889,9 @@ } }, "icos-cp-backend": { - "version": "file:../../../../../npms/icos-cp-backend", - "dependencies": { - "typescript": { - "version": "3.7.2", - "bundled": true - } - } + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/icos-cp-backend/-/icos-cp-backend-0.4.0.tgz", + "integrity": "sha512-7CFqJ32dFBos6OojfquaWt5iVnt9rFAx/q/rU208zCan4gmwmkLE2uVOPbzSIjzQE+tcC4Pxu2T8j8JmAFOGnA==" }, "icos-cp-fade": { "version": "0.4.0", @@ -3947,6 +3962,27 @@ "integrity": "sha512-JyKjsOxKdLLtUnjBVLIRTAwZPZXI6iXaKBnchRXruXuK84UMu+cXfjwtE0KvWob5tgQ1K2BWeVeoyMDmULGi3A==", "requires": { "babel-runtime": "^6.20.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } } }, "ignore": { diff --git a/src/main/js/map-graph/package.json b/src/main/js/map-graph/package.json index ca7a8d312..d1f643255 100644 --- a/src/main/js/map-graph/package.json +++ b/src/main/js/map-graph/package.json @@ -62,7 +62,7 @@ "babel-polyfill": "6.26.0", "deep-equal": "1.1.0", "dygraphs": "2.1.0", - "icos-cp-backend": "file:///home/oleg/workspace/npms/icos-cp-backend/", + "icos-cp-backend": "0.4.0", "icos-cp-leaflet-common": "0.2.3", "icos-cp-spatial": "0.2.1", "icos-cp-toaster": "0.5.1", diff --git a/src/main/js/netcdf/package-lock.json b/src/main/js/netcdf/package-lock.json index f5a44bac4..f912ac6d2 100644 --- a/src/main/js/netcdf/package-lock.json +++ b/src/main/js/netcdf/package-lock.json @@ -2799,7 +2799,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2820,12 +2821,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2840,17 +2843,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2967,7 +2973,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2979,6 +2986,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2993,6 +3001,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3000,12 +3009,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3024,6 +3035,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3104,7 +3116,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3116,6 +3129,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3201,7 +3215,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3237,6 +3252,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3256,6 +3272,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3299,12 +3316,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/main/js/netcdf/package.json b/src/main/js/netcdf/package.json index bae99b863..bee157c46 100644 --- a/src/main/js/netcdf/package.json +++ b/src/main/js/netcdf/package.json @@ -54,7 +54,7 @@ "dependencies": { "deep-equal": "^1.0.1", "dygraphs": "^2.1.0", - "icos-cp-backend": "^0.3.5", + "icos-cp-backend": "0.3.20", "icos-cp-draggable": "^0.0.1", "icos-cp-leaflet-common": "^1.0.0", "icos-cp-legend": "^0.5.0", diff --git a/src/main/js/portal/package-lock.json b/src/main/js/portal/package-lock.json index ed18bed38..8862cfec8 100644 --- a/src/main/js/portal/package-lock.json +++ b/src/main/js/portal/package-lock.json @@ -3796,7 +3796,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -3817,12 +3818,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3837,17 +3840,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3964,7 +3970,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3976,6 +3983,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3990,6 +3998,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3997,12 +4006,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -4021,6 +4032,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -4101,7 +4113,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -4113,6 +4126,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -4198,7 +4212,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -4234,6 +4249,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -4253,6 +4269,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -4296,12 +4313,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/main/js/portal/package.json b/src/main/js/portal/package.json index 58a8bad06..c16d7e97d 100644 --- a/src/main/js/portal/package.json +++ b/src/main/js/portal/package.json @@ -69,7 +69,7 @@ "dependencies": { "babel-polyfill": "^6.26.0", "deep-equal": "^1.1.0", - "icos-cp-backend": "^0.3.20", + "icos-cp-backend": "0.3.20", "icos-cp-draggable": "0.0.1", "icos-cp-toaster": "^0.6.2", "icos-cp-utils": "^0.1.5", diff --git a/src/main/js/stats/package-lock.json b/src/main/js/stats/package-lock.json index 01a822097..d263416da 100644 --- a/src/main/js/stats/package-lock.json +++ b/src/main/js/stats/package-lock.json @@ -2836,7 +2836,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2857,12 +2858,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2877,17 +2880,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3004,7 +3010,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3016,6 +3023,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3030,6 +3038,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3037,12 +3046,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3061,6 +3072,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3141,7 +3153,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3153,6 +3166,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3238,7 +3252,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3274,6 +3289,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3293,6 +3309,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3336,12 +3353,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/main/js/stats/package.json b/src/main/js/stats/package.json index 2fbbe6b17..8f60cfe61 100644 --- a/src/main/js/stats/package.json +++ b/src/main/js/stats/package.json @@ -53,7 +53,7 @@ "dependencies": { "babel-polyfill": "^6.13.0", "deep-equal": "^1.0.1", - "icos-cp-backend": "^0.3.5", + "icos-cp-backend": "0.3.20", "icos-cp-spatial": "^0.2.1", "icos-cp-toaster": "^0.5.1", "icos-cp-utils": "^0.1.4", diff --git a/src/main/js/wdcgg/package-lock.json b/src/main/js/wdcgg/package-lock.json index d840da8ae..b2bddb6be 100644 --- a/src/main/js/wdcgg/package-lock.json +++ b/src/main/js/wdcgg/package-lock.json @@ -3106,7 +3106,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -3127,12 +3128,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3147,17 +3150,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3274,7 +3280,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3286,6 +3293,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3300,6 +3308,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3307,12 +3316,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3331,6 +3342,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3411,7 +3423,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3423,6 +3436,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3508,7 +3522,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3544,6 +3559,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3563,6 +3579,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3606,12 +3623,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/main/js/wdcgg/package.json b/src/main/js/wdcgg/package.json index b927016f8..26fef79e3 100644 --- a/src/main/js/wdcgg/package.json +++ b/src/main/js/wdcgg/package.json @@ -54,7 +54,7 @@ "dependencies": { "babel-polyfill": "^6.13.0", "dygraphs": "^2.0.0", - "icos-cp-backend": "^0.3.9", + "icos-cp-backend": "0.3.20", "icos-cp-leaflet-common": "^0.2.3", "icos-cp-spatial": "^0.2.0", "icos-cp-toaster": "^0.5.1", From 56f3939fe61ced77a5f6d5dd800af8969d03d5d6 Mon Sep 17 00:00:00 2001 From: Oleg Mirzov <oleg.mirzov@nateko.lu.se> Date: Mon, 25 Nov 2019 11:59:36 +0100 Subject: [PATCH 13/16] [map-graph] Updating icos-cp-backend to 0.4.1: support for quality flags --- src/main/js/map-graph/main/backend.ts | 5 ++--- src/main/js/map-graph/package-lock.json | 13 ++++++++++--- src/main/js/map-graph/package.json | 2 +- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/js/map-graph/main/backend.ts b/src/main/js/map-graph/main/backend.ts index 604f0cf16..3138732f3 100644 --- a/src/main/js/map-graph/main/backend.ts +++ b/src/main/js/map-graph/main/backend.ts @@ -29,7 +29,6 @@ export function getTableFormatNrows(config: Config, objId: string){ } export function getBinTable(objId: string, tableFormat: TableFormat, nRows: number): Promise<BinTable>{ - const axisIndices = Array.from({length: tableFormat.columns.length}, (_, i) => i); - const request = tableFormat.getRequest(objId, nRows, axisIndices); - return getBinaryTable(request, '/portal/tabular'); + const request = tableFormat.getRequest(objId, nRows); + return getBinaryTable(request, '/portal/tabular', tableFormat.flagGoodness); } diff --git a/src/main/js/map-graph/package-lock.json b/src/main/js/map-graph/package-lock.json index 83c2aaab6..ba5fb5d40 100644 --- a/src/main/js/map-graph/package-lock.json +++ b/src/main/js/map-graph/package-lock.json @@ -3889,9 +3889,16 @@ } }, "icos-cp-backend": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/icos-cp-backend/-/icos-cp-backend-0.4.0.tgz", - "integrity": "sha512-7CFqJ32dFBos6OojfquaWt5iVnt9rFAx/q/rU208zCan4gmwmkLE2uVOPbzSIjzQE+tcC4Pxu2T8j8JmAFOGnA==" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/icos-cp-backend/-/icos-cp-backend-0.4.1.tgz", + "integrity": "sha512-UMSakED7vRCWmtclwIsc72QU6hWhmo0FByJV9HAa/xxEk0WrwD3ARP/ff3hSF3FZ78aECtNk08cbY9kCv37XWQ==", + "dependencies": { + "typescript": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", + "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==" + } + } }, "icos-cp-fade": { "version": "0.4.0", diff --git a/src/main/js/map-graph/package.json b/src/main/js/map-graph/package.json index d1f643255..492d1b3c6 100644 --- a/src/main/js/map-graph/package.json +++ b/src/main/js/map-graph/package.json @@ -62,7 +62,7 @@ "babel-polyfill": "6.26.0", "deep-equal": "1.1.0", "dygraphs": "2.1.0", - "icos-cp-backend": "0.4.0", + "icos-cp-backend": "0.4.1", "icos-cp-leaflet-common": "0.2.3", "icos-cp-spatial": "0.2.1", "icos-cp-toaster": "0.5.1", From 4bb33c4959d9b4658068b146bd9c1b5720dcac45 Mon Sep 17 00:00:00 2001 From: Oleg Mirzov <oleg.mirzov@nateko.lu.se> Date: Mon, 25 Nov 2019 14:46:14 +0100 Subject: [PATCH 14/16] [dygraph-light] Upgrading icos-cp-backend to 0.4.1; more Typescript code --- src/main/js/dygraph-light/main/App.js | 2 +- .../main/{backend.js => backend.ts} | 23 ++++++++++--------- .../js/dygraph-light/main/sparqlQueries.js | 12 ---------- .../js/dygraph-light/main/sparqlQueries.ts | 23 +++++++++++++++++++ src/main/js/dygraph-light/package-lock.json | 21 +++++------------ src/main/js/dygraph-light/package.json | 4 ++-- 6 files changed, 44 insertions(+), 41 deletions(-) rename src/main/js/dygraph-light/main/{backend.js => backend.ts} (55%) delete mode 100644 src/main/js/dygraph-light/main/sparqlQueries.js create mode 100644 src/main/js/dygraph-light/main/sparqlQueries.ts diff --git a/src/main/js/dygraph-light/main/App.js b/src/main/js/dygraph-light/main/App.js index dd3f27d0a..0b0998df6 100644 --- a/src/main/js/dygraph-light/main/App.js +++ b/src/main/js/dygraph-light/main/App.js @@ -426,7 +426,7 @@ const isColNameValid = (tableFormat, colName) => { }; const getColInfoParam = (tableFormat, colName, param) => { - return tableFormat.columns(tableFormat.getColumnIndex(colName))[param]; + return tableFormat.columns[tableFormat.getColumnIndex(colName)][param]; }; const getLabel = (tableFormat, colName) => { diff --git a/src/main/js/dygraph-light/main/backend.js b/src/main/js/dygraph-light/main/backend.ts similarity index 55% rename from src/main/js/dygraph-light/main/backend.js rename to src/main/js/dygraph-light/main/backend.ts index 01db2a732..188cf5d93 100644 --- a/src/main/js/dygraph-light/main/backend.js +++ b/src/main/js/dygraph-light/main/backend.ts @@ -1,9 +1,8 @@ -import 'babel-polyfill'; -import {sparql, getBinaryTable, tableFormatForSpecies} from 'icos-cp-backend'; -import {objectSpecification} from './sparqlQueries'; +import {sparql, getBinaryTable, tableFormatForSpecies, TableFormat} from 'icos-cp-backend'; +import {objectSpecification, Config} from './sparqlQueries'; -export function getTableFormatNrows(config, objIds){ +export function getTableFormatNrows(config: Config, objIds: string[]){ const query = objectSpecification(config, objIds); return sparql(query, config.sparqlEndpoint) @@ -23,18 +22,20 @@ export function getTableFormatNrows(config, objIds){ })) : Promise.reject(new Error(`Data object ${objIds.join()} does not exist or is not an ingested time series`)); } - ).then(objects => Promise.all(objects.map(object => tableFormatForSpecies(object.objSpec, config))) - .then(tableFormats => { + ) + .then(objects => Promise + .all(objects.map(object => tableFormatForSpecies(object.objSpec, config))) + .then(tableFormats => objects.map((object, index) => { - object.tableFormat = object.columnNames ? tableFormats[index].withColumnNames(object.columnNames) : tableFormats[index] + const tableFormat = object.columnNames ? tableFormats[index].withColumnNames(object.columnNames) : tableFormats[index] + return Object.assign({tableFormat}, object) }) - return objects; - }) + ) ); } -export function getBinTable(xCol, yCol, objId, tableFormat, nRows){ +export function getBinTable(xCol: string, yCol: string, objId: string, tableFormat: TableFormat, nRows: number){ const axisIndices = [xCol, yCol].map(colName => tableFormat.getColumnIndex(colName)); const request = tableFormat.getRequest(objId, nRows, axisIndices); - return getBinaryTable(request, '/portal/tabular'); + return getBinaryTable(request, '/portal/tabular', tableFormat.flagGoodness); } diff --git a/src/main/js/dygraph-light/main/sparqlQueries.js b/src/main/js/dygraph-light/main/sparqlQueries.js deleted file mode 100644 index fe759584f..000000000 --- a/src/main/js/dygraph-light/main/sparqlQueries.js +++ /dev/null @@ -1,12 +0,0 @@ -export function objectSpecification(config, objIds){ - const ids = objIds.map(id => `<${config.cpmetaObjectUri}${id}>`).join(' '); - return `prefix cpmeta: <${config.cpmetaOntoUri}> -select * where { - values ?dobj { ${ids} } - ?dobj cpmeta:hasObjectSpec ?objSpec ; - cpmeta:hasNumberOfRows ?nRows ; - cpmeta:hasName ?fileName . - ?objSpec rdfs:label ?specLabel . - OPTIONAL{?dobj cpmeta:hasActualColumnNames ?columnNames } -}`; -} diff --git a/src/main/js/dygraph-light/main/sparqlQueries.ts b/src/main/js/dygraph-light/main/sparqlQueries.ts new file mode 100644 index 000000000..1001523d9 --- /dev/null +++ b/src/main/js/dygraph-light/main/sparqlQueries.ts @@ -0,0 +1,23 @@ +import {Query} from 'icos-cp-backend' + +type SpecQuery = Query<"dobj" | "objSpec" | "nRows" | "fileName" | "specLabel", "columnNames"> + +export type Config = { + cpmetaObjectUri: string + cpmetaOntoUri: string + sparqlEndpoint: string +} + +export function objectSpecification(config: Config, objIds: string[]): SpecQuery{ + const ids = objIds.map(id => `<${config.cpmetaObjectUri}${id}>`).join(' '); + const text = `prefix cpmeta: <${config.cpmetaOntoUri}> +select * where { + values ?dobj { ${ids} } + ?dobj cpmeta:hasObjectSpec ?objSpec ; + cpmeta:hasNumberOfRows ?nRows ; + cpmeta:hasName ?fileName . + ?objSpec rdfs:label ?specLabel . + OPTIONAL{?dobj cpmeta:hasActualColumnNames ?columnNames } +}`; + return {text}; +} diff --git a/src/main/js/dygraph-light/package-lock.json b/src/main/js/dygraph-light/package-lock.json index 791bbb5ec..8f1df289d 100644 --- a/src/main/js/dygraph-light/package-lock.json +++ b/src/main/js/dygraph-light/package-lock.json @@ -3589,13 +3589,9 @@ "dev": true }, "icos-cp-backend": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/icos-cp-backend/-/icos-cp-backend-0.3.20.tgz", - "integrity": "sha512-WBr+vG2NjnuyJymSxX+J7fK233x8aHwtAL6po1zP8HsV2IhfGA1mAsoajQlI6o5Jn7l5YhKzXpCqL0G/fve3qw==", - "requires": { - "babel-runtime": "^6.20.0", - "whatwg-fetch": "^2.0.3" - } + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/icos-cp-backend/-/icos-cp-backend-0.4.1.tgz", + "integrity": "sha512-UMSakED7vRCWmtclwIsc72QU6hWhmo0FByJV9HAa/xxEk0WrwD3ARP/ff3hSF3FZ78aECtNk08cbY9kCv37XWQ==" }, "icos-cp-spinner": { "version": "0.1.4", @@ -5451,9 +5447,9 @@ "dev": true }, "typescript": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz", - "integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", + "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==", "dev": true }, "unc-path-regex": { @@ -5689,11 +5685,6 @@ } } }, - "whatwg-fetch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", - "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/src/main/js/dygraph-light/package.json b/src/main/js/dygraph-light/package.json index b3b902be5..7075038ce 100644 --- a/src/main/js/dygraph-light/package.json +++ b/src/main/js/dygraph-light/package.json @@ -59,12 +59,12 @@ "gulp-replace": "^1.0.0", "react": "^16.8.6", "browserify-css": "^0.15.0", - "typescript": "^3.6.4" + "typescript": "3.7.2" }, "dependencies": { "babel-polyfill": "^6.13.0", "dygraphs": "^2.1.0", - "icos-cp-backend": "0.3.20", + "icos-cp-backend": "0.4.1", "icos-cp-spinner": "^0.1.4" } } From f423cad3ed64d92be0c7711dc461adc2e80c557f Mon Sep 17 00:00:00 2001 From: Oleg Mirzov <oleg.mirzov@nateko.lu.se> Date: Mon, 25 Nov 2019 14:47:58 +0100 Subject: [PATCH 15/16] [frontends] Removing whatwg-fetch as explicit dependency --- src/main/js/common/main/backend.js | 1 - src/main/js/common/package-lock.json | 5 ----- src/main/js/common/package.json | 3 +-- src/main/js/dashboard/package.json | 3 +-- src/main/js/portal/main/backend.ts | 1 - src/main/js/portal/package.json | 3 +-- src/main/js/stats/main/backend.js | 1 - src/main/js/stats/package.json | 3 +-- 8 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/main/js/common/main/backend.js b/src/main/js/common/main/backend.js index 9412caa7b..b0b3bdca9 100644 --- a/src/main/js/common/main/backend.js +++ b/src/main/js/common/main/backend.js @@ -1,5 +1,4 @@ import config from "./config"; -import 'whatwg-fetch'; export const saveToRestheart = dataToSave => { diff --git a/src/main/js/common/package-lock.json b/src/main/js/common/package-lock.json index 006213a54..4b72e71c4 100644 --- a/src/main/js/common/package-lock.json +++ b/src/main/js/common/package-lock.json @@ -5133,11 +5133,6 @@ "xtend": "^4.0.0" } }, - "whatwg-fetch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", - "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/src/main/js/common/package.json b/src/main/js/common/package.json index 596439da0..36996a310 100644 --- a/src/main/js/common/package.json +++ b/src/main/js/common/package.json @@ -46,7 +46,6 @@ "watchify": "^3.11.1" }, "dependencies": { - "icos-cp-spatial": "^0.2.0", - "whatwg-fetch": "^2.0.4" + "icos-cp-spatial": "^0.2.0" } } diff --git a/src/main/js/dashboard/package.json b/src/main/js/dashboard/package.json index a83da36f1..3b4862e6e 100644 --- a/src/main/js/dashboard/package.json +++ b/src/main/js/dashboard/package.json @@ -68,7 +68,6 @@ "react-dom": "^16.8.6", "react-redux": "^5.0.7", "redux": "^3.7.2", - "redux-thunk": "^2.2.0", - "whatwg-fetch": "^2.0.3" + "redux-thunk": "^2.2.0" } } diff --git a/src/main/js/portal/main/backend.ts b/src/main/js/portal/main/backend.ts index fb56777e5..4f212cb64 100644 --- a/src/main/js/portal/main/backend.ts +++ b/src/main/js/portal/main/backend.ts @@ -5,7 +5,6 @@ import localConfig from './config'; import Cart, {JsonCart} from './models/Cart'; import Storage from './models/Storage'; import { FilterRequest } from './models/FilterRequest'; -import 'whatwg-fetch'; import {KeyAnyVal, UrlStr} from "./backend/declarations"; import {DataObject} from "../../common/main/metacore"; import { diff --git a/src/main/js/portal/package.json b/src/main/js/portal/package.json index 686677340..893302684 100644 --- a/src/main/js/portal/package.json +++ b/src/main/js/portal/package.json @@ -84,7 +84,6 @@ "react-redux": "^7.1.1", "react-widgets": "^4.4.11", "redux": "^4.0.1", - "redux-thunk": "^2.3.0", - "whatwg-fetch": "^2.0.3" + "redux-thunk": "^2.3.0" } } diff --git a/src/main/js/stats/main/backend.js b/src/main/js/stats/main/backend.js index 89b989141..f41802fa2 100644 --- a/src/main/js/stats/main/backend.js +++ b/src/main/js/stats/main/backend.js @@ -1,4 +1,3 @@ -import 'whatwg-fetch'; import {getJson, sparql} from 'icos-cp-backend'; import config from '../../common/main/config'; import {feature} from 'topojson'; diff --git a/src/main/js/stats/package.json b/src/main/js/stats/package.json index b3581212d..ade62921c 100644 --- a/src/main/js/stats/package.json +++ b/src/main/js/stats/package.json @@ -67,7 +67,6 @@ "react-widgets": "^3.4.6", "redux": "^3.6.0", "redux-thunk": "^2.1.0", - "topojson": "^3.0.2", - "whatwg-fetch": "^2.0.3" + "topojson": "^3.0.2" } } From 0a835a7f3a946b5a9e17265eea87215fd8a94f17 Mon Sep 17 00:00:00 2001 From: Oleg Mirzov <oleg.mirzov@nateko.lu.se> Date: Tue, 26 Nov 2019 14:57:44 +0100 Subject: [PATCH 16/16] [portal] Update icos-cp-backend to 0.4.1. Rewrite SPARQL parsing. --- src/main/js/portal/main/backend.ts | 45 +++++----------- .../js/portal/main/backend/SparqlFetch.ts | 8 ++- src/main/js/portal/main/backend/sparql.ts | 53 +++++++++--------- src/main/js/portal/main/sparqlQueries.ts | 8 +-- src/main/js/portal/package-lock.json | 54 +++++++++++++++---- src/main/js/portal/package.json | 14 +++-- 6 files changed, 101 insertions(+), 81 deletions(-) diff --git a/src/main/js/portal/main/backend.ts b/src/main/js/portal/main/backend.ts index 4f212cb64..2741a8a1e 100644 --- a/src/main/js/portal/main/backend.ts +++ b/src/main/js/portal/main/backend.ts @@ -7,12 +7,7 @@ import Storage from './models/Storage'; import { FilterRequest } from './models/FilterRequest'; import {KeyAnyVal, UrlStr} from "./backend/declarations"; import {DataObject} from "../../common/main/metacore"; -import { - SparqlResultValue, - XMLSchemaDateTime, - XMLSchemaInteger, - XMLSchemaString -} from "./backend/sparql"; +import { sparqlParsers } from "./backend/sparql"; const config = Object.assign(commonConfig, localConfig); const tsSettingsStorageName = 'tsSettings'; @@ -26,12 +21,12 @@ const fetchSpecBasics = () => { type: b.type.value, specLabel: b.specLabel.value, level: parseInt(b.level.value), - dataset: b.dataset ? b.dataset.value : undefined, + dataset: b.dataset?.value, format: b.format.value, formatLabel: b.formatLabel.value, theme: b.theme.value, themeLabel: b.themeLabel.value, - temporalResolution: b.temporalResolution ? b.temporalResolution.value : undefined + temporalResolution: b.temporalResolution?.value })); }; @@ -43,7 +38,7 @@ const fetchSpecColumnMeta = () => { colTitle: b.colTitle.value, valType: b.valType.value, valTypeLabel: b.valTypeLabel.value, - quantityKind: b.quantityKind ? b.quantityKind.value : undefined, + quantityKind: b.quantityKind?.value, quantityKindLabel: b.quantityKindLabel.value, quantityUnit: b.quantityUnit.value })); @@ -59,7 +54,7 @@ export const fetchDobjOriginsAndCounts = (filters: FilterRequest[]) => { project: b.project.value, projectLabel: b.projectLabel.value, count: parseInt(b.count.value), - station: b.station ? b.station.value : undefined, + station: b.station?.value, stationLabel: b.stationLabel.value })); }; @@ -112,28 +107,16 @@ export function fetchFilteredDataObjects(options: {}){ const query = queries.listFilteredDataObjects(options); return sparqlFetchAndParse(query, config.sparqlEndpoint, b => ({ - dobj: sparqlBindingToValue<XMLSchemaString>(b.dobj), - spec: sparqlBindingToValue<XMLSchemaString>(b.spec), - fileName: sparqlBindingToValue<XMLSchemaString>(b.fileName), - size: sparqlBindingToValue<XMLSchemaInteger>(b.size), - submTime: sparqlBindingToValue<XMLSchemaDateTime>(b.submTime), - timeStart: sparqlBindingToValue<XMLSchemaDateTime>(b.timeStart), - timeEnd: sparqlBindingToValue<XMLSchemaDateTime>(b.timeEnd) + dobj: sparqlParsers.fromUrl(b.dobj), + spec: sparqlParsers.fromUrl(b.spec), + fileName: sparqlParsers.fromString(b.fileName), + size: sparqlParsers.fromLong(b.size), + submTime: sparqlParsers.fromDateTime(b.submTime), + timeStart: sparqlParsers.fromDateTime(b.timeStart), + timeEnd: sparqlParsers.fromDateTime(b.timeEnd) })); } -// TODO: Make parsing to data type more elegant, if possible -const sparqlBindingToValue = <T extends string | number | boolean | Date>(b: SparqlResultValue): T => { - switch(b.datatype){ - case "http://www.w3.org/2001/XMLSchema#integer": return parseInt(b.value) as T; - case "http://www.w3.org/2001/XMLSchema#long": return parseInt(b.value) as T; - case "http://www.w3.org/2001/XMLSchema#float": return parseFloat(b.value) as T; - case "http://www.w3.org/2001/XMLSchema#double": return parseFloat(b.value) as T; - case "http://www.w3.org/2001/XMLSchema#dateTime": return new Date(b.value) as T; - case "http://www.w3.org/2001/XMLSchema#boolean": return (b.value === "true") as T; - default: return b.value as T; - } -}; export const searchDobjs = (search: string) => { const query = queries.findDobjs(search); @@ -227,8 +210,8 @@ export const getExtendedDataObjInfo = (dobjs: UrlStr[]) => { return sparqlFetch(query, config.sparqlEndpoint, b => ({ dobj: b.dobj!.value, - station: b.station ? b.station.value : undefined, - stationId: b.stationId ? b.stationId.value : undefined, + station: b.station?.value, + stationId: b.stationId?.value, samplingHeight: b.samplingHeight ? parseFloat(b.samplingHeight.value) : undefined, theme: b.theme ? b.theme.value : undefined, themeIcon: b.themeIcon ? b.themeIcon.value : undefined, diff --git a/src/main/js/portal/main/backend/SparqlFetch.ts b/src/main/js/portal/main/backend/SparqlFetch.ts index 14e02eb8a..97d7f7b68 100644 --- a/src/main/js/portal/main/backend/SparqlFetch.ts +++ b/src/main/js/portal/main/backend/SparqlFetch.ts @@ -1,13 +1,11 @@ -import {SparqlResultBinding, SparqlResult, Query, SparqlResultValue} from "./sparql"; -import {sparql} from "icos-cp-backend"; - +import {sparql, SparqlResultBinding, SparqlResult, Query} from 'icos-cp-backend'; export const sparqlFetch = <Mandatories extends string, Optionals extends string, Res extends Row<Mandatories, Optionals>>( query: Query<Mandatories, Optionals>, sparqlEndpoint: string, parser: (resp: SparqlResultBinding<Mandatories, Optionals>) => Res): Promise<Res[]> => { - return sparql(query.text, sparqlEndpoint, true) + return sparql(query, sparqlEndpoint, true) .then((sparqlRes: SparqlResult<Mandatories, Optionals>) => { try { return sparqlRes.results.bindings.map(parser); @@ -23,7 +21,7 @@ export const sparqlFetchAndParse = <Mandatories extends string, Optionals extend sparqlEndpoint: string, parser: (resp: SparqlResultBinding<Mandatories, Optionals>) => Res): Promise<{columnNames: string[], rows: Res[]}> => { - return sparql(query.text, sparqlEndpoint, true) + return sparql(query, sparqlEndpoint, true) .then((sparqlRes: SparqlResult<Mandatories, Optionals>) => { try { return { diff --git a/src/main/js/portal/main/backend/sparql.ts b/src/main/js/portal/main/backend/sparql.ts index 74cbd3773..363c3ef4e 100644 --- a/src/main/js/portal/main/backend/sparql.ts +++ b/src/main/js/portal/main/backend/sparql.ts @@ -1,35 +1,32 @@ -export interface SparqlResult<Mandatories extends string, Optionals extends string>{ - head: { - vars: Array<Mandatories | Optionals> - } - results: { - bindings: [SparqlResultBinding<Mandatories, Optionals>] - } -} +import { SparqlResultValue, SparqlResultLiteralValue } from 'icos-cp-backend' +import {UrlStr} from './declarations' -export type SparqlResultBinding<Mandatories extends string, Optionals extends string> = { - [v in Mandatories]: SparqlResultValue -} & { - [v in Optionals]?: SparqlResultValue +function resultIsLiteralValue(v: SparqlResultValue): v is SparqlResultLiteralValue { + return v.type === 'literal' } -export type XMLSchemaString = string -export type XMLSchemaInteger = number -export type XMLSchemaFloat = number -export type XMLSchemaDateTime = Date -export type XMLSchemaBoolean = boolean +type LiteralDatatype = SparqlResultLiteralValue['datatype'] + +function makeParser<T>(dt: LiteralDatatype | undefined, parser: (vs: string) => T): (v: SparqlResultValue) => T { + return v => { + if(!resultIsLiteralValue(v)) throw new Error(`SPARQL result parsing error, ${v} was not literal`) + if(dt !== undefined && v.datatype !== dt) throw new Error(`SPARQL result parsing error, expected ${v.value} to be ${dt} but it was ${v.datatype}`) + return parser(v.value) + } +} -export interface SparqlResultValue{ - type: "uri" | "literal" - value: string - datatype?: 'http://www.w3.org/2001/XMLSchema#integer' - | 'http://www.w3.org/2001/XMLSchema#long' - | 'http://www.w3.org/2001/XMLSchema#float' - | 'http://www.w3.org/2001/XMLSchema#double' - | 'http://www.w3.org/2001/XMLSchema#dateTime' - | 'http://www.w3.org/2001/XMLSchema#boolean' +function fromUrl(v: SparqlResultValue): UrlStr { + if(v.type !== 'uri') throw new Error(`SPARQL result parsing error, ${v} was not URI resource`) + return v.value } -export interface Query<Mandatories extends string, Optionals extends string>{ - text: string; +export const sparqlParsers = { + fromInt: makeParser("http://www.w3.org/2001/XMLSchema#integer", parseInt), + fromLong: makeParser("http://www.w3.org/2001/XMLSchema#long", parseInt), + fromFloat: makeParser("http://www.w3.org/2001/XMLSchema#float", parseFloat), + fromDouble: makeParser("http://www.w3.org/2001/XMLSchema#double", parseFloat), + fromDateTime: makeParser("http://www.w3.org/2001/XMLSchema#dateTime", s => new Date(s)), + fromBoolean: makeParser("http://www.w3.org/2001/XMLSchema#boolean", s => (s.toLowerCase() === "true")), + fromString: makeParser(undefined, s => s), + fromUrl } diff --git a/src/main/js/portal/main/sparqlQueries.ts b/src/main/js/portal/main/sparqlQueries.ts index 4b64739a0..41435d75d 100644 --- a/src/main/js/portal/main/sparqlQueries.ts +++ b/src/main/js/portal/main/sparqlQueries.ts @@ -1,7 +1,7 @@ import commonConfig from '../../common/main/config'; import localConfig from './config'; import {KeyAnyVal, UrlStr} from "./backend/declarations"; -import {Query} from './backend/sparql'; +import {Query} from 'icos-cp-backend'; import {FilterRequest, TemporalFilterRequest, isPidFilter, isTemporalFilter, isDeprecatedFilter} from './models/FilterRequest'; const config = Object.assign(commonConfig, localConfig); @@ -123,7 +123,9 @@ ${submTimeDef} ${timeStartDef} ${timeEndDef}`; -export const listKnownDataObjects = (dobjs: string[]): Query<"dobj" | "spec" | "fileName" | "size" | "submTime" | "timeStart" | "timeEnd", string> => { +type ObjInfoQuery = Query<"dobj" | "spec" | "fileName" | "size" | "submTime" | "timeStart" | "timeEnd", never> + +export const listKnownDataObjects = (dobjs: string[]): ObjInfoQuery => { const values = dobjs.map(d => `<${config.cpmetaObjectUri}${d}>`).join(' '); const text = `prefix cpmeta: <${config.cpmetaOntoUri}> prefix prov: <http://www.w3.org/ns/prov#> @@ -137,7 +139,7 @@ ${standardDobjPropsDef} return {text}; }; -export const listFilteredDataObjects = (options: any): Query<"dobj" | "spec" | "fileName" | "size" | "submTime" | "timeStart" | "timeEnd", string> => { +export const listFilteredDataObjects = (options: any): ObjInfoQuery => { function isEmpty(arr: []){return !arr || !arr.length;} diff --git a/src/main/js/portal/package-lock.json b/src/main/js/portal/package-lock.json index 8862cfec8..4ecaac33b 100644 --- a/src/main/js/portal/package-lock.json +++ b/src/main/js/portal/package-lock.json @@ -373,6 +373,16 @@ "@babel/plugin-syntax-json-strings": "^7.2.0" } }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.7.4.tgz", + "integrity": "sha512-TbYHmr1Gl1UC7Vo2HVuj/Naci5BEGNZ0AJhzqD2Vpr6QPFWpUmBRLrIDjedzx7/CShq0bRDS2gI4FIs77VHLVQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.7.4" + } + }, "@babel/plugin-proposal-object-rest-spread": { "version": "7.6.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", @@ -393,6 +403,16 @@ "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" } }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.7.4.tgz", + "integrity": "sha512-JmgaS+ygAWDR/STPe3/7y0lNlHgS+19qZ9aC06nYLwQ/XB7c0q5Xs+ksFU3EDnp9EiEsO0dnRAOKeyLHTZuW3A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.7.4" + } + }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.6.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz", @@ -440,6 +460,15 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.7.4.tgz", + "integrity": "sha512-XKh/yIRPiQTOeBg0QJjEus5qiSKucKAiApNtO1psqG7D17xmE+X2i5ZqBEuSvo0HRuyPaKaSN/Gy+Ha9KFQolw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, "@babel/plugin-syntax-object-rest-spread": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", @@ -458,6 +487,15 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.7.4.tgz", + "integrity": "sha512-2MqYD5WjZSbJdUagnJvIdSfkb/ucOC9/1fRJxm7GAxY6YQLWlUvkfxoNbUPcPLHJyetKUDQ4+yyuUyAoc0HriA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, "@babel/plugin-syntax-typescript": { "version": "7.3.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz", @@ -5022,13 +5060,9 @@ } }, "icos-cp-backend": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/icos-cp-backend/-/icos-cp-backend-0.3.20.tgz", - "integrity": "sha512-WBr+vG2NjnuyJymSxX+J7fK233x8aHwtAL6po1zP8HsV2IhfGA1mAsoajQlI6o5Jn7l5YhKzXpCqL0G/fve3qw==", - "requires": { - "babel-runtime": "^6.20.0", - "whatwg-fetch": "^2.0.3" - } + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/icos-cp-backend/-/icos-cp-backend-0.4.1.tgz", + "integrity": "sha512-UMSakED7vRCWmtclwIsc72QU6hWhmo0FByJV9HAa/xxEk0WrwD3ARP/ff3hSF3FZ78aECtNk08cbY9kCv37XWQ==" }, "icos-cp-draggable": { "version": "0.0.1", @@ -8397,9 +8431,9 @@ "dev": true }, "typescript": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.3.tgz", - "integrity": "sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", + "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==", "dev": true }, "ua-parser-js": { diff --git a/src/main/js/portal/package.json b/src/main/js/portal/package.json index 893302684..1461ec360 100644 --- a/src/main/js/portal/package.json +++ b/src/main/js/portal/package.json @@ -38,11 +38,17 @@ "babel": { "presets": [ "@babel/preset-env" + ], + "plugins": [ + "@babel/plugin-proposal-nullish-coalescing-operator", + "@babel/plugin-proposal-optional-chaining" ] }, "devDependencies": { "@babel/cli": "^7.6.2", "@babel/core": "^7.6.2", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.7.4", + "@babel/plugin-proposal-optional-chaining": "^7.7.4", "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/preset-env": "^7.6.2", "@babel/preset-es2015": "^7.0.0-beta.53", @@ -52,6 +58,7 @@ "@types/linkify-it": "^2.1.0", "@types/react": "^16.9.5", "@types/react-redux": "^7.1.4", + "array.prototype.flatmap": "1.2.2", "babelify": "^10.0.0", "browserify": "^16.2.3", "browserify-css": "^0.15.0", @@ -64,15 +71,14 @@ "gulp-sass": "^3.1.0", "gulp-sass-variables": "^1.2.0", "gulp-uglify": "^3.0.2", - "typescript": "^3.6.3", + "typescript": "3.7.2", "vinyl-buffer": "^1.0.1", - "vinyl-source-stream": "^2.0.0", - "array.prototype.flatmap": "1.2.2" + "vinyl-source-stream": "^2.0.0" }, "dependencies": { "babel-polyfill": "^6.26.0", "deep-equal": "^1.1.0", - "icos-cp-backend": "0.3.20", + "icos-cp-backend": "0.4.1", "icos-cp-draggable": "0.0.1", "icos-cp-toaster": "^0.6.2", "icos-cp-utils": "^0.1.5",