diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..1650424 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,24 @@ +version: 2 +updates: +- package-ecosystem: composer + directory: "/" + schedule: + interval: weekly + day: saturday + time: "03:00" + timezone: Europe/Paris + open-pull-requests-limit: 10 + labels: + - 3. to review + - dependencies +- package-ecosystem: npm + directory: "/" + schedule: + interval: weekly + day: saturday + time: "03:00" + timezone: Europe/Paris + open-pull-requests-limit: 10 + labels: + - 3. to review + - dependencies diff --git a/.github/workflows/dependabot-approve-merge.yml b/.github/workflows/dependabot-approve-merge.yml new file mode 100644 index 0000000..201d7f5 --- /dev/null +++ b/.github/workflows/dependabot-approve-merge.yml @@ -0,0 +1,19 @@ +name: Dependabot +on: pull_request + +jobs: + auto-merge: + runs-on: ubuntu-latest + steps: + # Default github action approve + - uses: hmarr/auto-approve-action@v2.0.0 + if: github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]' + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + + # Nextcloud bot approve and merge request + - uses: ahmadnassri/action-dependabot-auto-merge@v1 + if: github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]' + with: + target: patch + github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }} diff --git a/.github/workflows/dependabot-approve.yml b/.github/workflows/dependabot-approve.yml deleted file mode 100644 index cc5e6d1..0000000 --- a/.github/workflows/dependabot-approve.yml +++ /dev/null @@ -1,11 +0,0 @@ -name: Dependabot auto approve -on: pull_request - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: hmarr/auto-approve-action@v2.0.0 - if: github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]' - with: - github-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ea186a..8b9fdd6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## [v2.0.4](https://github.com/nextcloud/forms/tree/v2.0.4) (2020-09-01) + +[Full Changelog](https://github.com/nextcloud/forms/compare/v2.0.3...v2.0.4) + +### Merged +- NC 20 compatibility +- Move to OCS API + [\#556](https://github.com/nextcloud/forms/pull/556) ([skjnldsv](https://github.com/skjnldsv)) +- Translations update +- Dependencies update + +## v2.0.3 - 2020-08-20 + +[Full Changelog](https://github.com/nextcloud/forms/compare/v2.0.2...v2.0.3) + +### Merged +- Translations update +- Dependencies update + ## v2.0.2 - 2020-07-30 [Full Changelog](https://github.com/nextcloud/forms/compare/v2.0.1...v2.0.2) diff --git a/appinfo/info.xml b/appinfo/info.xml index 3de70d8..a73150b 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -11,7 +11,7 @@ - **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance. - **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)! ]]> - 2.0.2 + 2.0.4 agpl Affan Hussain @@ -45,7 +45,7 @@ https://raw.githubusercontent.com/nextcloud/forms/master/screenshots/forms3.png - + diff --git a/appinfo/routes.php b/appinfo/routes.php index 5319209..03cbdc2 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -35,7 +35,8 @@ return [ ['name' => 'page#index', 'url' => '/{hash}/results', 'verb' => 'GET', 'postfix' => 'results'], ['name' => 'page#goto_form', 'url' => '/{hash}', 'verb' => 'GET'], - + ], + 'ocs' => [ // Forms ['name' => 'api#getForms', 'url' => '/api/v1/forms', 'verb' => 'GET'], ['name' => 'api#newForm', 'url' => '/api/v1/form', 'verb' => 'POST'], diff --git a/composer.json b/composer.json index ca30f4b..deedd21 100644 --- a/composer.json +++ b/composer.json @@ -1,19 +1,20 @@ { "name": "nextcloud/forms", - "type": "project", - "license": "AGPLv3", + "config": { + "optimize-autoloader": true, + "classmap-authoritative": true, + "platform": { + "php": "7.2" + } + }, + "scripts": { + "cs:fix": "php-cs-fixer fix", + "cs:check": "php-cs-fixer fix --dry-run --diff", + "lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l" + }, "require-dev": { - "christophwurst/nextcloud": "^17.0", - "phpunit/phpunit": "^8", - "nextcloud/coding-standard": "^0.3.0" - }, - "config": { - "optimize-autoloader": true, - "classmap-authoritative": true - }, - "scripts": { - "lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l", - "cs:check": "php-cs-fixer fix --dry-run --diff", - "cs:fix": "php-cs-fixer fix" - } + "christophwurst/nextcloud": "^19.0", + "nextcloud/coding-standard": "^0.3.0", + "phpunit/phpunit": "^8" + } } diff --git a/css/icons.scss b/css/icons.scss index 4aa373b..114b94f 100644 --- a/css/icons.scss +++ b/css/icons.scss @@ -29,6 +29,8 @@ @include icon-black-white('answer-dropdown', 'forms', 1); @include icon-black-white('answer-short', 'forms', 1); @include icon-black-white('answer-long', 'forms', 1); +@include icon-black-white('answer-date', 'forms', 1); +@include icon-black-white('answer-datetime', 'forms', 1); @include icon-black-white('drag-handle', 'forms', 1); .icon-yes { diff --git a/img/answer-date.svg b/img/answer-date.svg new file mode 100644 index 0000000..354bd02 --- /dev/null +++ b/img/answer-date.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/img/answer-datetime.svg b/img/answer-datetime.svg new file mode 100644 index 0000000..6fd29ab --- /dev/null +++ b/img/answer-datetime.svg @@ -0,0 +1,4 @@ + + + + diff --git a/l10n/br.js b/l10n/br.js index f3d8f52..de153bd 100644 --- a/l10n/br.js +++ b/l10n/br.js @@ -6,6 +6,7 @@ OC.L10N.register( "Description" : "Diskrivadur", "Settings" : "Arventennoù", "Set expiration date" : "Lakaat un deizat termen", - "Expiration date" : "Deizad termen" + "Expiration date" : "Deizad termen", + "Submit" : "Kinnig" }, "nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"); diff --git a/l10n/br.json b/l10n/br.json index f027af4..486e5f2 100644 --- a/l10n/br.json +++ b/l10n/br.json @@ -4,6 +4,7 @@ "Description" : "Diskrivadur", "Settings" : "Arventennoù", "Set expiration date" : "Lakaat un deizat termen", - "Expiration date" : "Deizad termen" + "Expiration date" : "Deizad termen", + "Submit" : "Kinnig" },"pluralForm" :"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);" } \ No newline at end of file diff --git a/l10n/ca.js b/l10n/ca.js index 68e27fe..9d3db55 100644 --- a/l10n/ca.js +++ b/l10n/ca.js @@ -4,6 +4,8 @@ OC.L10N.register( "Anonymous response" : "Resposta anònima", "Forms" : "Formularis", "Shared by %s" : "Compartit per %s", + "📝 Simple surveys and questionnaires, self-hosted" : "📝 Simples enquestes i qüestionaris, auto-allotjats", + "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!" : "**Enquestes simples i qüestionaris, auto-allotjats!**\n\n- **📝 Disseny simple:** No hi ha massa d'opcions, només l'essencial. Funciona bé en mòbil, per descomptat.\n- **📊 Veure i exportar resultats:** Els resultats es visualitzen i també es poden exportar com CSV en el mateix format utilitzat per Google Forms.\n- **🔒 Dades sota el seu control!** A diferència de Google Forms, Typeform, Doodle i altres, la informació de l'enquesta i respostes es mantenen privades en la seva instància.\n- **🙋 Involucra't!** Tenim un munt de coses planificades com més tipus de preguntes, col·laboració en formularis, [i molt més](https://github.com/nextcloud/forms/milestones)!", "New form" : "Nou formulari", "Loading forms …" : "Carregant formularis …", "No forms created yet" : "No hi ha formularis creats encara", @@ -29,39 +31,48 @@ OC.L10N.register( "Title of question number {index}" : "Títol del número de pregunta {index}", "Required" : "Obligatori", "Delete question" : "Suprimeix la pregunta", + "This question needs a title!" : "Aquesta pregunta necessita un títol!", "Add a new answer" : "Afegir una nova resposta", "There was an issue deleting this option" : "Hi ha hagut un problema en suprimir aquesta opció", "A long answer for the question “{text}”" : "Una resposta llarga per a la pregunta \"{text}\"", "A short answer for the question “{text}”" : "Una resposta curta per a la pregunta \"{text}\"", "Delete this response" : "Suprimir aquesta resposta", - "User or group name …" : "Nom d'usuari o de grup ...", + "No response" : "Cap resposta", + "User or group name …" : "Nom d'usuari o de grup …", "No recommendations. Start typing." : "No hi ha recomanacions. Comenceu a escriure.", - "Searching …" : "Cercant ...", + "Searching …" : "Cercant …", "No elements found." : "No s’han trobat elements.", "Group" : "Grup", "Loading {title} …" : "Carregant {title} …", "Toggle settings" : "Canviar configuració", "Form title" : "Títol del formulari", "Description" : "Descripció", + "Required questions" : "Preguntes necessàries", "Add a question" : "Afegir una pregunta", "There was an error while adding the new question" : "Hi ha hagut un error en afegir la nova pregunta", "There was an error while removing the question" : "Hi ha hagut un error en eliminar la pregunta", "Error while saving form" : "Error en desar el formulari", "Loading responses …" : "Carregant respostes …", "Back to questions" : "Tornar a preguntes", + "{amount} responses" : "{amount} respostes", "Summary" : "Resum", "Options" : "Opcions", "Export to CSV" : "Exporta a CSV", "Delete all responses" : "Suprimeix totes les respostes", "No responses yet" : "No hi ha respostes encara", "Results of submitted forms will show up here" : "Els resultats dels formularis enviats es mostraran aquí", + "There was an error while loading the results" : "Error en carregar els resultats", "There was an error while removing this response" : "Hi ha hagut un error en eliminar aquesta resposta", "Are you sure you want to delete all responses of {title}?" : "Esteu segur que voleu suprimir totes les respostes de {title}?", "There was an error while removing responses" : "Hi ha hagut un error en eliminar respostes", + "responses" : "respostes", + "Share form" : "Compartir formulari", + "Share via link" : "Compartir a través d'enllaç", "Show to all users of this instance" : "Mostrar a tots els usuaris d'aquesta instància", "Choose users to share with" : "Trieu usuaris per compartir-lo", "Settings" : "Paràmetres", "Anonymous responses" : "Respostes anònimes", + "Allow multiple responses per person" : "Permet múltiples respostes per persona", "Set expiration date" : "Establiu una data de caducitat", "Expiration date" : "Data de venciment", "Select expiration date" : "Seleccionar la data de caducitat", @@ -74,9 +85,22 @@ OC.L10N.register( "There was an error submitting the form" : "Error en enviar el formulari", "Error while saving question" : "Error en desar la pregunta", "Checkboxes" : "Caselles de verificació", + "Checkbox question title" : "Títol de la pregunta de la casella de selecció", + "This question needs a title and at least one answer!" : "Aquesta pregunta necessita un títol i almenys una resposta!", "Multiple choice" : "Qüestionari d'elecció múltiple", + "Multiple choice question title" : "Títol de la pregunta d'elecció múltiple", + "Dropdown" : "Desplegable", + "Dropdown question title" : "Títol de la pregunta desplegable", + "People can pick one option" : "La gent pot triar una opció", + "Pick an option" : "Tria una opció", "Short answer" : "Resposta curta", + "Short answer question title" : "Títol de la pregunta de resposta curta", + "People can enter a short answer" : "La gent pot introduir una resposta curta", + "Enter a short answer" : "Introduïu una resposta curta", "Long text" : "Text llarg", + "Long text question title" : "Títol de la pregunta de text llarg", + "People can enter a long text" : "La gent pot introduir un text llarg", + "Enter a long text" : "Introduïu un text llarg", "Form expired" : "Formulari caducat", "This form has expired and is no longer taking answers" : "Aquest formulari ha caducat i ja no està prenent respostes", "Form not found" : "No s’ha trobat el formulari", diff --git a/l10n/ca.json b/l10n/ca.json index 52cd9b8..e478734 100644 --- a/l10n/ca.json +++ b/l10n/ca.json @@ -2,6 +2,8 @@ "Anonymous response" : "Resposta anònima", "Forms" : "Formularis", "Shared by %s" : "Compartit per %s", + "📝 Simple surveys and questionnaires, self-hosted" : "📝 Simples enquestes i qüestionaris, auto-allotjats", + "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!" : "**Enquestes simples i qüestionaris, auto-allotjats!**\n\n- **📝 Disseny simple:** No hi ha massa d'opcions, només l'essencial. Funciona bé en mòbil, per descomptat.\n- **📊 Veure i exportar resultats:** Els resultats es visualitzen i també es poden exportar com CSV en el mateix format utilitzat per Google Forms.\n- **🔒 Dades sota el seu control!** A diferència de Google Forms, Typeform, Doodle i altres, la informació de l'enquesta i respostes es mantenen privades en la seva instància.\n- **🙋 Involucra't!** Tenim un munt de coses planificades com més tipus de preguntes, col·laboració en formularis, [i molt més](https://github.com/nextcloud/forms/milestones)!", "New form" : "Nou formulari", "Loading forms …" : "Carregant formularis …", "No forms created yet" : "No hi ha formularis creats encara", @@ -27,39 +29,48 @@ "Title of question number {index}" : "Títol del número de pregunta {index}", "Required" : "Obligatori", "Delete question" : "Suprimeix la pregunta", + "This question needs a title!" : "Aquesta pregunta necessita un títol!", "Add a new answer" : "Afegir una nova resposta", "There was an issue deleting this option" : "Hi ha hagut un problema en suprimir aquesta opció", "A long answer for the question “{text}”" : "Una resposta llarga per a la pregunta \"{text}\"", "A short answer for the question “{text}”" : "Una resposta curta per a la pregunta \"{text}\"", "Delete this response" : "Suprimir aquesta resposta", - "User or group name …" : "Nom d'usuari o de grup ...", + "No response" : "Cap resposta", + "User or group name …" : "Nom d'usuari o de grup …", "No recommendations. Start typing." : "No hi ha recomanacions. Comenceu a escriure.", - "Searching …" : "Cercant ...", + "Searching …" : "Cercant …", "No elements found." : "No s’han trobat elements.", "Group" : "Grup", "Loading {title} …" : "Carregant {title} …", "Toggle settings" : "Canviar configuració", "Form title" : "Títol del formulari", "Description" : "Descripció", + "Required questions" : "Preguntes necessàries", "Add a question" : "Afegir una pregunta", "There was an error while adding the new question" : "Hi ha hagut un error en afegir la nova pregunta", "There was an error while removing the question" : "Hi ha hagut un error en eliminar la pregunta", "Error while saving form" : "Error en desar el formulari", "Loading responses …" : "Carregant respostes …", "Back to questions" : "Tornar a preguntes", + "{amount} responses" : "{amount} respostes", "Summary" : "Resum", "Options" : "Opcions", "Export to CSV" : "Exporta a CSV", "Delete all responses" : "Suprimeix totes les respostes", "No responses yet" : "No hi ha respostes encara", "Results of submitted forms will show up here" : "Els resultats dels formularis enviats es mostraran aquí", + "There was an error while loading the results" : "Error en carregar els resultats", "There was an error while removing this response" : "Hi ha hagut un error en eliminar aquesta resposta", "Are you sure you want to delete all responses of {title}?" : "Esteu segur que voleu suprimir totes les respostes de {title}?", "There was an error while removing responses" : "Hi ha hagut un error en eliminar respostes", + "responses" : "respostes", + "Share form" : "Compartir formulari", + "Share via link" : "Compartir a través d'enllaç", "Show to all users of this instance" : "Mostrar a tots els usuaris d'aquesta instància", "Choose users to share with" : "Trieu usuaris per compartir-lo", "Settings" : "Paràmetres", "Anonymous responses" : "Respostes anònimes", + "Allow multiple responses per person" : "Permet múltiples respostes per persona", "Set expiration date" : "Establiu una data de caducitat", "Expiration date" : "Data de venciment", "Select expiration date" : "Seleccionar la data de caducitat", @@ -72,9 +83,22 @@ "There was an error submitting the form" : "Error en enviar el formulari", "Error while saving question" : "Error en desar la pregunta", "Checkboxes" : "Caselles de verificació", + "Checkbox question title" : "Títol de la pregunta de la casella de selecció", + "This question needs a title and at least one answer!" : "Aquesta pregunta necessita un títol i almenys una resposta!", "Multiple choice" : "Qüestionari d'elecció múltiple", + "Multiple choice question title" : "Títol de la pregunta d'elecció múltiple", + "Dropdown" : "Desplegable", + "Dropdown question title" : "Títol de la pregunta desplegable", + "People can pick one option" : "La gent pot triar una opció", + "Pick an option" : "Tria una opció", "Short answer" : "Resposta curta", + "Short answer question title" : "Títol de la pregunta de resposta curta", + "People can enter a short answer" : "La gent pot introduir una resposta curta", + "Enter a short answer" : "Introduïu una resposta curta", "Long text" : "Text llarg", + "Long text question title" : "Títol de la pregunta de text llarg", + "People can enter a long text" : "La gent pot introduir un text llarg", + "Enter a long text" : "Introduïu un text llarg", "Form expired" : "Formulari caducat", "This form has expired and is no longer taking answers" : "Aquest formulari ha caducat i ja no està prenent respostes", "Form not found" : "No s’ha trobat el formulari", diff --git a/l10n/es.js b/l10n/es.js index 7633771..c798a3d 100644 --- a/l10n/es.js +++ b/l10n/es.js @@ -76,8 +76,8 @@ OC.L10N.register( "Set expiration date" : "Fijar fecha de caducidad", "Expiration date" : "Fecha de expiración", "Select expiration date" : "Selecciona fecha de expiración", - "Expired on {date}" : "Expirado el {date}", - "Expires on {date}" : "Expira el {date}", + "Expired on {date}" : "Caducado el {date}", + "Expires on {date}" : "Caduca el {date}", "Submit" : "Enviar", "Submit form" : "Enviar formulario", "Submitting form …" : "Enviando formulario…", @@ -101,8 +101,8 @@ OC.L10N.register( "Long text question title" : "Título de pregunta de respuesta extensa", "People can enter a long text" : "Quien responde puede introducir una respuesta extensa", "Enter a long text" : "Introduzca una respuesta extensa", - "Form expired" : "Formulario expirado", - "This form has expired and is no longer taking answers" : "Este formulario ha expirado y ya no acepta respuestas", + "Form expired" : "Formulario caducado", + "This form has expired and is no longer taking answers" : "Este formulario ha caducado y ya no acepta respuestas", "Form not found" : "Formulario no encontrado", "This form does not exist" : "Este formulario no existe" }, diff --git a/l10n/es.json b/l10n/es.json index 602c618..087a3c9 100644 --- a/l10n/es.json +++ b/l10n/es.json @@ -74,8 +74,8 @@ "Set expiration date" : "Fijar fecha de caducidad", "Expiration date" : "Fecha de expiración", "Select expiration date" : "Selecciona fecha de expiración", - "Expired on {date}" : "Expirado el {date}", - "Expires on {date}" : "Expira el {date}", + "Expired on {date}" : "Caducado el {date}", + "Expires on {date}" : "Caduca el {date}", "Submit" : "Enviar", "Submit form" : "Enviar formulario", "Submitting form …" : "Enviando formulario…", @@ -99,8 +99,8 @@ "Long text question title" : "Título de pregunta de respuesta extensa", "People can enter a long text" : "Quien responde puede introducir una respuesta extensa", "Enter a long text" : "Introduzca una respuesta extensa", - "Form expired" : "Formulario expirado", - "This form has expired and is no longer taking answers" : "Este formulario ha expirado y ya no acepta respuestas", + "Form expired" : "Formulario caducado", + "This form has expired and is no longer taking answers" : "Este formulario ha caducado y ya no acepta respuestas", "Form not found" : "Formulario no encontrado", "This form does not exist" : "Este formulario no existe" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/l10n/eu.js b/l10n/eu.js index 567f7ad..bc4945f 100644 --- a/l10n/eu.js +++ b/l10n/eu.js @@ -89,18 +89,18 @@ OC.L10N.register( "This question needs a title and at least one answer!" : "Galdera honek izenburua behar du eta gutxienez erantzun bat!", "Multiple choice" : "Aukera anitz", "Multiple choice question title" : "Aukera anitzeko galderaren izenburua", - "Dropdown" : "Zabalgarria", - "Dropdown question title" : "Galdera zabalgarriaren izenburua", + "Dropdown" : "Goitibeherakoa", + "Dropdown question title" : "Goitibeherako galderaren izenburua", "People can pick one option" : "Jendeak aukera bat hautatu dezake", "Pick an option" : "Aukeratu bat", "Short answer" : "Erantzun laburra", "Short answer question title" : "Erantzun laburreko galderaren izenburua", "People can enter a short answer" : "Jendeak erantzun laburra idatz dezake", "Enter a short answer" : "Idatzi erantzun laburra", - "Long text" : "Testu luzea", - "Long text question title" : "Testu luzeko galderaren izenburua", + "Long text" : "Erantzun luzea", + "Long text question title" : "Erantzun luzeko galderaren izenburua", "People can enter a long text" : "Jendeak testu luzea idatz dezake", - "Enter a long text" : "Idatzi testu luzea", + "Enter a long text" : "Idatzi erantzun luzea", "Form expired" : "Inprimakia iraungita", "This form has expired and is no longer taking answers" : "Inprimaki hau iraungi da eta ez du erantzunik onartzen", "Form not found" : "Ez da inprimakia aurkitu", diff --git a/l10n/eu.json b/l10n/eu.json index 2d9aece..ef18204 100644 --- a/l10n/eu.json +++ b/l10n/eu.json @@ -87,18 +87,18 @@ "This question needs a title and at least one answer!" : "Galdera honek izenburua behar du eta gutxienez erantzun bat!", "Multiple choice" : "Aukera anitz", "Multiple choice question title" : "Aukera anitzeko galderaren izenburua", - "Dropdown" : "Zabalgarria", - "Dropdown question title" : "Galdera zabalgarriaren izenburua", + "Dropdown" : "Goitibeherakoa", + "Dropdown question title" : "Goitibeherako galderaren izenburua", "People can pick one option" : "Jendeak aukera bat hautatu dezake", "Pick an option" : "Aukeratu bat", "Short answer" : "Erantzun laburra", "Short answer question title" : "Erantzun laburreko galderaren izenburua", "People can enter a short answer" : "Jendeak erantzun laburra idatz dezake", "Enter a short answer" : "Idatzi erantzun laburra", - "Long text" : "Testu luzea", - "Long text question title" : "Testu luzeko galderaren izenburua", + "Long text" : "Erantzun luzea", + "Long text question title" : "Erantzun luzeko galderaren izenburua", "People can enter a long text" : "Jendeak testu luzea idatz dezake", - "Enter a long text" : "Idatzi testu luzea", + "Enter a long text" : "Idatzi erantzun luzea", "Form expired" : "Inprimakia iraungita", "This form has expired and is no longer taking answers" : "Inprimaki hau iraungi da eta ez du erantzunik onartzen", "Form not found" : "Ez da inprimakia aurkitu", diff --git a/l10n/fi.js b/l10n/fi.js index c3f18c1..d188649 100644 --- a/l10n/fi.js +++ b/l10n/fi.js @@ -1,19 +1,106 @@ OC.L10N.register( "forms", { + "Anonymous response" : "Anonyymi vastaus", "Forms" : "Lomakkeet", + "Shared by %s" : "Jakanut %s", + "New form" : "Uusi lomake", + "Loading forms …" : "Ladataan lomakkeita…", + "No forms created yet" : "Lomakkeita ei ole vielä luotu", + "Create a form" : "Luo lomake", + "Select a form or create a new one" : "Valitse lomake tai luo uusi", "Create new form" : "Luo uusi lomake", + "An error occurred while loading the forms list" : "Lomakelistausta ladatessa tapahtui virhe", + "Unable to create a new form" : "Uuden lomakkeen luominen ei onnistunut", + "Responses" : "Vastaukset", + "Clone form" : "Kloonaa lomake", "Delete form" : "Poista lomake", + "Form link copied" : "Lomakkeen linkki kopioitu", + "Cannot copy, please copy the link manually" : "Kopioiminen ei onnistu. Kopioi linkki manuaalisesti", + "Copy share link" : "Kopioi jakolinkki", + "Are you sure you want to delete {title}?" : "Haluatko varmasti poistaa {title}?", + "Error while deleting {title}" : "Virhe poistaessa {title}", + "Answer number {index}" : "Vastausnumero {index}", + "Delete answer" : "Poista vastaus", + "Error while saving the answer" : "Virhe vastausta tallennettaessa", + "Question number {index}" : "Kysymys numero {index}", + "Drag to reorder the questions" : "Vedä järjestääksesi kysymykset uuteen järjestykseen", + "Title of question number {index}" : "Otsikko kysymykselle numero {index}", "Required" : "Vaadittu", + "Delete question" : "Poista kysymys", + "This question needs a title!" : "Tämä kysymys vaatii otsikon!", + "Add a new answer" : "Lisää uusi vastaus", + "There was an issue deleting this option" : "Tätä valintaa poistaessa ilmeni ongelma", + "A long answer for the question “{text}”" : "Pitkä vastaus kysymykseen “{text}”", + "A short answer for the question “{text}”" : "Lyhyt vastaus kysymykseen “{text}”", + "Delete this response" : "Poista tämä vastaus", + "No response" : "Ei vastausta", + "User or group name …" : "Käyttäjän tai ryhmän nimi…", "No recommendations. Start typing." : "Ei suosituksia. Aloita kirjoittaminen.", "Searching …" : "Haetaan…", + "No elements found." : "Elementtejä ei löytynyt.", "Group" : "Ryhmä", + "Loading {title} …" : "Ladataan {title}…", + "Toggle settings" : "Asetukset päälle/pois", + "Form title" : "Lomakkeen otsikko", "Description" : "Kuvaus", + "Required questions" : "Vaaditut kysymykset", + "Add a question" : "Lisää kysymys", + "There was an error while adding the new question" : "Uutta kysymystä lisättäessä tapahtui virhe", + "There was an error while removing the question" : "Kysymystä poistaessa tapahtui virhe", + "Error while saving form" : "Virhe lomaketta tallennettaessa", + "Loading responses …" : "Ladataan vastauksia…", + "Back to questions" : "Takaisin kysymyksiin", + "{amount} responses" : "{amount} vastausta", "Summary" : "Yhteenveto", "Options" : "Valinnat", + "Export to CSV" : "Vie CSV-muotoon", + "Delete all responses" : "Poista kaikki vastaukset", + "No responses yet" : "Ei vielä vastauksia", + "Results of submitted forms will show up here" : "Lähetettyjen lomakkeiden tulokset näkyvät täällä", + "There was an error while loading the results" : "Tuloksia ladattaessa tapahtui virhe", + "There was an error while removing this response" : "Tätä vastausta poistaessa tapahtui virhe", + "Are you sure you want to delete all responses of {title}?" : "Haluatko varmasti poistaa kaikki lomakkeen {title} vastaukset?", + "There was an error while removing responses" : "Vastauksia poistaessa tapahtui virhe", + "responses" : "vastausta", + "Share form" : "Jaa lomake", + "Share via link" : "Jaa linkin kautta", + "Show to all users of this instance" : "Näytä kaikille tämän instanssin käyttäjille", + "Choose users to share with" : "Valitse käyttäjät, joille jaetaan", "Settings" : "Asetukset", + "Anonymous responses" : "Anonyymit vastaukset", + "Allow multiple responses per person" : "Salli useita vastauksia yhdeltä henkilöltä", "Set expiration date" : "Aseta vanhenemispäivä", "Expiration date" : "Vanhenemispäivä", - "Submit" : "Lähetä" + "Select expiration date" : "Valitse vanhenemispäivä", + "Expired on {date}" : "Vanheni {date}", + "Expires on {date}" : "Vanhenee {date}", + "Submit" : "Lähetä", + "Submit form" : "Lähetä lomake", + "Submitting form …" : "Lähetetään lomaketta…", + "Thank you for completing the form!" : "Kiitos kun täytit lomakkeen!", + "There was an error submitting the form" : "Lomaketta lähettäessä tapahtui virhe", + "Error while saving question" : "Virhe kysymystä tallennettaessa", + "Checkboxes" : "Valintaruudut", + "Checkbox question title" : "Valintaruutu-kysymyksen otsikko", + "This question needs a title and at least one answer!" : "Tämä kysymys vaatii otsikon ja vähintään yhden vastauksen!", + "Multiple choice" : "Monivalinta", + "Multiple choice question title" : "Monivalinta-kysymyksen otsikko", + "Dropdown" : "Pudotusvalikko", + "Dropdown question title" : "Pudotusvalikko-kysymyksen otsikko", + "People can pick one option" : "Ihmiset voivat valita yhden vaihtoehdon", + "Pick an option" : "Valitse vaihtoehto", + "Short answer" : "Lyhyt vastaus", + "Short answer question title" : "Lyhyt vastaus -kysymyksen otsikko", + "People can enter a short answer" : "Ihmiset voivat kirjoittaa lyhyen vastauksen", + "Enter a short answer" : "Kirjoita lyhyt vastaus", + "Long text" : "Pitkä teksti", + "Long text question title" : "Pitkä teksti -kysymyksen otsikko", + "People can enter a long text" : "Ihmiset voivat kirjoittaa pitkän tekstin", + "Enter a long text" : "Kirjoita pitkä teksti", + "Form expired" : "Lomake vanheni", + "This form has expired and is no longer taking answers" : "Lomake vanhentui, eikä se vastaanota enää vastauksia", + "Form not found" : "Lomaketta ei löytynyt", + "This form does not exist" : "Tätä lomaketta ei ole olemassa" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/fi.json b/l10n/fi.json index 80f3d1f..33cbb21 100644 --- a/l10n/fi.json +++ b/l10n/fi.json @@ -1,17 +1,104 @@ { "translations": { + "Anonymous response" : "Anonyymi vastaus", "Forms" : "Lomakkeet", + "Shared by %s" : "Jakanut %s", + "New form" : "Uusi lomake", + "Loading forms …" : "Ladataan lomakkeita…", + "No forms created yet" : "Lomakkeita ei ole vielä luotu", + "Create a form" : "Luo lomake", + "Select a form or create a new one" : "Valitse lomake tai luo uusi", "Create new form" : "Luo uusi lomake", + "An error occurred while loading the forms list" : "Lomakelistausta ladatessa tapahtui virhe", + "Unable to create a new form" : "Uuden lomakkeen luominen ei onnistunut", + "Responses" : "Vastaukset", + "Clone form" : "Kloonaa lomake", "Delete form" : "Poista lomake", + "Form link copied" : "Lomakkeen linkki kopioitu", + "Cannot copy, please copy the link manually" : "Kopioiminen ei onnistu. Kopioi linkki manuaalisesti", + "Copy share link" : "Kopioi jakolinkki", + "Are you sure you want to delete {title}?" : "Haluatko varmasti poistaa {title}?", + "Error while deleting {title}" : "Virhe poistaessa {title}", + "Answer number {index}" : "Vastausnumero {index}", + "Delete answer" : "Poista vastaus", + "Error while saving the answer" : "Virhe vastausta tallennettaessa", + "Question number {index}" : "Kysymys numero {index}", + "Drag to reorder the questions" : "Vedä järjestääksesi kysymykset uuteen järjestykseen", + "Title of question number {index}" : "Otsikko kysymykselle numero {index}", "Required" : "Vaadittu", + "Delete question" : "Poista kysymys", + "This question needs a title!" : "Tämä kysymys vaatii otsikon!", + "Add a new answer" : "Lisää uusi vastaus", + "There was an issue deleting this option" : "Tätä valintaa poistaessa ilmeni ongelma", + "A long answer for the question “{text}”" : "Pitkä vastaus kysymykseen “{text}”", + "A short answer for the question “{text}”" : "Lyhyt vastaus kysymykseen “{text}”", + "Delete this response" : "Poista tämä vastaus", + "No response" : "Ei vastausta", + "User or group name …" : "Käyttäjän tai ryhmän nimi…", "No recommendations. Start typing." : "Ei suosituksia. Aloita kirjoittaminen.", "Searching …" : "Haetaan…", + "No elements found." : "Elementtejä ei löytynyt.", "Group" : "Ryhmä", + "Loading {title} …" : "Ladataan {title}…", + "Toggle settings" : "Asetukset päälle/pois", + "Form title" : "Lomakkeen otsikko", "Description" : "Kuvaus", + "Required questions" : "Vaaditut kysymykset", + "Add a question" : "Lisää kysymys", + "There was an error while adding the new question" : "Uutta kysymystä lisättäessä tapahtui virhe", + "There was an error while removing the question" : "Kysymystä poistaessa tapahtui virhe", + "Error while saving form" : "Virhe lomaketta tallennettaessa", + "Loading responses …" : "Ladataan vastauksia…", + "Back to questions" : "Takaisin kysymyksiin", + "{amount} responses" : "{amount} vastausta", "Summary" : "Yhteenveto", "Options" : "Valinnat", + "Export to CSV" : "Vie CSV-muotoon", + "Delete all responses" : "Poista kaikki vastaukset", + "No responses yet" : "Ei vielä vastauksia", + "Results of submitted forms will show up here" : "Lähetettyjen lomakkeiden tulokset näkyvät täällä", + "There was an error while loading the results" : "Tuloksia ladattaessa tapahtui virhe", + "There was an error while removing this response" : "Tätä vastausta poistaessa tapahtui virhe", + "Are you sure you want to delete all responses of {title}?" : "Haluatko varmasti poistaa kaikki lomakkeen {title} vastaukset?", + "There was an error while removing responses" : "Vastauksia poistaessa tapahtui virhe", + "responses" : "vastausta", + "Share form" : "Jaa lomake", + "Share via link" : "Jaa linkin kautta", + "Show to all users of this instance" : "Näytä kaikille tämän instanssin käyttäjille", + "Choose users to share with" : "Valitse käyttäjät, joille jaetaan", "Settings" : "Asetukset", + "Anonymous responses" : "Anonyymit vastaukset", + "Allow multiple responses per person" : "Salli useita vastauksia yhdeltä henkilöltä", "Set expiration date" : "Aseta vanhenemispäivä", "Expiration date" : "Vanhenemispäivä", - "Submit" : "Lähetä" + "Select expiration date" : "Valitse vanhenemispäivä", + "Expired on {date}" : "Vanheni {date}", + "Expires on {date}" : "Vanhenee {date}", + "Submit" : "Lähetä", + "Submit form" : "Lähetä lomake", + "Submitting form …" : "Lähetetään lomaketta…", + "Thank you for completing the form!" : "Kiitos kun täytit lomakkeen!", + "There was an error submitting the form" : "Lomaketta lähettäessä tapahtui virhe", + "Error while saving question" : "Virhe kysymystä tallennettaessa", + "Checkboxes" : "Valintaruudut", + "Checkbox question title" : "Valintaruutu-kysymyksen otsikko", + "This question needs a title and at least one answer!" : "Tämä kysymys vaatii otsikon ja vähintään yhden vastauksen!", + "Multiple choice" : "Monivalinta", + "Multiple choice question title" : "Monivalinta-kysymyksen otsikko", + "Dropdown" : "Pudotusvalikko", + "Dropdown question title" : "Pudotusvalikko-kysymyksen otsikko", + "People can pick one option" : "Ihmiset voivat valita yhden vaihtoehdon", + "Pick an option" : "Valitse vaihtoehto", + "Short answer" : "Lyhyt vastaus", + "Short answer question title" : "Lyhyt vastaus -kysymyksen otsikko", + "People can enter a short answer" : "Ihmiset voivat kirjoittaa lyhyen vastauksen", + "Enter a short answer" : "Kirjoita lyhyt vastaus", + "Long text" : "Pitkä teksti", + "Long text question title" : "Pitkä teksti -kysymyksen otsikko", + "People can enter a long text" : "Ihmiset voivat kirjoittaa pitkän tekstin", + "Enter a long text" : "Kirjoita pitkä teksti", + "Form expired" : "Lomake vanheni", + "This form has expired and is no longer taking answers" : "Lomake vanhentui, eikä se vastaanota enää vastauksia", + "Form not found" : "Lomaketta ei löytynyt", + "This form does not exist" : "Tätä lomaketta ei ole olemassa" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/fr.js b/l10n/fr.js index a6919fc..94fcfe3 100644 --- a/l10n/fr.js +++ b/l10n/fr.js @@ -5,6 +5,7 @@ OC.L10N.register( "Forms" : "Formulaires", "Shared by %s" : "Partagé par %s", "📝 Simple surveys and questionnaires, self-hosted" : "📝 Sondage et questionnaire simple, auto hébergé", + "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!" : "**Sondage et questionnaire simple, auto hébergé !**\n\n- **📝 Design simple :** Pas d'excès d'options, juste l'essentiel. Fonctionne très bien sous mobile.\n- **💾 Export des résultats :** Les résultats peuvent être exportés au format CSV, le même que celui des Google Forms.\n- **🙋 Contribuez !** Nous avons prévu beaucoup de choses comme plus de type de questions, l'édition collaborative et [bien plus encore](https://github.com/nextcloud/forms/milestones) !", "New form" : "Nouveau formulaire", "Loading forms …" : "Chargement des formulaires …", "No forms created yet" : "Aucun formulaire créé pour le moment", diff --git a/l10n/fr.json b/l10n/fr.json index e3aa013..cf0eeb6 100644 --- a/l10n/fr.json +++ b/l10n/fr.json @@ -3,6 +3,7 @@ "Forms" : "Formulaires", "Shared by %s" : "Partagé par %s", "📝 Simple surveys and questionnaires, self-hosted" : "📝 Sondage et questionnaire simple, auto hébergé", + "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!" : "**Sondage et questionnaire simple, auto hébergé !**\n\n- **📝 Design simple :** Pas d'excès d'options, juste l'essentiel. Fonctionne très bien sous mobile.\n- **💾 Export des résultats :** Les résultats peuvent être exportés au format CSV, le même que celui des Google Forms.\n- **🙋 Contribuez !** Nous avons prévu beaucoup de choses comme plus de type de questions, l'édition collaborative et [bien plus encore](https://github.com/nextcloud/forms/milestones) !", "New form" : "Nouveau formulaire", "Loading forms …" : "Chargement des formulaires …", "No forms created yet" : "Aucun formulaire créé pour le moment", diff --git a/l10n/gl.js b/l10n/gl.js index dad5fe4..22a008b 100644 --- a/l10n/gl.js +++ b/l10n/gl.js @@ -85,7 +85,7 @@ OC.L10N.register( "There was an error submitting the form" : "Produciuse un erro no envío do formulario", "Error while saving question" : "Produciuse un erro ao gardar a pregunta", "Checkboxes" : "Caixas de verificación", - "Checkbox question title" : "Título da pregunta da caixa de verificación", + "Checkbox question title" : "Título da pregunta da caixa de selección", "This question needs a title and at least one answer!" : "Esta pregunta necesita un título e polo menos unha resposta.", "Multiple choice" : "Escolla múltiple", "Multiple choice question title" : "Título da pregunta de escolla múltiple", diff --git a/l10n/gl.json b/l10n/gl.json index 12eca08..d4fa583 100644 --- a/l10n/gl.json +++ b/l10n/gl.json @@ -83,7 +83,7 @@ "There was an error submitting the form" : "Produciuse un erro no envío do formulario", "Error while saving question" : "Produciuse un erro ao gardar a pregunta", "Checkboxes" : "Caixas de verificación", - "Checkbox question title" : "Título da pregunta da caixa de verificación", + "Checkbox question title" : "Título da pregunta da caixa de selección", "This question needs a title and at least one answer!" : "Esta pregunta necesita un título e polo menos unha resposta.", "Multiple choice" : "Escolla múltiple", "Multiple choice question title" : "Título da pregunta de escolla múltiple", diff --git a/l10n/he.js b/l10n/he.js index aded32b..dff2e5c 100644 --- a/l10n/he.js +++ b/l10n/he.js @@ -4,6 +4,7 @@ OC.L10N.register( "Anonymous response" : "תגובה אלמונית", "Forms" : "טפסים", "Shared by %s" : "שותף על ידי %s", + "📝 Simple surveys and questionnaires, self-hosted" : "📝 סקריםי ושאלונים פשוטים, באירוח עצמי", "New form" : "טופס חדש", "Loading forms …" : "הטפסים נטענים…", "No forms created yet" : "לא נוצרו עדיין טפסים", @@ -29,11 +30,13 @@ OC.L10N.register( "Title of question number {index}" : "כותרת של שאלה מספר {index}", "Required" : "נדרש", "Delete question" : "מחיקת שאלה", + "This question needs a title!" : "לשאלה זו דרושה כותרת!", "Add a new answer" : "הוספת תשובה חדשה", "There was an issue deleting this option" : "מחיקת האפשרות נתקלה בבעיה", "A long answer for the question “{text}”" : "תשובה ארוכה לשאלה „{text}”", "A short answer for the question “{text}”" : "תשובה קצרה לשאלה „{text}”", "Delete this response" : "מחיקת התגובה הזאת", + "No response" : "אין תגובה", "User or group name …" : "שם משתמש או קבוצה…", "No recommendations. Start typing." : "אין המלצות. נא להתחיל להקליד.", "Searching …" : "מתבצע חיפוש…", @@ -43,25 +46,32 @@ OC.L10N.register( "Toggle settings" : "החלפת מצב הגדרות", "Form title" : "כותרת טופס", "Description" : "תיאור", + "Required questions" : "שאלות נדרשות", "Add a question" : "הוספת שאלה", "There was an error while adding the new question" : "אירעה שגיאה בעת הוספת השאלה החדשה", "There was an error while removing the question" : "אירעה שגיאה בעת הסרת השאלה", "Error while saving form" : "שגיאה בעת שמירת טופס", "Loading responses …" : "התגובות נטענות…", "Back to questions" : "חזרה לשאלות", + "{amount} responses" : "{amount} תגובות", "Summary" : "תקציר", "Options" : "אפשרויות", "Export to CSV" : "ייצוא ל־CSV", "Delete all responses" : "מחיקת כל התגובות", "No responses yet" : "אין תגובות עדיין", "Results of submitted forms will show up here" : "התוצאות לטפסים שהוגשו תופענה כאן", + "There was an error while loading the results" : "אירעה שגיאה בטעינת התוצאות", "There was an error while removing this response" : "אירעה שגיאה בהסרת התגובה הזאת", "Are you sure you want to delete all responses of {title}?" : "למחוק את כל התגובות על {title}?", "There was an error while removing responses" : "אירעה שגיאה בעת הסרת התגובות", + "responses" : "תגובות", + "Share form" : "שיתוף טופס", + "Share via link" : "שיתוף דרך קישור", "Show to all users of this instance" : "להציג את כל המשתמשים של העותק הזה", "Choose users to share with" : "לבחור משתמשים לשתף אתם", "Settings" : "הגדרות", "Anonymous responses" : "תגובות אלמוניות", + "Allow multiple responses per person" : "לאפשר מספר תגובות למשתתף", "Set expiration date" : "הגדרת תאריך תפוגה", "Expiration date" : "תאריך תפוגה", "Select expiration date" : "בחירת מועד תפוגת תוקף", @@ -74,9 +84,22 @@ OC.L10N.register( "There was an error submitting the form" : "עלתה שגיאה בעת הגשת הטופס", "Error while saving question" : "שגיאה בשמירת השאלה", "Checkboxes" : "תיבות סימון", + "Checkbox question title" : "כותרת שאלת תיבות סימון", + "This question needs a title and at least one answer!" : "שאלה זו זקוקה לכותרת ולפחות לתשובה אחת!", "Multiple choice" : "שאלון אמריקאי", + "Multiple choice question title" : "כותרת שאלה מגוון אפשרויות", + "Dropdown" : "תפריט נפתח", + "Dropdown question title" : "כותרת שאלת תפריט נפתח", + "People can pick one option" : "המשתתפים יכולים לבחור באפשרות אחת", + "Pick an option" : "נא לבחור באפשרות", "Short answer" : "תשובה קצרה", + "Short answer question title" : "כותרת שאלה לתשובה קצרה", + "People can enter a short answer" : "המשתתפים יכולים למלא תשובה קצרה", + "Enter a short answer" : "נא למלא תשובה קצרה", "Long text" : "טקסט ארוך", + "Long text question title" : "כותרת שאלה טקסט ארוך", + "People can enter a long text" : "משתתפים יכולים למלא טקסט ארוך", + "Enter a long text" : "נא למלא טקסט ארוך", "Form expired" : "תוקף הטופס פג", "This form has expired and is no longer taking answers" : "תוקפו של טופס זה פג ולא ניתן לענות עליו עוד", "Form not found" : "הטופס לא נמצא", diff --git a/l10n/he.json b/l10n/he.json index 7ec2310..39de715 100644 --- a/l10n/he.json +++ b/l10n/he.json @@ -2,6 +2,7 @@ "Anonymous response" : "תגובה אלמונית", "Forms" : "טפסים", "Shared by %s" : "שותף על ידי %s", + "📝 Simple surveys and questionnaires, self-hosted" : "📝 סקריםי ושאלונים פשוטים, באירוח עצמי", "New form" : "טופס חדש", "Loading forms …" : "הטפסים נטענים…", "No forms created yet" : "לא נוצרו עדיין טפסים", @@ -27,11 +28,13 @@ "Title of question number {index}" : "כותרת של שאלה מספר {index}", "Required" : "נדרש", "Delete question" : "מחיקת שאלה", + "This question needs a title!" : "לשאלה זו דרושה כותרת!", "Add a new answer" : "הוספת תשובה חדשה", "There was an issue deleting this option" : "מחיקת האפשרות נתקלה בבעיה", "A long answer for the question “{text}”" : "תשובה ארוכה לשאלה „{text}”", "A short answer for the question “{text}”" : "תשובה קצרה לשאלה „{text}”", "Delete this response" : "מחיקת התגובה הזאת", + "No response" : "אין תגובה", "User or group name …" : "שם משתמש או קבוצה…", "No recommendations. Start typing." : "אין המלצות. נא להתחיל להקליד.", "Searching …" : "מתבצע חיפוש…", @@ -41,25 +44,32 @@ "Toggle settings" : "החלפת מצב הגדרות", "Form title" : "כותרת טופס", "Description" : "תיאור", + "Required questions" : "שאלות נדרשות", "Add a question" : "הוספת שאלה", "There was an error while adding the new question" : "אירעה שגיאה בעת הוספת השאלה החדשה", "There was an error while removing the question" : "אירעה שגיאה בעת הסרת השאלה", "Error while saving form" : "שגיאה בעת שמירת טופס", "Loading responses …" : "התגובות נטענות…", "Back to questions" : "חזרה לשאלות", + "{amount} responses" : "{amount} תגובות", "Summary" : "תקציר", "Options" : "אפשרויות", "Export to CSV" : "ייצוא ל־CSV", "Delete all responses" : "מחיקת כל התגובות", "No responses yet" : "אין תגובות עדיין", "Results of submitted forms will show up here" : "התוצאות לטפסים שהוגשו תופענה כאן", + "There was an error while loading the results" : "אירעה שגיאה בטעינת התוצאות", "There was an error while removing this response" : "אירעה שגיאה בהסרת התגובה הזאת", "Are you sure you want to delete all responses of {title}?" : "למחוק את כל התגובות על {title}?", "There was an error while removing responses" : "אירעה שגיאה בעת הסרת התגובות", + "responses" : "תגובות", + "Share form" : "שיתוף טופס", + "Share via link" : "שיתוף דרך קישור", "Show to all users of this instance" : "להציג את כל המשתמשים של העותק הזה", "Choose users to share with" : "לבחור משתמשים לשתף אתם", "Settings" : "הגדרות", "Anonymous responses" : "תגובות אלמוניות", + "Allow multiple responses per person" : "לאפשר מספר תגובות למשתתף", "Set expiration date" : "הגדרת תאריך תפוגה", "Expiration date" : "תאריך תפוגה", "Select expiration date" : "בחירת מועד תפוגת תוקף", @@ -72,9 +82,22 @@ "There was an error submitting the form" : "עלתה שגיאה בעת הגשת הטופס", "Error while saving question" : "שגיאה בשמירת השאלה", "Checkboxes" : "תיבות סימון", + "Checkbox question title" : "כותרת שאלת תיבות סימון", + "This question needs a title and at least one answer!" : "שאלה זו זקוקה לכותרת ולפחות לתשובה אחת!", "Multiple choice" : "שאלון אמריקאי", + "Multiple choice question title" : "כותרת שאלה מגוון אפשרויות", + "Dropdown" : "תפריט נפתח", + "Dropdown question title" : "כותרת שאלת תפריט נפתח", + "People can pick one option" : "המשתתפים יכולים לבחור באפשרות אחת", + "Pick an option" : "נא לבחור באפשרות", "Short answer" : "תשובה קצרה", + "Short answer question title" : "כותרת שאלה לתשובה קצרה", + "People can enter a short answer" : "המשתתפים יכולים למלא תשובה קצרה", + "Enter a short answer" : "נא למלא תשובה קצרה", "Long text" : "טקסט ארוך", + "Long text question title" : "כותרת שאלה טקסט ארוך", + "People can enter a long text" : "משתתפים יכולים למלא טקסט ארוך", + "Enter a long text" : "נא למלא טקסט ארוך", "Form expired" : "תוקף הטופס פג", "This form has expired and is no longer taking answers" : "תוקפו של טופס זה פג ולא ניתן לענות עליו עוד", "Form not found" : "הטופס לא נמצא", diff --git a/l10n/is.js b/l10n/is.js index da82d02..2cd7d3c 100644 --- a/l10n/is.js +++ b/l10n/is.js @@ -1,15 +1,89 @@ OC.L10N.register( "forms", { + "Anonymous response" : "Nafnlaust svar", + "Forms" : "Eyðuform", + "Shared by %s" : "Deilt af %s", + "New form" : "Nýtt eyðuform", + "Loading forms …" : "Hleð inn eyðuformum …", + "No forms created yet" : "Engin eyðuform útbúin ennþá", + "Create a form" : "Búa til eyðuform", + "Select a form or create a new one" : "Veldu eyðuform eða búðu til nýtt", + "Create new form" : "Búa til nýtt eyðuform", + "An error occurred while loading the forms list" : "Villa átti sér stað við að hlaða inn lista yfir eyðuform", + "Unable to create a new form" : "Gat ekki búið til nýtt eyðuform", + "Responses" : "Svör", + "Clone form" : "Klóna eyðuform", + "Delete form" : "Eyða eyðuformi", + "Form link copied" : "Tengill eyðuforms afritaður", + "Copy share link" : "Afrita deilitengil", + "Are you sure you want to delete {title}?" : "Ertu viss um að þú viljir eyða {title}?", + "Error while deleting {title}" : "Villa kom upp við að eyða {title}", + "Answer number {index}" : "Svar númer {index}", + "Delete answer" : "Eyða svari", + "Error while saving the answer" : "Villa kom upp við að vista svarið", + "Question number {index}" : "Spurning númer {index}", + "Drag to reorder the questions" : "Draga til að endurraða spurningum", + "Title of question number {index}" : "Titill á spurningu númer {index}", "Required" : "þetta þarf", + "Delete question" : "Eyða spurningu", + "This question needs a title!" : "Þessi spurning þarf að vera með titil!", + "Add a new answer" : "Bæta við nýju svari", + "A long answer for the question “{text}”" : "Langt svar við spurningunni “{text}”", + "A short answer for the question “{text}”" : "Stutt svar við spurningunni “{text}”", + "Delete this response" : "Eyða þessu svari", + "No response" : "Ekkert svar", + "User or group name …" : "Notandi eða heiti hóps …", "Searching …" : "Leita …", "Group" : "Hópur", + "Loading {title} …" : "Hleð inn {title} …", + "Toggle settings" : "Víxla stillingum af/á", + "Form title" : "Titill eyðuforms", "Description" : "Lýsing", + "Add a question" : "Bæta við spurningu", + "Error while saving form" : "Villa við að vista eyðuform", + "Loading responses …" : "Hleð inn svörum …", + "Back to questions" : "Aftur spurningar", + "{amount} responses" : "{amount} svör", "Summary" : "Samantekt", "Options" : "Valkostir", + "Export to CSV" : "Flytja út í CSV", + "Delete all responses" : "Eyða öllum svörum", + "Results of submitted forms will show up here" : "Niðurstöður innsendra eyðuforma munu birtast hér", + "There was an error while removing responses" : "Villa kom upp við að fjarlægja svör", + "responses" : "svör", + "Share form" : "Deila eyðuformi", + "Share via link" : "Deila með tengli", + "Choose users to share with" : "Veldu notendur til að deila með", "Settings" : "Stillingar", + "Anonymous responses" : "Nafnlaus svör", "Set expiration date" : "Setja gildistíma", "Expiration date" : "Gildir til", - "Submit" : "Senda inn" + "Select expiration date" : "Veldu gildistíma", + "Expired on {date}" : "Rann út {date}", + "Expires on {date}" : "Rennur út {date}", + "Submit" : "Senda inn", + "Submit form" : "Senda inn eyðuform", + "Submitting form …" : "Sendi inn eyðuform …", + "Thank you for completing the form!" : "Takk fyrir að fylla út í eyðuformið!", + "There was an error submitting the form" : "Það kom upp villa við að senda eyðuformið inn", + "Error while saving question" : "Villa við að vista spurningu", + "Checkboxes" : "Gátreitir", + "Multiple choice" : "Margir valmöguleikar", + "Dropdown" : "Fellilisti", + "People can pick one option" : "Fólk má velja einn möguleika", + "Pick an option" : "Veldu einn möguleika", + "Short answer" : "Stutt svar", + "Short answer question title" : "Titill spurningar með stutt svar", + "People can enter a short answer" : "Fólk getur sett inn stutt svar", + "Enter a short answer" : "Settu inn stutt svar", + "Long text" : "Langur texti", + "Long text question title" : "Titill spurningar með langt svar", + "People can enter a long text" : "Fólk getur sett inn langan texta", + "Enter a long text" : "Settu inn langan texta", + "Form expired" : "Eyðuform er útrunnið", + "This form has expired and is no longer taking answers" : "Þetta eyðuform er útrunnið og tekur því ekki lengur við svörum", + "Form not found" : "Eyðuform fannst ekki", + "This form does not exist" : "Þetta eyðuform er ekki til" }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/l10n/is.json b/l10n/is.json index 840c927..c68d5ab 100644 --- a/l10n/is.json +++ b/l10n/is.json @@ -1,13 +1,87 @@ { "translations": { + "Anonymous response" : "Nafnlaust svar", + "Forms" : "Eyðuform", + "Shared by %s" : "Deilt af %s", + "New form" : "Nýtt eyðuform", + "Loading forms …" : "Hleð inn eyðuformum …", + "No forms created yet" : "Engin eyðuform útbúin ennþá", + "Create a form" : "Búa til eyðuform", + "Select a form or create a new one" : "Veldu eyðuform eða búðu til nýtt", + "Create new form" : "Búa til nýtt eyðuform", + "An error occurred while loading the forms list" : "Villa átti sér stað við að hlaða inn lista yfir eyðuform", + "Unable to create a new form" : "Gat ekki búið til nýtt eyðuform", + "Responses" : "Svör", + "Clone form" : "Klóna eyðuform", + "Delete form" : "Eyða eyðuformi", + "Form link copied" : "Tengill eyðuforms afritaður", + "Copy share link" : "Afrita deilitengil", + "Are you sure you want to delete {title}?" : "Ertu viss um að þú viljir eyða {title}?", + "Error while deleting {title}" : "Villa kom upp við að eyða {title}", + "Answer number {index}" : "Svar númer {index}", + "Delete answer" : "Eyða svari", + "Error while saving the answer" : "Villa kom upp við að vista svarið", + "Question number {index}" : "Spurning númer {index}", + "Drag to reorder the questions" : "Draga til að endurraða spurningum", + "Title of question number {index}" : "Titill á spurningu númer {index}", "Required" : "þetta þarf", + "Delete question" : "Eyða spurningu", + "This question needs a title!" : "Þessi spurning þarf að vera með titil!", + "Add a new answer" : "Bæta við nýju svari", + "A long answer for the question “{text}”" : "Langt svar við spurningunni “{text}”", + "A short answer for the question “{text}”" : "Stutt svar við spurningunni “{text}”", + "Delete this response" : "Eyða þessu svari", + "No response" : "Ekkert svar", + "User or group name …" : "Notandi eða heiti hóps …", "Searching …" : "Leita …", "Group" : "Hópur", + "Loading {title} …" : "Hleð inn {title} …", + "Toggle settings" : "Víxla stillingum af/á", + "Form title" : "Titill eyðuforms", "Description" : "Lýsing", + "Add a question" : "Bæta við spurningu", + "Error while saving form" : "Villa við að vista eyðuform", + "Loading responses …" : "Hleð inn svörum …", + "Back to questions" : "Aftur spurningar", + "{amount} responses" : "{amount} svör", "Summary" : "Samantekt", "Options" : "Valkostir", + "Export to CSV" : "Flytja út í CSV", + "Delete all responses" : "Eyða öllum svörum", + "Results of submitted forms will show up here" : "Niðurstöður innsendra eyðuforma munu birtast hér", + "There was an error while removing responses" : "Villa kom upp við að fjarlægja svör", + "responses" : "svör", + "Share form" : "Deila eyðuformi", + "Share via link" : "Deila með tengli", + "Choose users to share with" : "Veldu notendur til að deila með", "Settings" : "Stillingar", + "Anonymous responses" : "Nafnlaus svör", "Set expiration date" : "Setja gildistíma", "Expiration date" : "Gildir til", - "Submit" : "Senda inn" + "Select expiration date" : "Veldu gildistíma", + "Expired on {date}" : "Rann út {date}", + "Expires on {date}" : "Rennur út {date}", + "Submit" : "Senda inn", + "Submit form" : "Senda inn eyðuform", + "Submitting form …" : "Sendi inn eyðuform …", + "Thank you for completing the form!" : "Takk fyrir að fylla út í eyðuformið!", + "There was an error submitting the form" : "Það kom upp villa við að senda eyðuformið inn", + "Error while saving question" : "Villa við að vista spurningu", + "Checkboxes" : "Gátreitir", + "Multiple choice" : "Margir valmöguleikar", + "Dropdown" : "Fellilisti", + "People can pick one option" : "Fólk má velja einn möguleika", + "Pick an option" : "Veldu einn möguleika", + "Short answer" : "Stutt svar", + "Short answer question title" : "Titill spurningar með stutt svar", + "People can enter a short answer" : "Fólk getur sett inn stutt svar", + "Enter a short answer" : "Settu inn stutt svar", + "Long text" : "Langur texti", + "Long text question title" : "Titill spurningar með langt svar", + "People can enter a long text" : "Fólk getur sett inn langan texta", + "Enter a long text" : "Settu inn langan texta", + "Form expired" : "Eyðuform er útrunnið", + "This form has expired and is no longer taking answers" : "Þetta eyðuform er útrunnið og tekur því ekki lengur við svörum", + "Form not found" : "Eyðuform fannst ekki", + "This form does not exist" : "Þetta eyðuform er ekki til" },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" } \ No newline at end of file diff --git a/l10n/ja.js b/l10n/ja.js index 8fdf389..f10d402 100644 --- a/l10n/ja.js +++ b/l10n/ja.js @@ -15,20 +15,60 @@ OC.L10N.register( "Responses" : "回答", "Clone form" : "フォームを複製", "Delete form" : "フォームを削除", + "Form link copied" : "フォームのリンクをコピーしました", "Cannot copy, please copy the link manually" : "コピーできませんでした。手動でリンクをコピーしてください。", + "Copy share link" : "共有リンクをコピー", "Are you sure you want to delete {title}?" : "本当に [title] を削除してもよろしいですか?", + "Error while deleting {title}" : "{title}を削除中にエラー", + "Answer number {index}" : "回答数{index}", + "Delete answer" : "回答を削除", + "Error while saving the answer" : "回答を保存中にエラーが発生しました", + "Question number {index}" : "質問数{index}", + "Drag to reorder the questions" : "質問の順序を掴んで変更", "Required" : "必須", + "Delete question" : "質問の削除", + "This question needs a title!" : "この質問にはタイトルが必須です!", + "Add a new answer" : "回答を追加", + "A long answer for the question “{text}”" : "質問“{text}”の複数行回答", + "A short answer for the question “{text}”" : "質問“{text}”の1行回答", + "No response" : "返信なし", + "User or group name …" : "ユーザーかグループ名 ...", "No recommendations. Start typing." : "推奨事項はありません。 入力を開始します。", "Searching …" : "検索しています…", "No elements found." : "要素が見つかりませんでした。", "Group" : "グループ", + "Loading {title} …" : "{title}をローディング ...", + "Toggle settings" : "セッティングを切り替え", "Description" : "説明", + "Add a question" : "質問を追加", + "Error while saving form" : "フォームを保存中にエラー", + "Loading responses …" : "返信をロード中 ...", + "Back to questions" : "質問に戻る", + "{amount} responses" : "{amount}個の返信", "Summary" : "要約", "Options" : "オプション", + "Export to CSV" : "CSVにエクスポート", + "Delete all responses" : "全ての返信を削除", + "No responses yet" : "まだ返信はありません", + "Results of submitted forms will show up here" : "送信したフォームの結果はここに表示されます", + "responses" : "返信", + "Share via link" : "linkで共有", "Settings" : "設定", + "Anonymous responses" : "匿名回答", "Set expiration date" : "有効期限を設定", "Expiration date" : "有効期限", + "Select expiration date" : "回答期限日の選択", "Submit" : "送信", - "Checkboxes" : "チェックボックス" + "Error while saving question" : "質問の保存中にエラーが発生しました", + "Checkboxes" : "チェックボックス", + "Multiple choice" : "複数の選択肢", + "Dropdown" : "ドロップダウン", + "Dropdown question title" : "質問題をドロップダウン", + "Pick an option" : "選択肢を選択", + "Short answer" : "短い回答", + "Enter a short answer" : "短い回答を入力", + "Long text" : "長文", + "Form not found" : "フォームがありません", + "This form does not exist" : "このフォームは存在しません" }, "nplurals=1; plural=0;"); diff --git a/l10n/ja.json b/l10n/ja.json index 0fcfa4b..5baa3d5 100644 --- a/l10n/ja.json +++ b/l10n/ja.json @@ -13,20 +13,60 @@ "Responses" : "回答", "Clone form" : "フォームを複製", "Delete form" : "フォームを削除", + "Form link copied" : "フォームのリンクをコピーしました", "Cannot copy, please copy the link manually" : "コピーできませんでした。手動でリンクをコピーしてください。", + "Copy share link" : "共有リンクをコピー", "Are you sure you want to delete {title}?" : "本当に [title] を削除してもよろしいですか?", + "Error while deleting {title}" : "{title}を削除中にエラー", + "Answer number {index}" : "回答数{index}", + "Delete answer" : "回答を削除", + "Error while saving the answer" : "回答を保存中にエラーが発生しました", + "Question number {index}" : "質問数{index}", + "Drag to reorder the questions" : "質問の順序を掴んで変更", "Required" : "必須", + "Delete question" : "質問の削除", + "This question needs a title!" : "この質問にはタイトルが必須です!", + "Add a new answer" : "回答を追加", + "A long answer for the question “{text}”" : "質問“{text}”の複数行回答", + "A short answer for the question “{text}”" : "質問“{text}”の1行回答", + "No response" : "返信なし", + "User or group name …" : "ユーザーかグループ名 ...", "No recommendations. Start typing." : "推奨事項はありません。 入力を開始します。", "Searching …" : "検索しています…", "No elements found." : "要素が見つかりませんでした。", "Group" : "グループ", + "Loading {title} …" : "{title}をローディング ...", + "Toggle settings" : "セッティングを切り替え", "Description" : "説明", + "Add a question" : "質問を追加", + "Error while saving form" : "フォームを保存中にエラー", + "Loading responses …" : "返信をロード中 ...", + "Back to questions" : "質問に戻る", + "{amount} responses" : "{amount}個の返信", "Summary" : "要約", "Options" : "オプション", + "Export to CSV" : "CSVにエクスポート", + "Delete all responses" : "全ての返信を削除", + "No responses yet" : "まだ返信はありません", + "Results of submitted forms will show up here" : "送信したフォームの結果はここに表示されます", + "responses" : "返信", + "Share via link" : "linkで共有", "Settings" : "設定", + "Anonymous responses" : "匿名回答", "Set expiration date" : "有効期限を設定", "Expiration date" : "有効期限", + "Select expiration date" : "回答期限日の選択", "Submit" : "送信", - "Checkboxes" : "チェックボックス" + "Error while saving question" : "質問の保存中にエラーが発生しました", + "Checkboxes" : "チェックボックス", + "Multiple choice" : "複数の選択肢", + "Dropdown" : "ドロップダウン", + "Dropdown question title" : "質問題をドロップダウン", + "Pick an option" : "選択肢を選択", + "Short answer" : "短い回答", + "Enter a short answer" : "短い回答を入力", + "Long text" : "長文", + "Form not found" : "フォームがありません", + "This form does not exist" : "このフォームは存在しません" },"pluralForm" :"nplurals=1; plural=0;" } \ No newline at end of file diff --git a/l10n/nb.js b/l10n/nb.js index b7ca495..535711f 100644 --- a/l10n/nb.js +++ b/l10n/nb.js @@ -8,6 +8,7 @@ OC.L10N.register( "Settings" : "Innstillinger", "Set expiration date" : "Sett utløpsdato", "Expiration date" : "Utløpsdato", - "Submit" : "Send inn" + "Submit" : "Send inn", + "Checkboxes" : "Avkrysningsruter" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/nb.json b/l10n/nb.json index 992330c..5ff9381 100644 --- a/l10n/nb.json +++ b/l10n/nb.json @@ -6,6 +6,7 @@ "Settings" : "Innstillinger", "Set expiration date" : "Sett utløpsdato", "Expiration date" : "Utløpsdato", - "Submit" : "Send inn" + "Submit" : "Send inn", + "Checkboxes" : "Avkrysningsruter" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/nl.js b/l10n/nl.js index 5f16072..6a8d102 100644 --- a/l10n/nl.js +++ b/l10n/nl.js @@ -5,6 +5,7 @@ OC.L10N.register( "Forms" : "Formulieren", "Shared by %s" : "Gedeeld door %s", "📝 Simple surveys and questionnaires, self-hosted" : "📝 Eenvoudige enquête en vragenlijst, zelf gehost", + "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!" : "**Eenvoudige enquêtes en vragenlijsten, zelf gehost!**\n\n- **📝 Simpel design:** Geen massa opties, alleen de essentie. Werkt natuurlijk goed op mobiel.\n- **📊 Bekijk en exporteer resultaten:** Resultaten worden gevisualiseerd en kunnen ook worden geëxporteerd als CSV in hetzelfde formaat dat wordt gebruikt door Google Formulieren.\n- **🔒 Gegevens onder uw controle!**In tegenstelling tot Google Forms, Typeform, Doodle en anderen, worden de enquêtegegevens en antwoorden op uw instantie privé gehouden.\n- **🙋 Raak betrokken!** We hebben veel dingen gepland, zoals meer vraagtypen, samenwerking aan formulieren, [en nog veel meer](https://github.com/nextcloud/forms/milestones)!", "New form" : "Nieuw formulier", "Loading forms …" : "Formulieren laden ...", "No forms created yet" : "Nog geen formulieren gecreëerd", @@ -30,11 +31,13 @@ OC.L10N.register( "Title of question number {index}" : "Titel van vraag nummer {index}", "Required" : "Vereist", "Delete question" : "Verwijder vraag", + "This question needs a title!" : "Deze vraag heeft een titel nodig!", "Add a new answer" : "Voeg een nieuw antwoord toe", "There was an issue deleting this option" : "Er is een fout opgetreden bij het verwijderen van deze optie", "A long answer for the question “{text}”" : "Een lang antwoord voor vraag “{text}”", "A short answer for the question “{text}”" : "Een kort antwoord voor vraag “{text}”", "Delete this response" : "Verwijder dit antwoord", + "No response" : "Geen antwoord", "User or group name …" : "Gebruiker of groepsnaam …", "No recommendations. Start typing." : "Geen aanbevelingen. Begin te typen.", "Searching …" : "Zoeken ...", @@ -44,25 +47,32 @@ OC.L10N.register( "Toggle settings" : "Omschakelen instellingen", "Form title" : "Formuliertitel", "Description" : "Beschrijving", + "Required questions" : "Vereiste vragen", "Add a question" : "Voeg een vraag toe", "There was an error while adding the new question" : "Er trad een fout op bij het toevoegen van de nieuwe vraag", "There was an error while removing the question" : "Er trad een fout op bij het verwijderen van de vraag", "Error while saving form" : "Fout bij opslaan formulier", "Loading responses …" : "Laden reacties ...", "Back to questions" : "Terug naar vragen", + "{amount} responses" : "{amount} reacties", "Summary" : "Samenvatting", "Options" : "Opties", "Export to CSV" : "Exporteren naar CSV", "Delete all responses" : "Verwijder alle antwoorden", "No responses yet" : "Nog geen antwoorden", "Results of submitted forms will show up here" : "Resultaten van ingeleverde formulieren worden hier getoond", + "There was an error while loading the results" : "Er is een fout opgetreden bij het laden van de resultaten", "There was an error while removing this response" : "Er trad een fout op bij het verwijderen van deze reactie", "Are you sure you want to delete all responses of {title}?" : "Weet je zeker dat je alle reacties op {title} wilt verwijderen?", "There was an error while removing responses" : "Er trad een fout op bij het verwijderen van reacties", + "responses" : "reacties", + "Share form" : "Deel formulier", + "Share via link" : "Deel via link", "Show to all users of this instance" : "Toon alle gebruikers op deze server", "Choose users to share with" : "Kies gebruikers om mee te delen", "Settings" : "Instellingen", "Anonymous responses" : "Anonieme antwoorden", + "Allow multiple responses per person" : "Meerdere reacties per persoon toestaan", "Set expiration date" : "Stel vervaldatum in", "Expiration date" : "Vervaldatum", "Select expiration date" : "Selecteer vervaldatum", @@ -76,8 +86,13 @@ OC.L10N.register( "Error while saving question" : "Fout bij opslaan vraag", "Checkboxes" : "Aanvinkvakjes", "Checkbox question title" : "Aaanvinkvakje vraagtitel", + "This question needs a title and at least one answer!" : "Deze vraag heeft een titel en minimaal één antwoord nodig!", "Multiple choice" : "Meerkeuze", "Multiple choice question title" : "Meerkeuze vraag titel", + "Dropdown" : "Dropdown", + "Dropdown question title" : "Dropdown titel van de vraag", + "People can pick one option" : "Mensen kunnen één optie kiezen", + "Pick an option" : "Kies een optie", "Short answer" : "Kort antwoord", "Short answer question title" : "Kort antwoord vraagtitel", "People can enter a short answer" : "Er kan een kort antwoord worden gegeven", diff --git a/l10n/nl.json b/l10n/nl.json index 216f011..393663b 100644 --- a/l10n/nl.json +++ b/l10n/nl.json @@ -3,6 +3,7 @@ "Forms" : "Formulieren", "Shared by %s" : "Gedeeld door %s", "📝 Simple surveys and questionnaires, self-hosted" : "📝 Eenvoudige enquête en vragenlijst, zelf gehost", + "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!" : "**Eenvoudige enquêtes en vragenlijsten, zelf gehost!**\n\n- **📝 Simpel design:** Geen massa opties, alleen de essentie. Werkt natuurlijk goed op mobiel.\n- **📊 Bekijk en exporteer resultaten:** Resultaten worden gevisualiseerd en kunnen ook worden geëxporteerd als CSV in hetzelfde formaat dat wordt gebruikt door Google Formulieren.\n- **🔒 Gegevens onder uw controle!**In tegenstelling tot Google Forms, Typeform, Doodle en anderen, worden de enquêtegegevens en antwoorden op uw instantie privé gehouden.\n- **🙋 Raak betrokken!** We hebben veel dingen gepland, zoals meer vraagtypen, samenwerking aan formulieren, [en nog veel meer](https://github.com/nextcloud/forms/milestones)!", "New form" : "Nieuw formulier", "Loading forms …" : "Formulieren laden ...", "No forms created yet" : "Nog geen formulieren gecreëerd", @@ -28,11 +29,13 @@ "Title of question number {index}" : "Titel van vraag nummer {index}", "Required" : "Vereist", "Delete question" : "Verwijder vraag", + "This question needs a title!" : "Deze vraag heeft een titel nodig!", "Add a new answer" : "Voeg een nieuw antwoord toe", "There was an issue deleting this option" : "Er is een fout opgetreden bij het verwijderen van deze optie", "A long answer for the question “{text}”" : "Een lang antwoord voor vraag “{text}”", "A short answer for the question “{text}”" : "Een kort antwoord voor vraag “{text}”", "Delete this response" : "Verwijder dit antwoord", + "No response" : "Geen antwoord", "User or group name …" : "Gebruiker of groepsnaam …", "No recommendations. Start typing." : "Geen aanbevelingen. Begin te typen.", "Searching …" : "Zoeken ...", @@ -42,25 +45,32 @@ "Toggle settings" : "Omschakelen instellingen", "Form title" : "Formuliertitel", "Description" : "Beschrijving", + "Required questions" : "Vereiste vragen", "Add a question" : "Voeg een vraag toe", "There was an error while adding the new question" : "Er trad een fout op bij het toevoegen van de nieuwe vraag", "There was an error while removing the question" : "Er trad een fout op bij het verwijderen van de vraag", "Error while saving form" : "Fout bij opslaan formulier", "Loading responses …" : "Laden reacties ...", "Back to questions" : "Terug naar vragen", + "{amount} responses" : "{amount} reacties", "Summary" : "Samenvatting", "Options" : "Opties", "Export to CSV" : "Exporteren naar CSV", "Delete all responses" : "Verwijder alle antwoorden", "No responses yet" : "Nog geen antwoorden", "Results of submitted forms will show up here" : "Resultaten van ingeleverde formulieren worden hier getoond", + "There was an error while loading the results" : "Er is een fout opgetreden bij het laden van de resultaten", "There was an error while removing this response" : "Er trad een fout op bij het verwijderen van deze reactie", "Are you sure you want to delete all responses of {title}?" : "Weet je zeker dat je alle reacties op {title} wilt verwijderen?", "There was an error while removing responses" : "Er trad een fout op bij het verwijderen van reacties", + "responses" : "reacties", + "Share form" : "Deel formulier", + "Share via link" : "Deel via link", "Show to all users of this instance" : "Toon alle gebruikers op deze server", "Choose users to share with" : "Kies gebruikers om mee te delen", "Settings" : "Instellingen", "Anonymous responses" : "Anonieme antwoorden", + "Allow multiple responses per person" : "Meerdere reacties per persoon toestaan", "Set expiration date" : "Stel vervaldatum in", "Expiration date" : "Vervaldatum", "Select expiration date" : "Selecteer vervaldatum", @@ -74,8 +84,13 @@ "Error while saving question" : "Fout bij opslaan vraag", "Checkboxes" : "Aanvinkvakjes", "Checkbox question title" : "Aaanvinkvakje vraagtitel", + "This question needs a title and at least one answer!" : "Deze vraag heeft een titel en minimaal één antwoord nodig!", "Multiple choice" : "Meerkeuze", "Multiple choice question title" : "Meerkeuze vraag titel", + "Dropdown" : "Dropdown", + "Dropdown question title" : "Dropdown titel van de vraag", + "People can pick one option" : "Mensen kunnen één optie kiezen", + "Pick an option" : "Kies een optie", "Short answer" : "Kort antwoord", "Short answer question title" : "Kort antwoord vraagtitel", "People can enter a short answer" : "Er kan een kort antwoord worden gegeven", diff --git a/l10n/pt_BR.js b/l10n/pt_BR.js index 315828f..c3f6d9c 100644 --- a/l10n/pt_BR.js +++ b/l10n/pt_BR.js @@ -29,7 +29,7 @@ OC.L10N.register( "Question number {index}" : "Pergunta número {index}", "Drag to reorder the questions" : "Arraste para reordenar as perguntas", "Title of question number {index}" : "O título da pergunta número {index}", - "Required" : "Requerido", + "Required" : "Obrigatório", "Delete question" : "Excluir pergunta", "This question needs a title!" : "Esta pergunta precisa de um título!", "Add a new answer" : "Adicionar uma nova resposta", diff --git a/l10n/pt_BR.json b/l10n/pt_BR.json index af0f4e8..2f116ba 100644 --- a/l10n/pt_BR.json +++ b/l10n/pt_BR.json @@ -27,7 +27,7 @@ "Question number {index}" : "Pergunta número {index}", "Drag to reorder the questions" : "Arraste para reordenar as perguntas", "Title of question number {index}" : "O título da pergunta número {index}", - "Required" : "Requerido", + "Required" : "Obrigatório", "Delete question" : "Excluir pergunta", "This question needs a title!" : "Esta pergunta precisa de um título!", "Add a new answer" : "Adicionar uma nova resposta", diff --git a/l10n/ru.js b/l10n/ru.js index fab1ad6..3308345 100644 --- a/l10n/ru.js +++ b/l10n/ru.js @@ -29,6 +29,7 @@ OC.L10N.register( "Title of question number {index}" : "Заголовок вопроса номер {index}", "Required" : "Обязательно", "Delete question" : "Удалить вопрос", + "This question needs a title!" : "Необходимо задать название вопроса.", "Add a new answer" : "Добавить новый ответ", "There was an issue deleting this option" : "Не удалось удалить этот вариант", "A long answer for the question “{text}”" : "Длинный ответ для вопроса “{text}”", @@ -74,6 +75,7 @@ OC.L10N.register( "There was an error submitting the form" : "При отправке формы произошла ошибка", "Error while saving question" : "Ошибка при сохранении вопроса", "Checkboxes" : "Несколько из списка", + "This question needs a title and at least one answer!" : "Необходимо задать название вопроса и не менее одного варианта ответа.", "Multiple choice" : "Один из списка", "Short answer" : "Короткий ответ", "People can enter a short answer" : "Люди могут написать короткий ответ", diff --git a/l10n/ru.json b/l10n/ru.json index 767516e..d3a4f4d 100644 --- a/l10n/ru.json +++ b/l10n/ru.json @@ -27,6 +27,7 @@ "Title of question number {index}" : "Заголовок вопроса номер {index}", "Required" : "Обязательно", "Delete question" : "Удалить вопрос", + "This question needs a title!" : "Необходимо задать название вопроса.", "Add a new answer" : "Добавить новый ответ", "There was an issue deleting this option" : "Не удалось удалить этот вариант", "A long answer for the question “{text}”" : "Длинный ответ для вопроса “{text}”", @@ -72,6 +73,7 @@ "There was an error submitting the form" : "При отправке формы произошла ошибка", "Error while saving question" : "Ошибка при сохранении вопроса", "Checkboxes" : "Несколько из списка", + "This question needs a title and at least one answer!" : "Необходимо задать название вопроса и не менее одного варианта ответа.", "Multiple choice" : "Один из списка", "Short answer" : "Короткий ответ", "People can enter a short answer" : "Люди могут написать короткий ответ", diff --git a/l10n/sl.js b/l10n/sl.js index 733ae83..676528b 100644 --- a/l10n/sl.js +++ b/l10n/sl.js @@ -19,6 +19,9 @@ OC.L10N.register( "Cannot copy, please copy the link manually" : "Povezave ni mogoče kopirati. Storite to ročno.", "Copy share link" : "Kopiraj povezavo souporabe", "Are you sure you want to delete {title}?" : "Ali ste prepričani, da želite izbrisati vprašalnik {title}?", + "Error while deleting {title}" : "Napaka med brisanjem {title}", + "An answer for the {index} option" : "Odgovor za možnost {index}", + "Answer number {index}" : "Odgovor številka {index}", "Delete answer" : "Izbriši odgovor", "Error while saving the answer" : "Prišlo je do napake med shranjevanjem odgovora", "Question number {index}" : "Vprašanje številka {index}", @@ -26,11 +29,13 @@ OC.L10N.register( "Title of question number {index}" : "Naslov vprašanja številka {index}", "Required" : "Zahtevano", "Delete question" : "Izbriši vprašanje", + "This question needs a title!" : "To vprašanje zahteva naslov", "Add a new answer" : "Dodaj nov odgovor", "There was an issue deleting this option" : "Prišlo je do napake med brisanjem možnosti", "A long answer for the question “{text}”" : "Dolg odgovor na vprašanje »{text}«", "A short answer for the question “{text}”" : "Kratek odgovor na vprašanje »{text}«", "Delete this response" : "Izbriši ta odziv", + "No response" : "Ni odziva", "User or group name …" : "Ime uporabnika oziroma skupine ...", "No recommendations. Start typing." : "Ni priporočil; začnite vpisovati", "Searching …" : "Poteka iskanje ...", @@ -40,12 +45,14 @@ OC.L10N.register( "Toggle settings" : "Preklopi nastavitve", "Form title" : "Naslov vprašalnika", "Description" : "Opis", + "Required questions" : "Zahtevana vprašanja", "Add a question" : "Dodaj vprašanje", "There was an error while adding the new question" : "Prišlo je do napake med dodajanjem novega vprašanja", "There was an error while removing the question" : "Prišlo je do napake med odstranjevanjem vprašanja", "Error while saving form" : "Prišlo je do napake med shranjevanjem vprašalnika", "Loading responses …" : "Poteka nalaganje odzivov ...", "Back to questions" : "Nazaj na vprašanja", + "{amount} responses" : "odzivov {amount}", "Summary" : "Povzetek", "Options" : "Možnosti", "Export to CSV" : "Izvozi v datoteko CSV", diff --git a/l10n/sl.json b/l10n/sl.json index c0ad1de..9c4f34c 100644 --- a/l10n/sl.json +++ b/l10n/sl.json @@ -17,6 +17,9 @@ "Cannot copy, please copy the link manually" : "Povezave ni mogoče kopirati. Storite to ročno.", "Copy share link" : "Kopiraj povezavo souporabe", "Are you sure you want to delete {title}?" : "Ali ste prepričani, da želite izbrisati vprašalnik {title}?", + "Error while deleting {title}" : "Napaka med brisanjem {title}", + "An answer for the {index} option" : "Odgovor za možnost {index}", + "Answer number {index}" : "Odgovor številka {index}", "Delete answer" : "Izbriši odgovor", "Error while saving the answer" : "Prišlo je do napake med shranjevanjem odgovora", "Question number {index}" : "Vprašanje številka {index}", @@ -24,11 +27,13 @@ "Title of question number {index}" : "Naslov vprašanja številka {index}", "Required" : "Zahtevano", "Delete question" : "Izbriši vprašanje", + "This question needs a title!" : "To vprašanje zahteva naslov", "Add a new answer" : "Dodaj nov odgovor", "There was an issue deleting this option" : "Prišlo je do napake med brisanjem možnosti", "A long answer for the question “{text}”" : "Dolg odgovor na vprašanje »{text}«", "A short answer for the question “{text}”" : "Kratek odgovor na vprašanje »{text}«", "Delete this response" : "Izbriši ta odziv", + "No response" : "Ni odziva", "User or group name …" : "Ime uporabnika oziroma skupine ...", "No recommendations. Start typing." : "Ni priporočil; začnite vpisovati", "Searching …" : "Poteka iskanje ...", @@ -38,12 +43,14 @@ "Toggle settings" : "Preklopi nastavitve", "Form title" : "Naslov vprašalnika", "Description" : "Opis", + "Required questions" : "Zahtevana vprašanja", "Add a question" : "Dodaj vprašanje", "There was an error while adding the new question" : "Prišlo je do napake med dodajanjem novega vprašanja", "There was an error while removing the question" : "Prišlo je do napake med odstranjevanjem vprašanja", "Error while saving form" : "Prišlo je do napake med shranjevanjem vprašalnika", "Loading responses …" : "Poteka nalaganje odzivov ...", "Back to questions" : "Nazaj na vprašanja", + "{amount} responses" : "odzivov {amount}", "Summary" : "Povzetek", "Options" : "Možnosti", "Export to CSV" : "Izvozi v datoteko CSV", diff --git a/l10n/sr.js b/l10n/sr.js index b86f6b9..16a703c 100644 --- a/l10n/sr.js +++ b/l10n/sr.js @@ -19,6 +19,10 @@ OC.L10N.register( "Cannot copy, please copy the link manually" : "Не могу да копирам, копирајте везу ручно", "Copy share link" : "Копирај везу дељења", "Are you sure you want to delete {title}?" : "Да ли сте сигурни да желите да обришете {title}?", + "Error while deleting {title}" : "Грешка приликом брисања {title}", + "An answer for the {index} option" : "Одговор за опцију {index}", + "Answer number {index}" : "Одговор број {index}", + "Delete answer" : "Обриши одговор", "Required" : "Обавезно", "No recommendations. Start typing." : "Нема препорука. Започните куцање.", "Searching …" : "Тражим…", diff --git a/l10n/sr.json b/l10n/sr.json index 3d8cd6b..6f9369e 100644 --- a/l10n/sr.json +++ b/l10n/sr.json @@ -17,6 +17,10 @@ "Cannot copy, please copy the link manually" : "Не могу да копирам, копирајте везу ручно", "Copy share link" : "Копирај везу дељења", "Are you sure you want to delete {title}?" : "Да ли сте сигурни да желите да обришете {title}?", + "Error while deleting {title}" : "Грешка приликом брисања {title}", + "An answer for the {index} option" : "Одговор за опцију {index}", + "Answer number {index}" : "Одговор број {index}", + "Delete answer" : "Обриши одговор", "Required" : "Обавезно", "No recommendations. Start typing." : "Нема препорука. Започните куцање.", "Searching …" : "Тражим…", diff --git a/l10n/uk.js b/l10n/uk.js index e972375..0ce7c39 100644 --- a/l10n/uk.js +++ b/l10n/uk.js @@ -14,6 +14,7 @@ OC.L10N.register( "Settings" : "Налаштування", "Set expiration date" : "Встановити термін дії", "Expiration date" : "Термін дії", - "Submit" : "Гаразд" + "Submit" : "Гаразд", + "Checkboxes" : "Прапорці" }, "nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/l10n/uk.json b/l10n/uk.json index 828133c..ea3614b 100644 --- a/l10n/uk.json +++ b/l10n/uk.json @@ -12,6 +12,7 @@ "Settings" : "Налаштування", "Set expiration date" : "Встановити термін дії", "Expiration date" : "Термін дії", - "Submit" : "Гаразд" + "Submit" : "Гаразд", + "Checkboxes" : "Прапорці" },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" } \ No newline at end of file diff --git a/lib/Controller/ApiController.php b/lib/Controller/ApiController.php index 4a45592..3bd06d0 100644 --- a/lib/Controller/ApiController.php +++ b/lib/Controller/ApiController.php @@ -42,7 +42,9 @@ use OCA\Forms\Service\FormsService; use OCP\AppFramework\Controller; use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Db\IMapperException; -use OCP\AppFramework\Http; +use OCP\AppFramework\Http\DataResponse; +use OCP\AppFramework\OCS\OCSBadRequestException; +use OCP\AppFramework\OCS\OCSForbiddenException; use OCP\IL10N; use OCP\ILogger; use OCP\IRequest; @@ -84,6 +86,9 @@ class ApiController extends Controller { /** @var FormsService */ private $formsService; + /** @var ISecureRandom */ + private $secureRandom; + public function __construct(string $appName, IRequest $request, IUserSession $userSession, @@ -95,7 +100,8 @@ class ApiController extends Controller { OptionMapper $optionMapper, ILogger $logger, IL10N $l10n, - FormsService $formsService) { + FormsService $formsService, + ISecureRandom $secureRandom) { parent::__construct($appName, $request); $this->appName = $appName; $this->userManager = $userManager; @@ -109,6 +115,7 @@ class ApiController extends Controller { $this->logger = $logger; $this->l10n = $l10n; $this->formsService = $formsService; + $this->secureRandom = $secureRandom; $this->currentUser = $userSession->getUser(); } @@ -118,7 +125,7 @@ class ApiController extends Controller { * * Read Form-List only with necessary information for Listing. */ - public function getForms(): Http\JSONResponse { + public function getForms(): DataResponse { $forms = $this->formMapper->findAllByOwnerId($this->currentUser->getUID()); $result = []; @@ -132,44 +139,51 @@ class ApiController extends Controller { ]; } - return new Http\JSONResponse($result); + return new DataResponse($result); } /** * @NoAdminRequired * - * * Read all information to edit a Form (form, questions, options, except submissions/answers). + * + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ - public function getForm(int $id): Http\JSONResponse { + public function getForm(int $id): DataResponse { try { $form = $this->formsService->getForm($id); } catch (IMapperException $e) { $this->logger->debug('Could not find form'); - return new Http\JSONResponse([], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException(); } if (!$this->formsService->hasUserAccess($id)) { $this->logger->debug('User has no permissions to get this form'); - return new Http\JSONResponse([], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException(); } - return new Http\JSONResponse($form); + return new DataResponse($form); } /** * @NoAdminRequired + * * Create a new Form and return the Form to edit. + * + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ - public function newForm(): Http\JSONResponse { + public function newForm(): DataResponse { $form = new Form(); $form->setOwnerId($this->currentUser->getUID()); $form->setCreated(time()); - $form->setHash(\OC::$server->getSecureRandom()->generate( + $form->setHash($this->secureRandom->generate( 16, ISecureRandom::CHAR_HUMAN_READABLE )); + $form->setTitle(''); $form->setDescription(''); $form->setAccess([ @@ -183,7 +197,7 @@ class ApiController extends Controller { $result = $form->read(); $result['questions'] = []; - return new Http\JSONResponse($result); + return new DataResponse($result); } /** @@ -193,8 +207,10 @@ class ApiController extends Controller { * * @param int $id FormId of form to update * @param array $keyValuePairs Array of key=>value pairs to update. + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ - public function updateForm(int $id, array $keyValuePairs): Http\JSONResponse { + public function updateForm(int $id, array $keyValuePairs): DataResponse { $this->logger->debug('Updating form: FormId: {id}, values: {keyValuePairs}', [ 'id' => $id, 'keyValuePairs' => $keyValuePairs @@ -204,12 +220,12 @@ class ApiController extends Controller { $form = $this->formMapper->findById($id); } catch (IMapperException $e) { $this->logger->debug('Could not find form'); - return new Http\JSONResponse([], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException(); } if ($form->getOwnerId() !== $this->currentUser->getUID()) { $this->logger->debug('This form is not owned by the current user'); - return new Http\JSONResponse([], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException(); } // Make sure we only store id @@ -224,7 +240,7 @@ class ApiController extends Controller { } } catch (Exception $e) { $this->logger->debug('Malformed access'); - return new Http\JSONResponse(['message' => 'Malformed access'], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException('Malformed access'); } // Create FormEntity with given Params & Id. @@ -234,13 +250,19 @@ class ApiController extends Controller { // Update changed Columns in Db. $this->formMapper->update($form); - return new Http\JSONResponse($form->getId()); + return new DataResponse($form->getId()); } /** * @NoAdminRequired + * + * Delete a form + * + * @param int $id the form id + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ - public function deleteForm(int $id): Http\JSONResponse { + public function deleteForm(int $id): DataResponse { $this->logger->debug('Delete Form: {id}', [ 'id' => $id, ]); @@ -249,12 +271,12 @@ class ApiController extends Controller { $form = $this->formMapper->findById($id); } catch (IMapperException $e) { $this->logger->debug('Could not find form'); - return new Http\JSONResponse([], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException(); } if ($form->getOwnerId() !== $this->currentUser->getUID()) { $this->logger->debug('This form is not owned by the current user'); - return new Http\JSONResponse([], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException(); } // Delete Submissions(incl. Answers), Questions(incl. Options) and Form. @@ -262,13 +284,21 @@ class ApiController extends Controller { $this->questionMapper->deleteByForm($id); $this->formMapper->delete($form); - return new Http\JSONResponse($id); + return new DataResponse($id); } /** * @NoAdminRequired + * + * Add a new question + * + * @param int $formId the form id + * @param string $type the new question type + * @param string $text the new question title + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ - public function newQuestion(int $formId, string $type, string $text): Http\JSONResponse { + public function newQuestion(int $formId, string $type, string $text = ''): DataResponse { $this->logger->debug('Adding new question: formId: {formId}, type: {type}, text: {text}', [ 'formId' => $formId, 'type' => $type, @@ -277,19 +307,19 @@ class ApiController extends Controller { if (array_search($type, Question::TYPES) === false) { $this->logger->debug('Invalid type'); - return new Http\JSONResponse(['message' => 'Invalid type'], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException('Invalid type'); } try { $form = $this->formMapper->findById($formId); } catch (IMapperException $e) { $this->logger->debug('Could not find form'); - return new Http\JSONResponse(['message' => 'Could not find form'], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException(); } if ($form->getOwnerId() !== $this->currentUser->getUID()) { $this->logger->debug('This form is not owned by the current user'); - return new Http\JSONResponse([], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException(); } // Retrieve all active questions sorted by Order. Takes the order of the last array-element and adds one. @@ -314,16 +344,20 @@ class ApiController extends Controller { $response = $question->read(); $response['options'] = []; - return new Http\JSONResponse($response); + return new DataResponse($response); } /** * @NoAdminRequired + * * Updates the Order of all Questions of a Form. + * * @param int $formId Id of the form to reorder * @param int[] $newOrder Array of Question-Ids in new order. + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ - public function reorderQuestions(int $formId, array $newOrder): Http\JSONResponse { + public function reorderQuestions(int $formId, array $newOrder): DataResponse { $this->logger->debug('Reordering Questions on Form {formId} as Question-Ids {newOrder}', [ 'formId' => $formId, 'newOrder' => $newOrder @@ -333,25 +367,25 @@ class ApiController extends Controller { $form = $this->formMapper->findById($formId); } catch (IMapperException $e) { $this->logger->debug('Could not find form'); - return new Http\JSONResponse(['message' => 'Could not find form'], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException(); } if ($form->getOwnerId() !== $this->currentUser->getUID()) { $this->logger->debug('This form is not owned by the current user'); - return new Http\JSONResponse([], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException(); } // Check if array contains duplicates if (array_unique($newOrder) !== $newOrder) { $this->logger->debug('The given Array contains duplicates'); - return new Http\JSONResponse(['message' => 'The given Array contains duplicates'], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException('The given Array contains duplicates'); } // Check if all questions are given in Array. $questions = $this->questionMapper->findByForm($formId); if (sizeof($questions) !== sizeof($newOrder)) { $this->logger->debug('The length of the given array does not match the number of stored questions'); - return new Http\JSONResponse(['message' => 'The length of the given array does not match the number of stored questions'], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException('The length of the given array does not match the number of stored questions'); } $questions = []; // Clear Array of Entities @@ -365,7 +399,7 @@ class ApiController extends Controller { $this->logger->debug('Could not find question. Id:{id}', [ 'id' => $questionId ]); - return new Http\JSONResponse([], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException(); } // Abort if a question is not part of the Form. @@ -373,7 +407,7 @@ class ApiController extends Controller { $this->logger->debug('This Question is not part of the given Form: questionId: {questionId}', [ 'questionId' => $questionId ]); - return new Http\JSONResponse([], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException(); } // Abort if a question is already marked as deleted (order==0) @@ -382,7 +416,7 @@ class ApiController extends Controller { $this->logger->debug('This Question has already been marked as deleted: Id: {id}', [ 'id' => $questions[$arrayKey]->getId() ]); - return new Http\JSONResponse([], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException(); } // Only set order, if it changed. @@ -401,17 +435,21 @@ class ApiController extends Controller { ]; } - return new Http\JSONResponse($response); + return new DataResponse($response); } /** * @NoAdminRequired + * * Writes the given key-value pairs into Database. * Key 'order' should only be changed by reorderQuestions() and is not allowed here. + * * @param int $id QuestionId of question to update * @param array $keyValuePairs Array of key=>value pairs to update. + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ - public function updateQuestion(int $id, array $keyValuePairs): Http\JSONResponse { + public function updateQuestion(int $id, array $keyValuePairs): DataResponse { $this->logger->debug('Updating question: questionId: {id}, values: {keyValuePairs}', [ 'id' => $id, 'keyValuePairs' => $keyValuePairs @@ -422,17 +460,17 @@ class ApiController extends Controller { $form = $this->formMapper->findById($question->getFormId()); } catch (IMapperException $e) { $this->logger->debug('Could not find form or question'); - return new Http\JSONResponse(['message' => 'Could not find form or question'], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException('Could not find form or question'); } if ($form->getOwnerId() !== $this->currentUser->getUID()) { $this->logger->debug('This form is not owned by the current user'); - return new Http\JSONResponse([], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException(); } if (array_key_exists('order', $keyValuePairs)) { $this->logger->debug('Key \'order\' is not allowed on updateQuestion. Please use reorderQuestions() to change order.'); - return new Http\JSONResponse(['message' => 'Please use reorderQuestions() to change order'], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException('Please use reorderQuestions() to change order'); } // Create QuestionEntity with given Params & Id. @@ -442,13 +480,19 @@ class ApiController extends Controller { // Update changed Columns in Db. $this->questionMapper->update($question); - return new Http\JSONResponse($question->getId()); + return new DataResponse($question->getId()); } /** * @NoAdminRequired + * + * Delete a question + * + * @param int $id the question id + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ - public function deleteQuestion(int $id): Http\JSONResponse { + public function deleteQuestion(int $id): DataResponse { $this->logger->debug('Mark question as deleted: {id}', [ 'id' => $id, ]); @@ -458,12 +502,12 @@ class ApiController extends Controller { $form = $this->formMapper->findById($question->getFormId()); } catch (IMapperException $e) { $this->logger->debug('Could not find form or question'); - return new Http\JSONResponse(['message' => 'Could not find form or question'], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException('Could not find form or question'); } if ($form->getOwnerId() !== $this->currentUser->getUID()) { $this->logger->debug('This form is not owned by the current user'); - return new Http\JSONResponse([], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException(); } // Store Order of deleted Question @@ -483,13 +527,20 @@ class ApiController extends Controller { } } - return new Http\JSONResponse($id); + return new DataResponse($id); } /** * @NoAdminRequired + * + * Add a new option to a question + * + * @param int $questionId the question id + * @param string $text the new option text + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ - public function newOption(int $questionId, string $text): Http\JSONResponse { + public function newOption(int $questionId, string $text): DataResponse { $this->logger->debug('Adding new option: questionId: {questionId}, text: {text}', [ 'questionId' => $questionId, 'text' => $text, @@ -500,12 +551,12 @@ class ApiController extends Controller { $form = $this->formMapper->findById($question->getFormId()); } catch (IMapperException $e) { $this->logger->debug('Could not find form or question'); - return new Http\JSONResponse(['message' => 'Could not find form or question'], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException('Could not find form or question'); } if ($form->getOwnerId() !== $this->currentUser->getUID()) { $this->logger->debug('This form is not owned by the current user'); - return new Http\JSONResponse([], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException(); } $option = new Option(); @@ -515,19 +566,22 @@ class ApiController extends Controller { $option = $this->optionMapper->insert($option); - return new Http\JSONResponse([ + return new DataResponse([ 'id' => $option->getId() ]); } /** * @NoAdminRequired + * * Writes the given key-value pairs into Database. * * @param int $id OptionId of option to update * @param array $keyValuePairs Array of key=>value pairs to update. + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ - public function updateOption(int $id, array $keyValuePairs): Http\JSONResponse { + public function updateOption(int $id, array $keyValuePairs): DataResponse { $this->logger->debug('Updating option: option: {id}, values: {keyValuePairs}', [ 'id' => $id, 'keyValuePairs' => $keyValuePairs @@ -539,12 +593,12 @@ class ApiController extends Controller { $form = $this->formMapper->findById($question->getFormId()); } catch (IMapperException $e) { $this->logger->debug('Could not find option, question or form'); - return new Http\JSONResponse(['message' => 'Could not find option, question or form'], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException('Could not find option, question or form'); } if ($form->getOwnerId() !== $this->currentUser->getUID()) { $this->logger->debug('This form is not owned by the current user'); - return new Http\JSONResponse([], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException(); } // Create OptionEntity with given Params & Id. @@ -554,13 +608,19 @@ class ApiController extends Controller { // Update changed Columns in Db. $this->optionMapper->update($option); - return new Http\JSONResponse($option->getId()); + return new DataResponse($option->getId()); } /** * @NoAdminRequired + * + * Delete an option + * + * @param int $id the option id + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ - public function deleteOption(int $id): Http\JSONResponse { + public function deleteOption(int $id): DataResponse { $this->logger->debug('Deleting option: {id}', [ 'id' => $id ]); @@ -571,21 +631,27 @@ class ApiController extends Controller { $form = $this->formMapper->findById($question->getFormId()); } catch (IMapperException $e) { $this->logger->debug('Could not find form or option'); - return new Http\JSONResponse(['message' => 'Could not find form or option'], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException('Could not find form or option'); } if ($form->getOwnerId() !== $this->currentUser->getUID()) { $this->logger->debug('This form is not owned by the current user'); - return new Http\JSONResponse([], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException(); } $this->optionMapper->delete($option); - return new Http\JSONResponse($id); + return new DataResponse($id); } /** * @NoAdminRequired + * + * Get all the answers of a given submission + * + * @param int $submissionId the submission id + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ private function getAnswers(int $submissionId): array { try { @@ -605,24 +671,30 @@ class ApiController extends Controller { /** * @NoAdminRequired + * + * Get all the submissions of a given form + * + * @param string $hash the form hash + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ - public function getSubmissions(string $hash): Http\JSONResponse { + public function getSubmissions(string $hash): DataResponse { try { $form = $this->formMapper->findByHash($hash); } catch (IMapperException $e) { $this->logger->debug('Could not find form'); - return new Http\JSONResponse(['message' => 'Could not find form'], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException(); } if ($form->getOwnerId() !== $this->currentUser->getUID()) { $this->logger->debug('This form is not owned by the current user'); - return new Http\JSONResponse([], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException(); } try { $submissionEntities = $this->submissionMapper->findByForm($form->getId()); } catch (DoesNotExistException $e) { - //Just ignore, if no Data. Returns empty Submissions-Array + // Just ignore, if no Data. Returns empty Submissions-Array } $submissions = []; @@ -658,7 +730,7 @@ class ApiController extends Controller { 'questions' => $questions, ]; - return new Http\JSONResponse($response); + return new DataResponse($response); } /** @@ -666,10 +738,13 @@ class ApiController extends Controller { * @PublicPage * * Process a new submission - * @param int $formId + * + * @param int $formId the form id * @param array $answers [question_id => arrayOfString] + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ - public function insertSubmission(int $formId, array $answers): Http\JSONResponse { + public function insertSubmission(int $formId, array $answers): DataResponse { $this->logger->debug('Inserting submission: formId: {formId}, answers: {answers}', [ 'formId' => $formId, 'answers' => $answers, @@ -680,22 +755,22 @@ class ApiController extends Controller { $questions = $this->formsService->getQuestions($formId); } catch (IMapperException $e) { $this->logger->debug('Could not find form'); - return new Http\JSONResponse(['message' => 'Could not find form'], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException(); } // Does the user have access to the form if (!$this->formsService->hasUserAccess($form->getId())) { - return new Http\JSONResponse(['message' => 'Not allowed to access this form'], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException('Not allowed to access this form'); } // Not allowed if form expired. Expires is '0' if the form does not expire. if ($form->getExpires() && $form->getExpires() < time()) { - return new Http\JSONResponse(['message' => 'This form is no longer taking answers'], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException('This form is no longer taking answers'); } // Does the user have permissions to submit if (!$this->formsService->canSubmit($form->getId())) { - return new Http\JSONResponse(['message' => 'Already submitted'], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException('Already submitted'); } // Create Submission @@ -753,13 +828,19 @@ class ApiController extends Controller { } } - return new Http\JSONResponse([]); + return new DataResponse(); } /** * @NoAdminRequired + * + * Delete a specific submission + * + * @param int $id the submission id + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ - public function deleteSubmission(int $id): Http\JSONResponse { + public function deleteSubmission(int $id): DataResponse { $this->logger->debug('Delete Submission: {id}', [ 'id' => $id, ]); @@ -769,24 +850,30 @@ class ApiController extends Controller { $form = $this->formMapper->findById($submission->getFormId()); } catch (IMapperException $e) { $this->logger->debug('Could not find form or submission'); - return new Http\JSONResponse([], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException(); } if ($form->getOwnerId() !== $this->currentUser->getUID()) { $this->logger->debug('This form is not owned by the current user'); - return new Http\JSONResponse([], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException(); } // Delete submission (incl. Answers) $this->submissionMapper->delete($submission); - return new Http\JSONResponse($id); + return new DataResponse($id); } /** * @NoAdminRequired + * + * Delete all submissions of a specified form + * + * @param int $formId the form id + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ - public function deleteAllSubmissions(int $formId): Http\JSONResponse { + public function deleteAllSubmissions(int $formId): DataResponse { $this->logger->debug('Delete all submissions to form: {formId}', [ 'formId' => $formId, ]); @@ -795,17 +882,17 @@ class ApiController extends Controller { $form = $this->formMapper->findById($formId); } catch (IMapperException $e) { $this->logger->debug('Could not find form'); - return new Http\JSONResponse([], Http::STATUS_BAD_REQUEST); + throw new OCSBadRequestException(); } if ($form->getOwnerId() !== $this->currentUser->getUID()) { $this->logger->debug('This form is not owned by the current user'); - return new Http\JSONResponse([], Http::STATUS_FORBIDDEN); + throw new OCSForbiddenException(); } // Delete all submissions (incl. Answers) $this->submissionMapper->deleteByForm($formId); - return new Http\JSONResponse($formId); + return new DataResponse($formId); } } diff --git a/lib/Db/Question.php b/lib/Db/Question.php index 26549d0..16dbeb6 100644 --- a/lib/Db/Question.php +++ b/lib/Db/Question.php @@ -53,7 +53,9 @@ class Question extends Entity { 'long', 'multiple', 'multiple_unique', - 'dropdown' + 'dropdown', + 'date', + 'datetime', ]; public function __construct() { diff --git a/package-lock.json b/package-lock.json index 5265e8f..43de27c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,20 +1,20 @@ { "name": "forms", - "version": "2.0.2", + "version": "2.0.4", "lockfileVersion": 1, "requires": true, "dependencies": { "@babel/cli": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.10.4.tgz", - "integrity": "sha512-xX99K4V1BzGJdQANK5cwK+EpF1vP9gvqhn+iWvG+TubCjecplW7RSQimJ2jcCvu6fnK5pY6mZMdu6EWTj32QVA==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.11.6.tgz", + "integrity": "sha512-+w7BZCvkewSmaRM6H4L2QM3RL90teqEIHDIFXAmrW33+0jhlymnDAEdqVeCZATvxhQuio1ifoGVlJJbIiH9Ffg==", "requires": { "chokidar": "^2.1.8", "commander": "^4.0.1", "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.0.0", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "make-dir": "^2.1.0", "slash": "^2.0.0", "source-map": "^0.5.0" @@ -52,18 +52,18 @@ } }, "@babel/core": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.0.tgz", - "integrity": "sha512-mkLq8nwaXmDtFmRkQ8ED/eA2CnVw4zr7dCztKalZXBvdK5EeNUAesrrwUqjQEzFgomJssayzB0aqlOsP1vGLqg==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", + "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", + "@babel/generator": "^7.11.6", "@babel/helper-module-transforms": "^7.11.0", "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.0", + "@babel/parser": "^7.11.5", "@babel/template": "^7.10.4", - "@babel/traverse": "^7.11.0", - "@babel/types": "^7.11.0", + "@babel/traverse": "^7.11.5", + "@babel/types": "^7.11.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", @@ -83,11 +83,11 @@ } }, "@babel/generator": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", - "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", + "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", "requires": { - "@babel/types": "^7.11.0", + "@babel/types": "^7.11.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" } @@ -110,20 +110,6 @@ "@babel/types": "^7.10.4" } }, - "@babel/helper-module-transforms": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", - "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", - "lodash": "^4.17.19" - } - }, "@babel/helper-split-export-declaration": { "version": "7.11.0", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", @@ -148,9 +134,9 @@ } }, "@babel/parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz", - "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw==" + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, "@babel/template": { "version": "7.10.4", @@ -163,25 +149,25 @@ } }, "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", + "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", + "@babel/generator": "^7.11.5", "@babel/helper-function-name": "^7.10.4", "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", + "@babel/parser": "^7.11.5", + "@babel/types": "^7.11.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -229,9 +215,9 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -255,9 +241,9 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -434,9 +420,9 @@ } }, "@babel/parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz", - "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw==" + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, "@babel/template": { "version": "7.10.4", @@ -449,9 +435,9 @@ } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -461,126 +447,27 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", - "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", + "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", "requires": { - "@babel/traverse": "^7.10.4", "@babel/types": "^7.10.4" }, "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/generator": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", - "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", - "requires": { - "@babel/types": "^7.11.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", - "requires": { - "@babel/types": "^7.11.0" - } - }, "@babel/helper-validator-identifier": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz", - "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw==" - }, - "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "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==" } } }, @@ -618,9 +505,9 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -790,14 +677,13 @@ } }, "@babel/helper-remap-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", - "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", + "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-wrap-function": "^7.10.4", "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", "@babel/types": "^7.10.4" }, "dependencies": { @@ -809,42 +695,6 @@ "@babel/highlight": "^7.10.4" } }, - "@babel/generator": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", - "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", - "requires": { - "@babel/types": "^7.11.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", - "requires": { - "@babel/types": "^7.11.0" - } - }, "@babel/helper-validator-identifier": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", @@ -861,9 +711,9 @@ } }, "@babel/parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz", - "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw==" + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, "@babel/template": { "version": "7.10.4", @@ -875,44 +725,15 @@ "@babel/types": "^7.10.4" } }, - "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "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==" } } }, @@ -1132,9 +953,9 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -1178,11 +999,11 @@ } }, "@babel/generator": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", - "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", + "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", "requires": { - "@babel/types": "^7.11.0", + "@babel/types": "^7.11.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" } @@ -1229,9 +1050,9 @@ } }, "@babel/parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz", - "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw==" + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, "@babel/template": { "version": "7.10.4", @@ -1244,25 +1065,25 @@ } }, "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", + "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", + "@babel/generator": "^7.11.5", "@babel/helper-function-name": "^7.10.4", "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", + "@babel/parser": "^7.11.5", + "@babel/types": "^7.11.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -1303,11 +1124,11 @@ } }, "@babel/generator": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", - "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", + "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", "requires": { - "@babel/types": "^7.11.0", + "@babel/types": "^7.11.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" } @@ -1354,9 +1175,9 @@ } }, "@babel/parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz", - "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw==" + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, "@babel/template": { "version": "7.10.4", @@ -1369,25 +1190,25 @@ } }, "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", + "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", + "@babel/generator": "^7.11.5", "@babel/helper-function-name": "^7.10.4", "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", + "@babel/parser": "^7.11.5", + "@babel/types": "^7.11.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -1831,9 +1652,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.5.tgz", - "integrity": "sha512-6Ycw3hjpQti0qssQcA6AMSFDHeNJ++R6dIMnpRqUjFeBBTmTDPa8zgF90OVfTvAo11mXZTlVUViY1g8ffrURLg==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", + "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1915,9 +1736,9 @@ } }, "@babel/parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz", - "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw==" + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, "@babel/template": { "version": "7.10.4", @@ -1930,9 +1751,9 @@ } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -2089,9 +1910,9 @@ } }, "@babel/parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz", - "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw==" + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, "@babel/template": { "version": "7.10.4", @@ -2104,9 +1925,9 @@ } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -2281,9 +2102,9 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -2409,19 +2230,114 @@ } }, "@babel/plugin-transform-typescript": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.4.tgz", - "integrity": "sha512-3WpXIKDJl/MHoAN0fNkSr7iHdUMHZoppXjf2HJ9/ed5Xht5wNIsXllJXdityKOxeA3Z8heYRb1D3p2H5rfCdPw==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz", + "integrity": "sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-create-class-features-plugin": "^7.10.5", "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-typescript": "^7.10.4" }, "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", + "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", + "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "requires": { + "@babel/types": "^7.11.0" + } + }, "@babel/helper-plugin-utils": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } } } }, @@ -2478,9 +2394,9 @@ } }, "@babel/preset-env": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz", - "integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.5.tgz", + "integrity": "sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA==", "requires": { "@babel/compat-data": "^7.11.0", "@babel/helper-compilation-targets": "^7.10.4", @@ -2544,7 +2460,7 @@ "@babel/plugin-transform-unicode-escapes": "^7.10.4", "@babel/plugin-transform-unicode-regex": "^7.10.4", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.11.0", + "@babel/types": "^7.11.5", "browserslist": "^4.12.0", "core-js-compat": "^3.6.2", "invariant": "^2.2.2", @@ -2563,9 +2479,9 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -2575,9 +2491,9 @@ } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -2603,9 +2519,9 @@ } }, "@babel/runtime": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.0.tgz", - "integrity": "sha512-qArkXsjJq7H+T86WrIFV0Fnu/tNOkZ4cgXmjkzAu3b/58D5mFIO8JH/y77t7C9q0OdDRdh9s7Ue5GasYssxtXw==", + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", + "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -2718,16 +2634,16 @@ } }, "@nextcloud/axios": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-1.3.3.tgz", - "integrity": "sha512-kCGN+0QqrCzTEDsCTpHY2Ze5PGncspC37OOMOYejmGxp+/a2FTg92yJoI5Xhk2y/xJciwVpX1NUWatxBfxAlWw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-7ePHUve3++aB0Ma+lc68B/wRn09FmrPFaFKpdUygIxak89lRvixqLc+98AdLtGPQegof+dKTIwwnuNTy0E95HA==", "requires": { "@babel/cli": "^7.8.4", "@babel/core": "^7.9.0", "@babel/preset-env": "^7.9.0", "@babel/preset-typescript": "^7.9.0", "@nextcloud/auth": "^1.2.2", - "axios": "^0.19.2", + "axios": "^0.20.0", "core-js": "^3.6.4" } }, @@ -2737,13 +2653,24 @@ "integrity": "sha512-f+sKpdLZXkODV+OY39K1M+Spmd4RgxmtEXmNn4Bviv4R7uBFHXuw+JX9ZdfDeOryfHjJ/TRQxQEp0GMpBwZFUw==", "dev": true }, - "@nextcloud/dialogs": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-1.4.0.tgz", - "integrity": "sha512-Rx4x+al/sy+vXu2p3qvEuVeeUDm5JVwa84S21Hxa+pDV3Pd93E2dJGWlZ6h++5fSXbee1sDX9t957B20kYiP3Q==", + "@nextcloud/capabilities": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@nextcloud/capabilities/-/capabilities-1.0.2.tgz", + "integrity": "sha512-HR5vnT2GKTvoQla/WdP+V0/MD1eAGUNWCM0QXVGXQ0TCHb0AORYYMdEQafROsjNSH2kriArFnS/l3YZQrUa9yA==", "requires": { + "@nextcloud/initial-state": "^1.1.2", + "core-js": "^3.6.4" + } + }, + "@nextcloud/dialogs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-2.0.1.tgz", + "integrity": "sha512-Bme8vcs8n4XT5spBgkDEv1z9zNOE23AIbr5jF1WJ1A2XNMNj5Zvy29RosIh0k7H+1lN0PlU38u+eMV1Ets3E4A==", + "requires": { + "@nextcloud/l10n": "^1.3.0", + "@nextcloud/typings": "^0.2.2", "core-js": "^3.6.4", - "toastify-js": "^1.7.0" + "toastify-js": "^1.9.1" } }, "@nextcloud/eslint-config": { @@ -2795,9 +2722,9 @@ } }, "@nextcloud/l10n": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-1.3.0.tgz", - "integrity": "sha512-hGk3ag9TU4cb0+ld/wziEsE+CWaS7Rpj6Y6dPv0QVfnqQ7jFCKQ62VHnuk8pFQHkmKMg3HGxkHuojumbukm42w==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-1.4.1.tgz", + "integrity": "sha512-19LPGmozfuLCeO4xRS9Y1Av6DquqVgBH2kQyWL6dJ49AynMGN9uVOrNv3GYoqULzEcHoetMAt+8PLTdE6zKbvA==", "requires": { "core-js": "^3.6.4", "node-gettext": "^3.0.0" @@ -2850,9 +2777,9 @@ } }, "@nextcloud/router": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-1.1.0.tgz", - "integrity": "sha512-iPHpMG9kajw8D+niR4x/d8s/R9RyUNveDsNURgcZryIjIXhAzSZZra55+Y3yInDmLhCFwboj9ZcC/2S6CzoKYA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-1.2.0.tgz", + "integrity": "sha512-kn9QsL9LuhkIMaSSgdiqRL3SZ6PatuAjXUiyq343BbSnI99Oc5eJH8kU6cT2AHije7wKy/tK8Xe3VQuVO32SZQ==", "requires": { "core-js": "^3.6.4" } @@ -2866,20 +2793,22 @@ } }, "@nextcloud/vue": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-2.3.0.tgz", - "integrity": "sha512-6uf7Hu4Obaet7BOs9H/Ng63xAYqks9CL7hsOOHGUzWFYrPPBxgt79iD9OOPpPfJuLQ3Nnuibh942X1QreCBRkw==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-2.6.5.tgz", + "integrity": "sha512-ZeY4n/TJ0cRu/iDgLGCwFSksvStMO+fAeJfANwjp52LjrpFXuJjxqG8ZKBdr7zJewj/yTOq6k0wMDnyBFTgnXA==", "requires": { "@nextcloud/auth": "^1.2.3", "@nextcloud/axios": "^1.3.2", - "@nextcloud/dialogs": "^1.3.0", + "@nextcloud/capabilities": "^1.0.2", + "@nextcloud/dialogs": "^2.0.1", "@nextcloud/event-bus": "^1.1.4", "@nextcloud/l10n": "^1.2.3", "@nextcloud/router": "^1.0.2", "core-js": "^3.6.5", "debounce": "1.2.0", - "emoji-mart-vue-fast": "^7.0.2", + "emoji-mart-vue-fast": "^7.0.4", "hammerjs": "^2.0.8", + "linkifyjs": "~2.1.9", "md5": "^2.2.1", "regenerator-runtime": "^0.13.5", "v-click-outside": "^3.0.1", @@ -2888,13 +2817,13 @@ "vue-color": "^2.7.1", "vue-multiselect": "^2.1.6", "vue-visible": "^1.0.2", - "vue2-datepicker": "^3.4.1" + "vue2-datepicker": "^3.6.2" } }, "@nextcloud/webpack-vue-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@nextcloud/webpack-vue-config/-/webpack-vue-config-1.1.0.tgz", - "integrity": "sha512-3eDbH05tlkfM12syuM36QS+xU1r80iX21PZ5tN+/O9Ekto2psmt+vf7Vgs5JX20M97Uy89POQ09A8tQUj83Yuw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@nextcloud/webpack-vue-config/-/webpack-vue-config-1.2.0.tgz", + "integrity": "sha512-JBLk/ksQJQfnbe9fTfeJESCYWv1E2kEyv8Ms0ttj6XCcZfsJICJAVNk4HZtvzDcmqY95Ccnfyy82i9EjaGO3nw==", "dev": true }, "@nodelib/fs.scandir": { @@ -2924,9 +2853,9 @@ } }, "@stylelint/postcss-css-in-js": { - "version": "0.37.1", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.1.tgz", - "integrity": "sha512-UMf2Rni3JGKi3ZwYRGMYJ5ipOA5ENJSKMtYA/pE1ZLURwdh7B5+z2r73RmWvub+N0UuH1Lo+TGfCgYwPvqpXNw==", + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", + "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", "dev": true, "requires": { "@babel/core": ">=7.9.0" @@ -3289,6 +3218,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "optional": true, "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" @@ -3297,17 +3227,20 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "optional": true }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "optional": true }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "optional": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -3325,6 +3258,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -3335,6 +3269,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, "requires": { "ms": "2.0.0" } @@ -3343,6 +3278,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "optional": true, "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -3357,6 +3293,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, "requires": { "is-descriptor": "^0.1.0" } @@ -3365,6 +3302,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -3373,6 +3311,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "optional": true, "requires": { "kind-of": "^3.0.2" }, @@ -3381,6 +3320,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -3391,6 +3331,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "optional": true, "requires": { "kind-of": "^3.0.2" }, @@ -3399,6 +3340,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -3409,6 +3351,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "optional": true, "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -3418,7 +3361,8 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "optional": true } } }, @@ -3426,6 +3370,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "optional": true, "requires": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -3441,6 +3386,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "optional": true, "requires": { "is-descriptor": "^1.0.0" } @@ -3449,6 +3395,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -3459,6 +3406,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "optional": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -3470,6 +3418,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -3480,6 +3429,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -3487,12 +3437,14 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "optional": true }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -3501,6 +3453,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "optional": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -3511,6 +3464,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "optional": true, "requires": { "kind-of": "^3.0.2" }, @@ -3519,6 +3473,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -3529,6 +3484,7 @@ "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "optional": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -3549,6 +3505,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "optional": true, "requires": { "remove-trailing-separator": "^1.0.1" } @@ -3714,7 +3671,8 @@ "async-each": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "optional": true }, "async-foreach": { "version": "0.1.3", @@ -3734,20 +3692,26 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "autoprefixer": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.0.tgz", - "integrity": "sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A==", + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", "dev": true, "requires": { "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001061", - "chalk": "^2.4.2", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.30", + "postcss": "^7.0.32", "postcss-value-parser": "^4.1.0" }, "dependencies": { + "caniuse-lite": { + "version": "1.0.30001125", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001125.tgz", + "integrity": "sha512-9f+r7BW8Qli917mU3j0fUaTweT3f3vnX/Lcs+1C73V+RADmFme+Ih0Br8vONQi3X0lseOe6ZHfsZLCA8MSjxUA==", + "dev": true + }, "postcss": { "version": "7.0.32", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", @@ -3789,11 +3753,11 @@ "dev": true }, "axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.20.0.tgz", + "integrity": "sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA==", "requires": { - "follow-redirects": "1.5.10" + "follow-redirects": "^1.10.0" } }, "babel-eslint": { @@ -3989,7 +3953,8 @@ "binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "optional": true }, "bindings": { "version": "1.5.0", @@ -4308,6 +4273,7 @@ "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "optional": true, "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -4326,12 +4292,14 @@ "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "optional": true }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "optional": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -4349,6 +4317,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -4357,6 +4326,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "optional": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -4368,6 +4338,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "optional": true, "requires": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" @@ -4377,6 +4348,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "optional": true, "requires": { "is-extglob": "^2.1.0" } @@ -4386,17 +4358,20 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "optional": true }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "optional": true }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "optional": true, "requires": { "is-extglob": "^2.1.1" } @@ -4405,6 +4380,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "optional": true, "requires": { "kind-of": "^3.0.2" } @@ -4413,6 +4389,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -4578,6 +4555,12 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -4711,27 +4694,27 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", "dev": true, "requires": { "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", + "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", - "yaml": "^1.7.2" + "yaml": "^1.10.0" }, "dependencies": { "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", + "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, @@ -4937,9 +4920,9 @@ } }, "date-fns": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.15.0.tgz", - "integrity": "sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ==" + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.16.1.tgz", + "integrity": "sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ==" }, "date-format-parse": { "version": "0.2.5", @@ -4964,11 +4947,20 @@ "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg==" }, "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" + }, + "dependencies": { + "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 + } } }, "decamelize": { @@ -5206,9 +5198,9 @@ } }, "emoji-mart-vue-fast": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/emoji-mart-vue-fast/-/emoji-mart-vue-fast-7.0.2.tgz", - "integrity": "sha512-7OftneG98Jb9wkJgPBeUdEWrMMdGvd08erHMjNviKSuQSBsBAIFnQyW7lroBZ+dLT7uTZKuZfWdWwUfWpk965w==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/emoji-mart-vue-fast/-/emoji-mart-vue-fast-7.0.4.tgz", + "integrity": "sha512-VZuyclCe7ZNPhSvt7WT258MscqRBZTB2Is/7vBilCXgpiZqByaA4AhM1xdIIZZik/aA+5BQiZVmbsDK0jk78Eg==", "requires": { "@babel/polyfill": "7.2.5", "@babel/runtime": "7.3.4", @@ -6150,6 +6142,12 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, "fastq": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", @@ -6184,19 +6182,19 @@ } }, "file-loader": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", - "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.1.0.tgz", + "integrity": "sha512-26qPdHyTsArQ6gU4P1HJbAbnFTyT2r0pG7czh1GFAd9TZbj0n94wWbupgixZH/ET/meqi2/5+F7DhW4OAXD+Lg==", "dev": true, "requires": { "loader-utils": "^2.0.0", - "schema-utils": "^2.6.5" + "schema-utils": "^2.7.1" }, "dependencies": { "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -6205,6 +6203,12 @@ "uri-js": "^4.2.2" } }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", @@ -6212,20 +6216,11 @@ "dev": true }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "json5": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", - "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, "loader-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", @@ -6237,20 +6232,15 @@ "json5": "^2.1.2" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" } } } @@ -6442,12 +6432,9 @@ } }, "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==", - "requires": { - "debug": "=3.1.0" - } + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==" }, "for-in": { "version": "1.0.2", @@ -7783,6 +7770,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "optional": true, "requires": { "binary-extensions": "^1.0.0" } @@ -8060,6 +8048,12 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -8182,6 +8176,11 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, + "linkifyjs": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-2.1.9.tgz", + "integrity": "sha512-74ivurkK6WHvHFozVaGtQWV38FzBwSTGNmJolEgFp7QgR2bl6ArUWlvT4GcHKbPe1z3nWYi+VUdDZk16zDOVug==" + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -8306,9 +8305,9 @@ "dev": true }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -8405,13 +8404,13 @@ "dev": true }, "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", "requires": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" } }, "md5.js": { @@ -9181,9 +9180,9 @@ } }, "p-queue": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.0.tgz", - "integrity": "sha512-zPHXPNy9jZsiym0PpJjvnHQysx1fSd/QdaNVwiDRLU2KFChD6h9CkCB6b8i3U8lBwJyA+mHgNZCzcy77glUssQ==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.1.tgz", + "integrity": "sha512-miQiSxLYPYBxGkrldecZC18OTLjdUqnlRebGzPRiVxB8mco7usCmm7hFuxiTvp93K18JnLtE4KMMycjAu/cQQg==", "requires": { "eventemitter3": "^4.0.4", "p-timeout": "^3.1.0" @@ -9286,7 +9285,8 @@ "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "optional": true }, "path-exists": { "version": "3.0.0", @@ -9531,29 +9531,6 @@ "postcss": "^7.0.6" } }, - "postcss-reporter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-6.0.1.tgz", - "integrity": "sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "lodash": "^4.17.11", - "log-symbols": "^2.2.0", - "postcss": "^7.0.7" - }, - "dependencies": { - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - } - } - }, "postcss-resolve-nested-selector": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", @@ -9911,6 +9888,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "optional": true, "requires": { "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", @@ -9920,17 +9898,20 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "optional": true }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "optional": true }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "optional": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -9948,6 +9929,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -9958,6 +9940,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, "requires": { "ms": "2.0.0" } @@ -9966,6 +9949,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "optional": true, "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -9980,6 +9964,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, "requires": { "is-descriptor": "^0.1.0" } @@ -9988,6 +9973,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -9996,6 +9982,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "optional": true, "requires": { "kind-of": "^3.0.2" }, @@ -10004,6 +9991,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -10014,6 +10002,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "optional": true, "requires": { "kind-of": "^3.0.2" }, @@ -10022,6 +10011,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -10032,6 +10022,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "optional": true, "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -10041,7 +10032,8 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "optional": true } } }, @@ -10049,6 +10041,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "optional": true, "requires": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -10064,6 +10057,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "optional": true, "requires": { "is-descriptor": "^1.0.0" } @@ -10072,6 +10066,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -10082,6 +10077,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "optional": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -10093,6 +10089,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -10103,6 +10100,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -10110,12 +10108,14 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "optional": true }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -10124,6 +10124,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "optional": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -10134,6 +10135,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "optional": true, "requires": { "kind-of": "^3.0.2" }, @@ -10142,6 +10144,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -10152,6 +10155,7 @@ "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "optional": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -10255,9 +10259,9 @@ } }, "remark": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.0.tgz", - "integrity": "sha512-oX4lMIS0csgk8AEbzY0h2jdR0ngiCHOpwwpxjmRa5TqAkeknY+tkhjRJGZqnCmvyuWh55/0SW5WY3R3nn3PH9A==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.1.tgz", + "integrity": "sha512-gS7HDonkdIaHmmP/+shCPejCEEW+liMp/t/QwmF0Xt47Rpuhl32lLtDV1uKWvGoq+kxr5jSgg5oAIpGuyULjUw==", "dev": true, "requires": { "remark-parse": "^8.0.0", @@ -10266,9 +10270,9 @@ } }, "remark-parse": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.2.tgz", - "integrity": "sha512-eMI6kMRjsAGpMXXBAywJwiwAse+KNpmt+BK55Oofy4KvBZEqUDj6mWbGLJZrujoPIPPxDXzn3T9baRlpsm2jnQ==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", "dev": true, "requires": { "ccount": "^1.0.0", @@ -10290,9 +10294,9 @@ } }, "remark-stringify": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.0.tgz", - "integrity": "sha512-FSPZv1ds76oAZjurhhuV5qXSUSoz6QRPuwYK38S41sLHwg4oB7ejnmZshj7qwjgYLf93kdz6BOX9j5aidNE7rA==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz", + "integrity": "sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==", "dev": true, "requires": { "ccount": "^1.0.0", @@ -10314,7 +10318,8 @@ "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "optional": true }, "repeat-element": { "version": "1.1.3", @@ -11153,19 +11158,21 @@ "dev": true }, "stylelint": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.6.1.tgz", - "integrity": "sha512-XyvKyNE7eyrqkuZ85Citd/Uv3ljGiuYHC6UiztTR6sWS9rza8j3UeQv/eGcQS9NZz/imiC4GKdk1EVL3wst5vw==", + "version": "13.7.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.7.1.tgz", + "integrity": "sha512-qzqazcyRxrSRdmFuO0/SZOJ+LyCxYy0pwcvaOBBnl8/2VfHSMrtNIE+AnyJoyq6uKb+mt+hlgmVrvVi6G6XHfQ==", "dev": true, "requires": { - "@stylelint/postcss-css-in-js": "^0.37.1", + "@stylelint/postcss-css-in-js": "^0.37.2", "@stylelint/postcss-markdown": "^0.36.1", - "autoprefixer": "^9.8.0", + "autoprefixer": "^9.8.6", "balanced-match": "^1.0.0", "chalk": "^4.1.0", - "cosmiconfig": "^6.0.0", + "cosmiconfig": "^7.0.0", "debug": "^4.1.1", "execall": "^2.0.0", + "fast-glob": "^3.2.4", + "fastest-levenshtein": "^1.0.12", "file-entry-cache": "^5.0.1", "get-stdin": "^8.0.0", "global-modules": "^2.0.0", @@ -11176,18 +11183,16 @@ "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", "known-css-properties": "^0.19.0", - "leven": "^3.1.0", - "lodash": "^4.17.15", + "lodash": "^4.17.20", "log-symbols": "^4.0.0", "mathml-tag-names": "^2.1.3", - "meow": "^7.0.1", + "meow": "^7.1.1", "micromatch": "^4.0.2", "normalize-selector": "^0.2.0", "postcss": "^7.0.32", "postcss-html": "^0.36.0", "postcss-less": "^3.1.4", "postcss-media-query-parser": "^0.2.3", - "postcss-reporter": "^6.0.1", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^4.0.2", "postcss-sass": "^0.4.4", @@ -11203,11 +11208,23 @@ "style-search": "^0.1.0", "sugarss": "^2.0.0", "svg-tags": "^1.0.0", - "table": "^5.4.6", + "table": "^6.0.1", "v8-compile-cache": "^2.1.1", "write-file-atomic": "^3.0.3" }, "dependencies": { + "ajv": { + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -11224,10 +11241,10 @@ "color-convert": "^2.0.1" } }, - "camelcase": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz", - "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==", + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "camelcase-keys": { @@ -11239,14 +11256,6 @@ "camelcase": "^5.3.1", "map-obj": "^4.0.0", "quick-lru": "^4.0.1" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } } }, "chalk": { @@ -11274,21 +11283,18 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "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" - } - }, "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 }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -11338,6 +11344,12 @@ "p-locate": "^4.1.0" } }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, "map-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", @@ -11345,18 +11357,16 @@ "dev": true }, "meow": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-7.0.1.tgz", - "integrity": "sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz", + "integrity": "sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==", "dev": true, "requires": { "@types/minimist": "^1.2.0", - "arrify": "^2.0.1", - "camelcase": "^6.0.0", "camelcase-keys": "^6.2.2", "decamelize-keys": "^1.1.0", "hard-rejection": "^2.1.0", - "minimist-options": "^4.0.2", + "minimist-options": "4.1.0", "normalize-package-data": "^2.5.0", "read-pkg-up": "^7.0.1", "redent": "^3.0.0", @@ -11365,12 +11375,6 @@ "yargs-parser": "^18.1.3" } }, - "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 - }, "p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", @@ -11381,14 +11385,14 @@ } }, "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", + "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, @@ -11527,6 +11531,17 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -11563,14 +11578,26 @@ } }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" } }, + "table": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.3.tgz", + "integrity": "sha512-8321ZMcf1B9HvVX/btKv8mMZahCjn2aYrDlpqHaBFCfnox64edeH9kEid0vTLTRR8gWR2A20aDgeuTTea4sVtw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + } + }, "trim-newlines": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", @@ -11597,14 +11624,6 @@ "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } } } } @@ -11937,9 +11956,9 @@ } }, "toastify-js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/toastify-js/-/toastify-js-1.8.0.tgz", - "integrity": "sha512-0Zf1sQ6Cs5RrRRDox00+6XdgS2tOtn01P9zhxDcJIpDS0KbXg/dFE1F0Mo6b/o63oJsxIhleeZv9LeZb31yKSg==" + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/toastify-js/-/toastify-js-1.9.1.tgz", + "integrity": "sha512-B3LTJURySMix/xWqVHyj2XGVsIHesb4euGVuIaFfKxfmjM4F6HMgbW9V66DHUEt98jGlGpeTWSiSJ78UfrJVbA==" }, "tough-cookie": { "version": "2.5.0", @@ -12099,9 +12118,9 @@ "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" }, "unified": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.0.0.tgz", - "integrity": "sha512-ssFo33gljU3PdlWLjNp15Inqb77d6JnJSfyplGJPT/a+fNRNyCBeveBAYJdO5khKdF6WVHa/yYCC7Xl6BDwZUQ==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", "dev": true, "requires": { "bail": "^1.0.0", @@ -12189,9 +12208,9 @@ } }, "unist-util-visit": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.2.tgz", - "integrity": "sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", "dev": true, "requires": { "@types/unist": "^2.0.0", @@ -12200,9 +12219,9 @@ } }, "unist-util-visit-parents": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz", - "integrity": "sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.0.tgz", + "integrity": "sha512-0g4wbluTF93npyPrp/ymd3tCDTMnP0yo2akFD2FIBAYXq/Sga3lwaU1D8OYKbtpioaI6CkDcQ6fsMnmtzt7htw==", "dev": true, "requires": { "@types/unist": "^2.0.0", @@ -12254,7 +12273,8 @@ "upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "optional": true }, "uri-js": { "version": "4.2.2", @@ -12380,9 +12400,9 @@ "dev": true }, "v-click-outside": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v-click-outside/-/v-click-outside-3.0.1.tgz", - "integrity": "sha512-FITcAM0R3JEPUSGiO7hfhKDODZHkOQTk/FyI9mwxNcz6LbMbJhABhjevLI5VsU00PRksloQx8vmpFIqlAfX6nw==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/v-click-outside/-/v-click-outside-3.1.1.tgz", + "integrity": "sha512-JJCdOwsJw77bzO37fkQdWX9OnjgLBGQNOM2SVmIdDdUi+n2xc/06dQdctxySIhetd35IGbs3NGU11pkKnBuhJg==" }, "v-clipboard": { "version": "2.2.3", @@ -12427,9 +12447,9 @@ } }, "vfile": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.1.1.tgz", - "integrity": "sha512-lRjkpyDGjVlBA7cDQhQ+gNcvB1BGaTHYuSOcY3S7OhDmBtnzX95FhtZZDecSTDm6aajFymyve6S5DN4ZHGezdQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.0.tgz", + "integrity": "sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw==", "dev": true, "requires": { "@types/unist": "^2.0.0", @@ -12448,9 +12468,9 @@ } }, "vfile-location": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.0.1.tgz", - "integrity": "sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.1.0.tgz", + "integrity": "sha512-FCZ4AN9xMcjFIG1oGmZKo61PjwJHRVA+0/tPUP2ul4uIwjGGndIxavEMRpWn5p4xwm/ZsdXp9YNygf1ZyE4x8g==", "dev": true }, "vfile-message": { @@ -12470,9 +12490,9 @@ "dev": true }, "vue": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz", - "integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==" + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz", + "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==" }, "vue-color": { "version": "2.7.1", @@ -12561,9 +12581,9 @@ "integrity": "sha512-bhP7MlgJQ8TIkZJXAfDf78uJO+mEI3CaLABLjv0WNzr4CcGRGPIAItyWYnP6LsPA4Oq0WE+suidNs6dgpO4RHg==" }, "vue-router": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.3.4.tgz", - "integrity": "sha512-SdKRBeoXUjaZ9R/8AyxsdTqkOfMcI5tWxPZOUX5Ie1BTL5rPSZ0O++pbiZCeYeythiZIdLEfkDiQPKIaWk5hDg==" + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.4.3.tgz", + "integrity": "sha512-BADg1mjGWX18Dpmy6bOGzGNnk7B/ZA0RxuA6qedY/YJwirMfKXIDzcccmHbQI0A6k5PzMdMloc0ElHfyOoX35A==" }, "vue-style-loader": { "version": "4.1.2", @@ -12576,9 +12596,9 @@ } }, "vue-template-compiler": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz", - "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==", + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz", + "integrity": "sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==", "dev": true, "requires": { "de-indent": "^1.0.2", @@ -12607,18 +12627,18 @@ "integrity": "sha512-yaX2its9XAJKGuQqf7LsiZHHSkxsIK8rmCOQOvEGEoF41blKRK8qr9my4qYoD6ikdLss4n8tKqYBecmaY0+WJg==" }, "vue2-datepicker": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/vue2-datepicker/-/vue2-datepicker-3.6.1.tgz", - "integrity": "sha512-U6iQWSDsNoq/u6QJCtAMcyWlcZSx0rmPmqaJ8LQtGvwu9x12jXDoe3YNeG4y7E45OYAMLXs9WzGkDqDmNj3jkw==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/vue2-datepicker/-/vue2-datepicker-3.6.2.tgz", + "integrity": "sha512-J2fCwUmCxIOPUvwQ12e8evFY9cCv6vJmgxRD9fGeUv6JeMMeLwkdpeQZOcqbMf/4mk1cSrY2/9Fr8DaB30LBpA==", "requires": { "date-fns": "^2.0.1", "date-format-parse": "^0.2.5" } }, "vuedraggable": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.0.tgz", - "integrity": "sha512-IlslPpc+iZ2zPNSJbydFZIDrE+don5u+Nc/bjT2YaF+Azidc+wxxJKfKT0NwE68AKk0syb0YbZneAcnynqREZQ==", + "version": "2.24.1", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.1.tgz", + "integrity": "sha512-G1fxO1oshx+WLdieSGl6jSJdlHOQFga1FpjuUpgXldbpKNzxpjsGn4xYNnRHVrOAqm8aG5FfpdQlh5LHesxCeA==", "requires": { "sortablejs": "^1.10.1" } @@ -12981,9 +13001,9 @@ } }, "webpack-merge": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.0.9.tgz", - "integrity": "sha512-P4teh6O26xIDPugOGX61wPxaeP918QOMjmzhu54zTVcLtOS28ffPWtnv+ilt3wscwBUCL2WNMnh97XkrKqt9Fw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.1.4.tgz", + "integrity": "sha512-LSmRD59mxREGkCBm9PCW3AaV4doDqxykGlx1NvioEE0FgkT2GQI54Wyvg39ptkiq2T11eRVoV39udNPsQvK+QQ==", "dev": true, "requires": { "clone-deep": "^4.0.1", diff --git a/package.json b/package.json index ed5be39..ca9aeb2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "forms", "description": "Forms app for nextcloud", - "version": "2.0.2", + "version": "2.0.4", "repository": { "type": "git", "url": "git+https://github.com/nextcloud/forms.git" @@ -23,26 +23,26 @@ }, "dependencies": { "@nextcloud/auth": "^1.3.0", - "@nextcloud/axios": "^1.3.3", - "@nextcloud/dialogs": "^1.4.0", + "@nextcloud/axios": "^1.4.0", + "@nextcloud/dialogs": "^2.0.1", "@nextcloud/event-bus": "^1.2.0", "@nextcloud/initial-state": "^1.1.2", - "@nextcloud/l10n": "^1.3.0", + "@nextcloud/l10n": "^1.4.1", "@nextcloud/moment": "^1.1.1", - "@nextcloud/router": "^1.1.0", - "@nextcloud/vue": "^2.3.0", + "@nextcloud/router": "^1.2.0", + "@nextcloud/vue": "^2.6.5", "core-js": "^3.6.5", "crypto-js": "^4.0.0", "debounce": "^1.2.0", "json2csv": "5.0.1", "p-debounce": "^2.1.0", - "p-queue": "^6.6.0", + "p-queue": "^6.6.1", "regenerator-runtime": "^0.13.7", - "v-click-outside": "^3.0.1", + "v-click-outside": "^3.1.1", "v-clipboard": "^2.2.3", - "vue": "^2.6.11", - "vue-router": "^3.3.4", - "vuedraggable": "^2.24.0" + "vue": "^2.6.12", + "vue-router": "^3.4.3", + "vuedraggable": "^2.24.1" }, "browserslist": [ "extends @nextcloud/browserslist-config" @@ -51,13 +51,13 @@ "node": ">=10.0.0" }, "devDependencies": { - "@babel/core": "^7.11.0", + "@babel/core": "^7.11.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/preset-env": "^7.11.0", + "@babel/preset-env": "^7.11.5", "@nextcloud/browserslist-config": "^1.0.0", "@nextcloud/eslint-config": "^2.2.0", "@nextcloud/eslint-plugin": "^1.4.0", - "@nextcloud/webpack-vue-config": "^1.1.0", + "@nextcloud/webpack-vue-config": "^1.2.0", "babel-eslint": "^10.1.0", "babel-loader": "^8.1.0", "css-loader": "^3.6.0", @@ -70,19 +70,19 @@ "eslint-plugin-promise": "^4.2.1", "eslint-plugin-standard": "^4.0.1", "eslint-plugin-vue": "^6.2.2", - "file-loader": "^6.0.0", + "file-loader": "^6.1.0", "node-sass": "^4.14.1", "sass-loader": "^8.0.2", - "stylelint": "^13.6.1", + "stylelint": "^13.7.1", "stylelint-config-recommended-scss": "^4.2.0", "stylelint-scss": "^3.18.0", "stylelint-webpack-plugin": "^2.1.0", "url-loader": "^4.1.0", "vue-loader": "^15.9.3", "vue-style-loader": "^4.1.1", - "vue-template-compiler": "^2.6.11", + "vue-template-compiler": "^2.6.12", "webpack": "^4.44.1", "webpack-cli": "^3.3.12", - "webpack-merge": "^5.0.9" + "webpack-merge": "^5.1.4" } } diff --git a/src/Forms.vue b/src/Forms.vue index c84678f..fed8751 100644 --- a/src/Forms.vue +++ b/src/Forms.vue @@ -71,7 +71,7 @@ diff --git a/src/components/Questions/QuestionDatetime.vue b/src/components/Questions/QuestionDatetime.vue new file mode 100644 index 0000000..9ab0b62 --- /dev/null +++ b/src/components/Questions/QuestionDatetime.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/src/components/Questions/QuestionDropdown.vue b/src/components/Questions/QuestionDropdown.vue index ac543f3..c6c3b66 100644 --- a/src/components/Questions/QuestionDropdown.vue +++ b/src/components/Questions/QuestionDropdown.vue @@ -83,7 +83,7 @@