diff --git a/.github/workflows/nightly-e2e-tests.yml b/.github/workflows/nightly-e2e-tests.yml index 0aa8dbd890..dab88b7835 100644 --- a/.github/workflows/nightly-e2e-tests.yml +++ b/.github/workflows/nightly-e2e-tests.yml @@ -313,11 +313,10 @@ jobs: safari-publisher: runs-on: ubuntu-18.04 needs: - - chrome-dataprovider - - firefox-dataprovider - - ie11-dataprovider - - edge-dataprovider - - safari-dataprovider + - chrome-publisher + - firefox-publisher + - ie11-publisher + - edge-publisher steps: - uses: actions/checkout@v1 with: @@ -325,7 +324,7 @@ jobs: - name: Set up Python 2.7 uses: actions/setup-python@v2 with: - python-version: 2.7 + python-version: 2.7.17 - name: Install robotframework dependencies run: ./src/test/robotframework/setup.sh - name: Nightly Safari Tests (Publisher) diff --git a/docs/source/editing_macros_excel.rst b/docs/source/editing_macros_excel.rst index af2c96b7ff..a14840f3bf 100644 --- a/docs/source/editing_macros_excel.rst +++ b/docs/source/editing_macros_excel.rst @@ -19,25 +19,25 @@ In der Excel Tabelle können die Makros über Makro-Übersicht ~~~~~~~~~~~~~~~ -panelIdentifier -^^^^^^^^^^^^^^^ +repeatedMeasurementIdentifier +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Wo wird es genutzt? panelIdentifier_ in vimport.xlsx +Wo wird es genutzt? repeatedMeasurementIdentifier_ in vimport.xlsx - - generiert den panelIdentifier durch den Vergleich vom Variablenstamm + - generiert den repeatedMeasurementIdentifier durch den Vergleich vom Variablenstamm (ohne-Präfix) - dabei dürfen Variablennamen verschiedene Versionierungen und/oder Zugangswege-haben - das FDZ Variablenschema muss verwendet worden sein (Variablenname z.B.-astu01_g1v1r mit den möglichen Zugangswegen c,d,o,r,a) - im Tabellenblatt variables müssen die beiden Spaltennamen name - und-panelIdentifier vorhanden sein + und-repeatedMeasurementIdentifier vorhanden sein - der Projektnamen und die Datensatznummer werden über eine Inputbox eingegeben - - Beispiel: der panelIdentifier zu adem01_g1v1r und bdem01_g1v3r lautet + - Beispiel: der repeatedMeasurementIdentifier zu adem01_g1v1r und bdem01_g1v3r lautet z.B.-abs2005-ds1-dem01_g1 -.. _panelIdentifier: https://github.com/dzhw/metadatamanagement-io/blob/master/generation/example/Hilfsskripte/panelIdentifier.txt +.. _repeatedMeasurementIdentifier: https://github.com/dzhw/metadatamanagement-io/blob/master/generation/example/Hilfsskripte/repeatedMeasurementIdentifier.txt derivedVariablesIdentifier ^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/docs/source/excel_makros_verwenden.rst b/docs/source/excel_makros_verwenden.rst index 185f80ee2d..380445ed34 100644 --- a/docs/source/excel_makros_verwenden.rst +++ b/docs/source/excel_makros_verwenden.rst @@ -8,58 +8,58 @@ angelegt, in das die fertigen Skripte einfach reinkopiert werden können. In der Excel Tabelle können die Makros über ``Ansicht`` > ``Makros`` > ``Makros anzeigen`` > ``Ausführen`` gestartet werden. -+-------------------+----------------------------+-----------------------+ -| Name | Was kann es? | Wo wird es genutzt? | -+===================+============================+=======================+ -| panelIdentifier_ | Generiert den | panelIdientifier in | -| | PanelIdentifier durch | variables.xlsx | -| | den Vergleich von | | -| | Variablennamen. | | -| | | | -| | Dabei | | -| | dürfen Variablennamen | | -| | verschiedene | | -| | Versionierungen | | -| | und/oder Zugangswege | | -| | haben. | | -| | Die Eingabe des | | -| | Projektnamens, der | | -| | Datensatznummer, der | | -| | Spalte in die der | | -| | panelIdentifier | | -| | eingefügt werden soll | | -| | und die Auswahl der | | -| | Variablen erfolgt | | -| | über eine | | -| | Inputbox | | -| | | | -| | Beispiel: | | -| | der panelIdentifier | | -| | zu adem01_g1v1r und | | -| | bdem01_g1v3r lautet | | -| | z.B. | | -| | abs2005-ds1-dem01_g1 | | -| | | | -+-------------------+----------------------------+-----------------------+ -| addPrefix_ | Fügt einer oder | Panelvariablen in | -| | mehreren Variablen in | manMetadaten.xlsx | -| | einer Zelle und durch | | -| | Komma getrennt ein | | -| | Präfix hinzu (z.B. | | -| | abs2005). | | -| | Der Bereich | | -| | in der die Variablen | | -| | stehen und das | | -| | Projektkürzel werden | | -| | über eine InputBox | | -| | eingegeben | | -| | Beispiel: | | -| | bski01d_v1,bski01a_v1 | | -| | bski01u_v1 wird zu | | -| | abs2005-bski01d_v1,ab | | -| | s2005-bski01a_v1,abs2 | | -| | 005-bski01u_v1 | | -+-------------------+----------------------------+-----------------------+ ++---------------------------------+-------------------------------+-------------------------------+ +| Name | Was kann es? | Wo wird es genutzt? | ++=================================+===============================+===============================+ +| repeatedMeasurementIdentifier_ | Generiert den | repeatedMeasurementIdentifier | +| | RepeatedMeasurementIdentifier | in variables.xlsx | +| | durch den Vergleich von | | +| | Variablennamen. | | +| | | | +| | Dabei | | +| | dürfen Variablennamen | | +| | verschiedene | | +| | Versionierungen | | +| | und/oder Zugangswege | | +| | haben. | | +| | Die Eingabe des | | +| | Projektnamens, der | | +| | Datensatznummer, der | | +| | Spalte in die der | | +| | repeatedMeasurementIdentifier | | +| | eingefügt werden soll | | +| | und die Auswahl der | | +| | Variablen erfolgt | | +| | über eine | | +| | Inputbox | | +| | | | +| | Beispiel: der | | +| | repeatedMeasurementIdentifier | | +| | zu adem01_g1v1r und | | +| | bdem01_g1v3r lautet | | +| | z.B. | | +| | abs2005-ds1-dem01_g1 | | +| | | | ++---------------------------------+-------------------------------+-------------------------------+ +| addPrefix_ | Fügt einer oder | Panelvariablen in | +| | mehreren Variablen in | manMetadaten.xlsx | +| | einer Zelle und durch | | +| | Komma getrennt ein | | +| | Präfix hinzu (z.B. | | +| | abs2005). | | +| | Der Bereich | | +| | in der die Variablen | | +| | stehen und das | | +| | Projektkürzel werden | | +| | über eine InputBox | | +| | eingegeben | | +| | Beispiel: | | +| | bski01d_v1,bski01a_v1 | | +| | bski01u_v1 wird zu | | +| | abs2005-bski01d_v1,ab | | +| | s2005-bski01a_v1,abs2 | | +| | 005-bski01u_v1 | | ++---------------------------------+-------------------------------+-------------------------------+ -.. _panelidentifier: https://github.com/dzhw/metadatamanagement-io/blob/master/generation/example/Hilfsskripte/panelIdentifier.txt +.. _repeatedMeasurementIdentifier: https://github.com/dzhw/metadatamanagement-io/blob/master/generation/example/Hilfsskripte/repeatedMeasurementIdentifier.txt .. _addPrefix: https://github.com/dzhw/metadatamanagement-io/blob/master/generation/example/Hilfsskripte/addPrefix.txt diff --git a/docs/source/javadoc/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Statistics.rst b/docs/source/javadoc/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Statistics.rst index 6c0fb18277..4bf8b7a32d 100644 --- a/docs/source/javadoc/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Statistics.rst +++ b/docs/source/javadoc/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Statistics.rst @@ -40,14 +40,6 @@ firstQuartile Splits off the lowest 25% of the values (\ :java:ref:`ValidResponse`\ s) of this \ :java:ref:`Variable`\ from the highest 75%. Must not contain more than 32 characters. -highWhisker -^^^^^^^^^^^ - -.. java:field:: private Double highWhisker - :outertype: Statistics - - The highest value still within 1.5 IQR of the third quartile. - kurtosis ^^^^^^^^ @@ -56,14 +48,6 @@ kurtosis See \ `Kurtosis (Wikipedia) `_\ . -lowWhisker -^^^^^^^^^^ - -.. java:field:: private Double lowWhisker - :outertype: Statistics - - The lowest value still within 1.5 IQR of the first quartile. - maximum ^^^^^^^ diff --git a/docs/source/javadoc/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Variable.rst b/docs/source/javadoc/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Variable.rst index ab6317c2c3..ae5c0bb882 100644 --- a/docs/source/javadoc/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Variable.rst +++ b/docs/source/javadoc/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Variable.rst @@ -46,7 +46,7 @@ .. java:import:: eu.dzhw.fdz.metadatamanagement.surveymanagement.domain Survey -.. java:import:: eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation OnlyOrdinalScaleLevelForDateDataType +.. java:import:: eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation RestrictedScaleLevelForDateDataType .. java:import:: eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation StatisticsFirstQuartileMustBeANumberOnNumericDataType @@ -76,7 +76,7 @@ .. java:import:: eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation ValidDerivedVariablesIdentifier -.. java:import:: eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation ValidPanelIdentifier +.. java:import:: eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation ValidRepeatedMeasurementIdentifier .. java:import:: eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation ValidResponseValueMustBeANumberOnNumericDataType @@ -110,7 +110,7 @@ Variable .. java:package:: eu.dzhw.fdz.metadatamanagement.variablemanagement.domain :noindex: -.. java:type:: @Document @CompoundIndexes @ValidShadowId @ValidVariableIdName @ValidPanelIdentifier @ValidDerivedVariablesIdentifier @UniqueVariableNameInDataSet @OnlyOrdinalScaleLevelForDateDataType @ValidResponseValueMustBeAnIsoDateOnDateDataType @StatisticsMinimumMustBeAnIsoDateOnDateDataType @StatisticsMaximumMustBeAnIsoDateOnDateDataType @StatisticsMedianMustBeAnIsoDateOnDateDataType @StatisticsFirstQuartileMustBeAnIsoDateOnDateDataType @StatisticsThirdQuartileMustBeAnIsoDateOnDateDataType @ValidResponseValueMustBeANumberOnNumericDataType @StatisticsMinimumMustBeANumberOnNumericDataType @StatisticsMaximumMustBeANumberOnNumericDataType @StatisticsMedianMustBeANumberOnNumericDataType @StatisticsFirstQuartileMustBeANumberOnNumericDataType @StatisticsThirdQuartileMustBeANumberOnNumericDataType @EqualsAndHashCode @ToString @NoArgsConstructor @Data @AllArgsConstructor @Builder public class Variable extends AbstractShadowableRdcDomainObject +.. java:type:: @Document @CompoundIndexes @ValidShadowId @ValidVariableIdName @ValidRepeatedMeasurementIdentifier @ValidDerivedVariablesIdentifier @UniqueVariableNameInDataSet @RestrictedScaleLevelForDateDataType @ValidResponseValueMustBeAnIsoDateOnDateDataType @StatisticsMinimumMustBeAnIsoDateOnDateDataType @StatisticsMaximumMustBeAnIsoDateOnDateDataType @StatisticsMedianMustBeAnIsoDateOnDateDataType @StatisticsFirstQuartileMustBeAnIsoDateOnDateDataType @StatisticsThirdQuartileMustBeAnIsoDateOnDateDataType @ValidResponseValueMustBeANumberOnNumericDataType @StatisticsMinimumMustBeANumberOnNumericDataType @StatisticsMaximumMustBeANumberOnNumericDataType @StatisticsMedianMustBeANumberOnNumericDataType @StatisticsFirstQuartileMustBeANumberOnNumericDataType @StatisticsThirdQuartileMustBeANumberOnNumericDataType @EqualsAndHashCode @ToString @NoArgsConstructor @Data @AllArgsConstructor @Builder public class Variable extends AbstractShadowableRdcDomainObject A variable contains the results from at least one \ :java:ref:`Survey`\ . These results can be the responses from participants of an online survey, hence a variable can result from \ :java:ref:`RelatedQuestion`\ s. A variable is part of exactly one \ :java:ref:`DataSet`\ . @@ -250,14 +250,6 @@ name The name of the variable as it is used in the \ :java:ref:`DataSet`\ . It must not be empty and must be unique in the \ :java:ref:`DataSet`\ . It must contain only alphanumeric (english) characters and "_". The first character must not be a number. It must not contain more than 32 characters. -panelIdentifier -^^^^^^^^^^^^^^^ - -.. java:field:: @Size @Pattern private String panelIdentifier - :outertype: Variable - - Identifier used to group variables within this \ :java:ref:`DataSet`\ which measure the same across multiple waves. Must be of the form {{dataAcquisitionProjectId}}-ds{{dataSetNumber}}-{{string}}$. Must not contain more than 512 characters and must contain only (german) alphanumeric characters and "_" and "-". - relatedQuestions ^^^^^^^^^^^^^^^^ @@ -274,6 +266,14 @@ relatedVariables List of ids of variables which are "related" to this variable. The type of relation is arbitrary. +repeatedMeasurementIdentifier +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. java:field:: @Size @Pattern private String repeatedMeasurementIdentifier + :outertype: Variable + + Identifier used to group variables within this \ :java:ref:`DataSet`\ which measure the same across multiple waves. Must be of the form {{dataAcquisitionProjectId}}-ds{{dataSetNumber}}-{{string}}$. Must not contain more than 512 characters and must contain only (german) alphanumeric characters and "_" and "-". + scaleLevel ^^^^^^^^^^ diff --git a/docs/source/jsons_pruefen.rst b/docs/source/jsons_pruefen.rst index b410485077..be6a5e84a7 100644 --- a/docs/source/jsons_pruefen.rst +++ b/docs/source/jsons_pruefen.rst @@ -33,8 +33,8 @@ Allgemeine Prüfung - ist ein Attribut leer muss der Wert null sein (alternativ kann das Attribut auch aus dem json herausgenommen werden) - - richtig: "panelIdentifier": null - - falsch: "panelIdentifier": "" + - richtig: "repeatedMeasurementIdentifier": null + - falsch: "repeatedMeasurementIdentifier": "" - falsch: "validResponses": [] - der Datentyp muss richtig angegeben werden (wie im Beispiel Import diff --git a/docs/source/metadatenabgabe.rst b/docs/source/metadatenabgabe.rst index d1e13f28a5..621e6d0388 100644 --- a/docs/source/metadatenabgabe.rst +++ b/docs/source/metadatenabgabe.rst @@ -929,6 +929,8 @@ Vor Abgabe bzw. dem Hochladen der Daten sind folgende Punkte zu ☐ In das Metadatensystem eingegeben +- Neue, vom FDZ generierte Attachments benötigen kein BMBF-Logo mehr. Bei extern erstellten Dokumenten mag dies anders sein. + - Datenpaket (data package) - Erhebungen (surveys) diff --git a/docs/source/related_publications.rst b/docs/source/related_publications.rst index 2ac9c1aa54..04d19979d3 100644 --- a/docs/source/related_publications.rst +++ b/docs/source/related_publications.rst @@ -1,26 +1,45 @@ Related Publications ==================== +Ute hat wegen eines bestimmten Problems ein kurzes Review gemacht. Wenn dies hier überarbeitet wird, wäre es prima, wenn das berücksichtigt werden könnte: +``"\\faust\Abt4\FDZ\7_MitarbeiterInnen\Ute\relatedPublications\Review für Anleitung.docx"`` + **Arbeiten mit der Citavi-Datenbank** -Für dieses Objekt wird eine Citavi-Datenabank angelegt. Diese liegt unter: `\\faust\Abt4\FDZ\Querschnittsaufgaben\Metadaten\Erzeugen\Literaturexport\relatedPublication`. +Die Related Publications werden in der Citavi-Datenbank unter ``\\faust\Abt4\FDZ\6_Literatur\Literaturexport\relatedPublications\relatedPublications_cit6\relatedPublications.ctv6`` eingepflegt. +Wenn eine neue Publikation eingepflegt wird (grünes Plus-Zeichen), ist darauf zu achten, dass zunächst der richtige Dokumente-Typ gewählt wird. In der Regel wird dies ein Zeitschriftenaufsatz oder graue Literatur sein. + +**Tipp:** Eine Anleitung zum Aufnehmen der Literatur findet man unter https://www1.citavi.com/sub/manual6/de/index.html -> Citavi im Detail -> Titel aufnehmen. Oft kann man mit Hilfe des Citavi-Pickers (Browserplugin) aus Zeitschriften-Datenbanken Einträge importieren. Dies muss aber in jedem Fall überprüft werden, da die Einträge oft Fehler enthalten oder bspw. manche Felder komplett groß geschrieben sind. + +Neben den für den jeweiligen Dokumententyp verpflichtenden Feldern, gibt es noch eine Reihe weiterer Felder, welche für das MDM auszufüllen sind. +Diese werden unten bei der Eingabemaske angezeigt und müssen ggfs. noch per Klick auf den Text "weitere Felder" hinzugefügt werden. +Das Feld BibTeX Key wird automatisch von Citavi ausgefüllt. -Die Citavi-Einträge lassen sich exportieren, indem man einen Eintrag in der -Literaturübersicht markiert (linke Seite) und Str+Alt+t drückt. Die +Durch die Tastenkombination `Str+Alt+t` öffnet sich die Exportfunktion um es als Exceltabelle zu exportieren. Die Tabellenansicht öffnet sich und durch klicken auf Spalten (oben links) kann ausgewählt werden, welche Spalten exportiert werden sollen. Aus der -Tabellenansicht kann die die Datei jetzt nach Excel als relatedPublications.xls +Tabellenansicht kann die die Datei jetzt nach Excel als relatedPublications.xls (**wichtig:** nicht .xlsx) exportiert werden (Datei > nach Microsoft Excel exportieren). Einige -Spaltennamen müssen evtl. später noch manuell umbenannt werden (z.B. BibTeXKey -wird zu id). Die Excel-Tabelle wird -`hier` -gepflegt. +Spaltennamen müssen noch manuell umbenannt werden: + +- `BibTeXKey` -> `id` +- `Jahr ermittelt` -> `year` +- `Autoren` (Frage: `Autor, Herausgeber oder Institution`?) -> `authors` +- `Titel` -> `title` +- `Sprache -> language` +- bei einigen Feldern steht der Zusatz `(=Freitext $ZAHL)`, z. B. sourceReference (= Freitext 1), den Zusatz muss man löschen + +Strenggenommen muss das Feld studyIds [Frage: ist das jetzt nicht dataPackageIds?] nicht ausgefüllt werden, da die Verknüpfung `dataPackage <-> relatedPublication` im Project Cockpit erfolgt. +Es ist aber sinnvoll es weiter zu pflegen, sodass man es auch außerhalb des MDMs vorgehalten hat (falls etwas schiefläuft). + +Nachdem die Daten exportiert wurden, sind diese im Reiter Publikationen im MDM über den Plus-Button oder Drag and Drop hochzuladen. +Im Projekt-Cockpit (`Publikationen -> Bearbeiten`) müssen anschließend alle Publikationen, die mit dem Projekt / den Projekten zusammenhängen, verknüpft werden. Die +----------------+----------------------------+-------------------------+ | Eigenschaft | Ausfüllanweisung | muss ausgefüllt werden? | +================+============================+=========================+ -| id | von Citavi | ja | -| | erzeugter BibTex-Key | | +| id | von Citavi | ja; darf nicht geändert | +| | erzeugter BibTex-Key | werden | +----------------+----------------------------+-------------------------+ | source\ | Quellangabe der | ja | | Reference | Publikation | | @@ -57,9 +76,8 @@ gepflegt. +----------------+----------------------------+-------------------------+ | questionIds | | nein | +----------------+----------------------------+-------------------------+ -| studySeries\ | mindestens eine | Falls vorhanden ja | -| es.de | dataPackageId oder mindes\ | | -| | tens 1 studySeries | | +| studySeries\ | | ja, falls vorhanden | +| es.de | | | +----------------+----------------------------+-------------------------+ | language | Sprache der Publikation | ja | | | (2-Buchstaben Code | | diff --git a/docs/source/variables.rst b/docs/source/variables.rst index e7c63e26b8..905edf1b2e 100644 --- a/docs/source/variables.rst +++ b/docs/source/variables.rst @@ -77,12 +77,12 @@ Tabelle 5: Ausfüllanweisungen für die Excel-Tabelle "vimport_ds*Nr*." | | | „intervall“ or | | | | „ratio“ | +------------------------+-----------------------+------------------------+ -| panelIdentifier | Nein\* | Identifier zur | -| | | eindeutigen Zuordnung | -| | | von Panelvariablen. | -| | | Präfix muss aus der | -| | | Projekt-ID + Nummer | -| | | des Datensatzes | +| repeatedMeasurementId\ | Nein\* | Identifier zur | +| entifier | | eindeutigen Zuordnung | +| | | von Wiederholungsmess\ | +| | | ungen. Präfix muss aus | +| | | der Projekt-ID + Numm\ | +| | | er des Datensatzes | | | | bestehen (Beispiel: | | | | *gra2005-ds1*), der | | | | hintere Teil des | @@ -95,10 +95,10 @@ Tabelle 5: Ausfüllanweisungen für die Excel-Tabelle "vimport_ds*Nr*." | | | und *bstu01a* aus dem | | | | 1. Datensatz des | | | | Projekts *gra2005* | -| | | Panelvariablen, so | -| | | könnte der Identifier | -| | | *gra2005-ds1-stu01a* | -| | | lauten. | +| | | Wiederholungsmessungen | +| | | , so könnte der Ident\ | +| | | ifier *gra2005-ds1-st\ | +| | | u01a* lauten. | +------------------------+-----------------------+------------------------+ | annotations.de/en | Nein | Anmerkungen zur | | | | Variablen | @@ -246,7 +246,8 @@ Feld auch leer gelassen werden. | **Tabellenblatt 2: | | relatedQuestions** | +========================+=======================+=======================+ -| **Variablen, die mit | +| **Variablen (auch +| generierte), die mit | | mehreren Fragen | | verbunden sind, | | können mehrfach | @@ -306,7 +307,7 @@ Feld auch leer gelassen werden. Dem Namen entsprechend wird aus den Informationen des zweiten Tabellenblatts die Verknüpfung zwischen einer Variablen und der -dazugehörigen Frage aus dem Erhebungsinstrument erstellt. Für eine +dazugehörigen Frage aus dem Erhebungsinstrument erstellt. Hierbei sollten auch generierte Variablen mit relatedQuestions verbunden werden. Für eine nachvollziehbare Dokumentation dieser Verbindung ist die Erstellung eines Variablenfragebogens sehr hilfreich. Aus diesem kann die Verknüpfung aus Variable und Frage problemlos abgelesen werden. diff --git a/package-lock.json b/package-lock.json index b77963ee0a..d9bc523971 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "Metadatamanagement", - "version": "1.0.106-HOTFIX2", + "version": "1.0.107", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -320,9 +320,9 @@ "integrity": "sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI=" }, "@mapbox/tiny-sdf": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.1.1.tgz", - "integrity": "sha512-Ihn1nZcGIswJ5XGbgFAvVumOgWpvIjBX9jiRlIl46uQG9vJOF51ViBYHF95rEZupuyQbEmhLaDPLQlU7fUTsBg==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.2.2.tgz", + "integrity": "sha512-GeJdumh5Do1JvnE2QbbLixZmJg6CzOfpzcAuS+qZadWK1Gj+yY/mj7IOVlgXCBg/yDqDmitGwSius+rrTpm8RA==" }, "@mapbox/unitbezier": { "version": "0.0.0", @@ -387,14 +387,12 @@ "dev": true }, "@snyk/cli-interface": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.9.2.tgz", - "integrity": "sha512-C64bGtcQbh7941l7qgXFJ+FJIZdQtBHkPhKfGtUlCCMbC0FK0oaUmp6d7YPQxT4dEnkQdtlBT/eA2F6qIKbEng==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.11.0.tgz", + "integrity": "sha512-T3xfDqrEFKclHGdJx4/5+D5F7e76/99f33guE4RTlVITBhy7VVnjz4t/NDr3UYqcC0MgAmiC4bSVYHnlshuwJw==", "dev": true, "requires": { - "@snyk/dep-graph": "1.19.4", - "@types/graphlib": "^2.1.7", - "tslib": "^1.9.3" + "@types/graphlib": "^2" } }, "@snyk/cocoapods-lockfile-parser": { @@ -410,6 +408,26 @@ "tslib": "^1.10.0" }, "dependencies": { + "@snyk/dep-graph": { + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.19.4.tgz", + "integrity": "sha512-h3MMhjVm3BuIruwpDBqnMowKOG9viwr3TJHdIxTHulWKWSsPTTW1AAP3/RaK+UBp1y/Ua9yzeHncKIrzBdT5Nw==", + "dev": true, + "requires": { + "graphlib": "^2.1.8", + "lodash.isequal": "^4.5.0", + "object-hash": "^2.0.3", + "semver": "^6.0.0", + "source-map-support": "^0.5.19", + "tslib": "^1.13.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, "source-map-support": { "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", @@ -435,16 +453,15 @@ } }, "@snyk/dep-graph": { - "version": "1.19.4", - "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.19.4.tgz", - "integrity": "sha512-h3MMhjVm3BuIruwpDBqnMowKOG9viwr3TJHdIxTHulWKWSsPTTW1AAP3/RaK+UBp1y/Ua9yzeHncKIrzBdT5Nw==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.21.0.tgz", + "integrity": "sha512-+xwiU1zw+Z1V6RaIL7oWUqZo8jDIpoKfzvv8xGiq0hYxsiP9tGSUNuFXwQzAFEP60kJyD2a/nptdRPjsKD0jPw==", "dev": true, "requires": { "graphlib": "^2.1.8", "lodash.isequal": "^4.5.0", "object-hash": "^2.0.3", "semver": "^6.0.0", - "source-map-support": "^0.5.19", "tslib": "^1.13.0" }, "dependencies": { @@ -453,16 +470,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } } } }, @@ -484,9 +491,9 @@ "dev": true }, "@snyk/java-call-graph-builder": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/@snyk/java-call-graph-builder/-/java-call-graph-builder-1.16.2.tgz", - "integrity": "sha512-tJF+dY/wTfexwYuCgFB3RpWl4RGcf2H9RT9yurkTVi5wwKfvcNwZMUMwSlTDEFOqwmAsJ7e0uNVRlkPQHekCcQ==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@snyk/java-call-graph-builder/-/java-call-graph-builder-1.19.0.tgz", + "integrity": "sha512-in26UkFVEWvGyHmSmVUebvgyubANJB7rfrkE3PKjHDA80NwSLZDSNWOOC2lF2B+4ob4STWjQdMbv+bMqXl5Yew==", "dev": true, "requires": { "ci-info": "^2.0.0", @@ -499,7 +506,9 @@ "snyk-config": "^4.0.0-rc.2", "source-map-support": "^0.5.7", "temp-dir": "^2.0.0", - "tslib": "^1.9.3" + "tmp": "^0.2.1", + "tslib": "^1.9.3", + "xml-js": "^1.6.11" }, "dependencies": { "debug": { @@ -576,9 +585,9 @@ } }, "tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true } } @@ -616,43 +625,43 @@ } }, "@turf/area": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@turf/area/-/area-6.0.1.tgz", - "integrity": "sha512-Zv+3N1ep9P5JvR0YOYagLANyapGWQBh8atdeR3bKpWcigVXFsEKNUw03U/5xnh+cKzm7yozHD6MFJkqQv55y0g==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/area/-/area-6.3.0.tgz", + "integrity": "sha512-Y1cYyAQ2fk94npdgOeMF4msc2uabHY1m7A7ntixf1I8rkyDd6/iHh1IMy1QsM+VZXAEwDwsXhu+ZFYd3Jkeg4A==", "requires": { - "@turf/helpers": "6.x", - "@turf/meta": "6.x" + "@turf/helpers": "^6.3.0", + "@turf/meta": "^6.3.0" } }, "@turf/bbox": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.0.1.tgz", - "integrity": "sha512-EGgaRLettBG25Iyx7VyUINsPpVj1x3nFQFiGS3ER8KCI1MximzNLsam3eXRabqQDjyAKyAE1bJ4EZEpGvspQxw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.3.0.tgz", + "integrity": "sha512-N4ue5Xopu1qieSHP2MA/CJGWHPKaTrVXQJjzHRNcY1vtsO126xbSaJhWUrFc5x5vVkXp0dcucGryO0r5m4o/KA==", "requires": { - "@turf/helpers": "6.x", - "@turf/meta": "6.x" + "@turf/helpers": "^6.3.0", + "@turf/meta": "^6.3.0" } }, "@turf/centroid": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-6.0.2.tgz", - "integrity": "sha512-auyDauOtC4eddH7GC3CHFTDu2PKhpSeKCRhwhHhXtJqn2dWCJQNIoCeJRmfXRIbzCWhWvgvQafvvhq8HNvmvWw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-6.3.0.tgz", + "integrity": "sha512-7KTyqhUEqXDoyR/nf/jAXiW8ZVszEnrp5XZkgYyrf2GWdSovSO0iCN1J3bE2jkJv7IWyeDmGYL61GGzuTSZS2Q==", "requires": { - "@turf/helpers": "6.x", - "@turf/meta": "6.x" + "@turf/helpers": "^6.3.0", + "@turf/meta": "^6.3.0" } }, "@turf/helpers": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.1.4.tgz", - "integrity": "sha512-vJvrdOZy1ngC7r3MDA7zIGSoIgyrkWcGnNIEaqn/APmw+bVLF2gAW7HIsdTxd12s5wQMqEpqIQrmrbRRZ0xC7g==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==" }, "@turf/meta": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.0.2.tgz", - "integrity": "sha512-VA7HJkx7qF1l3+GNGkDVn2oXy4+QoLP6LktXAaZKjuT1JI0YESat7quUkbCMy4zP9lAUuvS4YMslLyTtr919FA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.3.0.tgz", + "integrity": "sha512-qBJjaAJS9H3ap0HlGXyF/Bzfl0qkA9suafX/jnDsZvWMfVLt+s+o6twKrXOGk5t7nnNON2NFRC8+czxpu104EQ==", "requires": { - "@turf/helpers": "6.x" + "@turf/helpers": "^6.3.0" } }, "@types/angular": { @@ -703,9 +712,9 @@ "dev": true }, "@types/js-yaml": { - "version": "3.12.5", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.5.tgz", - "integrity": "sha512-JCcp6J0GV66Y4ZMDAQCXot4xprYB+Zfd3meK9+INSJeVZwJmHAW30BBEEkPzXswMXuiyReUGOP3GxrADc9wPww==", + "version": "3.12.6", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.6.tgz", + "integrity": "sha512-cK4XqrLvP17X6c0C8n4iTbT59EixqyXL3Fk8/Rsk4dF3oX4dg70gYUXrXVUUHpnsGMPNlTQMqf+TVmNPX6FmSQ==", "dev": true }, "@types/keyv": { @@ -724,9 +733,9 @@ "dev": true }, "@types/node": { - "version": "14.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.10.tgz", - "integrity": "sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ==", + "version": "14.14.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.22.tgz", + "integrity": "sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==", "dev": true }, "@types/q": { @@ -751,9 +760,9 @@ "dev": true }, "@uirouter/core": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/@uirouter/core/-/core-6.0.6.tgz", - "integrity": "sha512-+i1iNaPQRp1JoEnxi4EsTX30bSvkWtPEenENWdvdIzX615Q3WCWwnbW9DtrwX9gSD5qmWEaQEtGMU0uF3qJ+1g==" + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/@uirouter/core/-/core-6.0.7.tgz", + "integrity": "sha512-KUTJxL+6q0PiBnFx4/Z+Hsyg0pSGiaW5yZQeJmUxknecjpTbnXkLU8H2EqRn9N2B+qDRa7Jg8RcgeNDPY72O1w==" }, "@yarnpkg/lockfile": { "version": "1.1.0", @@ -997,38 +1006,53 @@ "resolved": "https://registry.npmjs.org/angular-sanitize/-/angular-sanitize-1.8.2.tgz", "integrity": "sha512-OB6Goa+QN3byf5asQ7XRl7DKZejm/F/ZOqa9z1skqYVOWA2hoBxoCmt9E7+i7T/TbxZP5zYzKxNZVVJNu860Hg==" }, + "angular-swx-session-storage": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/angular-swx-session-storage/-/angular-swx-session-storage-1.0.0.tgz", + "integrity": "sha1-WQ/2fZ044lZs1uFCwfv2i9pO8yU=", + "requires": { + "angular": "~1.5" + }, + "dependencies": { + "angular": { + "version": "1.5.11", + "resolved": "https://registry.npmjs.org/angular/-/angular-1.5.11.tgz", + "integrity": "sha1-jFunOG8VllyazzQp9ogVU6raMNY=" + } + } + }, "angular-translate": { - "version": "2.18.3", - "resolved": "https://registry.npmjs.org/angular-translate/-/angular-translate-2.18.3.tgz", - "integrity": "sha512-ziEi1nTaNIsdn3iKpcALaSFjM9CjwvoIWE/EKepajB/6qT5oB3K1IU5VcaH7Bd0scNRfaJpW+qUD6nsHWDEZ6A==", + "version": "2.18.4", + "resolved": "https://registry.npmjs.org/angular-translate/-/angular-translate-2.18.4.tgz", + "integrity": "sha512-KohNrkH6J9PK+VW0L/nsRTcg5Fw70Ajwwe3Jbfm54Pf9u9Fd+wuingoKv+h45mKf38eT+Ouu51FPua8VmZNoCw==", "requires": { "angular": "^1.8.0" } }, "angular-translate-handler-log": { - "version": "2.18.3", - "resolved": "https://registry.npmjs.org/angular-translate-handler-log/-/angular-translate-handler-log-2.18.3.tgz", - "integrity": "sha512-wwTkMOjVtJbZn+IW+NhV9mLMQuWMNLGTI52UVNNTeq+A6WykvuUX1fknAwVgvs9GWah01f7R7gK02qEbyvl1HA==", + "version": "2.18.4", + "resolved": "https://registry.npmjs.org/angular-translate-handler-log/-/angular-translate-handler-log-2.18.4.tgz", + "integrity": "sha512-hWIJogLuW58Uv2mg+T7gbzhxpwA8eG6f0kexzBBpogoHd1GK3qXLW73RcOhZ0kWsj8OvJZ0wRVM9wkS3iybXzg==", "requires": { - "angular-translate": "~2.18.3" + "angular-translate": "~2.18.4" } }, "angular-translate-interpolation-messageformat": { - "version": "2.18.3", - "resolved": "https://registry.npmjs.org/angular-translate-interpolation-messageformat/-/angular-translate-interpolation-messageformat-2.18.3.tgz", - "integrity": "sha512-sqJUxUx9zlClFz4l+73HcYeGfdiw3EuK/C3diVVPKPMuY99+NNnqHl1MYXNxmukLmJGmmOcV07OtleQehbWV3A==", + "version": "2.18.4", + "resolved": "https://registry.npmjs.org/angular-translate-interpolation-messageformat/-/angular-translate-interpolation-messageformat-2.18.4.tgz", + "integrity": "sha512-kU9zOhIbWdiourk558IyBMSMxa6haSdRZ+PBGyQW9YfWYlJoN/jafd7Mrya5N12kUYleLTVD9k8wEhLxLulB1g==", "requires": { - "angular-translate": "~2.18.3", + "angular-translate": "~2.18.4", "messageformat": "~1.0.2" } }, "angular-translate-storage-cookie": { - "version": "2.18.3", - "resolved": "https://registry.npmjs.org/angular-translate-storage-cookie/-/angular-translate-storage-cookie-2.18.3.tgz", - "integrity": "sha512-U+foi+s6hQbrVx2YXcZeynQ6JP8kheNgx5QobpB1jYSHaTlwBSA3nCD/VqGk5Nz50hM2IeeHi2zJX6YdUIj+wg==", + "version": "2.18.4", + "resolved": "https://registry.npmjs.org/angular-translate-storage-cookie/-/angular-translate-storage-cookie-2.18.4.tgz", + "integrity": "sha512-W13C5ghMl5yBDZY2HVRPl/OqXAaMTVlfvmDWGamq5UggmyNRunQZ8laMcgc8PrONB38PBYWjhHM282XOZiLMhg==", "requires": { "angular-cookies": ">=1.2.26 <1.9", - "angular-translate": "~2.18.3" + "angular-translate": "~2.18.4" } }, "angular-ui-bootstrap": { @@ -1036,11 +1060,11 @@ "integrity": "sha512-gpR2/v8BMzhVN5gEo67S6Wi3/NQBOjXKKT+FY9+2PNSCGg4vy5i7njfBbli98Se43dxEly++P4VUaZCIBCIeRA==" }, "angular-ui-router": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/angular-ui-router/-/angular-ui-router-1.0.28.tgz", - "integrity": "sha512-BhcaW/ac+6/Ps9to9tHEuCG3LHgatD5mL0a6WRie4mBxdOjaEqNMB6SIB0l7qNpJMhMsi3m2SRMknk52rZCQQg==", + "version": "1.0.29", + "resolved": "https://registry.npmjs.org/angular-ui-router/-/angular-ui-router-1.0.29.tgz", + "integrity": "sha512-VurVxwueqEFD0JJBHkATOvLinhebc8/052jyhYrFVbHtWEc//IX4Wr55WvmJoTZJ6lnQ3nBlpX9VBKS5wiRsOg==", "requires": { - "@uirouter/core": "6.0.6" + "@uirouter/core": "6.0.7" } }, "ansi-align": { @@ -1230,8 +1254,7 @@ "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" }, "array-normalize": { "version": "1.1.4", @@ -1332,12 +1355,6 @@ "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", "dev": true }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -1380,45 +1397,12 @@ "dev": true }, "axios": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", - "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", "dev": true, "requires": { - "follow-redirects": "1.5.10", - "is-buffer": "^2.0.2" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "dev": true, - "requires": { - "debug": "=3.1.0" - } - }, - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "follow-redirects": "^1.10.0" } }, "babel-runtime": { @@ -1524,9 +1508,9 @@ "dev": true }, "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true }, "batch": { @@ -1550,15 +1534,6 @@ "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", "dev": true }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true, - "requires": { - "callsite": "1.0.0" - } - }, "big-rat": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/big-rat/-/big-rat-1.0.4.tgz", @@ -1576,9 +1551,9 @@ "dev": true }, "binary-search-bounds": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/binary-search-bounds/-/binary-search-bounds-2.0.4.tgz", - "integrity": "sha512-2hg5kgdKql5ClF2ErBcSx0U5bnl5hgS4v7wMnLFodyR47yMtj2w+UAZB+0CiqyHct2q543i7Bi4/aMIegorCCg==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/binary-search-bounds/-/binary-search-bounds-2.0.5.tgz", + "integrity": "sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==" }, "bit-twiddle": { "version": "1.0.2", @@ -1792,24 +1767,36 @@ "integrity": "sha512-p5rxsK/IyEDQm2CwiHxxUi0MZZtvVFbhWmyMOt4lLkA4bujDA1TGoKT0i1FKIWiugAdP+kK8T5KMDFIKQCLYIA==" }, "boundary-cells": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/boundary-cells/-/boundary-cells-2.0.1.tgz", - "integrity": "sha1-6QWo0UGc9Hyza+Pb9SXbXiTeAEI=", - "requires": { - "tape": "^4.0.0" - } + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/boundary-cells/-/boundary-cells-2.0.2.tgz", + "integrity": "sha512-/S48oUFYEgZMNvdqC87iYRbLBAPHYijPRNrNpm/sS8u7ijIViKm/hrV3YD4sx/W68AsG5zLMyBEditVHApHU5w==" }, "bower-config": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/bower-config/-/bower-config-1.4.1.tgz", - "integrity": "sha1-hf2d82fCuNu9DKpMXyutQM2Ewsw=", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/bower-config/-/bower-config-1.4.3.tgz", + "integrity": "sha512-MVyyUk3d1S7d2cl6YISViwJBc2VXCkxF5AUFykvN0PQj5FsUiMNSgAYTso18oRFfyZ6XEtjrgg9MAaufHbOwNw==", "dev": true, "requires": { "graceful-fs": "^4.1.3", + "minimist": "^0.2.1", "mout": "^1.0.0", - "optimist": "^0.6.1", "osenv": "^0.1.3", - "untildify": "^2.1.0" + "untildify": "^2.1.0", + "wordwrap": "^0.0.3" + }, + "dependencies": { + "minimist": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.1.tgz", + "integrity": "sha512-GY8fANSrTMfBVfInqJAY41QkOM+upUTytK1jZ0c8+3HdHrJxBJ3rF5i9moClXTE8uUSnUo8cAsCoxDXvSY4DHg==", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } } }, "bowser": { @@ -1949,16 +1936,16 @@ } }, "browser-sync": { - "version": "2.26.13", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.26.13.tgz", - "integrity": "sha512-JPYLTngIzI+Dzx+StSSlMtF+Q9yjdh58HW6bMFqkFXuzQkJL8FCvp4lozlS6BbECZcsM2Gmlgp0uhEjvl18X4w==", + "version": "2.26.14", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.26.14.tgz", + "integrity": "sha512-3TtpsheGolJT6UFtM2CZWEcGJmI4ZEvoCKiKE2bvcDnPxRkhQT4nIGVtfiyPcoHKXGM0LwMOZmYJNWfiNfVXWA==", "dev": true, "requires": { - "browser-sync-client": "^2.26.13", - "browser-sync-ui": "^2.26.13", + "browser-sync-client": "^2.26.14", + "browser-sync-ui": "^2.26.14", "bs-recipes": "1.3.4", "bs-snippet-injector": "^2.0.1", - "chokidar": "^3.4.1", + "chokidar": "^3.5.1", "connect": "3.6.6", "connect-history-api-fallback": "^1", "dev-ip": "^1.0.1", @@ -1969,7 +1956,7 @@ "fs-extra": "3.0.1", "http-proxy": "^1.18.1", "immutable": "^3", - "localtunnel": "^2.0.0", + "localtunnel": "^2.0.1", "micromatch": "^4.0.2", "opn": "5.3.0", "portscanner": "2.1.1", @@ -1981,15 +1968,49 @@ "serve-index": "1.9.1", "serve-static": "1.13.2", "server-destroy": "1.0.1", - "socket.io": "2.1.1", + "socket.io": "2.4.0", "ua-parser-js": "^0.7.18", "yargs": "^15.4.1" + }, + "dependencies": { + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "fsevents": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz", + "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + } } }, "browser-sync-client": { - "version": "2.26.13", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.26.13.tgz", - "integrity": "sha512-p2VbZoYrpuDhkreq+/Sv1MkToHklh7T1OaIntDwpG6Iy2q/XkBcgwPcWjX+WwRNiZjN8MEehxIjEUh12LweLmQ==", + "version": "2.26.14", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.26.14.tgz", + "integrity": "sha512-be0m1MchmKv/26r/yyyolxXcBi052aYrmaQep5nm8YNMjFcEyzv0ZoOKn/c3WEXNlEB/KeXWaw70fAOJ+/F1zQ==", "dev": true, "requires": { "etag": "1.8.1", @@ -1999,17 +2020,96 @@ } }, "browser-sync-ui": { - "version": "2.26.13", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.26.13.tgz", - "integrity": "sha512-6NJ/pCnhCnBMzaty1opWo7ipDmFAIk8U71JMQGKJxblCUaGfdsbF2shf6XNZSkXYia1yS0vwKu9LIOzpXqQZCA==", + "version": "2.26.14", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.26.14.tgz", + "integrity": "sha512-6oT1sboM4KVNnWCCJDMGbRIeTBw97toMFQ+srImvwQ6J5t9KMgizaIX8HcKLiemsUMSJkgGM9RVKIpq2UblgOA==", "dev": true, "requires": { "async-each-series": "0.1.1", "connect-history-api-fallback": "^1", "immutable": "^3", "server-destroy": "1.0.1", - "socket.io-client": "^2.0.4", + "socket.io-client": "^2.4.0", "stream-throttle": "^0.1.3" + }, + "dependencies": { + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "engine.io-client": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.0.tgz", + "integrity": "sha512-12wPRfMrugVw/DNyJk34GQ5vIVArEcVMXWugQGGuw2XxUSztFNmJggZmv8IZlLyEdnpO1QB9LkcjeWewO2vxtA==", + "dev": true, + "requires": { + "component-emitter": "~1.3.0", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.4.2", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==", + "dev": true + }, + "parseuri": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==", + "dev": true + }, + "socket.io-client": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz", + "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "engine.io-client": "~3.5.0", + "has-binary2": "~1.0.2", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + } + }, + "ws": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.2.tgz", + "integrity": "sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==", + "dev": true + } } }, "browserify-zlib": { @@ -2081,9 +2181,9 @@ } }, "cacheable-lookup": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz", - "integrity": "sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", "dev": true }, "cacheable-request": { @@ -2112,21 +2212,6 @@ } } }, - "call-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", - "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.0" - } - }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true - }, "camel-case": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", @@ -2140,8 +2225,7 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "camelcase-keys": { "version": "2.1.0", @@ -2236,19 +2320,19 @@ "dev": true }, "chokidar": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", - "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", + "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" + "readdirp": "~3.5.0" } }, "chownr": { @@ -2309,9 +2393,9 @@ } }, "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.0.1.tgz", + "integrity": "sha512-F1zAGOowUCg8yxT0O4UR+nmbMauf3YwbiUS60CPxpzJU7ulpamGzQomFrJSK4w/HqHtMmQKSHJUNue+dQQYQdg==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -2846,12 +2930,6 @@ "monotone-convex-hull-2d": "^1.0.1" } }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, "cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", @@ -3285,6 +3363,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -3540,14 +3619,6 @@ } } }, - "dotignore": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", - "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", - "requires": { - "minimatch": "^3.0.4" - } - }, "dotnet-deps-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/dotnet-deps-parser/-/dotnet-deps-parser-5.0.0.tgz", @@ -3766,89 +3837,23 @@ "dev": true }, "engine.io": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", - "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.5.0.tgz", + "integrity": "sha512-21HlvPUKaitDGE4GXNtQ7PLP0Sz4aWLddMPw2VTyFz1FVZqu/kZsJUO8WNpKuE/OCL7nkfRaOui2ZCJloGznGA==", "dev": true, "requires": { "accepts": "~1.3.4", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "ws": "~3.3.1" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", - "dev": true, - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - } - } - }, - "engine.io-client": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.3.tgz", - "integrity": "sha512-0NGY+9hioejTEJCaSJZfWZLk4FPI9dN+1H1C4+wj2iuFba47UgZbJzfWs4aNFajnX/qAaYKbe2lLTfEEWzCmcw==", - "dev": true, - "requires": { - "component-emitter": "~1.3.0", - "component-inherit": "0.0.3", + "base64id": "2.0.0", + "cookie": "~0.4.1", "debug": "~4.1.0", "engine.io-parser": "~2.2.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~6.1.0", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" + "ws": "~7.4.2" }, "dependencies": { - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", "dev": true }, "debug": { @@ -3859,6 +3864,12 @@ "requires": { "ms": "^2.1.1" } + }, + "ws": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.2.tgz", + "integrity": "sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==", + "dev": true } } }, @@ -3915,6 +3926,7 @@ "version": "1.17.6", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", @@ -3933,6 +3945,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -3950,9 +3963,9 @@ } }, "es5-shim": { - "version": "4.5.14", - "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.14.tgz", - "integrity": "sha512-7SwlpL+2JpymWTt8sNLuC2zdhhc+wrfe5cMPI2j0o6WsPdfAiPwmFy2f0AocPB4RQVBOZ9kNTgi5YF7TdhkvEg==" + "version": "4.5.15", + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.15.tgz", + "integrity": "sha512-FYpuxEjMeDvU4rulKqFdukQyZSTpzhg4ScQHrAosrlVpR6GFyaw14f74yn2+4BugniIS0Frpg7TvwZocU4ZMTw==" }, "es6-iterator": { "version": "2.0.3", @@ -4011,6 +4024,12 @@ "es6-symbol": "^3.1.1" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-goat": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", @@ -4410,6 +4429,21 @@ "ms": "2.0.0" } }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "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", @@ -4712,14 +4746,6 @@ "css-font": "^1.2.0" } }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -4859,9 +4885,9 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz", + "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==", "dev": true, "optional": true }, @@ -4904,7 +4930,8 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "functional-red-black-tree": { "version": "1.0.1", @@ -4960,18 +4987,8 @@ }, "get-canvas-context": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-canvas-context/-/get-canvas-context-1.0.2.tgz", - "integrity": "sha1-1ue1C8TkyGNXzTnyJkeoS3NgHpM=" - }, - "get-intrinsic": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", - "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } + "resolved": "https://registry.npmjs.org/get-canvas-context/-/get-canvas-context-1.0.2.tgz", + "integrity": "sha1-1ue1C8TkyGNXzTnyJkeoS3NgHpM=" }, "get-stdin": { "version": "4.0.1", @@ -5172,9 +5189,9 @@ } }, "gl-heatmap2d": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/gl-heatmap2d/-/gl-heatmap2d-1.1.0.tgz", - "integrity": "sha512-0FLXyxv6UBCzzhi4Q2u+9fUs6BX1+r5ZztFe27VikE9FUVw7hZiuSHmgDng92EpydogcSYHXCIK8+58RagODug==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/gl-heatmap2d/-/gl-heatmap2d-1.1.1.tgz", + "integrity": "sha512-6Vo1fPIB1vQFWBA/MR6JAA16XuQuhwvZRbSjYEq++m4QV33iqjGS2HcVIRfJGX+fomd5eiz6bwkVZcKm69zQPw==", "requires": { "binary-search-bounds": "^2.0.4", "gl-buffer": "^2.1.2", @@ -5490,12 +5507,12 @@ } }, "global-dirs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", - "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", "dev": true, "requires": { - "ini": "^1.3.5" + "ini": "1.3.7" } }, "global-modules": { @@ -6136,6 +6153,17 @@ "chalk": "^2.4.1", "clean-css": "~4.2.1", "maxmin": "^2.1.0" + }, + "dependencies": { + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + } } }, "grunt-contrib-htmlmin": { @@ -6702,6 +6730,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -6769,7 +6798,8 @@ "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true }, "has-unicode": { "version": "2.0.1", @@ -6934,6 +6964,15 @@ "uglify-js": "^3.5.1" }, "dependencies": { + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, "uglify-js": { "version": "3.6.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.3.tgz", @@ -7193,9 +7232,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" }, "inquirer": { "version": "7.3.3", @@ -7407,11 +7446,6 @@ } } }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -7450,7 +7484,8 @@ "is-callable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true }, "is-ci": { "version": "2.0.0", @@ -7484,7 +7519,8 @@ "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true }, "is-deflate": { "version": "1.0.0", @@ -7591,11 +7627,6 @@ "resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-2.2.2.tgz", "integrity": "sha512-wW/SXnYJkTjs++tVK5b6kVITZpAZPtUrt9SF80vvxGiF/Oywal+COk1jlRkiVq15RFNEQKQY31TkV24/1T5cVg==" }, - "is-negative-zero": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", - "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=" - }, "is-npm": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", @@ -7646,6 +7677,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -7679,6 +7711,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -7860,9 +7893,9 @@ "dev": true }, "js-beautify": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.0.tgz", - "integrity": "sha512-/Tbp1OVzZjbwzwJQFIlYLm9eWQ+3aYbBXLSaqb1mEJzhcQAfrqMMQYtjb6io+U6KpD0ID4F+Id3/xcjH3l/sqA==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.5.tgz", + "integrity": "sha512-MsXlH6Z/BiRYSkSRW3clNDqDjSpiSNOiG8xYVUBXt4k0LnGvDhlTGOlHX1VFtAdoLmtwjxMG5qiWKy/g+Ipv5w==", "requires": { "config-chain": "^1.1.12", "editorconfig": "^0.15.3", @@ -8343,12 +8376,6 @@ "yargs": "^15.3.1" }, "dependencies": { - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true - }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -8376,37 +8403,6 @@ "ms": "2.0.0" } }, - "engine.io": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.2.tgz", - "integrity": "sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "0.3.1", - "debug": "~4.1.0", - "engine.io-parser": "~2.2.0", - "ws": "^7.1.2" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -8442,16 +8438,10 @@ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true - }, "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz", + "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==", "dev": true }, "ms": { @@ -8469,65 +8459,6 @@ "glob": "^7.1.3" } }, - "socket.io": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz", - "integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==", - "dev": true, - "requires": { - "debug": "~4.1.0", - "engine.io": "~3.4.0", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.3.0", - "socket.io-parser": "~3.4.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "socket.io-parser": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", - "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "debug": "~4.1.0", - "isarray": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -8539,12 +8470,6 @@ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz", "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==", "dev": true - }, - "ws": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", - "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", - "dev": true } } }, @@ -8860,84 +8785,130 @@ } }, "localtunnel": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.0.tgz", - "integrity": "sha512-g6E0aLgYYDvQDxIjIXkgJo2+pHj3sGg4Wz/XP3h2KtZnRsWPbOQY+hw1H8Z91jep998fkcVE9l+kghO+97vllg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.1.tgz", + "integrity": "sha512-LiaI5wZdz0xFkIQpXbNI62ZnNn8IMsVhwxHmhA+h4vj8R9JG/07bQHWwQlyy7b95/5fVOCHJfIHv+a5XnkvaJA==", "dev": true, "requires": { - "axios": "0.19.0", - "debug": "4.1.1", + "axios": "0.21.1", + "debug": "4.3.1", "openurl": "1.1.1", - "yargs": "13.3.0" + "yargs": "16.2.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "ms": "^2.1.1" + "color-convert": "^2.0.1" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" } }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, + "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true + }, "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true } } }, @@ -8958,9 +8929,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.assign": { @@ -9082,9 +9053,9 @@ }, "dependencies": { "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -9455,9 +9426,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "minipass": { "version": "3.1.3", @@ -9522,20 +9493,12 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "minimist": "^1.2.5" } }, "moment": { @@ -9587,9 +9550,9 @@ } }, "mout": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mout/-/mout-1.1.0.tgz", - "integrity": "sha512-XsP0vf4As6BfqglxZqbqQ8SR6KQot2AgxvR0gG+WtUkf90vUXchMOZQtPf/Hml1rEffJupqL/tIrU6EYhsUQjw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/mout/-/mout-1.2.2.tgz", + "integrity": "sha512-w0OUxFEla6z3d7sVpMZGBCpQvYh8PHS1wZ6Wu9GNKHMpAHWJ0if0LsQZh3DlOqw55HlhJEOMLpFnwtxp99Y5GA==", "dev": true }, "ms": { @@ -10193,12 +10156,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true - }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -10231,24 +10188,16 @@ } }, "object-hash": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz", - "integrity": "sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz", + "integrity": "sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ==", "dev": true }, "object-inspect": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" - }, - "object-is": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", - "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true }, "object-keys": { "version": "1.1.1", @@ -10268,6 +10217,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, "requires": { "define-properties": "^1.1.2", "function-bind": "^1.1.1", @@ -10355,9 +10305,9 @@ } }, "open": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.3.0.tgz", - "integrity": "sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.0.tgz", + "integrity": "sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA==", "dev": true, "requires": { "is-docker": "^2.0.0", @@ -10782,24 +10732,6 @@ "resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz", "integrity": "sha1-fhu21b7zh0wo45JSaiVBFwKR7s8=" }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true, - "requires": { - "better-assert": "~1.0.0" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true, - "requires": { - "better-assert": "~1.0.0" - } - }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -11095,9 +11027,9 @@ } }, "plotly.js": { - "version": "1.57.1", - "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-1.57.1.tgz", - "integrity": "sha512-23GlzClmOGT1lE86Ys0DLuxBM/fgRNzJqH9y7ZylO4VPwstPAlQd12DklXsuqOgCNSxnnWUaP+J7BaUOFplsUg==", + "version": "1.58.4", + "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-1.58.4.tgz", + "integrity": "sha512-hdt/aEvkPjS1HJ7tJKcPqsqi9ErEZPhUFs4d2ANTLeBim+AmVcHzS1rtwr7ZrVCINgliW/+92u81omJoy+lbUw==", "requires": { "@plotly/d3-sankey": "0.7.2", "@plotly/d3-sankey-circular": "0.33.1", @@ -11129,7 +11061,7 @@ "gl-mat4": "^1.2.0", "gl-mesh3d": "^2.3.1", "gl-plot2d": "^1.4.5", - "gl-plot3d": "^2.4.6", + "gl-plot3d": "^2.4.7", "gl-pointcloud2d": "^1.0.3", "gl-scatter3d": "^1.2.3", "gl-select-box": "^1.0.4", @@ -11322,6 +11254,12 @@ "asap": "~2.0.3" } }, + "promise-queue": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/promise-queue/-/promise-queue-2.2.5.tgz", + "integrity": "sha1-L29ffA9tCBCelnZZx5uIqe1ek7Q=", + "dev": true + }, "prompt": { "version": "0.2.14", "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", @@ -11347,9 +11285,9 @@ "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" }, "protocol-buffers-schema": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.4.0.tgz", - "integrity": "sha512-G/2kcamPF2S49W5yaMGdIpkG6+5wZF0fzBteLKgEHjbNzqjZQ85aAs1iJGto31EJaSTkNvHs5IXuHSaTLWBAiA==" + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.5.1.tgz", + "integrity": "sha512-YVCvdhxWNDP8/nJDyXLuM+UFsuPk4+1PB7WGPVDzm3HTHbzFLxQYeW2iZpS4mmnXrQJGBzt230t/BbEb7PrQaw==" }, "proxy-agent": { "version": "2.3.1", @@ -11594,9 +11532,9 @@ } }, "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dev": true, "requires": { "picomatch": "^2.2.1" @@ -11652,15 +11590,6 @@ "resolved": "https://registry.npmjs.org/regex-regex/-/regex-regex-1.0.0.tgz", "integrity": "sha1-kEih6uuHD01IDavHb8Qs3MC8OnI=" }, - "regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, "registry-auth-token": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", @@ -11699,11 +11628,12 @@ } }, "regl-line2d": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/regl-line2d/-/regl-line2d-3.0.18.tgz", - "integrity": "sha512-yX1TlV0SHBdn8EkU+9K+K19qx7WSDOchrKx+h43rE2NCWuPlVj/MPDgrIXnzhnd42XhQtvvnkSc7aCSLjGAhZQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regl-line2d/-/regl-line2d-3.1.0.tgz", + "integrity": "sha512-8dB3SyAW5zTU759LrIJdkOe128htl1xlONHrknsFl1tAxZVqTc+WO/2k9pAJDuyiKu1v/6bosiuEDOB7G3dm4w==", "requires": { "array-bounds": "^1.0.1", + "array-find-index": "^1.0.2", "array-normalize": "^1.1.4", "color-normalize": "^1.5.0", "earcut": "^2.1.5", @@ -11717,9 +11647,9 @@ } }, "regl-scatter2d": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/regl-scatter2d/-/regl-scatter2d-3.2.1.tgz", - "integrity": "sha512-qxUCK5kXuoVZin2gPLXkgkBfRr3XLobVgEfn5N0fiprsb/ncTCtSNVBqP0EJgNb115R+FXte9LKA9YrFx7uBnA==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/regl-scatter2d/-/regl-scatter2d-3.2.3.tgz", + "integrity": "sha512-wURiMVjNrcBoED0SMYH9Accs0CovdnBWWuzH/WgT0kuJ3kDzia1vhmEUA2JZ/beozalARkFAy/C2K/4Nd1eZqQ==", "requires": { "@plotly/point-cluster": "^3.1.9", "array-range": "^1.0.1", @@ -11740,9 +11670,9 @@ } }, "regl-splom": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/regl-splom/-/regl-splom-1.0.12.tgz", - "integrity": "sha512-LliMmAQ6wJFuPiLxZgYOFOzjhWcrIWPbS3Vf763Twl6R8eKpuUyRHZ54q+hxWGYwICHoPCBKMs7pVAJi8Iv7/w==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/regl-splom/-/regl-splom-1.0.14.tgz", + "integrity": "sha512-OiLqjmPRYbd7kDlHC6/zDf6L8lxgDC65BhC8JirhP4ykrK4x22ZyS+BnY8EUinXKDeMgmpRwCvUmk7BK4Nweuw==", "requires": { "array-bounds": "^1.0.1", "array-range": "^1.0.1", @@ -11751,7 +11681,7 @@ "parse-rect": "^1.2.0", "pick-by-alias": "^1.2.0", "raf": "^3.4.1", - "regl-scatter2d": "^3.1.9" + "regl-scatter2d": "^3.2.3" } }, "relateurl": { @@ -11964,16 +11894,8 @@ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "resumer": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", - "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", - "requires": { - "through": "~2.3.4" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" } }, "ret": { @@ -11989,9 +11911,9 @@ "dev": true }, "rfdc": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", - "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.2.0.tgz", + "integrity": "sha512-ijLyszTMmUrXvjSooucVQwimGUk84eRcmCuLV8Xghe3UO85mjUtRAHRyoMM6XtyqbECaXuBWx18La3523sXINA==", "dev": true }, "right-now": { @@ -12531,11 +12453,6 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, "cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", @@ -12626,9 +12543,9 @@ } }, "yargs-parser": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz", - "integrity": "sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ==", + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", + "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -12875,13 +12792,13 @@ } }, "snyk": { - "version": "1.431.2", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.431.2.tgz", - "integrity": "sha512-DGm/bxtCSI/ReGK0vMphicQyZtVXiLgLvWkdDbRmsMb4Q7VRylAq9z+5lursLriED7eTjxlkgFMjOdGOuIoxpg==", + "version": "1.440.2", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.440.2.tgz", + "integrity": "sha512-IiN7bWsrbInVs9zcrkKENMToGwa2h5esr/L5aGWu8elaUohn9Dnz0THOOSN4AgbSsgLpqzqhDOgpwPfSlBd5/g==", "dev": true, "requires": { - "@snyk/cli-interface": "2.9.2", - "@snyk/dep-graph": "1.19.4", + "@snyk/cli-interface": "2.11.0", + "@snyk/dep-graph": "1.21.0", "@snyk/gemfile": "1.2.0", "@snyk/snyk-cocoapods-plugin": "2.5.1", "abbrev": "^1.1.1", @@ -12898,21 +12815,22 @@ "needle": "2.5.0", "open": "^7.0.3", "os-name": "^3.0.0", + "promise-queue": "^2.2.5", "proxy-agent": "^3.1.1", "proxy-from-env": "^1.0.0", "semver": "^6.0.0", "snyk-config": "4.0.0-rc.2", "snyk-cpp-plugin": "2.2.1", - "snyk-docker-plugin": "4.12.0", - "snyk-go-plugin": "1.16.2", - "snyk-gradle-plugin": "3.10.2", + "snyk-docker-plugin": "4.13.1", + "snyk-go-plugin": "1.16.4", + "snyk-gradle-plugin": "3.12.1", "snyk-module": "3.1.0", - "snyk-mvn-plugin": "2.23.4", + "snyk-mvn-plugin": "2.25.1", "snyk-nodejs-lockfile-parser": "1.30.1", - "snyk-nuget-plugin": "1.19.4", + "snyk-nuget-plugin": "1.20.0", "snyk-php-plugin": "1.9.2", "snyk-policy": "1.14.1", - "snyk-python-plugin": "1.19.1", + "snyk-python-plugin": "1.19.2", "snyk-resolve": "1.0.1", "snyk-resolve-deps": "4.4.0", "snyk-sbt-plugin": "2.11.0", @@ -13177,9 +13095,9 @@ "dev": true }, "hosted-git-info": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz", - "integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -13204,9 +13122,9 @@ } }, "tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true }, "yallist": { @@ -13218,12 +13136,12 @@ } }, "snyk-docker-plugin": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-4.12.0.tgz", - "integrity": "sha512-iN5GUTpMR4dx/hmjxh1GnJ9vrMpbOUhD8gsdWgFPZ5Qg+ImPQ2WBJBal/hyfkauM0TaKQEAgIwT6xZ1ovaIvWQ==", + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-4.13.1.tgz", + "integrity": "sha512-KS2G2cBdwKhyRta85uv3q/xUmFSC9lVCu8MUxgm7IDNn8ImjmCIkSp5SsI0qu5jYXJhZZnX6jjj5gzI0QP0WXw==", "dev": true, "requires": { - "@snyk/dep-graph": "^1.19.4", + "@snyk/dep-graph": "^1.21.0", "@snyk/rpm-parser": "^2.0.0", "@snyk/snyk-docker-pull": "3.2.3", "chalk": "^2.4.2", @@ -13264,9 +13182,9 @@ "dev": true }, "uuid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", - "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true } } @@ -13282,12 +13200,12 @@ } }, "snyk-go-plugin": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.16.2.tgz", - "integrity": "sha512-FAM56z3bl1iuxeqkCEA/jyZ2hpwkQK8xQxQbhR+QppEK5lole7w1PQyWYgZAJ9oRY/BU32zdRAJwGuZbhk7G2Q==", + "version": "1.16.4", + "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.16.4.tgz", + "integrity": "sha512-7REUy5U6h2wCPIg9060V5bh24gichRHfuqWC22xrp/n+dVolQXvG5RN/PqdJiPsCj7Y9voyWLbYai+Tmk3o82Q==", "dev": true, "requires": { - "@snyk/dep-graph": "1.19.4", + "@snyk/dep-graph": "^1.21.0", "debug": "^4.1.1", "graphlib": "2.1.8", "snyk-go-parser": "1.4.1", @@ -13307,14 +13225,14 @@ } }, "snyk-gradle-plugin": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-3.10.2.tgz", - "integrity": "sha512-gTFKL0BLUN54asUQ4OIoa4lATGn27VZwWDJGQ0VuqSaaoy8I5W16Cbn/KN95oIKa7tgwrmasPLd5uviFWzo/Qw==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-3.12.1.tgz", + "integrity": "sha512-1D/I+rLRC7HXgD0IS0SMOPOkP6ijHoB/BJu4de0U+T6dpCkWUyxNV9guOt6ZD+yjJEICXg7lNvYOuD701acFhA==", "dev": true, "requires": { "@snyk/cli-interface": "2.9.1", "@snyk/dep-graph": "^1.19.4", - "@snyk/java-call-graph-builder": "1.16.2", + "@snyk/java-call-graph-builder": "1.19.0", "@types/debug": "^4.1.4", "chalk": "^3.0.0", "debug": "^4.1.1", @@ -13333,6 +13251,20 @@ "tslib": "^1.9.3" }, "dependencies": { + "@snyk/dep-graph": { + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.19.4.tgz", + "integrity": "sha512-h3MMhjVm3BuIruwpDBqnMowKOG9viwr3TJHdIxTHulWKWSsPTTW1AAP3/RaK+UBp1y/Ua9yzeHncKIrzBdT5Nw==", + "dev": true, + "requires": { + "graphlib": "^2.1.8", + "lodash.isequal": "^4.5.0", + "object-hash": "^2.0.3", + "semver": "^6.0.0", + "source-map-support": "^0.5.19", + "tslib": "^1.13.0" + } + }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -13384,6 +13316,22 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -13394,9 +13342,9 @@ } }, "tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true } } @@ -13421,9 +13369,9 @@ } }, "hosted-git-info": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz", - "integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -13447,13 +13395,13 @@ } }, "snyk-mvn-plugin": { - "version": "2.23.4", - "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.23.4.tgz", - "integrity": "sha512-1dWqvFu6eo2KsXFDqRF28JFwrdzpc0k+GwpIqv7vF2kHarsMxnLnT/akhjbKzs+xlRTNFvqdKhEQxjdq2nSD1Q==", + "version": "2.25.1", + "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.25.1.tgz", + "integrity": "sha512-buhFh7iDxIxTiQy1D+bLm2aYlqHqMoQxaeLTtMw939rU4TqIrvFiTDYZo0kq8PfvCWU5yvxLHlbR5V4goObv7w==", "dev": true, "requires": { "@snyk/cli-interface": "2.9.1", - "@snyk/java-call-graph-builder": "1.16.5", + "@snyk/java-call-graph-builder": "1.17.0", "debug": "^4.1.1", "glob": "^7.1.6", "needle": "^2.5.0", @@ -13472,10 +13420,32 @@ "tslib": "^1.9.3" } }, + "@snyk/dep-graph": { + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.19.4.tgz", + "integrity": "sha512-h3MMhjVm3BuIruwpDBqnMowKOG9viwr3TJHdIxTHulWKWSsPTTW1AAP3/RaK+UBp1y/Ua9yzeHncKIrzBdT5Nw==", + "dev": true, + "requires": { + "graphlib": "^2.1.8", + "lodash.isequal": "^4.5.0", + "object-hash": "^2.0.3", + "semver": "^6.0.0", + "source-map-support": "^0.5.19", + "tslib": "^1.13.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, "@snyk/java-call-graph-builder": { - "version": "1.16.5", - "resolved": "https://registry.npmjs.org/@snyk/java-call-graph-builder/-/java-call-graph-builder-1.16.5.tgz", - "integrity": "sha512-6H4hkq/qYljJoH1QnZsTRPMqp9Kt5AOEZYGJAeSHkhJdfUYSLtqwN4WsU6yVR3vWAaDQ8Lllp3m6EL7nstMPZA==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@snyk/java-call-graph-builder/-/java-call-graph-builder-1.17.0.tgz", + "integrity": "sha512-uO1b6UtT6QGz7F5ZgNdOSyMXBvykUhOcuHBRc//xUnBWsyJwdlAFp/d646zIeaBCe87Fcn5hXuWUGjj+N8rBzA==", "dev": true, "requires": { "ci-info": "^2.0.0", @@ -13489,7 +13459,8 @@ "source-map-support": "^0.5.7", "temp-dir": "^2.0.0", "tmp": "^0.2.1", - "tslib": "^1.9.3" + "tslib": "^1.9.3", + "xml-js": "^1.6.11" }, "dependencies": { "tmp": { @@ -13541,6 +13512,12 @@ "glob": "^7.1.3" } }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, "source-map-support": { "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", @@ -13602,17 +13579,17 @@ }, "dependencies": { "uuid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", - "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true } } }, "snyk-nuget-plugin": { - "version": "1.19.4", - "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.19.4.tgz", - "integrity": "sha512-6BvLJc7gpNdfPJSnvpmTL4BrbaOVbXh/9q1FNMs5OVp8NbnZ3l97iM+bpQXWTJHOa3BJBZz7iEg+3suH4AWoWw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.20.0.tgz", + "integrity": "sha512-hKN1saA8lyVp4lVi/qfieKmFuTxKoUMxYt6omo7JY0MmeXbHXwGcCo5c+JSHsHdn0uKIQPOKKGnTE1yg3VvzuQ==", "dev": true, "requires": { "debug": "^4.1.1", @@ -13712,22 +13689,22 @@ } }, "snyk-poetry-lockfile-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/snyk-poetry-lockfile-parser/-/snyk-poetry-lockfile-parser-1.1.1.tgz", - "integrity": "sha512-G3LX27V2KUsKObwVN4vDDjrYr5BERad9pXHAf+SST5+vZsdPUUZjd1ZUIrHgCv7IQhwq+7mZrtqedY5x7+LIGA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/snyk-poetry-lockfile-parser/-/snyk-poetry-lockfile-parser-1.1.2.tgz", + "integrity": "sha512-qaLNhVw/og6LXRmSuPiXcwre07ybJWh8RASF3aumk5R0cmxCU3YLmJ7pfi/N+PMpwiHCfSZFOMIGIL9jXcX9zQ==", "dev": true, "requires": { "@snyk/cli-interface": "^2.9.2", - "@snyk/dep-graph": "^1.19.5", + "@snyk/dep-graph": "^1.23.0", "debug": "^4.2.0", "toml": "^3.0.0", "tslib": "^2.0.0" }, "dependencies": { "@snyk/dep-graph": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.21.0.tgz", - "integrity": "sha512-+xwiU1zw+Z1V6RaIL7oWUqZo8jDIpoKfzvv8xGiq0hYxsiP9tGSUNuFXwQzAFEP60kJyD2a/nptdRPjsKD0jPw==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.23.0.tgz", + "integrity": "sha512-qR0ENrbcNWHYmSRZCxjrlFy2T7i+rJjL6Rnd2e+NByJgn8zBmX6Qf5FjqNbZAI0AYjOlzXMZjGrbAbe4QkWV+w==", "dev": true, "requires": { "graphlib": "^2.1.8", @@ -13761,9 +13738,9 @@ "dev": true }, "tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true } } @@ -13832,13 +13809,13 @@ } }, "snyk-python-plugin": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.19.1.tgz", - "integrity": "sha512-JoOUHnA76L3pekCblSuE9jQ9CuA5jt+GqXpsLQbEIZ0FQQTBa+0F7vfolg3Q7+s1it4ZdtgSbSWrlxCngIJt8g==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.19.2.tgz", + "integrity": "sha512-n5Z7WiMTNtrBaDE9blnYVoX5fyXeMVhDNrQ/q21lHRAvDKDCY9tNNfduUjOVG6HbIH89mW8lLUdBNAMu/hpl+Q==", "dev": true, "requires": { "@snyk/cli-interface": "^2.0.3", - "snyk-poetry-lockfile-parser": "^1.1.1", + "snyk-poetry-lockfile-parser": "^1.1.2", "tmp": "0.0.33" }, "dependencies": { @@ -13967,58 +13944,68 @@ } }, "socket.io": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", - "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.4.0.tgz", + "integrity": "sha512-9UPJ1UTvKayuQfVv2IQ3k7tCQC/fboDyIK62i99dAQIyHKaBsNdTpwHLgKJ6guRWxRtC9H+138UwpaGuQO9uWQ==", "dev": true, "requires": { - "debug": "~3.1.0", - "engine.io": "~3.2.0", + "debug": "~4.1.0", + "engine.io": "~3.5.0", "has-binary2": "~1.0.2", "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.1.1", - "socket.io-parser": "~3.2.0" + "socket.io-client": "2.4.0", + "socket.io-parser": "~3.4.0" }, "dependencies": { + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "engine.io-client": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", - "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.0.tgz", + "integrity": "sha512-12wPRfMrugVw/DNyJk34GQ5vIVArEcVMXWugQGGuw2XxUSztFNmJggZmv8IZlLyEdnpO1QB9LkcjeWewO2vxtA==", "dev": true, "requires": { - "component-emitter": "1.2.1", + "component-emitter": "~1.3.0", "component-inherit": "0.0.3", "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", + "engine.io-parser": "~2.2.0", "has-cors": "1.1.0", "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~3.3.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.4.2", "xmlhttprequest-ssl": "~1.5.4", "yeast": "0.1.2" - } - }, - "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", - "dev": true, - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, "isarray": { @@ -14027,61 +14014,89 @@ "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", "dev": true }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==", "dev": true }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "parseuri": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==", "dev": true }, "socket.io-client": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", - "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz", + "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==", "dev": true, "requires": { "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", "component-bind": "1.0.0", - "component-emitter": "1.2.1", + "component-emitter": "~1.3.0", "debug": "~3.1.0", - "engine.io-client": "~3.2.0", + "engine.io-client": "~3.5.0", "has-binary2": "~1.0.2", - "has-cors": "1.1.0", "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.2.0", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "socket.io-parser": "~3.3.0", "to-array": "0.1.4" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "socket.io-parser": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz", + "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==", + "dev": true, + "requires": { + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "isarray": "2.0.1" + } + } } }, "socket.io-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", - "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", + "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==", "dev": true, "requires": { "component-emitter": "1.2.1", - "debug": "~3.1.0", + "debug": "~4.1.0", "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + } } }, "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.2.tgz", + "integrity": "sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==", + "dev": true } } }, @@ -14091,39 +14106,6 @@ "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", "dev": true }, - "socket.io-client": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", - "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", - "dev": true, - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~4.1.0", - "engine.io-client": "~3.4.0", - "has-binary2": "~1.0.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, "socket.io-parser": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", @@ -14478,9 +14460,9 @@ "dev": true }, "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -14570,57 +14552,11 @@ "integrity": "sha1-oZwg3uUamHd+mkfhDwm+OTubunU=", "dev": true }, - "string.prototype.trim": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.3.tgz", - "integrity": "sha512-16IL9pIBA5asNOSukPfxX2W68BaBvxyiRK16H3RA/lWW9BDosh+w7f+LhomPHpXJ82QEe7w7/rY/S1CV97raLg==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "is-callable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - } - } - }, "string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" @@ -14630,6 +14566,7 @@ "version": "1.17.6", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", @@ -14648,6 +14585,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -14658,6 +14596,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -14665,7 +14604,8 @@ "object-inspect": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true } } }, @@ -14673,6 +14613,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" @@ -14682,6 +14623,7 @@ "version": "1.17.6", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", @@ -14700,6 +14642,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -14710,6 +14653,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -14717,7 +14661,8 @@ "object-inspect": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true } } }, @@ -14852,9 +14797,9 @@ } }, "supercluster": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.0.tgz", - "integrity": "sha512-LDasImUAFMhTqhK+cUXfy9C2KTUqJ3gucLjmNLNFmKWOnDUBxLFLH9oKuXOTCLveecmxh8fbk8kgh6Q0gsfe2w==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.2.tgz", + "integrity": "sha512-bGA0pk3DYMjLTY1h+rbh0imi/I8k/Lg0rzdBGfyQs0Xkiix7jK2GUmH1qSD8+jq6U0Vu382QHr3+rbbiHqdKJA==", "requires": { "kdbush": "^3.0.0" } @@ -14960,86 +14905,10 @@ "xml-parser": "^1.2.1" } }, - "tape": { - "version": "4.13.3", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.3.tgz", - "integrity": "sha512-0/Y20PwRIUkQcTCSi4AASs+OANZZwqPKaipGCEwp10dQMipVvSZwUUCi01Y/OklIGyHKFhIcjock+DKnBfLAFw==", - "requires": { - "deep-equal": "~1.1.1", - "defined": "~1.0.0", - "dotignore": "~0.1.2", - "for-each": "~0.3.3", - "function-bind": "~1.1.1", - "glob": "~7.1.6", - "has": "~1.0.3", - "inherits": "~2.0.4", - "is-regex": "~1.0.5", - "minimist": "~1.2.5", - "object-inspect": "~1.7.0", - "resolve": "~1.17.0", - "resumer": "~0.0.0", - "string.prototype.trim": "~1.2.1", - "through": "~2.3.8" - }, - "dependencies": { - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "requires": { - "has": "^1.0.3" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, "tar": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz", - "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", "dev": true, "requires": { "chownr": "^2.0.0", @@ -15065,9 +14934,9 @@ } }, "tar-stream": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz", - "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, "requires": { "bl": "^4.0.3", @@ -15195,7 +15064,8 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "through2": { "version": "0.6.5", @@ -15672,9 +15542,9 @@ } }, "ua-parser-js": { - "version": "0.7.22", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz", - "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==", + "version": "0.7.23", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.23.tgz", + "integrity": "sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA==", "dev": true }, "uglify-es": { @@ -15695,12 +15565,6 @@ } } }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", - "dev": true - }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -16195,9 +16059,9 @@ } }, "vscode-languageserver-types": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", - "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==", "dev": true }, "vt-pbf": { @@ -16563,21 +16427,21 @@ "typedarray-to-buffer": "^3.1.5" } }, - "ws": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", - "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, "xdg-basedir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true }, + "xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "dev": true, + "requires": { + "sax": "^1.2.4" + } + }, "xml-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/xml-parser/-/xml-parser-1.2.1.tgz", diff --git a/package.json b/package.json index 65eb1283bb..f3d28d3bae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Metadatamanagement", - "version": "1.0.106-HOTFIX2", + "version": "1.0.107", "description": "Data Search for Higher Education Research and Science Studies", "private": true, "dependencies": { @@ -21,25 +21,26 @@ "angular-recaptcha": "4.2.0", "angular-resource": "1.8.2", "angular-sanitize": "1.8.2", - "angular-translate": "2.18.3", - "angular-translate-handler-log": "2.18.3", - "angular-translate-interpolation-messageformat": "2.18.3", - "angular-translate-storage-cookie": "2.18.3", + "angular-swx-session-storage": "^1.0.0", + "angular-translate": "2.18.4", + "angular-translate-handler-log": "2.18.4", + "angular-translate-interpolation-messageformat": "2.18.4", + "angular-translate-storage-cookie": "2.18.4", "angular-ui-bootstrap": "https://github.com/angular-ui/bootstrap-bower/archive/2.5.0.tar.gz", - "angular-ui-router": "1.0.28", + "angular-ui-router": "1.0.29", "blob-polyfill": "https://github.com/bjornstar/blob-polyfill/archive/1.0.20150320.tar.gz", "bootstrap-sass": "3.4.1", "bowser": "https://github.com/lancedikson/bowser/archive/1.9.4.tar.gz", "cheet.js": "0.3.3", "clientjs": "0.1.11", "elasticsearch-browser": "https://github.com/elastic/bower-elasticsearch-js/archive/v16.7.1.tar.gz", - "es5-shim": "4.5.14", + "es5-shim": "4.5.15", "es6-shim": "0.35.6", "fdz-paginator": "1.0.106", "highlightjs": "9.16.2", "hyphenator.js": "https://github.com/mnater/Hyphenator/archive/5.3.0.tar.gz", "jquery": "3.5.1", - "js-beautify": "1.13.0", + "js-beautify": "1.13.5", "js-xlsx": "0.8.22", "jsonformatter": "0.7.0", "jszip": "3.5.0", @@ -49,15 +50,15 @@ "ng-showdown": "^1.1.0", "ng-text-truncate-2": "^1.0.1", "ngclipboard": "2.0.0", - "plotly.js": "1.57.1", + "plotly.js": "1.58.4", "showdown": "^1.9.1", "sockjs-client": "1.5.0", "stomp-websocket": "2.3.4-next" }, "devDependencies": { "angular-mocks": "1.8.2", - "browser-sync": "2.26.13", - "clean-css": ">=4.2.3", + "browser-sync": "2.26.14", + "clean-css": ">=5.0.1", "diff": ">=5.0.0", "event-stream": "4.0.1", "grunt": "1.3.0", @@ -95,13 +96,13 @@ "karma-requirejs": "1.1.0", "karma-script-launcher": "1.0.0", "load-grunt-tasks": "5.1.0", - "lodash": "4.17.20", + "lodash": "4.17.21", "node-sass": "5.0.0", "phantomjs-prebuilt": "2.1.16", "requirejs": "2.3", - "snyk": "^1.431.2", + "snyk": "^1.440.2", "sync-pom-version-to-package": "^1.6.0", - "tar": "6.0.5", + "tar": "6.1.0", "time-grunt": "2.0.0", "wiredep": "4.0.0", "xml2js": "0.4.23", diff --git a/pom.xml b/pom.xml index 252dcadf6b..bc3dca82ac 100644 --- a/pom.xml +++ b/pom.xml @@ -5,13 +5,13 @@ org.springframework.boot spring-boot-starter-parent - 2.3.5.RELEASE + 2.4.3 eu.dzhw.fdz metadatamanagement - 1.0.106-HOTFIX2 + 1.0.107 war metadatamanagement @@ -24,10 +24,10 @@ - 7.9.2 + 7.10.2 0.8.6 14 - 1.4.1.Final + 1.4.2.Final 2.12.0 yyyyMMddHHmmss ${java.version} @@ -72,7 +72,7 @@ com.github.spotbugs spotbugs - 4.1.4 + 4.2.1 provided true @@ -84,7 +84,7 @@ com.icegreen greenmail - 1.6.1 + 1.6.2 test @@ -156,7 +156,7 @@ org.apache.tika tika-core - 1.24.1 + 1.25 org.elasticsearch.client @@ -172,6 +172,17 @@ jsoup 1.13.1 + + org.junit.vintage + junit-vintage-engine + test + + + hamcrest-core + org.hamcrest + + + org.mapstruct mapstruct @@ -185,12 +196,12 @@ org.springdoc springdoc-openapi-data-rest - 1.5.0 + 1.5.5 org.springdoc springdoc-openapi-ui - 1.5.0 + 1.5.5 org.springframework.boot @@ -273,12 +284,12 @@ org.springframework.cloud spring-cloud-aws-actuator - 2.2.5.RELEASE + 2.2.6.RELEASE org.springframework.cloud spring-cloud-starter-aws - 2.2.5.RELEASE + 2.2.6.RELEASE @@ -297,7 +308,19 @@ org.springframework.security.oauth.boot spring-security-oauth2-autoconfigure - 2.3.5.RELEASE + 2.4.2 + + + org.zalando + logbook-spring-boot-starter + 2.6.0 + + + + logbook-httpclient + org.zalando + + pl.allegro.tech @@ -368,6 +391,11 @@ + + org.codehaus.mojo + exec-maven-plugin + 3.0.0 + org.eclipse.m2e diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/service/DataPackageAttachmentService.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/service/DataPackageAttachmentService.java index 381cc384cc..722453bd83 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/service/DataPackageAttachmentService.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/service/DataPackageAttachmentService.java @@ -3,6 +3,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; import java.util.regex.Pattern; import org.javers.core.Javers; @@ -129,7 +130,9 @@ public List findAllByProject(String dataAcquisiti query.with(Sort.by(Sort.Direction.ASC, "metadata.indexInDataPackage")); Iterable files = this.operations.find(query); List result = new ArrayList<>(); + AtomicInteger countByDataPackage = new AtomicInteger(0); files.forEach(gridfsFile -> { + gridfsFile.getMetadata().put("indexInDataPackage", countByDataPackage.getAndIncrement()); result.add(mongoTemplate.getConverter().read(DataPackageAttachmentMetadata.class, gridfsFile.getMetadata())); }); diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/datasetmanagement/service/DataSetAttachmentService.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/datasetmanagement/service/DataSetAttachmentService.java index 4e5c697aaf..ea083c20f4 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/datasetmanagement/service/DataSetAttachmentService.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/datasetmanagement/service/DataSetAttachmentService.java @@ -3,6 +3,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; import java.util.regex.Pattern; import org.javers.core.Javers; @@ -25,6 +26,7 @@ import eu.dzhw.fdz.metadatamanagement.datasetmanagement.domain.DataSetAttachmentMetadata; import eu.dzhw.fdz.metadatamanagement.datasetmanagement.repository.DataSetRepository; import eu.dzhw.fdz.metadatamanagement.datasetmanagement.service.helper.DataSetAttachmentFilenameBuilder; +import eu.dzhw.fdz.metadatamanagement.instrumentmanagement.domain.InstrumentAttachmentMetadata; import eu.dzhw.fdz.metadatamanagement.projectmanagement.domain.DataAcquisitionProject; import eu.dzhw.fdz.metadatamanagement.usermanagement.security.SecurityUtils; import lombok.RequiredArgsConstructor; @@ -138,7 +140,17 @@ public List findAllByProject(String dataAcquisitionPr Sort.by(Order.asc("metadata.dataSetNumber"), Order.asc("metadata.indexInDataSet"))); Iterable files = this.operations.find(query); List result = new ArrayList<>(); + AtomicInteger countByDataSetNumber = new AtomicInteger(0); + AtomicInteger currentDataSetNumber = new AtomicInteger(-1); files.forEach(gridfsFile -> { + Integer dataSetNumber = gridfsFile.getMetadata().getInteger("dataSetNumber"); + if (!dataSetNumber.equals(currentDataSetNumber.get())) { + currentDataSetNumber.set(dataSetNumber); + currentDataSetNumber.set(0); + } else { + currentDataSetNumber.incrementAndGet(); + } + gridfsFile.getMetadata().put("indexInDataSet", countByDataSetNumber.get()); result.add(mongoTemplate.getConverter().read(DataSetAttachmentMetadata.class, gridfsFile.getMetadata())); }); diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/datasetmanagement/service/DataSetReportService.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/datasetmanagement/service/DataSetReportService.java index 690cb44b9c..b90bac6775 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/datasetmanagement/service/DataSetReportService.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/datasetmanagement/service/DataSetReportService.java @@ -395,7 +395,8 @@ private Map createVariableDependingMaps(Map data Map instrumentMap = new HashMap<>(); Map> firstTenValidResponses = new HashMap<>(); Map> lastTenValidResponses = new HashMap<>(); - Map> sameVariablesInPanel = new HashMap<>(); + Map> repeatedMeasurementVariables = + new HashMap<>(); Map> derivedVariables = new HashMap<>(); for (Variable variable : variables) { @@ -435,11 +436,12 @@ private Map createVariableDependingMaps(Map data .subList(sizeValidResponses - 10, sizeValidResponses)); } - if (!StringUtils.isEmpty(variable.getPanelIdentifier())) { + if (!StringUtils.isEmpty(variable.getRepeatedMeasurementIdentifier())) { List otherVariablesInPanel = - this.variableRepository.findAllByPanelIdentifierAndDataSetIdAndIdNot( - variable.getPanelIdentifier(), variable.getDataSetId(), variable.getId()); - sameVariablesInPanel.put(variable.getId(), otherVariablesInPanel); + this.variableRepository.findAllByRepeatedMeasurementIdentifierAndDataSetIdAndIdNot( + variable.getRepeatedMeasurementIdentifier(), variable.getDataSetId(), + variable.getId()); + repeatedMeasurementVariables.put(variable.getId(), otherVariablesInPanel); } if (!StringUtils.isEmpty(variable.getDerivedVariablesIdentifier())) { @@ -454,7 +456,7 @@ private Map createVariableDependingMaps(Map data dataForTemplate.put("instruments", instrumentMap); dataForTemplate.put("firstTenValidResponses", firstTenValidResponses); dataForTemplate.put("lastTenValidResponses", lastTenValidResponses); - dataForTemplate.put("sameVariablesInPanel", sameVariablesInPanel); + dataForTemplate.put("repeatedMeasurementVariables", repeatedMeasurementVariables); dataForTemplate.put("derivedVariables", derivedVariables); return dataForTemplate; @@ -516,7 +518,9 @@ public void startDataSetReportTasks(String dataSetId, String version, List findAllByProject(String dataAcquisitio Sort.by(Order.asc("metadata.instrumentNumber"), Order.asc("metadata.indexInInstrument"))); Iterable files = this.operations.find(query); List result = new ArrayList<>(); + AtomicInteger countByInstrumentNumber = new AtomicInteger(0); + AtomicInteger currentInstrumentNumber = new AtomicInteger(-1); files.forEach(gridfsFile -> { + Integer instrumentNumber = gridfsFile.getMetadata().getInteger("instrumentNumber"); + if (!instrumentNumber.equals(currentInstrumentNumber.get())) { + currentInstrumentNumber.set(instrumentNumber); + countByInstrumentNumber.set(0); + } else { + countByInstrumentNumber.incrementAndGet(); + } + gridfsFile.getMetadata().put("indexInInstrument", countByInstrumentNumber.get()); result.add(mongoTemplate.getConverter().read(InstrumentAttachmentMetadata.class, gridfsFile.getMetadata())); }); diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/ordermanagement/rest/OrderResource.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/ordermanagement/rest/OrderResource.java index ef07fbcd77..e57bbbe7a9 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/ordermanagement/rest/OrderResource.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/ordermanagement/rest/OrderResource.java @@ -132,8 +132,7 @@ public ResponseEntity updateOrder(@PathVariable Str if (order.getClient().equals(OrderClient.MDM)) { destinationUrl = getDlpUrl(id, order.getLanguageKey()); } else { - destinationUrl = - baseUrl + "/" + order.getLanguageKey() + "/shopping-cart/" + order.getId(); + destinationUrl = baseUrl + "/" + order.getLanguageKey() + "/shopping-cart/" + order.getId(); } Order persistedOrder = optional.get(); @@ -160,7 +159,9 @@ private String getDlpUrl(String orderId, String language) { @ExceptionHandler(OrderAlreadyCompletedException.class) @ResponseBody @ResponseStatus(HttpStatus.BAD_REQUEST) - protected ErrorListDto handleOrderAlreadyCompletedException() { + protected ErrorListDto handleOrderAlreadyCompletedException( + OrderAlreadyCompletedException exception) { + log.error("Illegal attempt to modify an already completed order.", exception); ErrorDto errorDto = new ErrorDto(null, "order-management.error." + "order-already-completed", null, null); ErrorListDto errorListDto = new ErrorListDto(); diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/ordermanagement/service/OrderService.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/ordermanagement/service/OrderService.java index dd0cf4fc73..0d65db0832 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/ordermanagement/service/OrderService.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/ordermanagement/service/OrderService.java @@ -51,7 +51,8 @@ public Optional update(String orderId, Order orderToUpdate) { if (persistedOrder.getState() == OrderState.ORDERED) { throw new OrderAlreadyCompletedException(); } - BeanUtils.copyProperties(orderToUpdate, persistedOrder, "id", "createdDate", "createdBy"); + BeanUtils.copyProperties(orderToUpdate, persistedOrder, "id", "createdDate", "createdBy", + "version"); persistedOrder = orderRepository.save(persistedOrder); return Optional.of(persistedOrder); } else { diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/projectmanagement/service/DataAcquisitionProjectVersionsService.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/projectmanagement/service/DataAcquisitionProjectVersionsService.java index cb844e5531..0882a552c7 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/projectmanagement/service/DataAcquisitionProjectVersionsService.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/projectmanagement/service/DataAcquisitionProjectVersionsService.java @@ -92,16 +92,13 @@ public Release findPreviousRelease(String id, Release currentRelease) { return null; } } else { - final AtomicBoolean currentVersionFound = new AtomicBoolean(false); final AtomicReference previousRelease = new AtomicReference<>(); shadows.takeWhile(shadow -> previousRelease.get() == null).forEach(shadow -> { Release release = shadow.get(); - if (currentVersionFound.get()) { + if (Version.valueOf(currentRelease.getVersion()) + .greaterThan(Version.valueOf(release.getVersion()))) { previousRelease.set(release); } - if (release.getVersion().equals(currentRelease.getVersion())) { - currentVersionFound.set(true); - } }); return previousRelease.get(); } diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/surveymanagement/service/SurveyAttachmentService.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/surveymanagement/service/SurveyAttachmentService.java index 2196637d49..644d844ec7 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/surveymanagement/service/SurveyAttachmentService.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/surveymanagement/service/SurveyAttachmentService.java @@ -3,6 +3,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; import java.util.regex.Pattern; import org.javers.core.Javers; @@ -20,6 +21,7 @@ import eu.dzhw.fdz.metadatamanagement.common.domain.ShadowCopyCreateNotAllowedException; import eu.dzhw.fdz.metadatamanagement.common.domain.ShadowCopyDeleteNotAllowedException; import eu.dzhw.fdz.metadatamanagement.common.service.AttachmentMetadataHelper; +import eu.dzhw.fdz.metadatamanagement.datasetmanagement.domain.DataSetAttachmentMetadata; import eu.dzhw.fdz.metadatamanagement.projectmanagement.domain.DataAcquisitionProject; import eu.dzhw.fdz.metadatamanagement.surveymanagement.domain.SurveyAttachmentMetadata; import eu.dzhw.fdz.metadatamanagement.surveymanagement.service.helper.SurveyAttachmentFilenameBuilder; @@ -117,7 +119,17 @@ public List findAllByProject(String dataAcquisitionPro query.with(Sort.by(Order.asc("metadata.surveyNumber"), Order.asc("metadata.indexInSurvey"))); Iterable files = this.operations.find(query); List result = new ArrayList<>(); + AtomicInteger countBySurveyNumber = new AtomicInteger(0); + AtomicInteger currentSurveyNumber = new AtomicInteger(-1); files.forEach(gridfsFile -> { + Integer surveyNumber = gridfsFile.getMetadata().getInteger("surveyNumber"); + if (!surveyNumber.equals(currentSurveyNumber.get())) { + currentSurveyNumber.set(surveyNumber); + currentSurveyNumber.set(0); + } else { + currentSurveyNumber.incrementAndGet(); + } + gridfsFile.getMetadata().put("indexInSurvey", countBySurveyNumber.get()); result.add(mongoTemplate.getConverter().read(SurveyAttachmentMetadata.class, gridfsFile.getMetadata())); }); diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Statistics.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Statistics.java index 20175808db..8757dae7ed 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Statistics.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Statistics.java @@ -90,16 +90,6 @@ public class Statistics implements Serializable { message = "variable-management.error.statistics.third-quartile.size") private String thirdQuartile; - /** - * The lowest value still within 1.5 IQR of the first quartile. - */ - private Double lowWhisker; - - /** - * The highest value still within 1.5 IQR of the third quartile. - */ - private Double highWhisker; - /** * The mode is the value ({@link ValidResponse}) that appears most often. */ diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Variable.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Variable.java index c44d15aa27..a9d3da15e7 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Variable.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/Variable.java @@ -27,7 +27,7 @@ import eu.dzhw.fdz.metadatamanagement.questionmanagement.domain.Question; import eu.dzhw.fdz.metadatamanagement.datapackagemanagement.domain.DataPackage; import eu.dzhw.fdz.metadatamanagement.surveymanagement.domain.Survey; -import eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation.OnlyOrdinalScaleLevelForDateDataType; +import eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation.RestrictedScaleLevelForDateDataType; import eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation.StatisticsFirstQuartileMustBeANumberOnNumericDataType; import eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation.StatisticsFirstQuartileMustBeAnIsoDateOnDateDataType; import eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation.StatisticsMaximumMustBeANumberOnNumericDataType; @@ -42,7 +42,7 @@ import eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation.ValidAccessWays; import eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation.ValidDataType; import eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation.ValidDerivedVariablesIdentifier; -import eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation.ValidPanelIdentifier; +import eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation.ValidRepeatedMeasurementIdentifier; import eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation.ValidResponseValueMustBeANumberOnNumericDataType; import eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation.ValidResponseValueMustBeAnIsoDateOnDateDataType; import eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.validation.ValidScaleLevel; @@ -63,24 +63,22 @@ * {@link RelatedQuestion}s. A variable is part of exactly one {@link DataSet}. */ @Document(collection = "variables") -@CompoundIndexes({ - @CompoundIndex(def = "{name: 1, dataSetId: 1}", unique = true), - @CompoundIndex(def = "{indexInDataSet: 1, dataSetId: 1}", unique = false) - }) +@CompoundIndexes({@CompoundIndex(def = "{name: 1, dataSetId: 1}", unique = true), + @CompoundIndex(def = "{indexInDataSet: 1, dataSetId: 1}", unique = false)}) @ValidShadowId(message = "variable-management.error.variable.id.pattern") @ValidVariableIdName(message = "variable-management.error.variable.valid-variable-name") -@ValidPanelIdentifier(message = "variable-management.error.variable.valid-panel-identifier") -@ValidDerivedVariablesIdentifier(message = - "variable-management.error.variable.valid-derived-variables-identifier") -@UniqueVariableNameInDataSet(message = "variable-management.error." - + "variable.unique-variable-name-in-data-set") -@OnlyOrdinalScaleLevelForDateDataType( - message = "variable-management.error.variable.only-ordinal-scale-level-for-date-data-type") - -//Validation if data type is date -@ValidResponseValueMustBeAnIsoDateOnDateDataType( - message = "variable-management.error.variable." - + "valid-response-value-must-be-an-iso-date-on-date-data-type") +@ValidRepeatedMeasurementIdentifier( + message = "variable-management.error.variable.valid-repeated-measurement-identifier") +@ValidDerivedVariablesIdentifier( + message = "variable-management.error.variable.valid-derived-variables-identifier") +@UniqueVariableNameInDataSet( + message = "variable-management.error." + "variable.unique-variable-name-in-data-set") +@RestrictedScaleLevelForDateDataType( + message = "variable-management.error.variable." + "restricted-scale-level-for-date-data-type") + +// Validation if data type is date +@ValidResponseValueMustBeAnIsoDateOnDateDataType(message = "variable-management.error.variable." + + "valid-response-value-must-be-an-iso-date-on-date-data-type") @StatisticsMinimumMustBeAnIsoDateOnDateDataType(message = "variable-management.error.variable." + "statistics-minimum-must-be-an-iso-date-on-date-data-type") @StatisticsMaximumMustBeAnIsoDateOnDateDataType(message = "variable-management.error.variable." @@ -92,19 +90,15 @@ @StatisticsThirdQuartileMustBeAnIsoDateOnDateDataType(message = "variable-management.error." + "variable.statistics-third-quartile-must-be-an-iso-date-on-date-data-type") -//Validation if data type is numeric -@ValidResponseValueMustBeANumberOnNumericDataType( - message = "variable-management.error.variable." - + "valid-response-value-must-be-a-number-on-numeric-data-type") -@StatisticsMinimumMustBeANumberOnNumericDataType( - message = "variable-management.error.variable." - + "statistics-minimum-must-be-a-number-on-numeric-data-type") -@StatisticsMaximumMustBeANumberOnNumericDataType( - message = "variable-management.error.variable." - + "statistics-maximum-must-be-a-number-on-numeric-data-type") -@StatisticsMedianMustBeANumberOnNumericDataType( - message = "variable-management.error.variable." - + "statistics-median-must-be-a-number-on-numeric-data-type") +// Validation if data type is numeric +@ValidResponseValueMustBeANumberOnNumericDataType(message = "variable-management.error.variable." + + "valid-response-value-must-be-a-number-on-numeric-data-type") +@StatisticsMinimumMustBeANumberOnNumericDataType(message = "variable-management.error.variable." + + "statistics-minimum-must-be-a-number-on-numeric-data-type") +@StatisticsMaximumMustBeANumberOnNumericDataType(message = "variable-management.error.variable." + + "statistics-maximum-must-be-a-number-on-numeric-data-type") +@StatisticsMedianMustBeANumberOnNumericDataType(message = "variable-management.error.variable." + + "statistics-median-must-be-a-number-on-numeric-data-type") @StatisticsFirstQuartileMustBeANumberOnNumericDataType( message = "variable-management.error.variable." + "statistics-first-quartile-must-be-a-number-on-numeric-data-type") @@ -133,8 +127,7 @@ public class Variable extends AbstractShadowableRdcDomainObject { private String id; @NotEmpty(message = "variable-management.error.variable.master-id.not-empty") - @Size(max = StringLengths.MEDIUM, - message = "variable-management.error.variable.master-id.size") + @Size(max = StringLengths.MEDIUM, message = "variable-management.error.variable.master-id.size") @Pattern(regexp = Patterns.GERMAN_ALPHANUMERIC_WITH_UNDERSCORE_AND_MINUS_AND_DOLLAR, message = "variable-management.error.variable.master-id.pattern") @Setter(AccessLevel.NONE) @@ -228,8 +221,7 @@ public class Variable extends AbstractShadowableRdcDomainObject { * is {@link DataTypes#DATE} then the ScaleLevel must be {@link ScaleLevels#ORDINAL}. */ @NotNull(message = "variable-management.error.variable.scaleLevel.not-null") - @ValidScaleLevel( - message = "variable-management.error.variable.scaleLevel.valid-scale-level") + @ValidScaleLevel(message = "variable-management.error.variable.scaleLevel.valid-scale-level") private I18nString scaleLevel; /** @@ -240,8 +232,7 @@ public class Variable extends AbstractShadowableRdcDomainObject { */ // checks for min size too. @NotEmpty(message = "variable-management.error.variable.access-ways.not-empty") - @ValidAccessWays( - message = "variable-management.error.variable.access-ways.valid-access-ways") + @ValidAccessWays(message = "variable-management.error.variable.access-ways.valid-access-ways") private List accessWays; /** @@ -277,10 +268,10 @@ public class Variable extends AbstractShadowableRdcDomainObject { * and "-". */ @Size(max = StringLengths.MEDIUM, - message = "variable-management.error.variable.panel-identifier-size") + message = "variable-management.error.variable.repeated-measurement-identifier-size") @Pattern(regexp = Patterns.GERMAN_ALPHANUMERIC_WITH_UNDERSCORE_AND_MINUS, - message = "variable-management.error.variable.panel-identifier-pattern") - private String panelIdentifier; + message = "variable-management.error.variable.repeated-measurement-pattern") + private String repeatedMeasurementIdentifier; /** * Identifier used to group variables within this {@link DataSet} which have been derived from diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/OnlyOrdinalScaleLevelForDateDataType.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/RestrictedScaleLevelForDateDataType.java similarity index 74% rename from src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/OnlyOrdinalScaleLevelForDateDataType.java rename to src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/RestrictedScaleLevelForDateDataType.java index 42af5cd899..fb5562eb88 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/OnlyOrdinalScaleLevelForDateDataType.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/RestrictedScaleLevelForDateDataType.java @@ -10,21 +10,21 @@ import javax.validation.Payload; /** - * Ensure that date variables have only a ordinal scale level. + * Ensure that date variables have only a nominal, ordinal or interval scale level. * * @author Daniel Katzberg */ @Documented -@Constraint(validatedBy = {OnlyOrdinalScaleLevelForDateDataTypeValidator.class}) +@Constraint(validatedBy = {RestrictedScaleLevelForDateDataTypeValidator.class}) @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) -public @interface OnlyOrdinalScaleLevelForDateDataType { +public @interface RestrictedScaleLevelForDateDataType { /** * Defines the default error message. */ String message() default "{eu.dzhw.fdz.metadatamanagement.domain.validation." - + "onlyOrdinalScaleLevelForDateDataType}"; + + "restrictedScaleLevelForDateDataType}"; /** * This contains groups. diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/OnlyOrdinalScaleLevelForDateDataTypeValidator.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/RestrictedScaleLevelForDateDataTypeValidator.java similarity index 64% rename from src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/OnlyOrdinalScaleLevelForDateDataTypeValidator.java rename to src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/RestrictedScaleLevelForDateDataTypeValidator.java index a32094e611..97bc0afad7 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/OnlyOrdinalScaleLevelForDateDataTypeValidator.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/RestrictedScaleLevelForDateDataTypeValidator.java @@ -8,12 +8,12 @@ import eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.Variable; /** - * Validator which ensures that Ensure that date variables have only a ordinal scale level. + * Validator which ensures that date variables have only a nominal, ordinal or interval scale level. * * @author René Reitmann */ -public class OnlyOrdinalScaleLevelForDateDataTypeValidator - implements ConstraintValidator { +public class RestrictedScaleLevelForDateDataTypeValidator + implements ConstraintValidator { /* * (non-Javadoc) @@ -21,7 +21,7 @@ public class OnlyOrdinalScaleLevelForDateDataTypeValidator * @see javax.validation.ConstraintValidator#initialize(java.lang.annotation.Annotation) */ @Override - public void initialize(OnlyOrdinalScaleLevelForDateDataType constraintAnnotation) {} + public void initialize(RestrictedScaleLevelForDateDataType constraintAnnotation) {} /* * (non-Javadoc) @@ -40,13 +40,14 @@ public boolean isValid(Variable variable, ConstraintValidatorContext context) { if (variable.getDataType() == null) { return true; } - - //if no datatype date, this validator is not important. + + // if no datatype date, this validator is not important. if (!variable.getDataType().equals(DataTypes.DATE)) { return true; } - - //date is set (if not, this code isn't reachable), but a no scale level -> invalid! - return ScaleLevels.ORDINAL.equals(variable.getScaleLevel()); + + return ScaleLevels.ORDINAL.equals(variable.getScaleLevel()) + || ScaleLevels.INTERVAL.equals(variable.getScaleLevel()) + || ScaleLevels.NOMINAL.equals(variable.getScaleLevel()); } } diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/ValidPanelIdentifier.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/ValidRepeatedMeasurementIdentifier.java similarity index 72% rename from src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/ValidPanelIdentifier.java rename to src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/ValidRepeatedMeasurementIdentifier.java index ac692ed89b..fb4b17d223 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/ValidPanelIdentifier.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/ValidRepeatedMeasurementIdentifier.java @@ -10,19 +10,19 @@ import javax.validation.Payload; /** - * This validator checks a panelIdentifier. + * This validator checks the repeated measurement identifier. * */ @Documented -@Constraint(validatedBy = {ValidPanelIdentifierValidator.class}) +@Constraint(validatedBy = {ValidRepeatedMeasurementIdentifierValidator.class}) @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) -public @interface ValidPanelIdentifier { +public @interface ValidRepeatedMeasurementIdentifier { /** * Defines the default error message. */ String message() default "{eu.dzhw.fdz.metadatamanagement.domain.validation." - + "variable-management.error.variable.valid-panel-identifier}"; + + "variable-management.error.variable.valid-repeated-measurement-identifier}"; /** * This contains groups. diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/ValidPanelIdentifierValidator.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/ValidRepeatedMeasurementIdentifierValidator.java similarity index 66% rename from src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/ValidPanelIdentifierValidator.java rename to src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/ValidRepeatedMeasurementIdentifierValidator.java index ed11d9dc75..947cdb566b 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/ValidPanelIdentifierValidator.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/domain/validation/ValidRepeatedMeasurementIdentifierValidator.java @@ -6,11 +6,11 @@ import eu.dzhw.fdz.metadatamanagement.variablemanagement.domain.Variable; /** - * This validator checks a panelIdentifier. + * This validator checks the repeated measurement identifier. * */ -public class ValidPanelIdentifierValidator - implements ConstraintValidator { +public class ValidRepeatedMeasurementIdentifierValidator + implements ConstraintValidator { /* * (non-Javadoc) @@ -18,7 +18,7 @@ public class ValidPanelIdentifierValidator * @see javax.validation.ConstraintValidator#initialize(java.lang.annotation.Annotation) */ @Override - public void initialize(ValidPanelIdentifier constraintAnnotation) {} + public void initialize(ValidRepeatedMeasurementIdentifier constraintAnnotation) {} /* * (non-Javadoc) @@ -31,10 +31,10 @@ public boolean isValid(Variable variable, ConstraintValidatorContext context) { if (variable.isShadow()) { return true; } else { - if (variable.getPanelIdentifier() == null) { + if (variable.getRepeatedMeasurementIdentifier() == null) { return true; } - return variable.getPanelIdentifier().contains(variable + return variable.getRepeatedMeasurementIdentifier().contains(variable .getDataAcquisitionProjectId() + "-ds" + variable.getDataSetNumber() + "-"); } } diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/repository/VariableRepository.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/repository/VariableRepository.java index 4724252e97..363e330a95 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/repository/VariableRepository.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/variablemanagement/repository/VariableRepository.java @@ -22,12 +22,12 @@ public interface VariableRepository extends BaseRepository { Stream streamByDataAcquisitionProjectId(String dataAcquisitionProjectId); @RestResource(exported = false) - List findAllByPanelIdentifierAndDataSetIdAndIdNot( - String panelIdentifier, String dataSetId, String id); + List findAllByRepeatedMeasurementIdentifierAndDataSetIdAndIdNot( + String repeatedMeasurementIdentifier, String dataSetId, String id); @RestResource(exported = true) - List findAllByPanelIdentifierAndDataSetIdAndIdNotOrderByIndexInDataSet( - String panelIdentifier, String dataSetId, String id); + List findAllByRepeatedMeasurementIdentifierAndDataSetIdAndIdNotOrderByIndexInDataSet( + String repeatedMeasurementIdentifier, String dataSetId, String id); @RestResource(exported = true) List findByDataAcquisitionProjectId( diff --git a/src/main/resources/config/application-dev.yml b/src/main/resources/config/application-dev.yml index 449d4674a1..04a1f9dd86 100644 --- a/src/main/resources/config/application-dev.yml +++ b/src/main/resources/config/application-dev.yml @@ -63,3 +63,6 @@ metadatamanagement: cluster-name: dev mongodb: ssl-ca-certificate: ${vcap.services.mongodb.cacert} + +logbook: + filter.enabled: false diff --git a/src/main/resources/config/application-local.yml b/src/main/resources/config/application-local.yml index e470266629..b09bee54a6 100644 --- a/src/main/resources/config/application-local.yml +++ b/src/main/resources/config/application-local.yml @@ -29,10 +29,11 @@ spring: cache-duration: 1 thymeleaf: cache: false - resources: - static-locations: - - file:src/main/webapp/ - - classpath:public/ + web: + resources: + static-locations: + - file:src/main/webapp/ + - classpath:public/ logging: level: @@ -64,4 +65,7 @@ metadatamanagement: password: ${DARA_PASSWORD} websockets: allowed-origins: - - "*" + - "localhost" + +logbook: + filter.enabled: false diff --git a/src/main/resources/config/application-prod.yml b/src/main/resources/config/application-prod.yml index 6a9b5a258a..f3777b489f 100644 --- a/src/main/resources/config/application-prod.yml +++ b/src/main/resources/config/application-prod.yml @@ -70,4 +70,7 @@ metadatamanagement: mongodb: ssl-ca-certificate: ${vcap.services.mongodb.cacert} seo4ajax: - site-token: ${vcap.services.seo4ajax.sitetoken} \ No newline at end of file + site-token: ${vcap.services.seo4ajax.sitetoken} + +logbook: + filter.enabled: false diff --git a/src/main/resources/config/application-test.yml b/src/main/resources/config/application-test.yml index 1e0860aea1..f0b1a76d09 100644 --- a/src/main/resources/config/application-test.yml +++ b/src/main/resources/config/application-test.yml @@ -43,9 +43,9 @@ management: metadatamanagement: ordermanagement: - email: birkelbach@dzhw.eu + email: reitmann@dzhw.eu projectmanagement: - email: birkelbach@dzhw.eu + email: reitmann@dzhw.eu server: instance-index: ${cf.instance.index} context-root: https://test.metadata.fdz.dzhw.eu @@ -71,3 +71,6 @@ metadatamanagement: ssl-ca-certificate: ${vcap.services.mongodb.cacert} seo4ajax: site-token: ${vcap.services.seo4ajax.sitetoken} + +logbook: + filter.enabled: false diff --git a/src/main/resources/config/application.yml b/src/main/resources/config/application.yml index 0165fe4914..4c11d307d5 100644 --- a/src/main/resources/config/application.yml +++ b/src/main/resources/config/application.yml @@ -65,6 +65,7 @@ logging: level: root: warn eu.dzhw.fdz.metadatamanagement: info + org.zalando.logbook: trace server: port: 8080 @@ -157,3 +158,9 @@ jhipster: host: localhost port: 2003 prefix: metadatamanagement + +logbook: + include: + - /api/orders/** + filter.enabled: true + format.style: json diff --git a/src/main/resources/elasticsearch/indices_version.json b/src/main/resources/elasticsearch/indices_version.json index 66a54d012d..b61d8274f8 100644 --- a/src/main/resources/elasticsearch/indices_version.json +++ b/src/main/resources/elasticsearch/indices_version.json @@ -1,3 +1,3 @@ { - "indicesVersion": "202010271600" + "indicesVersion": "202102011500" } diff --git a/src/main/resources/elasticsearch/variables/mapping.json b/src/main/resources/elasticsearch/variables/mapping.json index 957ba9e8a1..ed49e0f712 100644 --- a/src/main/resources/elasticsearch/variables/mapping.json +++ b/src/main/resources/elasticsearch/variables/mapping.json @@ -183,7 +183,7 @@ "indexInDataSet": { "type": "integer" }, - "panelIdentifier": { + "repeatedMeasurementIdentifier": { "type": "keyword", "copy_to": "all" }, diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index f859037e46..168f0c0601 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -1,10 +1,6 @@ - - - - diff --git a/src/main/scss/fdz-theme/components/fdz/fab-button.scss b/src/main/scss/fdz-theme/components/fdz/fab-button.scss index 09a9399a0d..facc9481da 100644 --- a/src/main/scss/fdz-theme/components/fdz/fab-button.scss +++ b/src/main/scss/fdz-theme/components/fdz/fab-button.scss @@ -2,6 +2,7 @@ position: fixed; bottom: 1em; right: 1em; + z-index: 15; } md-dialog .fdz-fab-button-container { diff --git a/src/main/scss/fdz-theme/components/fdz/speech-bubble-theme.scss b/src/main/scss/fdz-theme/components/fdz/speech-bubble-theme.scss new file mode 100644 index 0000000000..78b5ba58ae --- /dev/null +++ b/src/main/scss/fdz-theme/components/fdz/speech-bubble-theme.scss @@ -0,0 +1,40 @@ +.fdz-speech-bubble { + // layout + position: relative; + max-width: 30em; + + // looks + background-color: $brand-secondary; + padding: 0px; + margin-bottom: 6px; + margin-left: 12px; + border-radius: 1rem; + // border: 2px solid #0071bc; + box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, .3), 0 0.0625rem 0.125rem rgba(0, 0, 0, .2); +} + +.fdz-speech-bubble p { + padding: 1.125em 1.5em; + margin: 0px; + color: $brand-primary; +} + +.fdz-speech-bubble a:hover, .fdz-speech-bubble a:focus { + text-decoration: none; +} + +.fdz-speech-bubble::after { + // layout + content: ''; + position: absolute; + width: 0; + height: 0; + top: 100%; + right: 25px; // offset should move with padding of parent + border: 10px solid transparent; + border-top: none; + transform: rotate(180deg); + // looks + border-bottom-color: $brand-secondary; + filter: drop-shadow(0 -0.0625rem 0.0625rem rgba(0, 0, 0, .1)); +} diff --git a/src/main/scss/fdz-theme/components/md/checkbox-theme.scss b/src/main/scss/fdz-theme/components/md/checkbox-theme.scss index d0b331c43f..676436cc81 100644 --- a/src/main/scss/fdz-theme/components/md/checkbox-theme.scss +++ b/src/main/scss/fdz-theme/components/md/checkbox-theme.scss @@ -41,6 +41,13 @@ @include checkbox-primary; } + &.ng-invalid { + color: $warn-700; + &:not(.md-checked) .md-icon { + border-color: $warn-700; + } + } + &.md-warn { .md-ripple { color: $warn-color; @@ -93,5 +100,4 @@ color: $foreground-3; } } - } diff --git a/src/main/scss/fdz.scss b/src/main/scss/fdz.scss index 9affda95aa..9844821f80 100644 --- a/src/main/scss/fdz.scss +++ b/src/main/scss/fdz.scss @@ -59,6 +59,7 @@ @import "fdz-theme/components/fdz/fab-button"; @import "fdz-theme/components/fdz/shopping-cart"; @import "fdz-theme/components/fdz/inline-select"; +@import "fdz-theme/components/fdz/speech-bubble-theme"; // Various @import "fdz-theme/common/various"; diff --git a/src/main/scss/main.scss b/src/main/scss/main.scss index f017adfc74..2ace3dfef3 100644 --- a/src/main/scss/main.scss +++ b/src/main/scss/main.scss @@ -196,7 +196,7 @@ md-dialog h2 { } .js-plotly-plot .plotly .modebar { - z-index: 50 !important; + z-index: 10 !important; } .fdz-content:focus { diff --git a/src/main/webapp/assets/styles/fdz.css b/src/main/webapp/assets/styles/fdz.css index aa88073266..a24ea1c54a 100644 --- a/src/main/webapp/assets/styles/fdz.css +++ b/src/main/webapp/assets/styles/fdz.css @@ -687,6 +687,11 @@ h1, h2, h3, h4, h5, h6, h7, h8, h9, .h1, .h2, .h3, .h4, .h5, .h6, .h7, .h8, .h9 .fdz-theme md-checkbox:not([disabled]).md-primary .md-indeterminate[disabled] .md-container { color: rgba(0, 0, 0, 0.38); } +.fdz-theme md-checkbox:not([disabled]).ng-invalid { + color: #d91835; } + .fdz-theme md-checkbox:not([disabled]).ng-invalid:not(.md-checked) .md-icon { + border-color: #d91835; } + .fdz-theme md-checkbox:not([disabled]).md-warn .md-ripple { color: #f7a839; } @@ -2606,7 +2611,8 @@ geographic-coverage { .fdz-fab-button-container { position: fixed; bottom: 1em; - right: 1em; } + right: 1em; + z-index: 15; } md-dialog .fdz-fab-button-container { position: absolute; } @@ -2634,6 +2640,37 @@ md-dialog .fdz-fab-button-container { outline: #F69F24 auto 5px; color: #0071bc; } +.fdz-speech-bubble { + position: relative; + max-width: 30em; + background-color: #0071bc; + padding: 0px; + margin-bottom: 6px; + margin-left: 12px; + border-radius: 1rem; + box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.3), 0 0.0625rem 0.125rem rgba(0, 0, 0, 0.2); } + +.fdz-speech-bubble p { + padding: 1.125em 1.5em; + margin: 0px; + color: white; } + +.fdz-speech-bubble a:hover, .fdz-speech-bubble a:focus { + text-decoration: none; } + +.fdz-speech-bubble::after { + content: ''; + position: absolute; + width: 0; + height: 0; + top: 100%; + right: 25px; + border: 10px solid transparent; + border-top: none; + transform: rotate(180deg); + border-bottom-color: #0071bc; + filter: drop-shadow(0 -0.0625rem 0.0625rem rgba(0, 0, 0, 0.1)); } + .fdz-no-js { position: absolute; background-color: #F69F24; diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html index 6a01f8394a..e0853150d8 100644 --- a/src/main/webapp/index.html +++ b/src/main/webapp/index.html @@ -166,6 +166,7 @@ + @@ -440,6 +441,8 @@ + + @@ -527,8 +530,8 @@ - - + + diff --git a/src/main/webapp/scripts/app.constants.js b/src/main/webapp/scripts/app.constants.js index 32acb657ac..c8d520e398 100644 --- a/src/main/webapp/scripts/app.constants.js +++ b/src/main/webapp/scripts/app.constants.js @@ -6,7 +6,7 @@ angular.module('metadatamanagementApp') .constant('ENV', 'local') -.constant('VERSION', '1.0.106-HOTFIX2') +.constant('VERSION', '1.0.107') .constant('ElasticSearchProperties', {apiVersion:'7.x',logLevel:'error',pageSize:10}) diff --git a/src/main/webapp/scripts/app.js b/src/main/webapp/scripts/app.js index 6240eabecc..469da5e784 100644 --- a/src/main/webapp/scripts/app.js +++ b/src/main/webapp/scripts/app.js @@ -15,7 +15,7 @@ try { 'angularMoment', 'ngAnimate', 'vcRecaptcha', 'ngMessages', 'ngFileSaver', 'ngShortcut', 'jsonFormatter', 'fdzPaginatorModule', 'ngTextTruncate', - 'ng-showdown' + 'ng-showdown', 'swxSessionStorage' ]) .run( diff --git a/src/main/webapp/scripts/common/details/related-objects.html.tmpl b/src/main/webapp/scripts/common/details/related-objects.html.tmpl index c907b1d11b..ab5d3d272b 100644 --- a/src/main/webapp/scripts/common/details/related-objects.html.tmpl +++ b/src/main/webapp/scripts/common/details/related-objects.html.tmpl @@ -1,7 +1,7 @@ -

{{'global.cards.related-objects' | translate }} {{$ctrl.searchParams.version && !$ctrl.disabled?'- Version ' + $ctrl.searchParams.version:'' }}

+

{{'global.cards.related-objects' | translate }}

filter_alt{{'variable-management.detail.label.derived-variables' | translate}} {{'global.of' | translate}} {{$ctrl.searchParams.filter['derived-variables-identifier'].match('[-]([^-]*)$')[1]}}
-
filter_alt{{'variable-management.detail.label.variables-in-panel' | translate}} {{'global.of' | translate}} {{$ctrl.searchParams.filter['panel-identifier'].match('[-]([^-]*)$')[1]}}
+
filter_alt{{'variable-management.detail.label.repeated-measurement' | translate}} {{'global.of' | translate}} {{$ctrl.searchParams.filter['repeated-measurement-identifier'].match('[-]([^-]*)$')[1]}}
+ {{'global.menu.skip-navigation'|translate}} diff --git a/src/main/webapp/scripts/conceptmanagement/views/concept-detail.html.tmpl b/src/main/webapp/scripts/conceptmanagement/views/concept-detail.html.tmpl index b48f670263..d834cb510b 100644 --- a/src/main/webapp/scripts/conceptmanagement/views/concept-detail.html.tmpl +++ b/src/main/webapp/scripts/conceptmanagement/views/concept-detail.html.tmpl @@ -68,7 +68,8 @@
-
+
+ {{'search-management.buttons.edit-concept-tooltip' | translate}} diff --git a/src/main/webapp/scripts/dataacquisitionprojectmanagement/configuration/translations-de.js b/src/main/webapp/scripts/dataacquisitionprojectmanagement/configuration/translations-de.js index f3610bbbd8..5981bd4da1 100644 --- a/src/main/webapp/scripts/dataacquisitionprojectmanagement/configuration/translations-de.js +++ b/src/main/webapp/scripts/dataacquisitionprojectmanagement/configuration/translations-de.js @@ -9,7 +9,14 @@ angular.module('metadatamanagementApp').config( 'release': { 'version': 'Version des Datenaufbereitungsprojektes', 'pin-to-start-page': 'Datenpaket auf Startseite anzeigen', - 'pin-to-start-page-hint': 'Markieren Sie dieses Kästchen, wenn das Datenpaket auf der Startseite des MDMs angezeigt werden soll.' + 'pin-to-start-page-hint': 'Markieren Sie dieses Kästchen, wenn das Datenpaket auf der Startseite des MDMs angezeigt werden soll.', + 'confirmed': { + 'local': 'Dies ist ein lokales System. Sind sie sicher?', + 'test': 'Dies ist das Test-System! Sind sie sicher?', + 'dev': 'Dies ist das Dev-System! Sind sie sicher?', + 'prod': 'ACHTUNG: Dies ist das PRODUKTIV-System! Sind sie sicher?', + }, + 'confirm-hint': 'Markieren Sie dieses Kästchen, wenn sie das Projekt wirklich auf diesem System freigeben wollen!' }, 'home': { 'title': 'Datenaufbereitungsprojekte', diff --git a/src/main/webapp/scripts/dataacquisitionprojectmanagement/configuration/translations-en.js b/src/main/webapp/scripts/dataacquisitionprojectmanagement/configuration/translations-en.js index 0647e7e4be..f6fc34cfb7 100644 --- a/src/main/webapp/scripts/dataacquisitionprojectmanagement/configuration/translations-en.js +++ b/src/main/webapp/scripts/dataacquisitionprojectmanagement/configuration/translations-en.js @@ -9,7 +9,14 @@ angular.module('metadatamanagementApp').config( 'release': { 'version': 'Version of the Data Acquisition Projects', 'pin-to-start-page': 'Show Data Package on Start Page', - 'pin-to-start-page-hint': 'Check this box, if you want to show this data package on the start page.' + 'pin-to-start-page-hint': 'Check this box, if you want to show this data package on the start page.', + 'confirmed': { + 'local': 'This is a local system. Are you sure?', + 'test': 'This is the test stage! Are you sure?', + 'dev': 'This is the dev stage! Are you sure?', + 'prod': 'WARNING: This is the PRODUCTION stage! Are you sure?', + }, + 'confirm-hint': 'Check this box if you really want to release this project on this system!' }, 'home': { 'title': 'Data Acquisition Projects', diff --git a/src/main/webapp/scripts/dataacquisitionprojectmanagement/directives/project-cockpit-versions.html.tmpl b/src/main/webapp/scripts/dataacquisitionprojectmanagement/directives/project-cockpit-versions.html.tmpl index dccf8f8f46..df83823a08 100644 --- a/src/main/webapp/scripts/dataacquisitionprojectmanagement/directives/project-cockpit-versions.html.tmpl +++ b/src/main/webapp/scripts/dataacquisitionprojectmanagement/directives/project-cockpit-versions.html.tmpl @@ -6,7 +6,7 @@ {{('data-package-management.detail.label.version' | translate) + ' ' + shadow.release.version}} - {{'(' + ('data-package-management.detail.label.published-at' | translate) + ' ' + (shadow.release.firstDate + 'Z' | date:'mediumDate') + ')'}} + {{'(' + ('data-package-management.detail.label.published-at' | translate) + ' ' + (shadow.release.lastDate + 'Z' | date:'mediumDate') + ')'}} diff --git a/src/main/webapp/scripts/dataacquisitionprojectmanagement/views/release-project-dialog.controller.js b/src/main/webapp/scripts/dataacquisitionprojectmanagement/views/release-project-dialog.controller.js index 147c3a7d72..65f0972565 100644 --- a/src/main/webapp/scripts/dataacquisitionprojectmanagement/views/release-project-dialog.controller.js +++ b/src/main/webapp/scripts/dataacquisitionprojectmanagement/views/release-project-dialog.controller.js @@ -6,9 +6,10 @@ angular.module('metadatamanagementApp') DaraReleaseResource, $rootScope, CurrentProjectService, DataAcquisitionProjectLastReleaseResource, $state, $translate, DataAcquisitionProjectPostValidationService, PinnedDataPackagesService, - DataPackageIdBuilderService) { + DataPackageIdBuilderService, ENV) { $scope.bowser = $rootScope.bowser; $scope.project = project; + $scope.ENV = ENV; var i18nPrefix = 'data-acquisition-project-management.log-messages.' + 'data-acquisition-project.'; diff --git a/src/main/webapp/scripts/dataacquisitionprojectmanagement/views/release-project-dialog.html.tmpl b/src/main/webapp/scripts/dataacquisitionprojectmanagement/views/release-project-dialog.html.tmpl index d5918d6ee2..92cc9b7b4d 100644 --- a/src/main/webapp/scripts/dataacquisitionprojectmanagement/views/release-project-dialog.html.tmpl +++ b/src/main/webapp/scripts/dataacquisitionprojectmanagement/views/release-project-dialog.html.tmpl @@ -51,6 +51,15 @@ {{'data-acquisition-project-management.release.pin-to-start-page-hint' | translate}}
+ + + {{'data-acquisition-project-management.release.confirmed.' + ENV | translate }} + +
+ {{'data-acquisition-project-management.release.confirm-hint' | translate}} +
+
diff --git a/src/main/webapp/scripts/datapackagemanagement/configuration/data-package.js b/src/main/webapp/scripts/datapackagemanagement/configuration/data-package.js index 69a940ed17..3b9e801492 100644 --- a/src/main/webapp/scripts/datapackagemanagement/configuration/data-package.js +++ b/src/main/webapp/scripts/datapackagemanagement/configuration/data-package.js @@ -33,7 +33,7 @@ angular.module('metadatamanagementApp') var dataPackageDetailConfig = { parent: 'site', url: '/data-packages/{id}?{access-way}{derived-variables-identifier}' + - '{page}{panel-identifier}{query}{size}{type}{version}', + '{page}{query}{repeated-measurement-identifier}{size}{type}{version}', reloadOnSearch: false, data: { authorities: [] @@ -83,8 +83,9 @@ angular.module('metadatamanagementApp') .state(stateName, dataPackageDetailConfig); var legacyStudyDetailConfig = angular.copy(dataPackageDetailConfig); - legacyStudyDetailConfig.url = '/studies/{id}?{version}{query}{page}{size}' + - '{access-way}{type}{panel-identifier}{derived-variables-identifier}'; + legacyStudyDetailConfig.url = '/studies/{id}?{access-way}' + + '{derived-variables-identifier}' + + '{page}{query}{repeated-measurement-identifier}{size}{type}{version}'; $stateProvider .state('legacyStudyDetail', legacyStudyDetailConfig); diff --git a/src/main/webapp/scripts/datapackagemanagement/configuration/translations-de.js b/src/main/webapp/scripts/datapackagemanagement/configuration/translations-de.js index f8b1c50d0f..16be35bd9b 100644 --- a/src/main/webapp/scripts/datapackagemanagement/configuration/translations-de.js +++ b/src/main/webapp/scripts/datapackagemanagement/configuration/translations-de.js @@ -40,7 +40,7 @@ angular.module('metadatamanagementApp').config( 'surveyed-in': 'Enthält Daten aus diesen Erhebungen' }, 'doi': 'DOI', - 'published-at': 'veröffentlicht am', + 'published-at': 'zuletzt veröffentlicht am', 'published': 'Veröffentlicht am' }, 'attachments': { diff --git a/src/main/webapp/scripts/datapackagemanagement/configuration/translations-en.js b/src/main/webapp/scripts/datapackagemanagement/configuration/translations-en.js index 98ab7fad44..f7ce5d2af7 100644 --- a/src/main/webapp/scripts/datapackagemanagement/configuration/translations-en.js +++ b/src/main/webapp/scripts/datapackagemanagement/configuration/translations-en.js @@ -40,7 +40,7 @@ angular.module('metadatamanagementApp').config( 'surveyed-in': 'Contains data from these surveys' }, 'doi': 'DOI', - 'published-at': 'published at', + 'published-at': 'last published at', 'published': 'Published at' }, 'attachments': { diff --git a/src/main/webapp/scripts/datapackagemanagement/views/data-package-detail.controller.js b/src/main/webapp/scripts/datapackagemanagement/views/data-package-detail.controller.js index 5cbd806eb7..ef15460726 100644 --- a/src/main/webapp/scripts/datapackagemanagement/views/data-package-detail.controller.js +++ b/src/main/webapp/scripts/datapackagemanagement/views/data-package-detail.controller.js @@ -124,7 +124,7 @@ angular.module('metadatamanagementApp') $timeout(function() { if ($location.search().query || - $location.search()['panel-identifier'] || + $location.search()['repeated-measurement-identifier'] || $location.search()['derived-variables-identifier']) { ctrl.scroll(); } diff --git a/src/main/webapp/scripts/datapackagemanagement/views/data-package-detail.html.tmpl b/src/main/webapp/scripts/datapackagemanagement/views/data-package-detail.html.tmpl index 0f2ce09979..988a299f2e 100644 --- a/src/main/webapp/scripts/datapackagemanagement/views/data-package-detail.html.tmpl +++ b/src/main/webapp/scripts/datapackagemanagement/views/data-package-detail.html.tmpl @@ -67,7 +67,8 @@
-
+
+
-
+
+ diff --git a/src/main/webapp/scripts/instrumentmanagement/views/instrument-detail.html.tmpl b/src/main/webapp/scripts/instrumentmanagement/views/instrument-detail.html.tmpl index f6bcc8b20f..ef696d17a3 100644 --- a/src/main/webapp/scripts/instrumentmanagement/views/instrument-detail.html.tmpl +++ b/src/main/webapp/scripts/instrumentmanagement/views/instrument-detail.html.tmpl @@ -35,7 +35,8 @@
-
+
+ diff --git a/src/main/webapp/scripts/ordermanagement/components/data-package-configurator.html.tmpl b/src/main/webapp/scripts/ordermanagement/components/data-package-configurator.html.tmpl index b5e176a85c..0ba92dff9f 100644 --- a/src/main/webapp/scripts/ordermanagement/components/data-package-configurator.html.tmpl +++ b/src/main/webapp/scripts/ordermanagement/components/data-package-configurator.html.tmpl @@ -42,9 +42,9 @@ {{$ctrl.dataPackage.release.firstDate + 'Z' | date:'mediumDate'}} -
{{'search-management.detail.versions' | translate }}:
+
{{'search-management.detail.version' | translate }}:
- + {{item.version}}{{$first?' (' + ('shopping-cart.detail.label.current' | translate) + ')':''}} @@ -59,9 +59,9 @@
-
{{'search-management.detail.access-ways' | translate}}:
+
{{'search-management.detail.access-way' | translate}}:
- + {{item}} diff --git a/src/main/webapp/scripts/questionmanagement/views/question-detail.html.tmpl b/src/main/webapp/scripts/questionmanagement/views/question-detail.html.tmpl index 5c4c7a38bf..b6d04831cb 100644 --- a/src/main/webapp/scripts/questionmanagement/views/question-detail.html.tmpl +++ b/src/main/webapp/scripts/questionmanagement/views/question-detail.html.tmpl @@ -58,7 +58,8 @@
-
+
+ +
+ + clear + + {{'related-publication-management.report-publications.speech-bubble.close' | translate }} + + + +

{{'related-publication-management.report-publications.speech-bubble.text' | translate }}

+
+
+ + + {{'related-publication-management.report-publications.button.tooltip' | translate }} + + auto_stories + +
diff --git a/src/main/webapp/scripts/relatedpublicationmanagement/configuration/translations-de.js b/src/main/webapp/scripts/relatedpublicationmanagement/configuration/translations-de.js index f34299e362..bb57134ffb 100644 --- a/src/main/webapp/scripts/relatedpublicationmanagement/configuration/translations-de.js +++ b/src/main/webapp/scripts/relatedpublicationmanagement/configuration/translations-de.js @@ -141,6 +141,16 @@ angular.module('metadatamanagementApp').config( 'instrument-has-not-a-referenced-data-package': 'Das Instrument "{{invalidValue}}" gehört zu einem Datenpaket, das nicht mit der Publikation verknüpft ist.', 'question-has-not-a-referenced-data-package': 'Die Frage "{{invalidValue}}" gehört zu einem Datenpaket, das nicht mit der Publikation verknüpft ist.' } + }, + 'report-publications': { + 'speech-bubble': { + 'close': 'Schließen', + 'text': 'Kennen Sie Publikationen, die auf Basis unserer Datenpakete entstanden sind? Dann teilen Sie uns diese bitte mit...' + }, + 'button': { + 'tooltip': 'Klicken, um Publikationen zu unseren Datenpaketen zu melden', + 'link': 'mailto:userservice@dzhw.eu?subject=Meldung%20von%20Publikationen%20zu%20Datenpaketen%20vom%20FDZ-DZHW&body=Liebes%20FDZ-DZHW%2C%0D%0A%0D%0Aich%20m%C3%B6chte%20folgende%20Publikation(en)%2C%20welche%20zu%20Datenpaket%20X%20geh%C3%B6ren%2C%20melden%3A%0D%0A' + } } } //jscs:enable diff --git a/src/main/webapp/scripts/relatedpublicationmanagement/configuration/translations-en.js b/src/main/webapp/scripts/relatedpublicationmanagement/configuration/translations-en.js index 5c8a98b41c..57c3023968 100644 --- a/src/main/webapp/scripts/relatedpublicationmanagement/configuration/translations-en.js +++ b/src/main/webapp/scripts/relatedpublicationmanagement/configuration/translations-en.js @@ -141,6 +141,16 @@ angular.module('metadatamanagementApp').config( 'instrument-has-not-a-referenced-data-package': 'Instrument "{{invalidValue}}" belongs to a data package which has not been linked to this publication.', 'question-has-not-a-referenced-data-package': 'Question "{{invalidValue}}" belongs to a data package which has not been linked to this publication.' } + }, + 'report-publications': { + 'speech-bubble': { + 'close': 'Close', + 'text': 'Do you know of any publications based on our data packages? Then please share them with us...' + }, + 'button': { + 'tooltip': 'Click to report publications on our data packages', + 'link': 'mailto:userservice@dzhw.eu?subject=Reporting%20of%20publications%20on%20data%20packages%20from%20FDZ-DZHW&body=Dear%20FDZ-DZHW%2C%0D%0A%0D%0AI%20would%20like%20to%20report%20the%20following%20publication(s)%2C%20which%20belong%20to%20data%20package%20X%3A%0D%0A' + } } } //jscs:enable diff --git a/src/main/webapp/scripts/relatedpublicationmanagement/templates/common-details.html.tmpl b/src/main/webapp/scripts/relatedpublicationmanagement/templates/common-details.html.tmpl index 372f290011..f1cf10c4f6 100644 --- a/src/main/webapp/scripts/relatedpublicationmanagement/templates/common-details.html.tmpl +++ b/src/main/webapp/scripts/relatedpublicationmanagement/templates/common-details.html.tmpl @@ -33,7 +33,7 @@ {{$ctrl.options.doi}}
-
+
+ 1) { - var index = _.indexOf(panelIdentifiers, - $scope.currentSearchParams.filter['panel-identifier']); - if (index > -1) { - $scope.currentPanelIdentifier = panelIdentifiers[index]; - return; - } - } - //panel identifier was not found - $scope.currentPanelIdentifier = - $scope.currentSearchParams.filter['panel-identifier']; - $timeout(function() { - $scope.panelIdentifierFilterForm.panelIdentifierFilter - .$setValidity('md-require-match', false); - }, 500); - $scope.panelIdentifierFilterForm.panelIdentifierFilter - .$setTouched(); - }); - } else { - initializing = false; - } - }; - $scope.onSelectionChanged = function(panelIdentifier) { - if (initializing) { - initializing = false; - return; - } - selectionChanging = true; - if (!$scope.currentSearchParams.filter) { - $scope.currentSearchParams.filter = {}; - } - if (panelIdentifier) { - $scope.currentSearchParams.filter['panel-identifier'] = - panelIdentifier.key; - } else { - delete $scope.currentSearchParams.filter['panel-identifier']; - } - $scope.panelIdentifierChangedCallback(); - }; - - $scope.searchPanelIdentifiers = function(searchText) { - var cleanedFilter = _.omit($scope.currentSearchParams.filter, - 'panel-identifier'); - var currentProjectId = CurrentProjectService.getCurrentProject() ? - CurrentProjectService.getCurrentProject().id : null; - var query = $location.search().query || null; - if (searchText === cache.searchText && - _.isEqual(cache.filter, cleanedFilter) && - cache.projectId === currentProjectId && - cache.query === query) { - return $q.resolve(cache.searchResult); - } - return VariableSearchService.findPanelIdentifiers( - searchText, cleanedFilter, - currentProjectId, query) - .then(function(panelIdentifiers) { - cache.searchText = searchText; - cache.filter = _.cloneDeep(cleanedFilter); - cache.projectId = currentProjectId; - cache.query = query; - cache.searchResult = panelIdentifiers; - return panelIdentifiers; - } - ); - }; - $scope.$watch('currentSearchParams.filter["panel-identifier"]', - function() { - init(); - }); - } - ]); diff --git a/src/main/webapp/scripts/searchmanagement/directives/panel-identifier-search-filter.directive.js b/src/main/webapp/scripts/searchmanagement/directives/panel-identifier-search-filter.directive.js deleted file mode 100644 index f0d792e1f3..0000000000 --- a/src/main/webapp/scripts/searchmanagement/directives/panel-identifier-search-filter.directive.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -angular.module('metadatamanagementApp').directive('panelIdentifierSearchFilter', - function() { - return { - restrict: 'E', - templateUrl: 'scripts/searchmanagement/directives/' + - 'panel-identifier-search-filter.html.tmpl', - scope: { - currentSearchParams: '=', - panelIdentifierChangedCallback: '=', - currentLanguage: '=', - bowser: '=' - }, - controller: 'PanelIdentifierSearchFilterController' - }; - }); diff --git a/src/main/webapp/scripts/searchmanagement/directives/panel-identifier-search-filter.html.tmpl b/src/main/webapp/scripts/searchmanagement/directives/panel-identifier-search-filter.html.tmpl deleted file mode 100644 index 2960956edc..0000000000 --- a/src/main/webapp/scripts/searchmanagement/directives/panel-identifier-search-filter.html.tmpl +++ /dev/null @@ -1,22 +0,0 @@ -
- - - - {{item.key}} - - - - - - {{'search-management.filter.panel-identifier-filter.not-found' | translate}} - - - -
-
- {{'search-management.filter.panel-identifier-filter.no-valid-selected' | translate}} -
-
-
-
diff --git a/src/main/webapp/scripts/searchmanagement/directives/repeated-measurement-identifier-search-filter.controller.js b/src/main/webapp/scripts/searchmanagement/directives/repeated-measurement-identifier-search-filter.controller.js new file mode 100644 index 0000000000..873861f2b6 --- /dev/null +++ b/src/main/webapp/scripts/searchmanagement/directives/repeated-measurement-identifier-search-filter.controller.js @@ -0,0 +1,114 @@ +/* global _ */ +'use strict'; + +angular.module('metadatamanagementApp') + .controller('RepeatedMeasurementIdentifierSearchFilterController', [ + '$scope', 'VariableSearchService', '$timeout', 'CurrentProjectService', + '$location', '$q', + function($scope, VariableSearchService, $timeout, CurrentProjectService, + $location, $q) { + // prevent repeated-measurement-identifier changed events during init + var initializing = true; + var selectionChanging = false; + var cache = { + searchText: null, + filter: null, + query: null, + projectId: null, + searchResult: null + }; + var init = function() { + if (selectionChanging) { + selectionChanging = false; + return; + } + initializing = true; + if ($scope.currentSearchParams.filter && + $scope.currentSearchParams.filter[ + 'repeated-measurement-identifier']) { + $scope.searchRepeatedMeasurementIdentifiers( + $scope.currentSearchParams.filter[ + 'repeated-measurement-identifier']).then( + function(repeatedMeasurementIdentifiers) { + if (repeatedMeasurementIdentifiers.length === 1) { + $scope.currentRepeatedMeasurementIdentifier = + repeatedMeasurementIdentifiers[0]; + return; + } else if (repeatedMeasurementIdentifiers.length > 1) { + var index = _.indexOf(repeatedMeasurementIdentifiers, + $scope.currentSearchParams.filter[ + 'repeated-measurement-identifier']); + if (index > -1) { + $scope.currentRepeatedMeasurementIdentifier = + repeatedMeasurementIdentifiers[index]; + return; + } + } + //panel identifier was not found + $scope.currentRepeatedMeasurementIdentifier = + $scope.currentSearchParams.filter[ + 'repeated-measurement-identifier']; + $timeout(function() { + $scope.repeatedMeasurementIdentifierFilterForm + .repeatedMeasurementIdentifierFilter + .$setValidity('md-require-match', false); + }, 500); + $scope.repeatedMeasurementIdentifierFilterForm + .repeatedMeasurementIdentifierFilter + .$setTouched(); + }); + } else { + initializing = false; + } + }; + $scope.onSelectionChanged = function(repeatedMeasurementIdentifier) { + if (initializing) { + initializing = false; + return; + } + selectionChanging = true; + if (!$scope.currentSearchParams.filter) { + $scope.currentSearchParams.filter = {}; + } + if (repeatedMeasurementIdentifier) { + $scope.currentSearchParams.filter['repeated-measurement-identifier'] = + repeatedMeasurementIdentifier.key; + } else { + delete $scope.currentSearchParams.filter[ + 'repeated-measurement-identifier']; + } + $scope.repeatedMeasurementIdentifierChangedCallback(); + }; + + $scope.searchRepeatedMeasurementIdentifiers = function(searchText) { + var cleanedFilter = _.omit($scope.currentSearchParams.filter, + 'repeated-measurement-identifier'); + var currentProjectId = CurrentProjectService.getCurrentProject() ? + CurrentProjectService.getCurrentProject().id : null; + var query = $location.search().query || null; + if (searchText === cache.searchText && + _.isEqual(cache.filter, cleanedFilter) && + cache.projectId === currentProjectId && + cache.query === query) { + return $q.resolve(cache.searchResult); + } + return VariableSearchService.findRepeatedMeasurementIdentifiers( + searchText, cleanedFilter, + currentProjectId, query) + .then(function(repeatedMeasurementIdentifiers) { + cache.searchText = searchText; + cache.filter = _.cloneDeep(cleanedFilter); + cache.projectId = currentProjectId; + cache.query = query; + cache.searchResult = repeatedMeasurementIdentifiers; + return repeatedMeasurementIdentifiers; + } + ); + }; + $scope.$watch('currentSearchParams.filter[' + + '"repeated-measurement-identifier"]', + function() { + init(); + }); + } + ]); diff --git a/src/main/webapp/scripts/searchmanagement/directives/repeated-measurement-identifier-search-filter.directive.js b/src/main/webapp/scripts/searchmanagement/directives/repeated-measurement-identifier-search-filter.directive.js new file mode 100644 index 0000000000..acdf3f846e --- /dev/null +++ b/src/main/webapp/scripts/searchmanagement/directives/repeated-measurement-identifier-search-filter.directive.js @@ -0,0 +1,18 @@ +'use strict'; + +angular.module('metadatamanagementApp').directive( + 'repeatedMeasurementIdentifierSearchFilter', + function() { + return { + restrict: 'E', + templateUrl: 'scripts/searchmanagement/directives/' + + 'repeated-measurement-identifier-search-filter.html.tmpl', + scope: { + currentSearchParams: '=', + repeatedMeasurementIdentifierChangedCallback: '=', + currentLanguage: '=', + bowser: '=' + }, + controller: 'RepeatedMeasurementIdentifierSearchFilterController' + }; + }); diff --git a/src/main/webapp/scripts/searchmanagement/directives/repeated-measurement-identifier-search-filter.html.tmpl b/src/main/webapp/scripts/searchmanagement/directives/repeated-measurement-identifier-search-filter.html.tmpl new file mode 100644 index 0000000000..2c4336b8d9 --- /dev/null +++ b/src/main/webapp/scripts/searchmanagement/directives/repeated-measurement-identifier-search-filter.html.tmpl @@ -0,0 +1,22 @@ +
+ + + + {{item.key}} + + + + + + {{'search-management.filter.repeated-measurement-identifier-filter.not-found' | translate}} + + + +
+
+ {{'search-management.filter.repeated-measurement-identifier-filter.no-valid-selected' | translate}} +
+
+
+
diff --git a/src/main/webapp/scripts/searchmanagement/directives/search-filter-panel.html.tmpl b/src/main/webapp/scripts/searchmanagement/directives/search-filter-panel.html.tmpl index 94c6709693..3fa0325c76 100644 --- a/src/main/webapp/scripts/searchmanagement/directives/search-filter-panel.html.tmpl +++ b/src/main/webapp/scripts/searchmanagement/directives/search-filter-panel.html.tmpl @@ -45,7 +45,7 @@ - + diff --git a/src/main/webapp/scripts/searchmanagement/services/searchHelper.service.js b/src/main/webapp/scripts/searchmanagement/services/searchHelper.service.js index bf0f2ce135..1ec41d2d87 100644 --- a/src/main/webapp/scripts/searchmanagement/services/searchHelper.service.js +++ b/src/main/webapp/scripts/searchmanagement/services/searchHelper.service.js @@ -114,7 +114,7 @@ angular.module('metadatamanagementApp').factory( 'question': 'relatedQuestions.questionId', 'data-set': 'dataSetId', 'access-way': 'accessWays', - 'panel-identifier': 'panelIdentifier', + 'repeated-measurement-identifier': 'repeatedMeasurementIdentifier', 'derived-variables-identifier': 'derivedVariablesIdentifier', 'related-publication': 'relatedPublications.id', 'institution-de': 'dataPackage.institutions.de', diff --git a/src/main/webapp/scripts/searchmanagement/views/search.html.tmpl b/src/main/webapp/scripts/searchmanagement/views/search.html.tmpl index 0097bfe9ab..706ffe2db2 100644 --- a/src/main/webapp/scripts/searchmanagement/views/search.html.tmpl +++ b/src/main/webapp/scripts/searchmanagement/views/search.html.tmpl @@ -241,7 +241,8 @@ add
-
+
+
+
+ +
diff --git a/src/main/webapp/scripts/surveymanagement/views/survey-detail.html.tmpl b/src/main/webapp/scripts/surveymanagement/views/survey-detail.html.tmpl index c96f2af112..5f7a900d92 100644 --- a/src/main/webapp/scripts/surveymanagement/views/survey-detail.html.tmpl +++ b/src/main/webapp/scripts/surveymanagement/views/survey-detail.html.tmpl @@ -49,7 +49,8 @@
-
+
+ diff --git a/src/main/webapp/scripts/variablemanagement/configuration/translations-de.js b/src/main/webapp/scripts/variablemanagement/configuration/translations-de.js index 6f0284ceb7..2309ba7b0c 100644 --- a/src/main/webapp/scripts/variablemanagement/configuration/translations-de.js +++ b/src/main/webapp/scripts/variablemanagement/configuration/translations-de.js @@ -22,7 +22,7 @@ angular.module('metadatamanagementApp').config( 'label': { 'variable': 'Variable', 'variables': 'Variablen', - 'variables-in-panel': 'Panelvariablen', + 'repeated-measurement': 'Wiederholungsmessungen', 'derived-variables': 'abgeleitete Variablen', 'generation-details': 'Generierungsdetails', 'name': 'Name', @@ -36,7 +36,7 @@ angular.module('metadatamanagementApp').config( 'generation-details-rule': 'Generierungsregel', 'label': 'Label', 'show-all-derived-variables': 'Alle abgeleiteten Variablen anzeigen', - 'show-all-panel-variables': 'Alle Panelvariablen anzeigen', + 'show-all-repeated-measurements': 'Alle Wiederholungsmessungen anzeigen', 'statistics': { 'graphic-is-loading': 'wird geladen...', 'graphic-is-not-available': 'Keine Grafische Darstellung Der Statistiken', @@ -116,7 +116,7 @@ angular.module('metadatamanagementApp').config( 'many': 'Klicken, um die Fragen anzuzeigen, aus denen diese Variable resultierte' }, 'variables': { - 'same-in-panel': 'Klicken, um alle Panelvariablen zu dieser Variable anzuzeigen', + 'repeated-measurements': 'Klicken, um alle Wiederholungsmessungen zu dieser Variable anzuzeigen', 'derived-variables': 'Klicken, um alle abgeleiteten Variablen zu dieser Variable anzuzeigen', }, 'data-packages': { @@ -232,13 +232,13 @@ angular.module('metadatamanagementApp').config( 'related-question-number-size': 'Die Maximallänge der Nummer einer Frage ist 32 Zeichen.', 'related-question-number-not-empty': 'Eine verbundene Frage hat keine Nummer', 'related-question-instrument-number-not-empty': 'Ein Instrument hat keine Nummer', - 'valid-panel-identifier': 'Die Panel-Kennung der Variable entspricht nicht dem Muster: DataAcquisitionProjectId + "-" + "ds" + "dataSetNumber" + "-" + string', + 'valid-repeated-measurement-identifier': 'Die Kennung der Wiederholungsmessung der Variable entspricht nicht dem Muster: DataAcquisitionProjectId + "-" + "ds" + "dataSetNumber" + "-" + string', 'valid-derived-variables-identifier': 'Die Kennung der abgeleiteten Variablen entspricht nicht dem Muster: DataAcquisitionProjectId + "-" + "ds" + "dataSetNumber" + "-" + string', - 'panel-identifier-size': 'Die Maximallänge der Panel-Kennung der Variable ist 512 Zeichen.', - 'panel-identifier-pattern': 'Für die Panel-Kennung der Variable dürfen nur alphanumerische Zeichen, deutsche Umlaute, ß und das Minus verwendet werden.', + 'repeated-measurement-identifier-size': 'Die Maximallänge der Kennung der Wiederholungsmessung der Variable ist 512 Zeichen.', + 'repeated-measurement-identifier-pattern': 'Für die Kennung der Wiederholungsmessung der Variable dürfen nur alphanumerische Zeichen, deutsche Umlaute, ß und das Minus verwendet werden.', 'derived-variables-identifier-size': 'Die Maximallänge der Kennung der abgeleiteten Variablen ist 512 Zeichen.', 'derived-variables-identifier-pattern': 'Für die Kennung der abgeleiteten Variablen dürfen nur alphanumerische Zeichen, deutsche Umlaute, ß und das Minus verwendet werden.', - 'only-ordinal-scale-level-for-date-data-type': 'Das Skalenniveau einer Datumsvariable muss ordinal sein.', + 'restricted-scale-level-for-date-data-type': 'Das Skalenniveau einer Datumsvariable muss nominal, ordinal oder intervall sein.', 'valid-response-value-must-be-a-number-on-numeric-data-type': 'Wenn der Datentyp einer Variable numerisch ist, müssen die Werte von gültigen Antworten numerisch sein.', 'statistics-minimum-must-be-a-number-on-numeric-data-type': 'Wenn der Datentyp einer Variable numerisch ist, müssen das Minimum von Statistiken numerisch sein.', 'statistics-maximum-must-be-a-number-on-numeric-data-type': 'Wenn der Datentyp einer Variable numerisch ist, muss das Maximum von Statistiken numerisch sein.', diff --git a/src/main/webapp/scripts/variablemanagement/configuration/translations-en.js b/src/main/webapp/scripts/variablemanagement/configuration/translations-en.js index 1dcf8dd090..4968f06248 100644 --- a/src/main/webapp/scripts/variablemanagement/configuration/translations-en.js +++ b/src/main/webapp/scripts/variablemanagement/configuration/translations-en.js @@ -22,7 +22,7 @@ angular.module('metadatamanagementApp').config( 'label': { 'variable': 'Variable', 'variables': 'Variables', - 'variables-in-panel': 'Panel Variables', + 'repeated-measurement': 'Repeated Measurements', 'derived-variables': 'derived Variables', 'generation-details': 'Generation Details', 'name': 'Name', @@ -36,7 +36,7 @@ angular.module('metadatamanagementApp').config( 'generation-details-rule': 'Generation Rule', 'label': 'Label', 'show-all-derived-variables': 'Show all derived variables', - 'show-all-panel-variables': 'Show all panel variables', + 'show-all-repeated-measurements': 'Show all repeated measurements', 'statistics': { 'graphic-is-loading': 'is loading...', 'graphic-is-not-available': 'No plotting available', @@ -116,7 +116,7 @@ angular.module('metadatamanagementApp').config( 'many': 'Click to show all questions from which this variable resulted' }, 'variables': { - 'same-in-panel': 'Click to show all panel variables related to this variable', + 'repeated-measurement': 'Click to show all repeated measurements related to this variable', 'derived-variables': 'Click to show all derived variables related to this variable', }, 'data-packages': { @@ -232,13 +232,13 @@ angular.module('metadatamanagementApp').config( 'related-question-number-size': 'The max Length of Question Number is 32 signs.', 'related-question-number-not-empty': 'A Related Question doesn\'t have a Number!', 'related-question-instrument-number-not-empty': 'An Instrument doesn\'t have a Number!', - 'valid-panel-identifier': 'The Panel Identifier of the Variable is not valid for the Pattern: DataAcquisitionProjectId + "-" + "ds" + "dataSetNumber" + "-" + string.', + 'valid-repeated-measurement-identifier': 'The identifier of the repeated measurement of the Variable is not valid for the Pattern: DataAcquisitionProjectId + "-" + "ds" + "dataSetNumber" + "-" + string.', 'valid-derived-variables-identifier': 'The Identifier of the derived Variable is not valid for the Pattern: DataAcquisitionProjectId + "-" + "ds" + "dataSetNumber" + "-" + string.', - 'panel-identifier-size': 'The max length of Panel Identifier of the Variable is 512 signs.', - 'panel-identifier-pattern': 'Use only alphanumeric signs, german umlauts, ß and minus for the Panel Identifier of the Variable.', + 'repeated-measurement-identifier-size': 'The max length of the identifier of the repeated measurement of the Variable is 512 signs.', + 'repeated-measurement-identifier-pattern': 'Use only alphanumeric signs, german umlauts, ß and minus for the identifier of the repeated measurement of the Variable.', 'derived-variables-identifier-size': 'The max length of derived Variables Identifier of the Variable is 512 signs.', 'derived-variables-identifier-pattern': 'Use only alphanumeric signs, german umlauts, ß and minus for the derived Variables Identifier of the Variable.', - 'only-ordinal-scale-level-for-date-data-type': 'The scale level of a date variable must be ordinal.', + 'restricted-scale-level-for-date-data-type': 'The scale level of a date variable must be nominal, ordinal or interval.', 'valid-response-value-must-be-a-number-on-numeric-data-type': 'If the variable has a numeric data type, the values of valid responses have to be numeric!', 'statistics-minimum-must-be-a-number-on-numeric-data-type': 'If the variable has a numeric data type, the minimum of statistics have to be numeric!', 'statistics-maximum-must-be-a-number-on-numeric-data-type': 'If the variable has a numeric data type, the maximum of statistics have to be numeric!', @@ -301,7 +301,6 @@ angular.module('metadatamanagementApp').config( }, 'post-validation': { 'variable-has-invalid-survey-id': 'The Variable {{id}} references to an unknown Survey ({{toBereferenzedId}}).', - 'variable-id-is-not-in-invalid-variables-panel': 'The Variable {{id}} references to an unknown Panel Variable ({{toBereferenzedId}}).', 'variable-id-is-not-valid-in-related-variables': 'The Variable {{id}} references to an unknown related Variable ({{toBereferenzedId}}).', 'variable-has-invalid-data-set-id': 'The Variable {{id}} references to an unknown Data Set ({{toBereferenzedId}}).', 'variable-has-invalid-question-id': 'The Variable {{id}} references to an unknown Question ({{toBereferenzedId}}).', diff --git a/src/main/webapp/scripts/variablemanagement/services/variableRepositoryClient.service.js b/src/main/webapp/scripts/variablemanagement/services/variableRepositoryClient.service.js index 03e70b7b8a..a276e99e58 100644 --- a/src/main/webapp/scripts/variablemanagement/services/variableRepositoryClient.service.js +++ b/src/main/webapp/scripts/variablemanagement/services/variableRepositoryClient.service.js @@ -20,14 +20,15 @@ angular.module('metadatamanagementApp').factory('VariableRepositoryClient', }); }; - var findAllByPanelIdentifierAndDataSetIdAndIdNot = function(panelIdentifier, - dataSetId, variableId) { + var findAllByRepeatedMeasurementIdentifierAndDataSetIdAndIdNot = function( + repeatedMeasurementIdentifier, dataSetId, variableId) { return $http({ method: 'GET', url: '/api/variables/search/' + - 'findAllByPanelIdentifierAndDataSetIdAndIdNotOrderByIndexInDataSet', + 'findAllByRepeatedMeasurementIdentifierAndDataSetIdAndIdNotOrderBy' + + 'IndexInDataSet', params: { - panelIdentifier: panelIdentifier, + repeatedMeasurementIdentifier: repeatedMeasurementIdentifier, dataSetId: dataSetId, id: variableId, projection: 'id-and-version' @@ -67,8 +68,8 @@ angular.module('metadatamanagementApp').factory('VariableRepositoryClient', return { findByDataAcquisitionProjectId: findByDataAcquisitionProjectId, - findAllByPanelIdentifierAndDataSetIdAndIdNot: - findAllByPanelIdentifierAndDataSetIdAndIdNot, + findAllByRepeatedMeasurementIdentifierAndDataSetIdAndIdNot: + findAllByRepeatedMeasurementIdentifierAndDataSetIdAndIdNot, findAllByDerivedVariablesIdentifierAndDataSetIdAndIdNot: findAllByDerivedVariablesIdentifierAndDataSetIdAndIdNot }; diff --git a/src/main/webapp/scripts/variablemanagement/services/variableSearch.service.js b/src/main/webapp/scripts/variablemanagement/services/variableSearch.service.js index d437c9cd10..0b6cdd2fec 100644 --- a/src/main/webapp/scripts/variablemanagement/services/variableSearch.service.js +++ b/src/main/webapp/scripts/variablemanagement/services/variableSearch.service.js @@ -269,16 +269,16 @@ angular.module('metadatamanagementApp').factory('VariableSearchService', }); }; - var findPanelIdentifiers = function(term, filter, + var findRepeatedMeasurementIdentifiers = function(term, filter, dataAcquisitionProjectId, queryterm) { var query = createQueryObject(); var termFilters = createTermFilters(filter, dataAcquisitionProjectId); query.size = 0; query.body = { 'aggs': { - 'panelIdentifiers': { + 'repeatedMeasurementIdentifiers': { 'terms': { - 'field': 'panelIdentifier', + 'field': 'repeatedMeasurementIdentifier', 'include': '.*' + term.toLowerCase() + '.*', 'size': 100, 'order': { @@ -302,7 +302,7 @@ angular.module('metadatamanagementApp').factory('VariableSearchService', SearchHelperService.addShadowCopyFilter(query, filter); return ElasticSearchClient.search(query).then(function(result) { - return result.aggregations.panelIdentifiers.buckets; + return result.aggregations.repeatedMeasurementIdentifiers.buckets; }); }; @@ -498,7 +498,7 @@ angular.module('metadatamanagementApp').factory('VariableSearchService', countBy: countBy, countByMultiple: countByMultiple, findAccessWays: findAccessWays, - findPanelIdentifiers: findPanelIdentifiers, + findRepeatedMeasurementIdentifiers: findRepeatedMeasurementIdentifiers, findDerivedVariablesIdentifiers: findDerivedVariablesIdentifiers, findByDataSetIdAndIndexInDataSet: findByDataSetIdAndIndexInDataSet, findVariableLabels: findVariableLabels diff --git a/src/main/webapp/scripts/variablemanagement/templates/common-details.html.tmpl b/src/main/webapp/scripts/variablemanagement/templates/common-details.html.tmpl index e373ff5852..07a6b9abe5 100644 --- a/src/main/webapp/scripts/variablemanagement/templates/common-details.html.tmpl +++ b/src/main/webapp/scripts/variablemanagement/templates/common-details.html.tmpl @@ -16,19 +16,19 @@
{{'variable-management.detail.label.name' | translate }}:
- {{$ctrl.options.variable.name}}{{$ctrl.options.variable.panelIdentifier || $ctrl.options.variable.derivedVariablesIdentifier?' (': ''}} + {{$ctrl.options.variable.name}}{{$ctrl.options.variable.repeatedMeasurementIdentifier || $ctrl.options.variable.derivedVariablesIdentifier?' (': ''}} {{'variable-management.detail.label.show-all-derived-variables' | translate}} {{derivedVariable.name}} - {{$ctrl.options.variable.panelIdentifier && $ctrl.options.variable.derivedVariablesIdentifier?', ':''}} - - {{'variable-management.detail.label.show-all-panel-variables' | translate}} + {{$ctrl.options.variable.repeatedMeasurementIdentifier && $ctrl.options.variable.derivedVariablesIdentifier?', ':''}} + + {{'variable-management.detail.label.show-all-repeated-measurements' | translate}} - {{panelVariable.name}} + {{repeatedMeasurementVariable.name}} - {{$ctrl.options.variable.panelIdentifier || $ctrl.options.variable.derivedVariablesIdentifier?')': ''}} + {{$ctrl.options.variable.repeatedMeasurementIdentifier || $ctrl.options.variable.derivedVariablesIdentifier?')': ''}}
diff --git a/src/main/webapp/scripts/variablemanagement/views/variable-detail.controller.js b/src/main/webapp/scripts/variablemanagement/views/variable-detail.controller.js index ef1fc31a8f..7f66463077 100644 --- a/src/main/webapp/scripts/variablemanagement/views/variable-detail.controller.js +++ b/src/main/webapp/scripts/variablemanagement/views/variable-detail.controller.js @@ -115,11 +115,12 @@ angular.module('metadatamanagementApp') version: result.release.version }); } - if (result.panelIdentifier) { - VariableRepositoryClient.findAllByPanelIdentifierAndDataSetIdAndIdNot( - result.panelIdentifier, result.dataSetId, result.id + if (result.repeatedMeasurementIdentifier) { + VariableRepositoryClient + .findAllByRepeatedMeasurementIdentifierAndDataSetIdAndIdNot( + result.repeatedMeasurementIdentifier, result.dataSetId, result.id ).then(function(response) { - ctrl.panelVariables = response.data; + ctrl.repeatedMeasurementVariables = response.data; }); } if (result.derivedVariablesIdentifier) { @@ -197,7 +198,8 @@ angular.module('metadatamanagementApp') } else { $state.go('dataPackageDetail', {id: ctrl.variable.dataPackage.masterId, version: ctrl.variable.shadow ? ctrl.variable.release.version : '', - 'panel-identifier': ctrl.variable.panelIdentifier, + 'repeated-measurement-identifier': ctrl.variable + .repeatedMeasurementIdentifier, type: 'variables' }); } diff --git a/src/main/webapp/scripts/variablemanagement/views/variable-detail.html.tmpl b/src/main/webapp/scripts/variablemanagement/views/variable-detail.html.tmpl index 8820f3d55b..17536d6063 100644 --- a/src/main/webapp/scripts/variablemanagement/views/variable-detail.html.tmpl +++ b/src/main/webapp/scripts/variablemanagement/views/variable-detail.html.tmpl @@ -71,7 +71,8 @@
-
+
+ surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); - + // create the variable with the given id mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isCreated()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isCreated()); queueService.processAllQueueItems(); - + // check that there is one variable search document assertThat(elasticsearchAdminService.countAllDocuments(), equalTo(1L)); // check that auditing attributes have been set - mockMvc.perform(get(API_VARIABLES_URI + "/" + variable.getId())) - .andExpect(status().isOk()) - .andExpect(jsonPath("$.createdDate", not(isEmptyOrNullString()))) - .andExpect(jsonPath("$.lastModifiedDate", not(isEmptyOrNullString()))) - .andExpect(jsonPath("$.createdBy", is("user"))) - .andExpect(jsonPath("$.lastModifiedBy", is("user"))); + mockMvc.perform(get(API_VARIABLES_URI + "/" + variable.getId())).andExpect(status().isOk()) + .andExpect(jsonPath("$.createdDate", not(isEmptyOrNullString()))) + .andExpect(jsonPath("$.lastModifiedDate", not(isEmptyOrNullString()))) + .andExpect(jsonPath("$.createdBy", is("user"))) + .andExpect(jsonPath("$.lastModifiedBy", is("user"))); // call toString for test coverage :-) variable.toString(); @@ -168,14 +166,14 @@ public void testCreateVariableWithSurveyButWithoutProject() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(null, 1, "var1", 1, surveyNumbers); // create the variable with a survey but without a project mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } @Test @@ -185,35 +183,35 @@ public void testCreateVariableWithoutScaleLevel() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); variable.setScaleLevel(null); // create the variable with a survey but without a project mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } - + @Test - public void testCreateVariableWithWrongPanelIdentifier() throws Exception { + public void testCreateVariableWithWrongRepeatedMeasurementIdentifier() throws Exception { DataAcquisitionProject project = UnitTestCreateDomainObjectUtils.buildDataAcquisitionProject(); dataAcquisitionProjectRepository.save(project); List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); - variable.setPanelIdentifier("WrongPanelIdentifier"); + variable.setRepeatedMeasurementIdentifier("WrongIdentifier"); // create the variable with a survey but without a project mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } - + @Test public void testCreateVariableWithWrongDerivedVariablesIdentifier() throws Exception { DataAcquisitionProject project = UnitTestCreateDomainObjectUtils.buildDataAcquisitionProject(); @@ -221,17 +219,17 @@ public void testCreateVariableWithWrongDerivedVariablesIdentifier() throws Excep List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); variable.setDerivedVariablesIdentifier("WrongDerivedVariablesIdentifier"); // create the variable with a survey but without a project mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } - + @Test public void testCreateDateVariableWithOrdinalScaleLevel() throws Exception { DataAcquisitionProject project = UnitTestCreateDomainObjectUtils.buildDataAcquisitionProject(); @@ -239,12 +237,12 @@ public void testCreateDateVariableWithOrdinalScaleLevel() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); variable.setDataType(DataTypes.DATE); variable.setScaleLevel(ScaleLevels.ORDINAL); - List validResponses = new ArrayList<>(); + List validResponses = new ArrayList<>(); variable.getDistribution().setValidResponses(validResponses); variable.getDistribution().getStatistics().setMaximum("2017-01-31"); variable.getDistribution().getStatistics().setMinimum("2017-01-30"); @@ -254,10 +252,10 @@ public void testCreateDateVariableWithOrdinalScaleLevel() throws Exception { // create the variable with a survey but without a project mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isCreated()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isCreated()); } - + @Test public void testCreateDateVariableWithNominalScaleLevel() throws Exception { DataAcquisitionProject project = UnitTestCreateDomainObjectUtils.buildDataAcquisitionProject(); @@ -265,12 +263,12 @@ public void testCreateDateVariableWithNominalScaleLevel() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); variable.setDataType(DataTypes.DATE); variable.setScaleLevel(ScaleLevels.NOMINAL); - List validResponses = new ArrayList<>(); + List validResponses = new ArrayList<>(); variable.getDistribution().setValidResponses(validResponses); variable.getDistribution().getStatistics().setMaximum("2017-01-31"); variable.getDistribution().getStatistics().setMinimum("2017-01-30"); @@ -279,12 +277,13 @@ public void testCreateDateVariableWithNominalScaleLevel() throws Exception { variable.getDistribution().getStatistics().setFirstQuartile("2017-01-30"); // create the variable with a survey but without a project - mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.errors[0].message", containsString("variable-management.error.variable.only-ordinal-scale-level-for-date-data-type"))); + mockMvc + .perform(put(API_VARIABLES_URI + "/" + variable.getId()) + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isCreated()); } - + @Test public void testCreateDateVariableWithContinousScaleLevel() throws Exception { DataAcquisitionProject project = UnitTestCreateDomainObjectUtils.buildDataAcquisitionProject(); @@ -292,12 +291,12 @@ public void testCreateDateVariableWithContinousScaleLevel() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); variable.setDataType(DataTypes.DATE); - variable.setScaleLevel(ScaleLevels.INTERVAL); - List validResponses = new ArrayList<>(); + variable.setScaleLevel(ScaleLevels.RATIO); + List validResponses = new ArrayList<>(); variable.getDistribution().setValidResponses(validResponses); variable.getDistribution().getStatistics().setMaximum("2017-01-31"); variable.getDistribution().getStatistics().setMinimum("2017-01-30"); @@ -306,12 +305,15 @@ public void testCreateDateVariableWithContinousScaleLevel() throws Exception { variable.getDistribution().getStatistics().setFirstQuartile("2017-01-30"); // create the variable with a survey but without a project - mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.errors[0].message", containsString("variable-management.error.variable.only-ordinal-scale-level-for-date-data-type"))); + mockMvc + .perform(put(API_VARIABLES_URI + "/" + variable.getId()) + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$.errors[0].message", containsString( + "variable-management.error.variable.restricted-scale-level-for-date-data-type"))); } - + @Test public void testCreateVariableWithoutLabel() throws Exception { DataAcquisitionProject project = UnitTestCreateDomainObjectUtils.buildDataAcquisitionProject(); @@ -319,23 +321,25 @@ public void testCreateVariableWithoutLabel() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); variable.setLabel(null); // create the variable with a null label mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); - + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); + variable.setLabel(new I18nString()); - + // create the variable with an empty label - mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.errors[0].message", containsString("variable-management.error.variable.label.i18n-string-not-empty"))); + mockMvc + .perform(put(API_VARIABLES_URI + "/" + variable.getId()) + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isBadRequest()).andExpect(jsonPath("$.errors[0].message", + containsString("variable-management.error.variable.label.i18n-string-not-empty"))); } @Test @@ -345,17 +349,19 @@ public void testGenerationDetailsWithExpressionLanguageButWithoutRule() throws E List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); - variable.getGenerationDetails() - .setRule(null); + variable.getGenerationDetails().setRule(null); // create the variable with a null label - mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.errors[0].message", containsString("variable-management.error.generation-details.rule-expression-language-and-rule-filled-or-empty"))); + mockMvc + .perform(put(API_VARIABLES_URI + "/" + variable.getId()) + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$.errors[0].message", containsString( + "variable-management.error.generation-details.rule-expression-language-and-rule-filled-or-empty"))); } @Test @@ -366,65 +372,57 @@ public void testCreateVariableWithNonUniqueCode() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); - Missing value1 = variable.getDistribution() - .getMissings() - .get(0); + Missing value1 = variable.getDistribution().getMissings().get(0); - Missing value2 = Missing.builder().code(value1.getCode()) - .label(value1.getLabel()) - .absoluteFrequency(value1.getAbsoluteFrequency()) - .relativeFrequency(value1.getRelativeFrequency()) - .build(); + Missing value2 = Missing.builder().code(value1.getCode()).label(value1.getLabel()) + .absoluteFrequency(value1.getAbsoluteFrequency()) + .relativeFrequency(value1.getRelativeFrequency()).build(); - variable.getDistribution() - .getMissings() - .add(value2); + variable.getDistribution().getMissings().add(value2); // create the variable with duplicate value codes - mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.errors[0].message", containsString("unique"))); + mockMvc + .perform(put(API_VARIABLES_URI + "/" + variable.getId()) + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$.errors[0].message", containsString("unique"))); } - + @Test public void testCreateVariableWithNonUniqueValueClass() throws Exception { - + // Arrange DataAcquisitionProject project = UnitTestCreateDomainObjectUtils.buildDataAcquisitionProject(); dataAcquisitionProjectRepository.save(project); - + List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); - ValidResponse validResponse = variable.getDistribution() - .getValidResponses() - .get(0); + ValidResponse validResponse = variable.getDistribution().getValidResponses().get(0); validResponse.setValue("123.456"); ValidResponse value2 = ValidResponse.builder().value(validResponse.getValue()) - .label(validResponse.getLabel()) - .absoluteFrequency(validResponse.getAbsoluteFrequency()) - .relativeFrequency(validResponse.getRelativeFrequency()) - .validRelativeFrequency(validResponse.getValidRelativeFrequency()) - .build(); - - variable.getDistribution() - .getValidResponses() - .add(value2); - + .label(validResponse.getLabel()).absoluteFrequency(validResponse.getAbsoluteFrequency()) + .relativeFrequency(validResponse.getRelativeFrequency()) + .validRelativeFrequency(validResponse.getValidRelativeFrequency()).build(); + + variable.getDistribution().getValidResponses().add(value2); + // create the variable with duplicate value classes - mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.errors[0].message", containsString("unique"))); - + mockMvc + .perform(put(API_VARIABLES_URI + "/" + variable.getId()) + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$.errors[0].message", containsString("unique"))); + } @Test @@ -436,19 +434,17 @@ public void testCreateVariableWithNonNumericValueOnContinouosScaleLevel() throws List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); - ValidResponse validResponse = variable.getDistribution() - .getValidResponses() - .get(0); + ValidResponse validResponse = variable.getDistribution().getValidResponses().get(0); validResponse.setValue("hurz"); // create the variable with duplicate value classes - mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable))) - .andExpect(status().is4xxClientError()) - .andReturn(); + mockMvc + .perform(put(API_VARIABLES_URI + "/" + variable.getId()) + .content(TestUtil.convertObjectToJsonBytes(variable))) + .andExpect(status().is4xxClientError()).andReturn(); } @Test @@ -458,17 +454,15 @@ public void testCreateVariableWithInvalidScaleLevel() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); - variable.setScaleLevel(I18nString.builder().de("InvalidValue") - .en("InvalidValue") - .build()); + variable.setScaleLevel(I18nString.builder().de("InvalidValue").en("InvalidValue").build()); // create the variable with a survey but without a project mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } @Test @@ -477,15 +471,15 @@ public void testCreateVariableWithoutDataType() throws Exception { dataAcquisitionProjectRepository.save(project); List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); variable.setDataType(null); // create the variable with a survey but without a project mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } @Test @@ -495,17 +489,15 @@ public void testCreateVariableWithInvalidDataType() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); - variable.setDataType(I18nString.builder().de("InvalidValue") - .en("InvalidValue") - .build()); + variable.setDataType(I18nString.builder().de("InvalidValue").en("InvalidValue").build()); // create the variable with a survey but without a project mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } @Test @@ -515,15 +507,15 @@ public void testCreateVariableWithoutAccessWays() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); variable.setAccessWays(null); // create the variable with a survey but without a project mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } @Test @@ -533,18 +525,18 @@ public void testCreateVariableWithInvalidAccessWays() throws Exception { List accessWays = new ArrayList<>(); accessWays.add("WrongAccessWay"); - + List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); variable.setAccessWays(accessWays); // create the variable with a survey but without a project mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } @Test @@ -554,7 +546,7 @@ public void testCreateVariableWithNoMinusInId() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); // No Minus! @@ -562,8 +554,8 @@ public void testCreateVariableWithNoMinusInId() throws Exception { // create the variable with a survey but without a project mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } @Test @@ -580,8 +572,8 @@ public void testCreateVariableWithInvalidId() throws Exception { // create the variable with a survey but without a project mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } @@ -592,14 +584,14 @@ public void testCreateVariableWithDuplicateNameWithinProject() throws Exception List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var", 1, surveyNumbers); // create the first variable mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isCreated()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isCreated()); Variable variable2 = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); @@ -608,8 +600,8 @@ public void testCreateVariableWithDuplicateNameWithinProject() throws Exception // create the second variable with the same name mockMvc.perform(put(API_VARIABLES_URI + "/" + variable2.getId())// push to variables 1 field - .content(TestUtil.convertObjectToJsonBytes(variable2))) - .andExpect(status().is4xxClientError()); + .content(TestUtil.convertObjectToJsonBytes(variable2))) + .andExpect(status().is4xxClientError()); } @Test @@ -619,26 +611,25 @@ public void deleteVariable() throws JsonSyntaxException, IOException, Exception List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); // change scale level (code coverage) variable.setScaleLevel(I18nString.builder().de(ScaleLevels.ORDINAL.getDe()) - .en(ScaleLevels.ORDINAL.getEn()) - .build()); + .en(ScaleLevels.ORDINAL.getEn()).build()); // create the variable with the given id mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isCreated()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isCreated()); // delete the variable mockMvc.perform(delete(API_VARIABLES_URI + "/" + variable.getId())) - .andExpect(status().is2xxSuccessful()); + .andExpect(status().is2xxSuccessful()); // check that the variable has been deleted mockMvc.perform(get(API_VARIABLES_URI + "/" + variable.getId())) - .andExpect(status().isNotFound()); + .andExpect(status().isNotFound()); // check that there are no variable search documents anymore assertThat(elasticsearchAdminService.countAllDocuments(), equalTo(0L)); @@ -651,39 +642,34 @@ public void testUpdateVariable() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - Variable variable = - UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "bdem08_v1", 1, surveyNumbers); + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, + "bdem08_v1", 1, surveyNumbers); // create the variable with the given id mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isCreated()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isCreated()); - variable.setLabel(I18nString.builder().de("modified") - .en("modified") - .build()); + variable.setLabel(I18nString.builder().de("modified").en("modified").build()); // with other scale level and data type (code coverage) variable.setScaleLevel(I18nString.builder().de(ScaleLevels.NOMINAL.getDe()) - .en(ScaleLevels.NOMINAL.getEn()) - .build()); + .en(ScaleLevels.NOMINAL.getEn()).build()); variable.setVersion(0L); // update the variable with the given id mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().is2xxSuccessful()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().is2xxSuccessful()); // read the updated variable and check the version - mockMvc.perform(get(API_VARIABLES_URI + "/" + variable.getId())) - .andExpect(status().isOk()) - .andExpect(jsonPath("$.id", is(variable.getId()))) - .andExpect(jsonPath("$.version", is(1))) - .andExpect(jsonPath("$.label.de", is("modified"))); + mockMvc.perform(get(API_VARIABLES_URI + "/" + variable.getId())).andExpect(status().isOk()) + .andExpect(jsonPath("$.id", is(variable.getId()))).andExpect(jsonPath("$.version", is(1))) + .andExpect(jsonPath("$.label.de", is("modified"))); queueService.processAllQueueItems(); - + // check that the variable search documents have been updated - assertThat(elasticsearchAdminService.countAllDocuments(), is(1L)); + assertThat(elasticsearchAdminService.countAllDocuments(), is(1L)); } @Test @@ -694,17 +680,16 @@ public void testFilterExpressionLanguageIsEmpty() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); - variable.getFilterDetails() - .setExpressionLanguage(null); + variable.getFilterDetails().setExpressionLanguage(null); // Act and Assert // create the variable with the given id mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } @Test @@ -715,17 +700,16 @@ public void testFilterExpressionLanguageWithWrongLanguage() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); - variable.getFilterDetails() - .setExpressionLanguage("WrongLanguage"); + variable.getFilterDetails().setExpressionLanguage("WrongLanguage"); // Act and Assert // create the variable with the given id mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } @Test @@ -736,17 +720,16 @@ public void testFilterExpressionLanguageWithSpelLanguage() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); - variable.getFilterDetails() - .setExpressionLanguage(FilterExpressionLanguages.SPEL); + variable.getFilterDetails().setExpressionLanguage(FilterExpressionLanguages.SPEL); // Act and Assert // create the variable with the given id mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isCreated()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isCreated()); } @Test @@ -757,17 +740,16 @@ public void testRuleExpressionLanguageIsEmpty() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); - variable.getGenerationDetails() - .setRuleExpressionLanguage(null); + variable.getGenerationDetails().setRuleExpressionLanguage(null); // Act and Assert // create the variable with the given id mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } @Test @@ -778,17 +760,16 @@ public void testRuleExpressionLanguageWithWrongLanguage() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); - variable.getGenerationDetails() - .setRuleExpressionLanguage("WrongLanguage"); + variable.getGenerationDetails().setRuleExpressionLanguage("WrongLanguage"); // Act and Assert // create the variable with the given id mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } @Test @@ -799,62 +780,62 @@ public void testRuleExpressionLanguageWithStataLanguage() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); - variable.getGenerationDetails() - .setRuleExpressionLanguage(RuleExpressionLanguages.STATA); + variable.getGenerationDetails().setRuleExpressionLanguage(RuleExpressionLanguages.STATA); // Act and Assert // create the variable with the given id mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isCreated()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isCreated()); } @Test - @WithMockUser(authorities=AuthoritiesConstants.PUBLISHER) + @WithMockUser(authorities = AuthoritiesConstants.PUBLISHER) public void testDeletingProjectDeletesVariable() throws Exception { DataAcquisitionProject project = UnitTestCreateDomainObjectUtils.buildDataAcquisitionProject(); dataAcquisitionProjectRepository.save(project); List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); // create the variable with the given id mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isCreated()); + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isCreated()); mockMvc.perform(delete("/api/data-acquisition-projects/" + project.getId())) - .andExpect(status().is2xxSuccessful()); + .andExpect(status().is2xxSuccessful()); // check that the variable has been deleted mockMvc.perform(get(API_VARIABLES_URI + "/" + variable.getId())) - .andExpect(status().isNotFound()); + .andExpect(status().isNotFound()); // check that there are no variable search documents anymore assertThat(elasticsearchAdminService.countAllDocuments(), equalTo(0L)); } - @Test + @Test public void testVariableWithDataTypeDateWithError() throws Exception { DataAcquisitionProject project = UnitTestCreateDomainObjectUtils.buildDataAcquisitionProject(); dataAcquisitionProjectRepository.save(project); List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); variable.setDataType(DataTypes.DATE); // create the variable with the given id - mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable))) - .andExpect(status().is4xxClientError()); + mockMvc + .perform(put(API_VARIABLES_URI + "/" + variable.getId()) + .content(TestUtil.convertObjectToJsonBytes(variable))) + .andExpect(status().is4xxClientError()); } @Test @@ -864,68 +845,65 @@ public void testVariableWithDataTypeDate() throws Exception { List surveyNumbers = new ArrayList<>(); surveyNumbers.add(1); - + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable(project.getId(), 1, "var1", 1, surveyNumbers); variable.setDataType(DataTypes.DATE); - variable.getDistribution() - .setValidResponses(null); + variable.getDistribution().setValidResponses(null); List validResponses = new ArrayList<>(); - validResponses - .add(ValidResponse.builder().label(I18nString.builder().de("Deutsches Label") - .en("English Label") - .build()) - .absoluteFrequency(1234) - .relativeFrequency(87.5) - .validRelativeFrequency(88.9) - .value(LocalDateTime.now() - .toString()) - .build()); + validResponses.add(ValidResponse.builder() + .label(I18nString.builder().de("Deutsches Label").en("English Label").build()) + .absoluteFrequency(1234).relativeFrequency(87.5).validRelativeFrequency(88.9) + .value(LocalDateTime.now().toString()).build()); // create the variable with the given id - mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable))) - .andExpect(status().is4xxClientError()); + mockMvc + .perform(put(API_VARIABLES_URI + "/" + variable.getId()) + .content(TestUtil.convertObjectToJsonBytes(variable))) + .andExpect(status().is4xxClientError()); } @Test - @WithMockUser(authorities=AuthoritiesConstants.PUBLISHER) + @WithMockUser(authorities = AuthoritiesConstants.PUBLISHER) public void testCreateVariableShadowCopy() throws Exception { - Variable variable = - UnitTestCreateDomainObjectUtils.buildVariable("issue1991", 1, "varname", 1, Collections.singletonList(1)); + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable("issue1991", 1, "varname", 1, + Collections.singletonList(1)); variable.setId(variable.getId() + "-1.0.0"); - mockMvc.perform(post(API_VARIABLES_URI) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.errors[0].message", containsString("global.error.shadow-create-not-allowed"))); + mockMvc + .perform(post(API_VARIABLES_URI).content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isBadRequest()).andExpect(jsonPath("$.errors[0].message", + containsString("global.error.shadow-create-not-allowed"))); } @Test - @WithMockUser(authorities=AuthoritiesConstants.PUBLISHER) + @WithMockUser(authorities = AuthoritiesConstants.PUBLISHER) public void testUpdateVariableShadowCopy() throws Exception { - Variable variable = - UnitTestCreateDomainObjectUtils.buildVariable("issue1991", 1, "varname", 1, Collections.singletonList(1)); + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable("issue1991", 1, "varname", 1, + Collections.singletonList(1)); variable.setId(variable.getId() + "-1.0.0"); variable = variableRepository.save(variable); - mockMvc.perform(put(API_VARIABLES_URI + "/" + variable.getId()) - .content(TestUtil.convertObjectToJsonBytes(variable)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.errors[0].message", containsString("global.error.shadow-save-not-allowed"))); + mockMvc + .perform(put(API_VARIABLES_URI + "/" + variable.getId()) + .content(TestUtil.convertObjectToJsonBytes(variable)) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isBadRequest()).andExpect(jsonPath("$.errors[0].message", + containsString("global.error.shadow-save-not-allowed"))); } @Test - @WithMockUser(authorities=AuthoritiesConstants.PUBLISHER) + @WithMockUser(authorities = AuthoritiesConstants.PUBLISHER) public void testDeleteInstrumentShadowCopy() throws Exception { - Variable variable = - UnitTestCreateDomainObjectUtils.buildVariable("issue1991", 1, "varname", 1, Collections.singletonList(1)); + Variable variable = UnitTestCreateDomainObjectUtils.buildVariable("issue1991", 1, "varname", 1, + Collections.singletonList(1)); variable.setId(variable.getId() + "-1.0.0"); variableRepository.save(variable); mockMvc.perform(delete(API_VARIABLES_URI + "/" + variable.getId())) - .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.errors[0].message", containsString("global.error.shadow-delete-not-allowed"))); + .andExpect(status().isBadRequest()).andExpect(jsonPath("$.errors[0].message", + containsString("global.error.shadow-delete-not-allowed"))); } } diff --git a/src/test/javascript/karma.conf.js b/src/test/javascript/karma.conf.js index 2b5e26ed7e..17feb30540 100644 --- a/src/test/javascript/karma.conf.js +++ b/src/test/javascript/karma.conf.js @@ -73,6 +73,7 @@ module.exports = function(config) { 'node_modules/ng-text-truncate-2/ng-text-truncate.js', 'node_modules/showdown/dist/showdown.js', 'node_modules/ng-showdown/dist/ng-showdown.js', + 'node_modules/angular-swx-session-storage/release/swx-session-storage.js', 'src/main/webapp/scripts/app.js', 'src/main/webapp/scripts/**/*.js', diff --git a/src/test/javascript/spec/variablemanagement/services/variableBuilder.service.spec.js b/src/test/javascript/spec/variablemanagement/services/variableBuilder.service.spec.js index 3c74d75c7a..61f20564ff 100644 --- a/src/test/javascript/spec/variablemanagement/services/variableBuilder.service.spec.js +++ b/src/test/javascript/spec/variablemanagement/services/variableBuilder.service.spec.js @@ -47,7 +47,7 @@ describe('VariableBuilderService', function() { }, 'expressionLanguage': null }, - 'panelIdentifier': null, + 'repeatedMeasurementIdentifier': null, 'accessWays': ['download-cuf', 'download-suf', 'remote-desktop-suf', 'onsite-suf'], 'surveyNumbers': [3, 4], diff --git a/src/test/resources/config/application.yml b/src/test/resources/config/application.yml index 206554522b..9e09480914 100644 --- a/src/test/resources/config/application.yml +++ b/src/test/resources/config/application.yml @@ -91,3 +91,6 @@ jhipster: secret: mySecretOAuthSecret metrics: # DropWizard Metrics configuration, used by MetricsConfiguration jmx.enabled: true + +logbook: + filter.enabled: false diff --git a/src/test/robotframework/__init__.robot b/src/test/robotframework/__init__.robot index 760fe875fc..5537c09557 100644 --- a/src/test/robotframework/__init__.robot +++ b/src/test/robotframework/__init__.robot @@ -5,6 +5,7 @@ Suite Teardown Finish Tests Library ExtendedSelenium2Library Library Collections Library OperatingSystem +Resource ./resources/click_element_resource.robot Variables common_variables.yaml *** Variables *** @@ -27,6 +28,10 @@ Open Home Page Run Keyword If '${USE_SAUCELABS}' != '${EMPTY}' Open Saucelabs Browser Set Window Size 800 600 Maximize Browser Window + Close Speech Bubble + +Close Speech Bubble + Click Element Through Tooltips xpath=//report-publications-component//button[@ng-click='closeSpeechBubble()'] Finish Tests Run Keyword If '${USE_SAUCELABS}' != '${EMPTY}' Import Library SauceLabs diff --git a/src/test/robotframework/publisher/Projectmanagement/Check Deleting From Stack Rights and Verify Check Icons.robot b/src/test/robotframework/publisher/Projectmanagement/Check Deleting From Stack Rights and Verify Check Icons.robot index 1fddd589e5..803829f339 100644 --- a/src/test/robotframework/publisher/Projectmanagement/Check Deleting From Stack Rights and Verify Check Icons.robot +++ b/src/test/robotframework/publisher/Projectmanagement/Check Deleting From Stack Rights and Verify Check Icons.robot @@ -56,5 +56,5 @@ Verify The Sentiments From The List of Metadata Run Keyword If '${SN_ITEMS}[1]' == 'assets/images/icons/c691f57d.clipboard-check.svg' Page Should Contain Element xpath=//md-card[@type="${MD_DT}"]//following::md-icon[@md-svg-src="${SN_ITEMS}[1]"] Click Element Through Tooltips xpath=//md-card[@type="${MD_DT}"]//md-checkbox[contains(.,"Publisher Fertig")] Sleep 1s # to avoid failing in edge - Run Keyword If '${SN_ITEMS}[2]' == 'assets/images/icons/a103f3a2.clipboard-double-check.svg' Page Should Contain Element xpath=//md-card[@type="${MD_DT}"]//following::md-icon[@md-svg-src="S{SN_ITEMS}[2]"] + Run Keyword If '${SN_ITEMS}[2]' == 'assets/images/icons/a103f3a2.clipboard-double-check.svg' Page Should Contain Element xpath=//md-card[@type="${MD_DT}"]//following::md-icon[@md-svg-src="${SN_ITEMS}[2]"] END diff --git a/src/test/robotframework/publisher/Projectmanagement/Check Publishers Project Releasing and Unreleasing Access Rights.robot b/src/test/robotframework/publisher/Projectmanagement/Check Publishers Project Releasing and Unreleasing Access Rights.robot index 44f5b445ec..e919127d64 100644 --- a/src/test/robotframework/publisher/Projectmanagement/Check Publishers Project Releasing and Unreleasing Access Rights.robot +++ b/src/test/robotframework/publisher/Projectmanagement/Check Publishers Project Releasing and Unreleasing Access Rights.robot @@ -11,6 +11,7 @@ Check Publishers Project Releasing and Unreleasing Funtionalities Select project by name robotprojectrelease4${BROWSER} Click on Cockpit Button Change Project Release Status + Confirm Release Click on OK Button Sleep 2s # to avoid failing in firefox Assert Project Release Action Has Error Message @@ -19,6 +20,7 @@ Check Publishers Project Releasing and Unreleasing Funtionalities Click Publisher Ready Checkbox for Data Packages Change Project Release Status Write Version Name + Confirm Release Click on OK Button Verify The Released Project is Available under The Data Package Tab Verify The Unreleased Project is Still Available under The Data Package Tab with Shadow Copy @@ -36,6 +38,9 @@ Assert Project Release Action Has Error Message Write Version Name Input Text xpath=//input[@name="version"] 0.0.2 +Confirm Release + Click Element Through Tooltips xpath=//md-checkbox[@name="releaseConfirmed"] + Close The Toast Message for Project Release Validation Click Element Through Tooltips xpath=//md-toast//span[contains(.,"Die Post-Validierung wurde mit")] Element Should Contain xpath=//md-toast//span[contains(.,"Die Post-Validierung wurde mit")] Die Post-Validierung wurde mit @@ -100,6 +105,7 @@ Check Edited Project appears under data package when released Click Publisher Ready Checkbox for Data Packages Change Project Release Status Write Version Name + Confirm Release Click on OK Button Sleep 90s #We need explicit sleep to ensure the project is available under the data package tab Publisher Logout #explicit logout @@ -123,6 +129,7 @@ Restore The Previous Project Version and Publish Again Click on Cockpit Button Click Publisher Ready Checkbox for Data Packages Change Project Release Status #release the previous version again + Confirm Release Click on OK Button Sleep 90s