summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.babelrc2
-rw-r--r--.editorconfig6
-rw-r--r--.eslintrc.js1
-rw-r--r--.gitignore1
-rw-r--r--.travis.yml55
-rw-r--r--CHANGELOG.md7
-rw-r--r--CODE_OF_CONDUCT.md37
-rw-r--r--CONTRIBUTING.md44
-rw-r--r--LICENSE13
-rw-r--r--README.md405
-rw-r--r--app.js6
-rw-r--r--app.json78
-rwxr-xr-xbin/heroku10
-rwxr-xr-xbin/setup2
-rw-r--r--config.json.example3
-rw-r--r--docs/configuration-config-file.md154
-rw-r--r--docs/configuration-env-vars.md256
-rw-r--r--docs/dev/getting-started.md57
-rw-r--r--docs/dev/ot.md14
-rw-r--r--docs/dev/webpack.md9
-rw-r--r--docs/guides/auth/github.md31
-rw-r--r--docs/guides/auth/gitlab-self-hosted.md14
-rw-r--r--docs/guides/auth/keycloak.md50
-rw-r--r--docs/guides/auth/ldap-AD.md1
-rw-r--r--docs/guides/auth/mattermost-self-hosted.md32
-rw-r--r--docs/guides/auth/nextcloud.md10
-rw-r--r--docs/guides/auth/oauth.md12
-rw-r--r--docs/guides/auth/saml-onelogin.md52
-rw-r--r--docs/guides/auth/saml.md68
-rw-r--r--docs/guides/auth/twitter.md42
-rw-r--r--docs/guides/migrate-etherpad.md10
-rw-r--r--docs/guides/migrations-and-breaking-changes.md56
-rw-r--r--docs/guides/minio-image-upload.md24
-rw-r--r--docs/guides/providing-terms.md9
-rw-r--r--docs/guides/s3-image-upload.md19
-rw-r--r--docs/history.md40
-rw-r--r--docs/images/CodiMD-1.3.2-features.pngbin0 -> 81971 bytes
-rw-r--r--docs/images/auth/application-page.png (renamed from docs/guides/images/auth/application-page.png)bin123152 -> 123152 bytes
-rw-r--r--docs/images/auth/create-oauth-app.png (renamed from docs/guides/images/auth/create-oauth-app.png)bin27920 -> 27920 bytes
-rw-r--r--docs/images/auth/create-twitter-app.png (renamed from docs/guides/images/auth/create-twitter-app.png)bin115406 -> 115406 bytes
-rw-r--r--docs/images/auth/gitlab-application-details.png (renamed from docs/guides/images/auth/gitlab-application-details.png)bin30378 -> 30378 bytes
-rw-r--r--docs/images/auth/gitlab-new-application.png (renamed from docs/guides/images/auth/gitlab-new-application.png)bin45457 -> 45457 bytes
-rw-r--r--docs/images/auth/gitlab-sign-in.png (renamed from docs/guides/images/auth/gitlab-sign-in.png)bin5590 -> 5590 bytes
-rw-r--r--docs/images/auth/mattermost-enable-oauth2.png (renamed from docs/guides/images/auth/mattermost-enable-oauth2.png)bin26034 -> 26034 bytes
-rw-r--r--docs/images/auth/mattermost-oauth-app-add.png (renamed from docs/guides/images/auth/mattermost-oauth-app-add.png)bin21443 -> 21443 bytes
-rw-r--r--docs/images/auth/mattermost-oauth-app-done.png (renamed from docs/guides/images/auth/mattermost-oauth-app-done.png)bin31767 -> 31767 bytes
-rw-r--r--docs/images/auth/mattermost-oauth-app-form.png (renamed from docs/guides/images/auth/mattermost-oauth-app-form.png)bin62160 -> 62160 bytes
-rw-r--r--docs/images/auth/nextcloud-oauth2-1-settings.png (renamed from docs/guides/images/auth/nextcloud-oauth2-1-settings.png)bin47047 -> 47047 bytes
-rw-r--r--docs/images/auth/nextcloud-oauth2-2-client-add.png (renamed from docs/guides/images/auth/nextcloud-oauth2-2-client-add.png)bin11684 -> 11684 bytes
-rw-r--r--docs/images/auth/nextcloud-oauth2-3-clientid-secret.png (renamed from docs/guides/images/auth/nextcloud-oauth2-3-clientid-secret.png)bin13428 -> 13428 bytes
-rw-r--r--docs/images/auth/onelogin-add-app.png (renamed from docs/guides/images/auth/onelogin-add-app.png)bin40519 -> 40519 bytes
-rw-r--r--docs/images/auth/onelogin-copy-idp-metadata.png (renamed from docs/guides/images/auth/onelogin-copy-idp-metadata.png)bin239493 -> 239493 bytes
-rw-r--r--docs/images/auth/onelogin-edit-app-name.png (renamed from docs/guides/images/auth/onelogin-edit-app-name.png)bin122369 -> 122369 bytes
-rw-r--r--docs/images/auth/onelogin-edit-sp-metadata.png (renamed from docs/guides/images/auth/onelogin-edit-sp-metadata.png)bin184470 -> 184470 bytes
-rw-r--r--docs/images/auth/onelogin-select-template.png (renamed from docs/guides/images/auth/onelogin-select-template.png)bin73244 -> 73244 bytes
-rw-r--r--docs/images/auth/onelogin-use-dashboard.png (renamed from docs/guides/images/auth/onelogin-use-dashboard.png)bin27216 -> 27216 bytes
-rw-r--r--docs/images/auth/register-oauth-application-form.png (renamed from docs/guides/images/auth/register-oauth-application-form.png)bin61453 -> 61453 bytes
-rw-r--r--docs/images/auth/register-twitter-application.png (renamed from docs/guides/images/auth/register-twitter-application.png)bin202414 -> 202414 bytes
-rw-r--r--docs/images/auth/twitter-app-confirmation.png (renamed from docs/guides/images/auth/twitter-app-confirmation.png)bin191064 -> 191064 bytes
-rw-r--r--docs/images/auth/twitter-app-keys.png (renamed from docs/guides/images/auth/twitter-app-keys.png)bin162703 -> 162703 bytes
-rw-r--r--docs/images/minio-image-upload/create-bucket.png (renamed from docs/guides/images/minio-image-upload/create-bucket.png)bin15207 -> 15207 bytes
-rw-r--r--docs/images/minio-image-upload/create-policy.png (renamed from docs/guides/images/minio-image-upload/create-policy.png)bin21156 -> 21156 bytes
-rw-r--r--docs/images/minio-image-upload/default-view.png (renamed from docs/guides/images/minio-image-upload/default-view.png)bin13061 -> 13061 bytes
-rw-r--r--docs/images/minio-image-upload/docker-logs.png (renamed from docs/guides/images/minio-image-upload/docker-logs.png)bin73263 -> 73263 bytes
-rw-r--r--docs/images/minio-image-upload/open-edit-policy.png (renamed from docs/guides/images/minio-image-upload/open-edit-policy.png)bin17514 -> 17514 bytes
-rw-r--r--docs/images/s3-image-upload/bucket-policy-editor.png (renamed from docs/guides/images/s3-image-upload/bucket-policy-editor.png)bin54641 -> 54641 bytes
-rw-r--r--docs/images/s3-image-upload/bucket-property.png (renamed from docs/guides/images/s3-image-upload/bucket-property.png)bin71762 -> 71762 bytes
-rw-r--r--docs/images/s3-image-upload/create-bucket.png (renamed from docs/guides/images/s3-image-upload/create-bucket.png)bin70260 -> 70260 bytes
-rw-r--r--docs/images/s3-image-upload/custom-policy.png (renamed from docs/guides/images/s3-image-upload/custom-policy.png)bin55804 -> 55804 bytes
-rw-r--r--docs/images/s3-image-upload/iam-user.png (renamed from docs/guides/images/s3-image-upload/iam-user.png)bin91526 -> 91526 bytes
-rw-r--r--docs/images/s3-image-upload/review-policy.png (renamed from docs/guides/images/s3-image-upload/review-policy.png)bin100067 -> 100067 bytes
-rw-r--r--docs/legal/developer-certificate-of-origin.txt (renamed from contribute/developer-certificate-of-origin)0
-rw-r--r--docs/setup/cloudron.md6
-rw-r--r--docs/setup/docker-linuxserver.md14
-rw-r--r--docs/setup/docker.md23
-rw-r--r--docs/setup/heroku.md7
-rw-r--r--docs/setup/kubernetes.md6
-rw-r--r--docs/setup/manual-setup.md39
-rw-r--r--docs/slide-options.md161
-rw-r--r--lib/config/default.js8
-rw-r--r--lib/config/dockerSecret.js11
-rw-r--r--lib/config/environment.js9
-rw-r--r--lib/config/hackmdEnvironment.js5
-rw-r--r--lib/config/index.js26
-rw-r--r--lib/config/oldEnvironment.js2
-rw-r--r--lib/history.js7
-rw-r--r--lib/letter-avatars.js3
-rw-r--r--lib/logger.js2
-rw-r--r--lib/migrations/20150702001020-update-to-0_3_1.js1
-rw-r--r--lib/migrations/20160112220142-note-add-lastchange.js7
-rw-r--r--lib/migrations/20160420180355-note-add-alias.js1
-rw-r--r--lib/migrations/20160515114000-user-add-tokens.js1
-rw-r--r--lib/migrations/20160607060246-support-revision.js1
-rw-r--r--lib/migrations/20160703062241-support-authorship.js1
-rw-r--r--lib/migrations/20161009040430-support-delete-note.js1
-rw-r--r--lib/migrations/20161201050312-support-email-signin.js2
-rw-r--r--lib/migrations/20171009121200-longtext-for-mysql.js20
-rw-r--r--lib/migrations/20180209120907-longtext-of-authorship.js12
-rw-r--r--lib/migrations/20180306150303-fix-enum.js4
-rw-r--r--lib/models/author.js38
-rw-r--r--lib/models/index.js20
-rw-r--r--lib/models/note.js874
-rw-r--r--lib/models/revision.js379
-rw-r--r--lib/models/user.js235
-rw-r--r--lib/realtime.js30
-rw-r--r--lib/response.js35
-rw-r--r--lib/utils.js2
-rw-r--r--lib/web/auth/dropbox/index.js2
-rw-r--r--lib/web/auth/email/index.js14
-rw-r--r--lib/web/auth/facebook/index.js2
-rw-r--r--lib/web/auth/github/index.js2
-rw-r--r--lib/web/auth/gitlab/index.js2
-rw-r--r--lib/web/auth/google/index.js7
-rw-r--r--lib/web/auth/ldap/index.js8
-rw-r--r--lib/web/auth/mattermost/index.js14
-rw-r--r--lib/web/auth/oauth2/index.js2
-rw-r--r--lib/web/auth/openid/index.js8
-rw-r--r--lib/web/auth/saml/index.js9
-rw-r--r--lib/web/auth/twitter/index.js2
-rw-r--r--lib/web/auth/utils.js5
-rw-r--r--lib/web/historyRouter.js2
-rw-r--r--lib/web/imageRouter/azure.js8
-rw-r--r--lib/web/imageRouter/filesystem.js8
-rw-r--r--lib/web/imageRouter/imgur.js22
-rw-r--r--lib/web/imageRouter/index.js7
-rw-r--r--lib/web/imageRouter/lutim.js30
-rw-r--r--lib/web/imageRouter/minio.js6
-rw-r--r--lib/web/imageRouter/s3.js3
-rw-r--r--lib/web/middleware/tooBusy.js3
-rw-r--r--lib/web/noteRouter.js2
-rw-r--r--lib/web/statusRouter.js6
-rw-r--r--lib/web/userRouter.js2
-rw-r--r--lib/workers/dmpWorker.js11
-rw-r--r--locales/ar.json121
-rw-r--r--locales/de.json39
-rw-r--r--locales/en.json8
-rw-r--r--locales/es.json223
-rw-r--r--locales/fr.json26
-rw-r--r--locales/id.json8
-rw-r--r--locales/it.json6
-rw-r--r--locales/ja.json6
-rw-r--r--locales/nl.json8
-rw-r--r--locales/pl.json28
-rw-r--r--locales/sr.json121
-rw-r--r--locales/sv.json223
-rw-r--r--locales/vi.json121
-rw-r--r--locales/zh-CN.json118
-rw-r--r--locales/zh-TW.json6
-rw-r--r--package.json59
-rw-r--r--public/css/extra.css18
-rw-r--r--public/css/index.css25
-rw-r--r--public/css/slide-preview.css61
-rw-r--r--public/css/ui/toolbar.css33
-rw-r--r--public/docs/features.md325
-rw-r--r--public/docs/release-notes.md254
-rw-r--r--public/js/cover.js100
-rw-r--r--public/js/extra.js468
-rw-r--r--public/js/history.js158
-rw-r--r--public/js/index.js1139
-rw-r--r--public/js/lib/common/login.js32
-rw-r--r--public/js/lib/editor/index.js11
-rw-r--r--public/js/lib/editor/toolbar.html31
-rw-r--r--public/js/lib/editor/ui-elements.js3
-rw-r--r--public/js/lib/editor/utils.js14
-rw-r--r--public/js/lib/syncscroll.js4
-rw-r--r--public/js/pretty.js48
-rw-r--r--public/js/render.js2
-rw-r--r--public/js/slide.js10
-rw-r--r--public/screenshot.pngbin238635 -> 227548 bytes
-rw-r--r--public/vendor/showup/showup.css22
-rw-r--r--public/views/codimd/foot.ejs4
-rw-r--r--public/views/codimd/header.ejs6
-rw-r--r--public/views/html.hbs2
-rw-r--r--public/views/index/body.ejs19
-rw-r--r--public/views/index/foot.ejs3
-rw-r--r--public/views/pretty.ejs6
-rw-r--r--public/views/shared/ga.ejs2
-rw-r--r--public/views/shared/help-modal.ejs6
-rw-r--r--public/views/shared/signin-modal.ejs16
-rw-r--r--public/views/slide.ejs6
-rw-r--r--test/letter-avatars.js47
-rw-r--r--test/user.js64
-rw-r--r--webpack.common.js15
-rw-r--r--yarn.lock6586
184 files changed, 8666 insertions, 5805 deletions
diff --git a/.babelrc b/.babelrc
index 26e5c924..ad37aa75 100644
--- a/.babelrc
+++ b/.babelrc
@@ -2,7 +2,7 @@
"presets": [
["env", {
"targets": {
- "node": "6",
+ "node": "8",
"uglify": true
}
}]
diff --git a/.editorconfig b/.editorconfig
index 75e2a698..1629e28f 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -17,3 +17,9 @@ trim_trailing_whitespace = false
[{.travis.yml,npm-shrinkwrap.json,package.json}]
indent_style = space
indent_size = 2
+
+[locales/*.json]
+# this is the exact style poeditor.com exports, so this should prevent churn.
+insert_final_newline = false
+indent_style = space
+indent_size = 4
diff --git a/.eslintrc.js b/.eslintrc.js
index b826a37b..cdd673fd 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -10,6 +10,7 @@ module.exports = {
// wrong.
"import/first": ["warn"],
"indent": ["warn"],
+ "no-console": ["warn"],
"no-multiple-empty-lines": ["warn"],
"no-multi-spaces": ["warn"],
"object-curly-spacing": ["warn"],
diff --git a/.gitignore b/.gitignore
index 755e3f94..a31c3148 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,7 +8,6 @@ composer.lock
.idea/
Thumbs.db
npm-debug.log
-hackmd_io
newrelic_agent.log
logs/
tmp/
diff --git a/.travis.yml b/.travis.yml
index 52da97f7..e73ad33a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,47 +1,40 @@
language: node_js
-dist: trusty
+dist: xenial
cache: yarn
-env:
- global:
- - CXX=g++-4.8
- - YARN_VERSION=1.3.2
jobs:
include:
- - env: task=npm-test
- node_js:
- - 6
- before_install:
- - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version "$YARN_VERSION"
- - export PATH="$HOME/.yarn/bin:$PATH"
- - env: task=npm-test
- node_js:
- - 8
- before_install:
- - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version "$YARN_VERSION"
- - export PATH="$HOME/.yarn/bin:$PATH"
- - env: task=npm-test
+ - stage: Static Tests
+ name: eslint
node_js:
- 10
- before_install:
- - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version "$YARN_VERSION"
- - export PATH="$HOME/.yarn/bin:$PATH"
- - env: task=ShellCheck
script:
- - shellcheck bin/heroku bin/setup
- language: generic
- - env: task=doctoc
- install: npm install doctoc
+ - yarn run eslint
+ - name: ShellCheck
script:
- - cp README.md README.md.orig
- - npm run doctoc
- - diff -q README.md README.md.orig
+ - shellcheck bin/heroku bin/setup
language: generic
- - env: task=json-lint
+ - name: json-lint
addons:
apt:
packages:
- jq
script:
- - npm run jsonlint
+ - yarn run jsonlint
language: generic
+ - stage: Dynamic Tests
+ name: Node.js 8
+ node_js:
+ - 8
+ script:
+ - yarn run mocha-suite
+ - name: Node.js 10
+ node_js:
+ - 10
+ script:
+ - yarn run mocha-suite
+ - name: Node.js 12
+ node_js:
+ - 12
+ script:
+ - yarn run mocha-suite
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 00000000..97224d1e
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,7 @@
+# CHANGELOG
+
+Please refer to the release notes published under
+[`public/docs/release-notes.md`](public/docs/release-notes.md).
+
+These are also available on each CodiMD instance under
+https://[domain-name]/release-notes
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..f15b5aff
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,37 @@
+Contributor Code of Conduct
+===
+
+As contributors and maintainers of this project, and in the interest of fostering an open and
+welcoming community, we pledge to respect all people who contribute through reporting issues,
+posting feature requests, updating documentation, submitting pull requests or patches, and other
+activities.
+
+We are committed to making participation in this project a harassment-free experience for everyone,
+regardless of level of experience, gender, gender identity and expression, sexual orientation,
+disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery
+* Personal attacks
+* Trolling or insulting/derogatory comments
+* Public or private harassment
+* Publishing other's private information, such as physical or electronic addresses, without explicit
+ permission
+* Other unethical or unprofessional conduct.
+
+Project maintainers have the right and responsibility to remove, edit, or reject comments, commits,
+code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. By
+adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently
+applying these principles to every aspect of managing this project. Project maintainers who do not
+follow or enforce the Code of Conduct may be permanently removed from the project team.
+
+This code of conduct applies both within project spaces and in public spaces when an individual is
+representing the project or its community.
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an
+issue or contacting one or more of the project maintainers.
+
+This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org),
+version 1.2.0, available at
+[http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 40f73553..781e0d91 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -3,7 +3,8 @@
When contributing to this repository, please first discuss the change you wish to make via issue,
email, or any other method with the owners of this repository before making a change.
-Please note we have a code of conduct, please follow it in all your interactions with the project.
+Please note we have a [code of conduct](CODE_OF_CONDUCT.md), please follow it in all your
+interactions with the project.
## Pull Request Process
1. Ensure you signed all your commits with Developer Certificate of Origin (DCO).
@@ -16,50 +17,13 @@ Please note we have a code of conduct, please follow it in all your interactions
5. You may merge the Pull Request in once you have the sign-off of two other developers, or if you
do not have permission to do that, you may request the second reviewer to merge it for you.
-## Contributor Code of Conduct
-
-As contributors and maintainers of this project, and in the interest of fostering an open and
-welcoming community, we pledge to respect all people who contribute through reporting issues,
-posting feature requests, updating documentation, submitting pull requests or patches, and other
-activities.
-
-We are committed to making participation in this project a harassment-free experience for everyone,
-regardless of level of experience, gender, gender identity and expression, sexual orientation,
-disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery
-* Personal attacks
-* Trolling or insulting/derogatory comments
-* Public or private harassment
-* Publishing other's private information, such as physical or electronic addresses, without explicit
- permission
-* Other unethical or unprofessional conduct.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits,
-code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. By
-adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently
-applying these principles to every aspect of managing this project. Project maintainers who do not
-follow or enforce the Code of Conduct may be permanently removed from the project team.
-
-This code of conduct applies both within project spaces and in public spaces when an individual is
-representing the project or its community.
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an
-issue or contacting one or more of the project maintainers.
-
-This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org),
-version 1.2.0, available at
-[http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
-
-### Sign your work
+## Sign your work
We use the Developer Certificate of Origin (DCO) as a additional safeguard
for the CodiMD project. This is a well established and widely used
mechanism to assure contributors have confirmed their right to license
their contribution under the project's license.
-Please read [contribute/developer-certificate-of-origin][dcofile].
+Please read [docs/legal/developer-certificate-of-origin.txt][dcofile].
If you can certify it, then just add a line to every git commit message:
````
diff --git a/LICENSE b/LICENSE
index 2def0e88..ccbd997d 100644
--- a/LICENSE
+++ b/LICENSE
@@ -629,8 +629,15 @@ to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
+ CodiMD - Realtime collaborative markdown notes on all platforms.
+ Copyright (C) 2019 Christoph (Sheogorath) Kern
+ Copyright (C) 2019 Claudius Coenen
+ Copyright (C) 2019 Max Wu
+ Copyright (C) 2017 Yukai Huang
+ And more can be found on https://github.com/codimd/server/graphs/contributors
+ Or in the local AUTHORS file
+
+
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
@@ -658,4 +665,4 @@ specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
-<http://www.gnu.org/licenses/>. \ No newline at end of file
+<http://www.gnu.org/licenses/>.
diff --git a/README.md b/README.md
index 6abe9308..6c23ef08 100644
--- a/README.md
+++ b/README.md
@@ -5,377 +5,100 @@ CodiMD
[![build status][travis-image]][travis-url]
[![version][github-version-badge]][github-release-page]
[![POEditor][poeditor-image]][poeditor-url]
+[![Mastodon][social-mastodon-image]][social-mastodon]
-CodiMD lets you create real-time collaborative markdown notes on all platforms.
-Inspired by Hackpad, with more focus on speed and flexibility, and build from [HackMD](https://hackmd.io) source code.
-Feel free to contribute.
+CodiMD lets you create real-time collaborative markdown notes. You can test-drive
+it by visiting our [CodiMD demo server][codimd-demo].
-Thanks for using! :smile:
+It is inspired by Hackpad, Etherpad and similar collaborative editors. This
+project originated with the team at [HackMD](https://hackmd.io) and now forked
+into its own organisation. [A longer writeup can be read in the history doc](docs/history.md).
-<!-- START doctoc generated TOC please keep comment here to allow auto update -->
-<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
-# Table of Contents
+[![CodiMD 1.3.2 with its feature demonstration page open](docs/images/CodiMD-1.3.2-features.png)][codimd-demo-features]
-- [HackMD CE became CodiMD](#hackmd-ce-became-codimd)
-- [Browsers Requirement](#browsers-requirement)
-- [Installation](#installation)
- - [Getting started (Native install)](#getting-started-native-install)
- - [Prerequisite](#prerequisite)
- - [Instructions](#instructions)
- - [Heroku Deployment](#heroku-deployment)
- - [Kubernetes](#kubernetes)
- - [CodiMD by docker container](#codimd-by-docker-container)
- - [Cloudron](#cloudron)
-- [Upgrade](#upgrade)
- - [Native setup](#native-setup)
-- [Configuration](#configuration)
- - [Environment variables (will overwrite other server configs)](#environment-variables-will-overwrite-other-server-configs)
- - [Application settings `config.json`](#application-settings-configjson)
- - [Third-party integration API key settings](#third-party-integration-api-key-settings)
- - [Third-party integration OAuth callback URLs](#third-party-integration-oauth-callback-urls)
-- [Developer Notes](#developer-notes)
- - [Structure](#structure)
- - [Operational Transformation](#operational-transformation)
-- [License](#license)
-<!-- END doctoc generated TOC please keep comment here to allow auto update -->
+## Community and Contributions
-# HackMD CE became CodiMD
+We welcome contributions! There's a lot to do: If you would like to report bugs,
+the [issue tracker][github-issue-tracker] is the right place. If you can help
+translating, find us on [POEditor][poeditor-url]. To get started developing,
+take a look at the [docs/dev](docs/dev) directory. In any case: come talk to us,
+we'll be delighted to help you with the first steps.
-CodiMD was recently renamed from its former name was HackMD. CodiMD is the free software version of HackMD. It was the original Version of HackMD. The HackMD team initiated CodiMD and provided a solid code base. Due to the need of paying bills, A fork was created and called HackMD EE, which is a SaaS (Software as a Service) product available at [hackmd.io](https://hackmd.io).
+To stay up to date with our work or get support it's recommended to join our
+[Matrix channel][matrix.org-url], stop by our [community forums][codimd-community]
+or subscribe to the [release feed][github-release-feed]. We also engage in
+regular [community calls][codimd-community-calls] ([RSS](https://community.codimd.org/t/codimd-community-call/19.rss)) which you are very welcome to join.
-We decided to change the name to break the confusion between HackMD and CodiMD, formally known as HackMD CE, as it never was an open core project.
-Just to more confusion: We are still friends with HackMD :heart:
+## Installation / Upgrading
-*For the whole renaming story, see the [related issue](https://github.com/hackmdio/hackmd/issues/720)*
+You can run CodiMD in a number of ways, and we created setup instructions for
+all of these:
-# Browsers Requirement
+* [Docker](docs/setup/docker.md)
+* [Kubernetes](docs/setup/kubernetes.md)
+* [Cloudron](docs/setup/cloudron.md)
+* [LinuxServer.io (multi-arch docker)](docs/setup/docker-linuxserver.md)
+* [Heroku](docs/setup/heroku.md)
+* [Manual setup](docs/setup/manual-setup.md)
-- ![Chrome](http://browserbadge.com/chrome/47/18px) Chrome >= 47, Chrome for Android >= 47
-- ![Safari](http://browserbadge.com/safari/9/18px) Safari >= 9, iOS Safari >= 8.4
-- ![Firefox](http://browserbadge.com/firefox/44/18px) Firefox >= 44
-- ![IE](http://browserbadge.com/ie/9/18px) IE >= 9, Edge >= 12
-- ![Opera](http://browserbadge.com/opera/34/18px) Opera >= 34, Opera Mini not supported
-- Android Browser >= 4.4
-
-# Installation
-
-## Getting started (Native install)
-
-### Prerequisite
-
-- Node.js 6.x or up (test up to 7.5.0) and <10.x
-- Database (PostgreSQL, MySQL, MariaDB, SQLite, MSSQL) use charset `utf8`
-- npm (and its dependencies, especially [uWebSockets](https://github.com/uWebSockets/uWebSockets#nodejs-developers), [node-gyp](https://github.com/nodejs/node-gyp#installation))
-- For **building** CodiMD we recommend to use a machine with at least **2GB** RAM
-
-### Instructions
-
-1. Download a release and unzip or clone into a directory
-2. Enter the directory and type `bin/setup`, which will install npm dependencies and create configs. The setup script is written in Bash, you would need bash as a prerequisite.
-3. Setup the configs, see more below
-4. Setup environment variables which will overwrite the configs
-5. Build front-end bundle by `npm run build` (use `npm run dev` if you are in development)
-6. Modify the file named `.sequelizerc`, change the value of the variable `url` with your db connection string
- For example: `postgres://username:password@localhost:5432/codimd`
-7. Run `node_modules/.bin/sequelize db:migrate`, this step will migrate your db to the latest schema
-8. Run the server as you like (node, forever, pm2)
-
-To stay up to date with your installation it's recommended to join our [Matrix channel][matrix.org-url] or subscribe to the [release feed][github-release-feed].
-
-## Heroku Deployment
-
-You can quickly setup a sample Heroku CodiMD application by clicking the button below.
-
-[![Deploy on Heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/hackmdio/codimd/tree/master)
-
-If you deploy it without the button, keep in mind to use the right buildpacks. For details check `app.json`.
-
-## Kubernetes
-
-To install use `helm install stable/hackmd`.
-
-For all further details, please check out the offical CodiMD [K8s helm chart](https://github.com/kubernetes/charts/tree/master/stable/hackmd).
-
-## CodiMD by docker container
-[![Try in PWD](https://cdn.rawgit.com/play-with-docker/stacks/cff22438/assets/images/button.png)](http://play-with-docker.com?stack=https://github.com/hackmdio/codimd-container/raw/master/docker-compose.yml&stack_name=codimd)
-
-
-**Debian-based version:**
-
-[![latest](https://images.microbadger.com/badges/version/hackmdio/hackmd:latest.svg)](https://microbadger.com/images/hackmdio/hackmd "Get your own version badge on microbadger.com") [![](https://images.microbadger.com/badges/image/hackmdio/hackmd:latest.svg)](https://microbadger.com/images/hackmdio/hackmd "Get your own image badge on microbadger.com")
-
-
-**Alpine-based version:**
-
-[![alpine](https://images.microbadger.com/badges/version/hackmdio/hackmd:alpine.svg)](https://microbadger.com/images/hackmdio/hackmd:alpine "Get your own version badge on microbadger.com") [![](https://images.microbadger.com/badges/image/hackmdio/hackmd:alpine.svg)](https://microbadger.com/images/hackmdio/hackmd:alpine "Get your own image badge on microbadger.com")
-
-The easiest way to setup CodiMD using docker are using the following three commands:
+If you do not wish to run your own setup, you can find a commercial offering at
+https://hackmd.io. This is not the same codebase as this one, but it is a very
+similar project.
-```console
-git clone https://github.com/hackmdio/codimd-container.git
-cd codimd-container
-docker-compose up
-```
-Read more about it in the [container repository…](https://github.com/hackmdio/codimd-container)
-## Cloudron
+## Configuration
-Install CodiMD on [Cloudron](https://cloudron.io):
+Theres two main ways to configure your CodiMD instance:
+[Config file](docs/configuration-config-file.md) or
+[environment variables](docs/configuration-env-vars.md). You can choose what
+works best for you.
-[![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=io.hackmd.cloudronapp)
+CodiMD can integrate with
-# Upgrade
+* facebook, twitter, github, gitlab, mattermost, dropbox, google, ldap, saml and [oauth2](docs/guides/auth/oauth.md) **for login**
+* imgur, s3, minio, azure **for image/attachment storage** (files can also be local!)
+* dropbox **for export and import**
-## Native setup
+More info about that can be found in the configuration docs above.
-If you are upgrading CodiMD from an older version, follow these steps:
-1. Fully stop your old server first (important)
-2. `git pull` or do whatever that updates the files
-3. `npm install` to update dependencies
-4. Build front-end bundle by `npm run build` (use `npm run dev` if you are in development)
-5. Modify the file named `.sequelizerc`, change the value of the variable `url` with your db connection string
- For example: `postgres://username:password@localhost:5432/codimd`
-6. Run `node_modules/.bin/sequelize db:migrate`, this step will migrate your db to the latest schema
-7. Start your whole new server!
+## Browser support
-To stay up to date with your installation it's recommended to join our [Matrix channel][matrix.org-url] or subscribe to the [release feed][github-release-feed].
+To use CodiMD, your browser should match or exceed these versions:
-* **migrate-to-1.1.0**
-
-We deprecated the older lower case config style and moved on to camel case style. Please have a look at the current `config.json.example` and check the warnings on startup.
-
-*Notice: This is not a breaking change right now but in the future*
-
-* [**migration-to-0.5.0**](https://github.com/hackmdio/migration-to-0.5.0)
-
-We don't use LZString to compress socket.io data and DB data after version 0.5.0.
-Please run the migration tool if you're upgrading from the old version.
-
-* [**migration-to-0.4.0**](https://github.com/hackmdio/migration-to-0.4.0)
-
-We've dropped MongoDB after version 0.4.0.
-So here is the migration tool for you to transfer the old DB data to the new DB.
-This tool is also used for official service.
-
-# Configuration
-
-There are some config settings you need to change in the files below.
-
-```
-./config.json ----application settings
-```
-
-## Environment variables (will overwrite other server configs)
-
-| variables | example values | description |
-| --------- | ------ | ----------- |
-| `NODE_ENV` | `production` or `development` | set current environment (will apply corresponding settings in the `config.json`) |
-| `DEBUG` | `true` or `false` | set debug mode; show more logs |
-| `CMD_CONFIG_FILE` | `/path/to/config.json` | optional override for the path to CodiMD's config file |
-| `CMD_DOMAIN` | `codimd.org` | domain name |
-| `CMD_URL_PATH` | `codimd` | sub URL path, like `www.example.com/<URL_PATH>` |
-| `CMD_HOST` | `localhost` | host to listen on |
-| `CMD_PORT` | `80` | web app port |
-| `CMD_PATH` | `/var/run/codimd.sock` | path to UNIX domain socket to listen on (if specified, `CMD_HOST` and `CMD_PORT` are ignored) |
-| `CMD_LOGLEVEL` | `info` | Defines what kind of logs are provided to stdout. |
-| `CMD_ALLOW_ORIGIN` | `localhost, codimd.org` | domain name whitelist (use comma to separate) |
-| `CMD_PROTOCOL_USESSL` | `true` or `false` | set to use SSL protocol for resources path (only applied when domain is set) |
-| `CMD_URL_ADDPORT` | `true` or `false` | set to add port on callback URL (ports `80` or `443` won't be applied) (only applied when domain is set) |
-| `CMD_USECDN` | `true` or `false` | set to use CDN resources or not (default is `true`) |
-| `CMD_ALLOW_ANONYMOUS` | `true` or `false` | set to allow anonymous usage (default is `true`) |
-| `CMD_ALLOW_ANONYMOUS_EDITS` | `true` or `false` | if `allowAnonymous` is `true`, allow users to select `freely` permission, allowing guests to edit existing notes (default is `false`) |
-| `CMD_ALLOW_FREEURL` | `true` or `false` | set to allow new note creation by accessing a nonexistent note URL |
-| `CMD_FORBIDDEN_NODE_IDS` | `'robots.txt'` | disallow creation of notes, even if `CMD_ALLOW_FREEURL` is `true` |
-| `CMD_DEFAULT_PERMISSION` | `freely`, `editable`, `limited`, `locked` or `private` | set notes default permission (only applied on signed users) |
-| `CMD_DB_URL` | `mysql://localhost:3306/database` | set the database URL |
-| `CMD_SESSION_SECRET` | no example | Secret used to sign the session cookie. If non is set, one will randomly generated on startup |
-| `CMD_SESSION_LIFE` | `1209600000` | Session life time. (milliseconds) |
-| `CMD_FACEBOOK_CLIENTID` | no example | Facebook API client id |
-| `CMD_FACEBOOK_CLIENTSECRET` | no example | Facebook API client secret |
-| `CMD_TWITTER_CONSUMERKEY` | no example | Twitter API consumer key |
-| `CMD_TWITTER_CONSUMERSECRET` | no example | Twitter API consumer secret |
-| `CMD_GITHUB_CLIENTID` | no example | GitHub API client id |
-| `CMD_GITHUB_CLIENTSECRET` | no example | GitHub API client secret |
-| `CMD_GITLAB_SCOPE` | `read_user` or `api` | GitLab API requested scope (default is `api`) (GitLab snippet import/export need `api` scope) |
-| `CMD_GITLAB_BASEURL` | no example | GitLab authentication endpoint, set to use other endpoint than GitLab.com (optional) |
-| `CMD_GITLAB_CLIENTID` | no example | GitLab API client id |
-| `CMD_GITLAB_CLIENTSECRET` | no example | GitLab API client secret |
-| `CMD_GITLAB_VERSION` | no example | GitLab API version (v3 or v4) |
-| `CMD_MATTERMOST_BASEURL` | no example | Mattermost authentication endpoint for versions below 5.0. For Mattermost version 5.0 and above, see [guide](docs/guides/auth/mattermost-self-hosted.md). |
-| `CMD_MATTERMOST_CLIENTID` | no example | Mattermost API client id |
-| `CMD_MATTERMOST_CLIENTSECRET` | no example | Mattermost API client secret |
-| `CMD_DROPBOX_CLIENTID` | no example | Dropbox API client id |
-| `CMD_DROPBOX_CLIENTSECRET` | no example | Dropbox API client secret |
-| `CMD_GOOGLE_CLIENTID` | no example | Google API client id |
-| `CMD_GOOGLE_CLIENTSECRET` | no example | Google API client secret |
-| `CMD_LDAP_URL` | `ldap://example.com` | URL of LDAP server |
-| `CMD_LDAP_BINDDN` | no example | bindDn for LDAP access |
-| `CMD_LDAP_BINDCREDENTIALS` | no example | bindCredentials for LDAP access |
-| `CMD_LDAP_SEARCHBASE` | `o=users,dc=example,dc=com` | LDAP directory to begin search from |
-| `CMD_LDAP_SEARCHFILTER` | `(uid={{username}})` | LDAP filter to search with |
-| `CMD_LDAP_SEARCHATTRIBUTES` | `displayName, mail` | LDAP attributes to search with (use comma to separate) |
-| `CMD_LDAP_USERIDFIELD` | `uidNumber` or `uid` or `sAMAccountName` | The LDAP field which is used uniquely identify a user on CodiMD |
-| `CMD_LDAP_USERNAMEFIELD` | Fallback to userid | The LDAP field which is used as the username on CodiMD |
-| `CMD_LDAP_TLS_CA` | `server-cert.pem, root.pem` | Root CA for LDAP TLS in PEM format (use comma to separate) |
-| `CMD_LDAP_PROVIDERNAME` | `My institution` | Optional name to be displayed at login form indicating the LDAP provider |
-| `CMD_SAML_IDPSSOURL` | `https://idp.example.com/sso` | authentication endpoint of IdP. for details, see [guide](docs/guides/auth/saml-onelogin.md). |
-| `CMD_SAML_IDPCERT` | `/path/to/cert.pem` | certificate file path of IdP in PEM format |
-| `CMD_SAML_ISSUER` | no example | identity of the service provider (optional, default: serverurl)" |
-| `CMD_SAML_IDENTIFIERFORMAT` | no example | name identifier format (optional, default: `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`) |
-| `CMD_SAML_GROUPATTRIBUTE` | `memberOf` | attribute name for group list (optional) |
-| `CMD_SAML_REQUIREDGROUPS` | `Hackmd-users` | group names that allowed (use vertical bar to separate) (optional) |
-| `CMD_SAML_EXTERNALGROUPS` | `Temporary-staff` | group names that not allowed (use vertical bar to separate) (optional) |
-| `CMD_SAML_ATTRIBUTE_ID` | `sAMAccountName` | attribute map for `id` (optional, default: NameID of SAML response) |
-| `CMD_SAML_ATTRIBUTE_USERNAME` | `mailNickname` | attribute map for `username` (optional, default: NameID of SAML response) |
-| `CMD_SAML_ATTRIBUTE_EMAIL` | `mail` | attribute map for `email` (optional, default: NameID of SAML response if `CMD_SAML_IDENTIFIERFORMAT` is default) |
-| `CMD_OAUTH2_USER_PROFILE_URL` | `https://example.com` | where retrieve information about a user after succesful login. Needs to output JSON. (no default value) Refer to the [Mattermost](docs/guides/auth/mattermost-self-hosted.md) or [Nextcloud](docs/guides/auth/nextcloud.md) examples for more details on all of the `CMD_OAUTH2...` options. |
-| `CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR` | `name` | where to find the username in the JSON from the user profile URL. (no default value)|
-| `CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR` | `display-name` | where to find the display-name in the JSON from the user profile URL. (no default value) |
-| `CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR` | `email` | where to find the email address in the JSON from the user profile URL. (no default value) |
-| `CMD_OAUTH2_TOKEN_URL` | `https://example.com` | sometimes called token endpoint, please refer to the documentation of your OAuth2 provider (no default value) |
-| `CMD_OAUTH2_AUTHORIZATION_URL` | `https://example.com` | authorization URL of your provider, please refer to the documentation of your OAuth2 provider (no default value) |
-| `CMD_OAUTH2_CLIENT_ID` | `afae02fckafd...` | you will get this from your OAuth2 provider when you register CodiMD as OAuth2-client, (no default value) |
-| `CMD_OAUTH2_CLIENT_SECRET` | `afae02fckafd...` | you will get this from your OAuth2 provider when you register CodiMD as OAuth2-client, (no default value) |
-| `CMD_OAUTH2_PROVIDERNAME` | `My institution` | Optional name to be displayed at login form indicating the oAuth2 provider |
-| `CMD_IMGUR_CLIENTID` | no example | Imgur API client id |
-| `CMD_EMAIL` | `true` or `false` | set to allow email signin |
-| `CMD_ALLOW_PDF_EXPORT` | `true` or `false` | Enable or disable PDF exports |
-| `CMD_ALLOW_EMAIL_REGISTER` | `true` or `false` | set to allow email register (only applied when email is set, default is `true`. Note `bin/manage_users` might help you if registration is `false`.) |
-| `CMD_ALLOW_GRAVATAR` | `true` or `false` | set to `false` to disable gravatar as profile picture source on your instance |
-| `CMD_IMAGE_UPLOAD_TYPE` | `imgur`, `s3`, `minio` or `filesystem` | Where to upload images. For S3, see our Image Upload Guides for [S3](docs/guides/s3-image-upload.md) or [Minio](docs/guides/minio-image-upload.md) |
-| `CMD_S3_ACCESS_KEY_ID` | no example | AWS access key id |
-| `CMD_S3_SECRET_ACCESS_KEY` | no example | AWS secret key |
-| `CMD_S3_REGION` | `ap-northeast-1` | AWS S3 region |
-| `CMD_S3_BUCKET` | no example | AWS S3 bucket name |
-| `CMD_MINIO_ACCESS_KEY` | no example | Minio access key |
-| `CMD_MINIO_SECRET_KEY` | no example | Minio secret key |
-| `CMD_MINIO_ENDPOINT` | `minio.example.org` | Address of your Minio endpoint/instance |
-| `CMD_MINIO_PORT` | `9000` | Port that is used for your Minio instance |
-| `CMD_MINIO_SECURE` | `true` | If set to `true` HTTPS is used for Minio |
-| `CMD_AZURE_CONNECTION_STRING` | no example | Azure Blob Storage connection string |
-| `CMD_AZURE_CONTAINER` | no example | Azure Blob Storage container name (automatically created if non existent) |
-| `CMD_HSTS_ENABLE` | ` true` | set to enable [HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) if HTTPS is also enabled (default is ` true`) |
-| `CMD_HSTS_INCLUDE_SUBDOMAINS` | `true` | set to include subdomains in HSTS (default is `true`) |
-| `CMD_HSTS_MAX_AGE` | `31536000` | max duration in seconds to tell clients to keep HSTS status (default is a year) |
-| `CMD_HSTS_PRELOAD` | `true` | whether to allow preloading of the site's HSTS status (e.g. into browsers) |
-| `CMD_CSP_ENABLE` | `true` | whether to enable Content Security Policy (directives cannot be configured with environment variables) |
-| `CMD_CSP_REPORTURI` | `https://<someid>.report-uri.com/r/d/csp/enforce` | Allows to add a URL for CSP reports in case of violations |
-| `CMD_SOURCE_URL` | `https://github.com/hackmdio/codimd/tree/<current commit>` | Provides the link to the source code of CodiMD on the entry page (Please, make sure you change this when you run a modified version) |
-
-***Note:** Due to the rename process we renamed all `HMD_`-prefix variables to be `CMD_`-prefixed. The old ones continue to work.*
-
-## Application settings `config.json`
-
-| variables | example values | description |
-| --------- | ------ | ----------- |
-| `debug` | `true` or `false` | set debug mode, show more logs |
-| `domain` | `localhost` | domain name |
-| `urlPath` | `codimd` | sub URL path, like `www.example.com/<urlpath>` |
-| `host` | `localhost` | host to listen on |
-| `port` | `80` | web app port |
-| `path` | `/var/run/codimd.sock` | path to UNIX domain socket to listen on (if specified, `host` and `port` are ignored) |
-| `loglevel` | `info` | Defines what kind of logs are provided to stdout. |
-| `allowOrigin` | `['localhost']` | domain name whitelist |
-| `useSSL` | `true` or `false` | set to use SSL server (if `true`, will auto turn on `protocolUseSSL`) |
-| `hsts` | `{"enable": true, "maxAgeSeconds": 31536000, "includeSubdomains": true, "preload": true}` | [HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) options to use with HTTPS (default is the example value, max age is a year) |
-| `csp` | `{"enable": true, "directives": {"scriptSrc": "trustworthy-scripts.example.com"}, "upgradeInsecureRequests": "auto", "addDefaults": true}` | Configures [Content Security Policy](https://helmetjs.github.io/docs/csp/). Directives are passed to Helmet - see [their documentation](https://helmetjs.github.io/docs/csp/) for more information on the format. Some defaults are added to the configured values so that the application doesn't break. To disable this behaviour, set `addDefaults` to `false`. Further, if `usecdn` is on, some CDN locations are allowed too. By default (`auto`), insecure (HTTP) requests are upgraded to HTTPS via CSP if `useSSL` is on. To change this behaviour, set `upgradeInsecureRequests` to either `true` or `false`. |
-| `protocolUseSSL` | `true` or `false` | set to use SSL protocol for resources path (only applied when domain is set) |
-| `urlAddPort` | `true` or `false` | set to add port on callback URL (ports `80` or `443` won't be applied) (only applied when domain is set) |
-| `useCDN` | `true` or `false` | set to use CDN resources or not (default is `true`) |
-| `allowAnonymous` | `true` or `false` | set to allow anonymous usage (default is `true`) |
-| `allowAnonymousEdits` | `true` or `false` | if `allowAnonymous` is `true`: allow users to select `freely` permission, allowing guests to edit existing notes (default is `false`) |
-| `allowFreeURL` | `true` or `false` | set to allow new note creation by accessing a nonexistent note URL |
-| `forbiddenNoteIDs` | `['robots.txt']` | disallow creation of notes, even if `allowFreeUrl` is `true` |
-| `defaultPermission` | `freely`, `editable`, `limited`, `locked`, `protected` or `private` | set notes default permission (only applied on signed users) |
-| `dbURL` | `mysql://localhost:3306/database` | set the db URL; if set, then db config (below) won't be applied |
-| `db` | `{ "dialect": "sqlite", "storage": "./db.codimd.sqlite" }` | set the db configs, [see more here](http://sequelize.readthedocs.org/en/latest/api/sequelize/) |
-| `sslKeyPath` | `./cert/client.key` | SSL key path<sup>1</sup> (only need when you set `useSSL`) |
-| `sslCertPath` | `./cert/codimd_io.crt` | SSL cert path<sup>1</sup> (only need when you set `useSSL`) |
-| `sslCAPath` | `['./cert/COMODORSAAddTrustCA.crt']` | SSL ca chain<sup>1</sup> (only need when you set `useSSL`) |
-| `dhParamPath` | `./cert/dhparam.pem` | SSL dhparam path<sup>1</sup> (only need when you set `useSSL`) |
-| `tmpPath` | `./tmp/` | temp directory path<sup>1</sup> |
-| `defaultNotePath` | `./public/default.md` | default note file path<sup>1</sup> |
-| `docsPath` | `./public/docs` | docs directory path<sup>1</sup> |
-| `viewPath` | `./public/views` | template directory path<sup>1</sup> |
-| `uploadsPath` | `./public/uploads` | uploads directory<sup>1</sup> - needs to be persistent when you use imageUploadType `filesystem` |
-| `sessionName` | `connect.sid` | cookie session name |
-| `sessionSecret` | `secret` | cookie session secret |
-| `sessionLife` | `14 * 24 * 60 * 60 * 1000` | cookie session life |
-| `staticCacheTime` | `1 * 24 * 60 * 60 * 1000` | static file cache time |
-| `heartbeatInterval` | `5000` | socket.io heartbeat interval |
-| `heartbeatTimeout` | `10000` | socket.io heartbeat timeout |
-| `documentMaxLength` | `100000` | note max length |
-| `email` | `true` or `false` | set to allow email signin |
-| `oauth2` | `{baseURL: ..., userProfileURL: ..., userProfileUsernameAttr: ..., userProfileDisplayNameAttr: ..., userProfileEmailAttr: ..., tokenURL: ..., authorizationURL: ..., clientID: ..., clientSecret: ...}` | An object detailing your OAuth2 provider. Refer to the [Mattermost](docs/guides/auth/mattermost-self-hosted.md) or [Nextcloud](docs/guides/auth/nextcloud.md) examples for more details!|
-| `allowEmailRegister` | `true` or `false` | set to allow email register (only applied when email is set, default is `true`. Note `bin/manage_users` might help you if registration is `false`.) |
-| `allowGravatar` | `true` or `false` | set to `false` to disable gravatar as profile picture source on your instance |
-| `imageUploadType` | `imgur`, `s3`, `minio`, `azure` or `filesystem`(default) | Where to upload images. For S3, see our Image Upload Guides for [S3](docs/guides/s3-image-upload.md) or [Minio](docs/guides/minio-image-upload.md)|
-| `minio` | `{ "accessKey": "YOUR_MINIO_ACCESS_KEY", "secretKey": "YOUR_MINIO_SECRET_KEY", "endpoint": "YOUR_MINIO_HOST", port: 9000, secure: true }` | When `imageUploadType` is set to `minio`, you need to set this key. Also checkout our [Minio Image Upload Guide](docs/guides/minio-image-upload.md) |
-| `s3` | `{ "accessKeyId": "YOUR_S3_ACCESS_KEY_ID", "secretAccessKey": "YOUR_S3_ACCESS_KEY", "region": "YOUR_S3_REGION" }` | When `imageuploadtype` be set to `s3`, you would also need to setup this key, check our [S3 Image Upload Guide](docs/guides/s3-image-upload.md) |
-| `s3bucket` | `YOUR_S3_BUCKET_NAME` | bucket name when `imageUploadType` is set to `s3` or `minio` |
-| `sourceURL` | `https://github.com/hackmdio/codimd/tree/<current commit>` | Provides the link to the source code of CodiMD on the entry page (Please, make sure you change this when you run a modified version) |
-
-<sup>1</sup>: relative paths are based on CodiMD's base directory
-
-## Third-party integration API key settings
-
-| service | settings location | description |
-| ------- | --------- | ----------- |
-| facebook, twitter, github, gitlab, mattermost, dropbox, google, ldap, saml | environment variables or `config.json` | for signin |
-| imgur, s3, minio, azure | environment variables or `config.json` | for image upload |
-| dropbox(`dropbox/appKey`) | `config.json` | for export and import |
-
-## Third-party integration OAuth callback URLs
-
-| service | callback URL (after the server URL) |
-| ------- | --------- |
-| facebook | `/auth/facebook/callback` |
-| twitter | `/auth/twitter/callback` |
-| github | `/auth/github/callback` |
-| gitlab | `/auth/gitlab/callback` |
-| mattermost | `/auth/mattermost/callback` |
-| dropbox | `/auth/dropbox/callback` |
-| google | `/auth/google/callback` |
-| saml | `/auth/saml/callback` |
-
-# Developer Notes
-
-## Structure
-
-```text
-codimd/
-├── tmp/ --- temporary files
-├── docs/ --- document files
-├── lib/ --- server libraries
-└── public/ --- client files
- ├── css/ --- css styles
- ├── js/ --- js scripts
- ├── vendor/ --- vendor includes
- └── views/ --- view templates
-```
+- ![Chrome](http://browserbadge.com/chrome/47/18px) Chrome >= 47, Chrome for Android >= 47
+- ![Safari](http://browserbadge.com/safari/9/18px) Safari >= 9, iOS Safari >= 8.4
+- ![Firefox](http://browserbadge.com/firefox/44/18px) Firefox >= 44
+- ![IE](http://browserbadge.com/ie/9/18px) IE >= 9, Edge >= 12
+- ![Opera](http://browserbadge.com/opera/34/18px) Opera >= 34, Opera Mini not supported
+- Android Browser >= 4.4
-## Operational Transformation
-From 0.3.2, we started supporting operational transformation.
-It makes concurrent editing safe and will not break up other users' operations.
-Additionally, now can show other clients' selections.
-See more at [http://operational-transformation.github.io/](http://operational-transformation.github.io/)
+## Related Tools
+Our community has created related tools, we'd like to highlight [codimd-cli](https://github.com/codimd/cli)
+which lets you use CodiMD from the comfort of your command line.
# License
-**License under AGPL.**
+Licensed under AGPLv3. For our list of contributors, see [AUTHORS](AUTHORS).
-[matrix.org-image]: https://img.shields.io/badge/Matrix.org-%23CodiMD@matrix.org-green.svg
+[matrix.org-image]: https://img.shields.io/matrix/codimd:matrix.org?logo=matrix&server_fqdn=matrix.org
[matrix.org-url]: https://riot.im/app/#/room/#codimd:matrix.org
-[travis-image]: https://travis-ci.org/hackmdio/codimd.svg?branch=master
-[travis-url]: https://travis-ci.org/hackmdio/codimd
-[github-version-badge]: https://img.shields.io/github/release/hackmdio/codimd.svg
-[github-release-page]: https://github.com/hackmdio/codimd/releases
-[github-release-feed]: https://github.com/hackmdio/codimd/releases.atom
+[travis-image]: https://travis-ci.org/codimd/server.svg?branch=master
+[travis-url]: https://travis-ci.org/codimd/server
+[github-version-badge]: https://img.shields.io/github/release/codimd/server.svg
+[github-release-page]: https://github.com/codimd/server/releases
+[github-release-feed]: https://github.com/codimd/server/releases.atom
+[github-issue-tracker]: https://github.com/codimd/server/issues/
[poeditor-image]: https://img.shields.io/badge/POEditor-translate-blue.svg
[poeditor-url]: https://poeditor.com/join/project/1OpGjF2Jir
+[codimd-demo]: https://demo.codimd.org
+[codimd-demo-features]: https://demo.codimd.org/features
+[codimd-community]: https://community.codimd.org
+[codimd-community-calls]: https://community.codimd.org/t/codimd-community-call/19
+[social-mastodon]: https://social.codimd.org/mastodon
+[social-mastodon-image]: https://img.shields.io/mastodon/follow/18547?domain=https%3A%2F%2Fsocial.snopyta.org&style=social
diff --git a/app.js b/app.js
index db930141..811696ec 100644
--- a/app.js
+++ b/app.js
@@ -113,8 +113,9 @@ if (config.csp.enable) {
}
i18n.configure({
- locales: ['en', 'zh-CN', 'zh-TW', 'fr', 'de', 'ja', 'es', 'ca', 'el', 'pt', 'it', 'tr', 'ru', 'nl', 'hr', 'pl', 'uk', 'hi', 'sv', 'eo', 'da', 'ko', 'id'],
+ locales: ['en', 'zh-CN', 'zh-TW', 'fr', 'de', 'ja', 'es', 'ca', 'el', 'pt', 'it', 'tr', 'ru', 'nl', 'hr', 'pl', 'uk', 'hi', 'sv', 'eo', 'da', 'ko', 'id', 'sr', 'vi', 'ar'],
cookie: 'locale',
+ indent: ' ', // this is the style poeditor.com exports it, this creates less churn
directory: path.join(__dirname, '/locales'),
updateFiles: config.updateI18nFiles
})
@@ -288,6 +289,9 @@ function handleTermSignals () {
socket.disconnect(true)
}, 0)
})
+ if (config.path) {
+ fs.unlink(config.path)
+ }
var checkCleanTimer = setInterval(function () {
if (realtime.isReady()) {
models.Revision.checkAllNotesRevision(function (err, notes) {
diff --git a/app.json b/app.json
index 6a6142ee..dcfe67cc 100644
--- a/app.json
+++ b/app.json
@@ -6,15 +6,11 @@
"Markdown",
"Notes"
],
- "website": "https://hackmd.io",
- "repository": "https://github.com/hackmdio/codimd",
- "logo": "https://github.com/hackmdio/codimd/raw/master/public/codimd-icon-1024.png",
+ "website": "https://codimd.org",
+ "repository": "https://github.com/codimd/server",
+ "logo": "https://github.com/codimd/server/raw/master/public/codimd-icon-1024.png",
"success_url": "/",
"env": {
- "BUILD_ASSETS": {
- "description": "Our build script variable",
- "value": "true"
- },
"NPM_CONFIG_PRODUCTION": {
"description": "Let npm also install development build tool",
"value": "false"
@@ -23,137 +19,129 @@
"description": "Specify database type. See sequelize available databases. Default using postgres",
"value": "postgres"
},
- "HMD_SESSION_SECRET": {
+ "CMD_SESSION_SECRET": {
"description": "Secret used to secure session cookies.",
"required": false
},
- "HMD_HSTS_ENABLE": {
+ "CMD_HSTS_ENABLE": {
"description": "whether to also use HSTS if HTTPS is enabled",
"required": false
},
- "HMD_HSTS_MAX_AGE": {
+ "CMD_HSTS_MAX_AGE": {
"description": "max duration, in seconds, to tell clients to keep HSTS status",
"required": false
},
- "HMD_HSTS_INCLUDE_SUBDOMAINS": {
+ "CMD_HSTS_INCLUDE_SUBDOMAINS": {
"description": "whether to tell clients to also regard subdomains as HSTS hosts",
"required": false
},
- "HMD_HSTS_PRELOAD": {
+ "CMD_HSTS_PRELOAD": {
"description": "whether to allow at all adding of the site to HSTS preloads (e.g. in browsers)",
"required": false
},
- "HMD_DOMAIN": {
+ "CMD_DOMAIN": {
"description": "domain name",
"required": false
},
- "HMD_URL_PATH": {
+ "CMD_URL_PATH": {
"description": "sub url path, like `www.example.com/<URL_PATH>`",
"required": false
},
- "HMD_ALLOW_ORIGIN": {
+ "CMD_ALLOW_ORIGIN": {
"description": "domain name whitelist (use comma to separate)",
"required": false,
"value": "localhost"
},
- "HMD_PROTOCOL_USESSL": {
+ "CMD_PROTOCOL_USESSL": {
"description": "set to use ssl protocol for resources path (only applied when domain is set)",
"required": false
},
- "HMD_URL_ADDPORT": {
+ "CMD_URL_ADDPORT": {
"description": "set to add port on callback url (port 80 or 443 won't applied) (only applied when domain is set)",
"required": false
},
- "HMD_FACEBOOK_CLIENTID": {
+ "CMD_FACEBOOK_CLIENTID": {
"description": "Facebook API client id",
"required": false
},
- "HMD_FACEBOOK_CLIENTSECRET": {
+ "CMD_FACEBOOK_CLIENTSECRET": {
"description": "Facebook API client secret",
"required": false
},
- "HMD_TWITTER_CONSUMERKEY": {
+ "CMD_TWITTER_CONSUMERKEY": {
"description": "Twitter API consumer key",
"required": false
},
- "HMD_TWITTER_CONSUMERSECRET": {
+ "CMD_TWITTER_CONSUMERSECRET": {
"description": "Twitter API consumer secret",
"required": false
},
- "HMD_GITHUB_CLIENTID": {
+ "CMD_GITHUB_CLIENTID": {
"description": "GitHub API client id",
"required": false
},
- "HMD_GITHUB_CLIENTSECRET": {
+ "CMD_GITHUB_CLIENTSECRET": {
"description": "GitHub API client secret",
"required": false
},
- "HMD_GITLAB_BASEURL": {
+ "CMD_GITLAB_BASEURL": {
"description": "GitLab authentication endpoint, set to use other endpoint than GitLab.com (optional)",
"required": false
},
- "HMD_GITLAB_CLIENTID": {
+ "CMD_GITLAB_CLIENTID": {
"description": "GitLab API client id",
"required": false
},
- "HMD_GITLAB_CLIENTSECRET": {
+ "CMD_GITLAB_CLIENTSECRET": {
"description": "GitLab API client secret",
"required": false
},
- "HMD_GITLAB_SCOPE": {
+ "CMD_GITLAB_SCOPE": {
"description": "GitLab API client scope (optional)",
"required": false
},
- "HMD_MATTERMOST_BASEURL": {
+ "CMD_MATTERMOST_BASEURL": {
"description": "Mattermost authentication endpoint",
"required": false
},
- "HMD_MATTERMOST_CLIENTID": {
+ "CMD_MATTERMOST_CLIENTID": {
"description": "Mattermost API client id",
"required": false
},
- "HMD_MATTERMOST_CLIENTSECRET": {
+ "CMD_MATTERMOST_CLIENTSECRET": {
"description": "Mattermost API client secret",
"required": false
},
- "HMD_DROPBOX_CLIENTID": {
+ "CMD_DROPBOX_CLIENTID": {
"description": "Dropbox API client id",
"required": false
},
- "HMD_DROPBOX_CLIENTSECRET": {
+ "CMD_DROPBOX_CLIENTSECRET": {
"description": "Dropbox API client secret",
"required": false
},
- "HMD_DROPBOX_APP_KEY": {
+ "CMD_DROPBOX_APP_KEY": {
"description": "Dropbox app key (for import/export)",
"required": false
},
- "HMD_GOOGLE_CLIENTID": {
+ "CMD_GOOGLE_CLIENTID": {
"description": "Google API client id",
"required": false
},
- "HMD_GOOGLE_CLIENTSECRET": {
+ "CMD_GOOGLE_CLIENTSECRET": {
"description": "Google API client secret",
"required": false
},
- "HMD_IMGUR_CLIENTID": {
+ "CMD_IMGUR_CLIENTID": {
"description": "Imgur API client id",
"required": false
},
- "HMD_ALLOW_PDF_EXPORT": {
+ "CMD_ALLOW_PDF_EXPORT": {
"description": "Enable or disable PDF exports",
"required": false
}
},
"addons": [
"heroku-postgresql"
- ],
- "buildpacks": [
- {
- "url": "https://github.com/alex88/heroku-buildpack-vips"
- },
- {
- "url": "https://github.com/heroku/heroku-buildpack-nodejs"
- }
]
}
diff --git a/bin/heroku b/bin/heroku
index 24727347..c9642c20 100755
--- a/bin/heroku
+++ b/bin/heroku
@@ -2,9 +2,7 @@
set -e
-if [ "$BUILD_ASSETS" = true ]; then
- # setup config files
- cat << EOF > .sequelizerc
+cat << EOF > .sequelizerc
var path = require('path');
module.exports = {
@@ -17,7 +15,7 @@ module.exports = {
EOF
- cat << EOF > config.json
+cat << EOF > config.json
{
"production": {
@@ -25,7 +23,3 @@ EOF
}
EOF
-
- # build app
- npm run build
-fi
diff --git a/bin/setup b/bin/setup
index 38aa05a4..1f766703 100755
--- a/bin/setup
+++ b/bin/setup
@@ -36,7 +36,7 @@ cat << EOF
Edit the following config file to setup CodiMD server and client.
-Read more info at https://github.com/hackmdio/codimd#configuration-files
+Read more info at https://github.com/codimd/server#configuration-files
* config.json -- CodiMD config
* .sequelizerc -- db config
diff --git a/config.json.example b/config.json.example
index fe8c810c..d1c1cc5c 100644
--- a/config.json.example
+++ b/config.json.example
@@ -20,7 +20,7 @@
"loglevel": "info",
"hsts": {
"enable": true,
- "maxAgeSeconds": "31536000",
+ "maxAgeSeconds": 31536000,
"includeSubdomains": true,
"preload": true
},
@@ -93,6 +93,7 @@
"idpCert": "change: certificate file path of IdP in PEM format",
"issuer": "change or delete: identity of the service provider (default: serverurl)",
"identifierFormat": "change or delete: name identifier format (default: 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress')",
+ "disableRequestedAuthnContext": "change or delete: true to allow any authentication method, false restricts to password authentication method (default: false)",
"groupAttribute": "change or delete: attribute name for group list (ex: memberOf)",
"requiredGroups": [ "change or delete: group names that allowed" ],
"externalGroups": [ "change or delete: group names that not allowed" ],
diff --git a/docs/configuration-config-file.md b/docs/configuration-config-file.md
new file mode 100644
index 00000000..b233cebe
--- /dev/null
+++ b/docs/configuration-config-file.md
@@ -0,0 +1,154 @@
+Configuration Using Config file
+===
+
+You can choose to configure CodiMD with either a config file or with
+[environment variables](configuration-env-vars.md). The config file is processed
+in [`lib/config/index.js`](../lib/config/index.js) - so this is the first
+place to look if anything is missing not obvious from this document. The
+default values are defined in [`lib/config/default.js`](../lib/config/default.js),
+in case you wonder if you even need to override it.
+
+Environment variables take precedence over configurations from the config files.
+To get started, it is a good idea to take the `config.json.example` and copy it
+to `config.json` before filling in your own details.
+
+
+## Node.JS
+
+| variables | example values | description |
+| --------- | ------ | ----------- |
+| `debug` | `true` or `false` | set debug mode, show more logs |
+
+
+## CodiMD basics
+
+| variables | example values | description |
+| --------- | ------ | ----------- |
+| `allowPDFExport` | `true` | Whether or not PDF export is offered. |
+| `db` | `{ "dialect": "sqlite", "storage": "./db.codimd.sqlite" }` | set the db configs, [see more here](http://sequelize.readthedocs.org/en/latest/api/sequelize/) |
+| `dbURL` | `mysql://localhost:3306/database` | set the db URL; if set, then db config (below) won't be applied |
+| `forbiddenNoteIDs` | `['robots.txt']` | disallow creation of notes, even if `allowFreeUrl` is `true` |
+| `loglevel` | `info` | Defines what kind of logs are provided to stdout. |
+| `imageUploadType` | `imgur`, `s3`, `minio`, `azure`, `lutim` or `filesystem`(default) | Where to upload images. For S3, see our Image Upload Guides for [S3](guides/s3-image-upload.md) or [Minio](guides/minio-image-upload.md)|
+| `sourceURL` | `https://github.com/codimd/server/tree/<current commit>` | Provides the link to the source code of CodiMD on the entry page (Please, make sure you change this when you run a modified version) |
+| `staticCacheTime` | `1 * 24 * 60 * 60 * 1000` | static file cache time |
+| `tooBusyLag` | `70` | CPU time for one eventloop tick until node throttles connections. (milliseconds) |
+| `heartbeatInterval` | `5000` | socket.io heartbeat interval |
+| `heartbeatTimeout` | `10000` | socket.io heartbeat timeout |
+| `documentMaxLength` | `100000` | note max length |
+
+
+## CodiMD paths stuff
+
+these are rarely used for various reasons.
+
+| variables | example values | description |
+| --------- | ------ | ----------- |
+| `defaultNotePath` | `./public/default.md` | default note file path<sup>1</sup>, empty notes will be created with this template. |
+| `dhParamPath` | `./cert/dhparam.pem` | SSL dhparam path<sup>1</sup> (only need when you set `useSSL`) |
+| `sslCAPath` | `['./cert/COMODORSAAddTrustCA.crt']` | SSL ca chain<sup>1</sup> (only need when you set `useSSL`) |
+| `sslCertPath` | `./cert/codimd_io.crt` | SSL cert path<sup>1</sup> (only need when you set `useSSL`) |
+| `sslKeyPath` | `./cert/client.key` | SSL key path<sup>1</sup> (only need when you set `useSSL`) |
+| `tmpPath` | `./tmp/` | temp directory path<sup>1</sup> |
+| `docsPath` | `./public/docs` | docs directory path<sup>1</sup> |
+| `viewPath` | `./public/views` | template directory path<sup>1</sup> |
+| `uploadsPath` | `./public/uploads` | uploads directory<sup>1</sup> - needs to be persistent when you use imageUploadType `filesystem` |
+
+
+## CodiMD Location
+
+| variables | example values | description |
+| --------- | ------ | ----------- |
+| `domain` | `localhost` | domain name |
+| `urlPath` | `codimd` | sub URL path, like `www.example.com/<urlpath>` |
+| `host` | `localhost` | interface/ip to listen on |
+| `port` | `80` | port to listen on |
+| `path` | `/var/run/codimd.sock` | path to UNIX domain socket to listen on (if specified, `host` and `port` are ignored) |
+| `protocolUseSSL` | `true` or `false` | set to use SSL protocol for resources path (only applied when domain is set) |
+| `useSSL` | `true` or `false` | set to use SSL server (if `true`, will auto turn on `protocolUseSSL`) |
+| `urlAddPort` | `true` or `false` | set to add port on callback URL (ports `80` or `443` won't be applied) (only applied when domain is set) |
+| `allowOrigin` | `['localhost']` | domain name whitelist |
+
+
+## CSP and HSTS
+
+| variables | example values | description |
+| --------- | ------ | ----------- |
+| `hsts` | `{"enable": true, "maxAgeSeconds": 31536000, "includeSubdomains": true, "preload": true}` | [HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) options to use with HTTPS (default is the example value, max age is a year) |
+| `csp` | `{"enable": true, "directives": {"scriptSrc": "trustworthy-scripts.example.com"}, "upgradeInsecureRequests": "auto", "addDefaults": true}` | Configures [Content Security Policy](https://helmetjs.github.io/docs/csp/). Directives are passed to Helmet - see [their documentation](https://helmetjs.github.io/docs/csp/) for more information on the format. Some defaults are added to the configured values so that the application doesn't break. To disable this behaviour, set `addDefaults` to `false`. Further, if `usecdn` is on, some CDN locations are allowed too. By default (`auto`), insecure (HTTP) requests are upgraded to HTTPS via CSP if `useSSL` is on. To change this behaviour, set `upgradeInsecureRequests` to either `true` or `false`. |
+
+## Privacy and External Requests
+
+| variables | example values | description |
+| --------- | ------ | ----------- |
+| `allowGravatar` | `true` or `false` | set to `false` to disable gravatar as profile picture source on your instance |
+| `useCDN` | `true` or `false` | set to use CDN resources or not (default is `true`) |
+
+## Users and Privileges
+
+| variables | example values | description |
+| --------- | ------ | ----------- |
+| `allowAnonymous` | `true` or `false` | set to allow anonymous usage (default is `true`) |
+| `allowAnonymousEdits` | `true` or `false` | if `allowAnonymous` is `true`: allow users to select `freely` permission, allowing guests to edit existing notes (default is `false`) |
+| `allowFreeURL` | `true` or `false` | set to allow new note creation by accessing a nonexistent note URL |
+| `defaultPermission` | `freely`, `editable`, `limited`, `locked`, `protected` or `private` | set notes default permission (only applied on signed users) |
+| `sessionName` | `connect.sid` | cookie session name |
+| `sessionLife` | `14 * 24 * 60 * 60 * 1000` | cookie session life |
+| `sessionSecret` | `secret` | cookie session secret | If none is set, one will randomly generated on each startup, meaning all your users will be logged out. |
+
+
+## Login methods
+
+Most of these have never been documented for the config.json, feel free to expand these
+
+### Email (local account)
+
+| variables | example values | description |
+| --------- | ------ | ----------- |
+| `email` | `true` or `false` | set to allow email signin |
+| `allowEmailRegister` | `true` or `false` | set to allow email register (only applied when email is set, default is `true`. Note `bin/manage_users` might help you if registration is `false`.) |
+
+### Dropbox Login
+### Facebook Login
+### GitHub Login
+### GitLab Login
+### Google Login
+### LDAP Login
+### Mattermost Login
+### OAuth2 Login
+
+| variables | example values | description |
+| --------- | ------ | ----------- |
+| `oauth2` | `{baseURL: ..., userProfileURL: ..., userProfileUsernameAttr: ..., userProfileDisplayNameAttr: ..., userProfileEmailAttr: ..., tokenURL: ..., authorizationURL: ..., clientID: ..., clientSecret: ...}` | An object detailing your OAuth2 provider. Refer to the [Mattermost](guides/auth/mattermost-self-hosted.md) or [Nextcloud](guides/auth/nextcloud.md) examples for more details!|
+
+### SAML Login
+### Twitter Login
+
+
+## Upload Storage
+
+Most of these have never been documented for the config.json, feel free to expand these
+
+
+### Amazon S3
+
+| variables | example values | description |
+| --------- | ------ | ----------- |
+| `s3` | `{ "accessKeyId": "YOUR_S3_ACCESS_KEY_ID", "secretAccessKey": "YOUR_S3_ACCESS_KEY", "region": "YOUR_S3_REGION" }` | When `imageuploadtype` be set to `s3`, you would also need to setup this key, check our [S3 Image Upload Guide](guides/s3-image-upload.md) |
+| `s3bucket` | `YOUR_S3_BUCKET_NAME` | bucket name when `imageUploadType` is set to `s3` or `minio` |
+
+### Azure Blob Storage
+### imgur
+### Minio
+
+| variables | example values | description |
+| --------- | ------ | ----------- |
+| `minio` | `{ "accessKey": "YOUR_MINIO_ACCESS_KEY", "secretKey": "YOUR_MINIO_SECRET_KEY", "endpoint": "YOUR_MINIO_HOST", port: 9000, secure: true }` | When `imageUploadType` is set to `minio`, you need to set this key. Also check out our [Minio Image Upload Guide](guides/minio-image-upload.md) |
+
+### Lutim
+
+| variables | example values | description |
+| --------- | ------ | ----------- |
+|`lutim`| `{"url": "YOUR_LUTIM_URL"}`| When `imageUploadType` is set to `lutim`, you can setup the lutim url|
+
+<sup>1</sup>: relative paths are based on CodiMD's base directory
diff --git a/docs/configuration-env-vars.md b/docs/configuration-env-vars.md
new file mode 100644
index 00000000..bc0eac99
--- /dev/null
+++ b/docs/configuration-env-vars.md
@@ -0,0 +1,256 @@
+Configuration Using Environment variables
+===
+
+You can choose to configure CodiMD with either a
+[config file](configuration-config-file.md) or with environment variables.
+Environment variables are processed in
+[`lib/config/environment.js`](../lib/config/environment.js) - so this is the first
+place to look if anything is missing not obvious from this document. The
+default values are defined in [`lib/config/default.js`](../lib/config/default.js),
+in case you wonder if you even need to override it.
+
+Environment variables take precedence over configurations from the config files.
+They generally start with `CMD_` for our own options, but we also list
+node-specific options you can configure this way.
+
+
+## Node.JS
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `NODE_ENV` | `production` or `development` | set current environment (will apply corresponding settings in the `config.json`) |
+| `DEBUG` | `true` or `false` | set debug mode; show more logs |
+
+
+## CodiMD basics
+
+defaultNotePath can't be set from env-vars
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_ALLOW_PDF_EXPORT` | `true` or `false` | Enable or disable PDF exports |
+| `CMD_CONFIG_FILE` | `/path/to/config.json` | optional override for the path to CodiMD's config file |
+| `CMD_DB_URL` | `mysql://localhost:3306/database` | set the database URL |
+| `CMD_LOGLEVEL` | `info`, `debug` ... | Defines what kind of logs are provided to stdout. |
+| `CMD_FORBIDDEN_NOTE_IDS` | `'robots.txt'` | disallow creation of notes, even if `CMD_ALLOW_FREEURL` is `true` |
+| `CMD_IMAGE_UPLOAD_TYPE` | `imgur`, `s3`, `minio`, `lutim` or `filesystem` | Where to upload images. For S3, see our Image Upload Guides for [S3](guides/s3-image-upload.md) or [Minio](guides/minio-image-upload.md), also there's a whole section on their respective env vars below. |
+| `CMD_SOURCE_URL` | `https://github.com/codimd/server/tree/<current commit>` | Provides the link to the source code of CodiMD on the entry page (Please, make sure you change this when you run a modified version) |
+| `CMD_TOOBUSY_LAG` | `70` | CPU time for one eventloop tick until node throttles connections. (milliseconds) |
+
+
+## CodiMD Location
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_DOMAIN` | `codimd.org` | domain name |
+| `CMD_URL_PATH` | `codimd` | If CodiMD is run from a subdirectory like `www.example.com/<urlpath>` |
+| `CMD_HOST` | `localhost` | interface/ip to listen on |
+| `CMD_PORT` | `80` | port to listen on |
+| `CMD_PATH` | `/var/run/codimd.sock` | path to UNIX domain socket to listen on (if specified, `CMD_HOST` and `CMD_PORT` are ignored) |
+| `CMD_PROTOCOL_USESSL` | `true` or `false` | set to use SSL protocol for resources path (only applied when domain is set) |
+| `CMD_URL_ADDPORT` | `true` or `false` | set to add port on callback URL (ports `80` or `443` won't be applied) (only applied when domain is set) |
+| `CMD_ALLOW_ORIGIN` | `localhost, codimd.org` | domain name whitelist (use comma to separate) |
+
+
+## CSP and HSTS
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_CSP_ENABLE` | `true` | whether to enable Content Security Policy (directives cannot be configured with environment variables) |
+| `CMD_CSP_REPORTURI` | `https://<someid>.report-uri.com/r/d/csp/enforce` | Allows to add a URL for CSP reports in case of violations |
+| `CMD_HSTS_ENABLE` | ` true` | set to enable [HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) if HTTPS is also enabled (default is ` true`) |
+| `CMD_HSTS_INCLUDE_SUBDOMAINS` | `true` | set to include subdomains in HSTS (default is `true`) |
+| `CMD_HSTS_MAX_AGE` | `31536000` | max duration in seconds to tell clients to keep HSTS status (default is a year) |
+| `CMD_HSTS_PRELOAD` | `true` | whether to allow preloading of the site's HSTS status (e.g. into browsers) |
+
+
+## Privacy and External Requests
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_ALLOW_GRAVATAR` | `true` or `false` | set to `false` to disable gravatar as profile picture source on your instance |
+| `CMD_USECDN` | `true` or `false` | set to use CDN resources or not|
+
+
+## Users and Privileges
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_ALLOW_ANONYMOUS` | `true` or `false` | set to allow anonymous usage (default is `true`) |
+| `CMD_ALLOW_ANONYMOUS_EDITS` | `true` or `false` | if `allowAnonymous` is `true`, allow users to select `freely` permission, allowing guests to edit existing notes (default is `false`) |
+| `CMD_ALLOW_FREEURL` | `true` or `false` | set to allow new note creation by accessing a nonexistent note URL |
+| `CMD_DEFAULT_PERMISSION` | `freely`, `editable`, `limited`, `locked` or `private` | set notes default permission (only applied on signed users) |
+| `CMD_SESSION_LIFE` | `1209600000` | Session life time. (milliseconds) |
+| `CMD_SESSION_SECRET` | no example | Secret used to sign the session cookie. If none is set, one will randomly generated on each startup, meaning all your users will be logged out. |
+
+
+## Login methods
+
+### Email (local account)
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_EMAIL` | `true` or `false` | set to allow email signin |
+| `CMD_ALLOW_EMAIL_REGISTER` | `true` or `false` | set to allow email register (only applied when email is set, default is `true`. Note `bin/manage_users` might help you if registration is `false`.) |
+
+
+### Dropbox Login
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_DROPBOX_CLIENTID` | no example | Dropbox API client id |
+| `CMD_DROPBOX_CLIENTSECRET` | no example | Dropbox API client secret |
+
+
+### Facebook Login
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_FACEBOOK_CLIENTID` | no example | Facebook API client id |
+| `CMD_FACEBOOK_CLIENTSECRET` | no example | Facebook API client secret |
+
+
+### GitHub Login
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_GITHUB_CLIENTID` | no example | GitHub API client id |
+| `CMD_GITHUB_CLIENTSECRET` | no example | GitHub API client secret |
+
+
+### GitLab Login
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_GITLAB_SCOPE` | `read_user` or `api` | GitLab API requested scope (default is `api`) (GitLab snippet import/export need `api` scope) |
+| `CMD_GITLAB_BASEURL` | no example | GitLab authentication endpoint, set to use other endpoint than GitLab.com (optional) |
+| `CMD_GITLAB_CLIENTID` | no example | GitLab API client id |
+| `CMD_GITLAB_CLIENTSECRET` | no example | GitLab API client secret |
+| `CMD_GITLAB_VERSION` | no example | GitLab API version (v3 or v4) |
+
+
+### Google Login
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_GOOGLE_CLIENTID` | no example | Google API client id |
+| `CMD_GOOGLE_CLIENTSECRET` | no example | Google API client secret |
+
+
+### LDAP Login
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_LDAP_URL` | `ldap://example.com` | URL of LDAP server |
+| `CMD_LDAP_BINDDN` | no example | bindDn for LDAP access |
+| `CMD_LDAP_BINDCREDENTIALS` | no example | bindCredentials for LDAP access |
+| `CMD_LDAP_SEARCHBASE` | `o=users,dc=example,dc=com` | LDAP directory to begin search from |
+| `CMD_LDAP_SEARCHFILTER` | `(uid={{username}})` | LDAP filter to search with |
+| `CMD_LDAP_SEARCHATTRIBUTES` | `displayName, mail` | LDAP attributes to search with (use comma to separate) |
+| `CMD_LDAP_USERIDFIELD` | `uidNumber` or `uid` or `sAMAccountName` | The LDAP field which is used uniquely identify a user on CodiMD |
+| `CMD_LDAP_USERNAMEFIELD` | Fallback to userid | The LDAP field which is used as the username on CodiMD |
+| `CMD_LDAP_TLS_CA` | `server-cert.pem, root.pem` | Root CA for LDAP TLS in PEM format (use comma to separate) |
+| `CMD_LDAP_PROVIDERNAME` | `My institution` | Optional name to be displayed at login form indicating the LDAP provider |
+
+
+### Mattermost Login
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_MATTERMOST_BASEURL` | no example | Mattermost authentication endpoint for versions below 5.0. For Mattermost version 5.0 and above, see [guide](guides/auth/mattermost-self-hosted.md). |
+| `CMD_MATTERMOST_CLIENTID` | no example | Mattermost API client id |
+| `CMD_MATTERMOST_CLIENTSECRET` | no example | Mattermost API client secret |
+
+
+### OAuth2 Login
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_OAUTH2_USER_PROFILE_URL` | `https://example.com` | where retrieve information about a user after succesful login. Needs to output JSON. (no default value) Refer to the [Mattermost](guides/auth/mattermost-self-hosted.md) or [Nextcloud](guides/auth/nextcloud.md) examples for more details on all of the `CMD_OAUTH2...` options. |
+| `CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR` | `name` | where to find the username in the JSON from the user profile URL. (no default value)|
+| `CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR` | `display-name` | where to find the display-name in the JSON from the user profile URL. (no default value) |
+| `CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR` | `email` | where to find the email address in the JSON from the user profile URL. (no default value) |
+| `CMD_OAUTH2_TOKEN_URL` | `https://example.com` | sometimes called token endpoint, please refer to the documentation of your OAuth2 provider (no default value) |
+| `CMD_OAUTH2_AUTHORIZATION_URL` | `https://example.com` | authorization URL of your provider, please refer to the documentation of your OAuth2 provider (no default value) |
+| `CMD_OAUTH2_CLIENT_ID` | `afae02fckafd...` | you will get this from your OAuth2 provider when you register CodiMD as OAuth2-client, (no default value) |
+| `CMD_OAUTH2_CLIENT_SECRET` | `afae02fckafd...` | you will get this from your OAuth2 provider when you register CodiMD as OAuth2-client, (no default value) |
+| `CMD_OAUTH2_PROVIDERNAME` | `My institution` | Optional name to be displayed at login form indicating the oAuth2 provider |
+
+
+### SAML Login
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_SAML_IDPSSOURL` | `https://idp.example.com/sso` | authentication endpoint of IdP. for details, see [guide](guides/auth/saml-onelogin.md). |
+| `CMD_SAML_IDPCERT` | `/path/to/cert.pem` | certificate file path of IdP in PEM format |
+| `CMD_SAML_ISSUER` | no example | identity of the service provider (optional, default: serverurl)" |
+| `CMD_SAML_DISABLEREQUESTEDAUTHNCONTEXT` | `true` or `false` | true to allow any authentication method, false restricts to password authentication (PasswordProtectedTransport) method (default: false) |
+| `CMD_SAML_IDENTIFIERFORMAT` | no example | name identifier format (optional, default: `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`) |
+| `CMD_SAML_GROUPATTRIBUTE` | `memberOf` | attribute name for group list (optional) |
+| `CMD_SAML_REQUIREDGROUPS` | `codimd-users` | group names that allowed (use vertical bar to separate) (optional) |
+| `CMD_SAML_EXTERNALGROUPS` | `Temporary-staff` | group names that not allowed (use vertical bar to separate) (optional) |
+| `CMD_SAML_ATTRIBUTE_ID` | `sAMAccountName` | attribute map for `id` (optional, default: NameID of SAML response) |
+| `CMD_SAML_ATTRIBUTE_USERNAME` | `mailNickname` | attribute map for `username` (optional, default: NameID of SAML response) |
+| `CMD_SAML_ATTRIBUTE_EMAIL` | `mail` | attribute map for `email` (optional, default: NameID of SAML response if `CMD_SAML_IDENTIFIERFORMAT` is default) |
+
+
+### Twitter Login
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_TWITTER_CONSUMERKEY` | no example | Twitter API consumer key |
+| `CMD_TWITTER_CONSUMERSECRET` | no example | Twitter API consumer secret |
+
+
+## Upload Storage
+
+These are only relevant when they are also configured in sync with their
+`CMD_IMAGE_UPLOAD_TYPE`. Also keep in mind, that `filesystem` is available, so
+you don't have to use either of these.
+
+
+### Amazon S3
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_S3_ACCESS_KEY_ID` | no example | AWS access key id |
+| `CMD_S3_SECRET_ACCESS_KEY` | no example | AWS secret key |
+| `CMD_S3_REGION` | `ap-northeast-1` | AWS S3 region |
+| `CMD_S3_BUCKET` | no example | AWS S3 bucket name |
+
+
+### Azure Blob Storage
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_AZURE_CONNECTION_STRING` | no example | Azure Blob Storage connection string |
+| `CMD_AZURE_CONTAINER` | no example | Azure Blob Storage container name (automatically created if non existent) |
+
+
+### imgur
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_IMGUR_CLIENTID` | no example | Imgur API client id |
+
+
+### Minio
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_MINIO_ACCESS_KEY` | no example | Minio access key |
+| `CMD_MINIO_SECRET_KEY` | no example | Minio secret key |
+| `CMD_MINIO_ENDPOINT` | `minio.example.org` | Address of your Minio endpoint/instance |
+| `CMD_MINIO_PORT` | `9000` | Port that is used for your Minio instance |
+| `CMD_MINIO_SECURE` | `true` | If set to `true` HTTPS is used for Minio |
+
+
+### Lutim
+
+| variable | example value | description |
+| -------- | ------------- | ----------- |
+| `CMD_LUTIM_URL` | `https://framapic.org/` | When `CMD_IMAGE_UPLOAD_TYPE` is set to `lutim`, you can setup the lutim url |
+
+**Note:** *Due to the rename process we renamed all `HMD_`-prefix variables to be `CMD_`-prefixed. The old ones continue to work.*
+
+**Note:** *relative paths are based on CodiMD's base directory*
diff --git a/docs/dev/getting-started.md b/docs/dev/getting-started.md
new file mode 100644
index 00000000..07524971
--- /dev/null
+++ b/docs/dev/getting-started.md
@@ -0,0 +1,57 @@
+Developer Notes
+===
+
+## Preparing for running the code
+
+**Notice:** *There's [specialised instructions for docker](../setup/docker.md) or [heroku](../setup/heroku.md), if you prefer running code this way!*
+
+1. Clone the repository with `git clone https://github.com/codimd/server.git codimd-server`
+ (cloning is the preferred way, but you can also download and unzip a release)
+2. Enter the directory and run `bin/setup`, which will install npm dependencies
+ and create configs. The setup script is written in Bash, you would need bash
+ as a prerequisite.
+3. Setup the [config file](../configuration-config-file.md) or set up
+ [environment variables](../configuration-env-vars.md).
+
+
+## Running the Code
+
+Now that everything is in place, we can start CodiMD:
+
+4. `npm run build` will build the frontend bundle. It uses webpack to do that.
+5. Run the server with `node app.js`
+
+
+## Running the Code with Auto-Reload
+
+The commands above are fine for production, but you're a developer and surely
+you want to change things. You would need to restart both commands whenever you
+change something. Luckily, you can run these commands that will automatically
+rebuild the frontend or restart the server if necessary.
+
+The commands will stay active in your terminal, so you will need multiple tabs
+to run both at the same time.
+
+4. Use `npm run dev` if you want webpack to continuously rebuild the frontend
+ code.
+5. To auto-reload the server, the easiest method is to install [nodemon](https://www.npmjs.com/package/nodemon)
+ and run `nodemon --watch app.js --watch lib --watch locales app.js`.
+
+
+## Structure
+
+The repository contains two parts: a server (backend) and a client (frontend).
+most of the server code is in `/lib` and most of the client code is in `public`.
+
+```text
+codimd-server/
+├── docs/ --- documentation
+├── lib/ --- server code
+├── test/ --- test suite
+└── public/ --- client code
+ ├── css/ --- css styles
+ ├── docs/ --- default documents
+ ├── js/ --- js scripts
+ ├── vendor/ --- vendor includes
+ └── views/ --- view templates
+```
diff --git a/docs/dev/ot.md b/docs/dev/ot.md
new file mode 100644
index 00000000..924be693
--- /dev/null
+++ b/docs/dev/ot.md
@@ -0,0 +1,14 @@
+Operational Transformation
+===
+
+From 0.3.2, we started supporting operational transformation.
+It makes concurrent editing safe and will not break up other users' operations.
+Additionally, now can show other clients' selections.
+
+See more at [https://operational-transformation.github.io/](https://operational-transformation.github.io/)
+
+And even more in this 2010 article series:
+
+* https://drive.googleblog.com/2010/09/whats-different-about-new-google-docs_21.html
+* https://drive.googleblog.com/2010/09/whats-different-about-new-google-docs_22.html
+* https://drive.googleblog.com/2010/09/whats-different-about-new-google-docs.html
diff --git a/docs/dev/webpack.md b/docs/dev/webpack.md
index 7b391f3a..b05fd1d3 100644
--- a/docs/dev/webpack.md
+++ b/docs/dev/webpack.md
@@ -1,4 +1,11 @@
-# Webpack Docs
+Webpack
+===
+
+Webpack is a JavaScript build system for frontend code. You can find out all
+about it on [the webpack website](https://webpack.js.org/).
+
+Here's how we're using it:
+
## `webpack.common.js`
This file contains all common definition for chunks and plugins, that are needed by the whole app.
diff --git a/docs/guides/auth/github.md b/docs/guides/auth/github.md
index d6a1095e..d16b486f 100644
--- a/docs/guides/auth/github.md
+++ b/docs/guides/auth/github.md
@@ -1,27 +1,24 @@
Authentication guide - GitHub
===
-***Note:** This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!*
+**Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!*
1. Sign-in or sign-up for a GitHub account
2. Navigate to developer settings in your GitHub account [here](https://github.com/settings/developers) and select the "OAuth Apps" tab
-3. Click on the **New OAuth App** button, to create a new OAuth App:
+3. Click on the **New OAuth App** button, to create a new OAuth App:
+ ![create-oauth-app](../../images/auth/create-oauth-app.png)
-![create-oauth-app](../images/auth/create-oauth-app.png)
+4. Fill out the new OAuth application registration form, and click **Register Application**
+ ![register-oauth-application-form](../../images/auth/register-oauth-application-form.png)
-4. Fill out the new OAuth application registration form, and click **Register Application**
+ **Note:** *The callback URL is <your-codimd-url>/auth/github/callback*
-![register-oauth-application-form](../images/auth/register-oauth-application-form.png)
-
-*Note: The callback URL is <your-hackmd-url>/auth/github/callback*
-
-5. After successfully registering the application, you'll receive the Client ID and Client Secret for the application
-
-![application-page](../images/auth/application-page.png)
+5. After successfully registering the application, you'll receive the Client ID and Client Secret for the application
+ ![application-page](../../images/auth/application-page.png)
6. Add the Client ID and Client Secret to your config.json file or pass them as environment variables
- * config.json:
- ````javascript
+ * `config.json`:
+ ```js
{
"production": {
"github": {
@@ -30,9 +27,9 @@ Authentication guide - GitHub
}
}
}
- ````
+ ```
* environment variables:
- ````
- HMD_GITHUB_CLIENTID=3747d30eaccXXXXXXXXX
- HMD_GITHUB_CLIENTSECRET=2a8e682948eee0c580XXXXXXXXXXXXXXXXXXXXXX
+ ```sh
+ CMD_GITHUB_CLIENTID=3747d30eaccXXXXXXXXX
+ CMD_GITHUB_CLIENTSECRET=2a8e682948eee0c580XXXXXXXXXXXXXXXXXXXXXX
````
diff --git a/docs/guides/auth/gitlab-self-hosted.md b/docs/guides/auth/gitlab-self-hosted.md
index 60f62616..ea1ad6bd 100644
--- a/docs/guides/auth/gitlab-self-hosted.md
+++ b/docs/guides/auth/gitlab-self-hosted.md
@@ -1,24 +1,24 @@
-# GitLab (self-hosted)
+GitLab (self-hosted)
===
-***Note:** This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!*
+**Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!*
1. Sign in to your GitLab
2. Navigate to the application management page at `https://your.gitlab.domain/admin/applications` (admin permissions required)
3. Click **New application** to create a new application and fill out the registration form:
-![New GitLab application](../images/auth/gitlab-new-application.png)
+![New GitLab application](../../images/auth/gitlab-new-application.png)
4. Click **Submit**
5. In the list of applications select **HackMD**. Leave that site open to copy the application ID and secret in the next step.
-![Application: HackMD](../images/auth/gitlab-application-details.png)
+![Application: HackMD](../../images/auth/gitlab-application-details.png)
6. In the `docker-compose.yml` add the following environment variables to `app:` `environment:`
```
-- HMD_DOMAIN=your.hackmd.domain
+- HMD_DOMAIN=your.codimd.domain
- HMD_URL_ADDPORT=443
- HMD_PROTOCOL_USESSL=true
- HMD_GITLAB_BASEURL=https://your.gitlab.domain
@@ -27,6 +27,6 @@
```
7. Run `docker-compose up -d` to apply your settings.
-8. Sign in to your HackMD using your GitLab ID:
+8. Sign in to your CodiMD using your GitLab ID:
-![Sign in via GitLab](../images/auth/gitlab-sign-in.png)
+![Sign in via GitLab](../../images/auth/gitlab-sign-in.png)
diff --git a/docs/guides/auth/keycloak.md b/docs/guides/auth/keycloak.md
new file mode 100644
index 00000000..437e01bf
--- /dev/null
+++ b/docs/guides/auth/keycloak.md
@@ -0,0 +1,50 @@
+Keycloak/Red Hat SSO (self-hosted)
+===
+
+## Prerequisites
+
+This guide assumes you have run and configured Keycloak. If you'd like to meet this prerequisite quickly, it can be achieved by running a `jboss/keycloak` container and attaching it to your network. Set the environment variables KEYCLOAK_USER and `KEYCLOAK_PASSWORD`, and expose port 8080.
+
+Where HTTPS is specified throughout, use HTTP instead. You may also have to specify the exposed port, 8080.
+
+## Steps
+
+1. Sign in to the administration portal for your Keycloak instance at https://keycloak.example.com/auth/admin/master/console
+
+You may note that a separate realm is specified throughout this tutorial. It is best practice not to use the master realm, as it normally contains the realm-management client that federates access using the policies and permissions you can create.
+
+2. Navigate to the client management page at `https://keycloak.example.com/auth/admin/master/console/#/realms/your-realm/clients` (admin permissions required)
+3. Click **Create** to create a new client and fill out the registration form. You should set the Root URL to the fully qualified public URL of your CodiMD instance.
+4. Click **Save**
+5. Set the **Access Type** of the client to `confidential`. This will make your client require a client secret upon authentication.
+
+---
+
+### Additional steps to circumvent generic OAuth2 issue:
+
+1. Select Client Scopes from the sidebar, and begin to create a new client scope using the Create button.
+2. Ensure that the **Name** field is set to `id`.
+3. Create a new mapper under the Mappers tab. This should reference the User Property `id`. `Claim JSON Type` should be String and all switches below should be enabled. Save the mapper.
+4. Go to the client you set up in the previous steps using the Clients page, then choose the Client Scopes tab. Apply the scope you've created. This should mitigate errors as seen in [codimd/server#56](https://github.com/codimd/server/issues/56), as the `/userinfo` endpoint should now bring back the user's ID under the `id` key as well as `sub`.
+
+---
+
+6. In the `docker-compose.yml` add the following environment variables to `app:` `environment:`
+
+```
+CMD_OAUTH2_USER_PROFILE_URL=https://keycloak.example.com/auth/realms/your-realm/protocol/openid-connect/userinfo
+CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR=preferred_username
+CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR=name
+CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR=email
+CMD_OAUTH2_TOKEN_URL=https://keycloak.example.com/auth/realms/your-realm/protocol/openid-connect/token
+CMD_OAUTH2_AUTHORIZATION_URL=https://keycloak.example.com/auth/realms/your-realm/protocol/openid-connect/auth
+CMD_OAUTH2_CLIENT_ID=<your client ID>
+CMD_OAUTH2_CLIENT_SECRET=<your client secret, which you can find under the Credentials tab for your client>
+CMD_OAUTH2_PROVIDERNAME=Keycloak
+CMD_DOMAIN=<codimd.example.com>
+CMD_PROTOCOL_USESSL=true
+CMD_URL_ADDPORT=false
+```
+
+7. Run `docker-compose up -d` to apply your settings.
+8. Sign in to your CodiMD using your Keycloak ID
diff --git a/docs/guides/auth/ldap-AD.md b/docs/guides/auth/ldap-AD.md
index 77521db3..e74121f1 100644
--- a/docs/guides/auth/ldap-AD.md
+++ b/docs/guides/auth/ldap-AD.md
@@ -1,7 +1,6 @@
AD LDAP auth
===
-
To setup your CodiMD instance with Active Directory you need the following configs:
```
diff --git a/docs/guides/auth/mattermost-self-hosted.md b/docs/guides/auth/mattermost-self-hosted.md
index 631aabd3..d8280399 100644
--- a/docs/guides/auth/mattermost-self-hosted.md
+++ b/docs/guides/auth/mattermost-self-hosted.md
@@ -1,33 +1,29 @@
Authentication guide - Mattermost (self-hosted)
===
-*Note: The Mattermost setup portion of this document is just a quick guide. See the [official documentation](https://docs.mattermost.com/developer/oauth-2-0-applications.html) for more details.*
+**Note:** *The Mattermost setup portion of this document is just a quick guide. See the [official documentation](https://docs.mattermost.com/developer/oauth-2-0-applications.html) for more details.*
This guide uses the generic OAuth2 module for compatibility with Mattermost version 5.0 and above.
1. Sign-in with an administrator account to your Mattermost instance
-2. Make sure **OAuth 2.0 Service Provider** is enabled in the Main Menu (menu button next to your username in the top left corner) --> System Console --> Custom Integrations menu, which you can find at `https://your.mattermost.domain/admin_console/integrations/custom`
-
-![mattermost-enable-oauth2](../images/auth/mattermost-enable-oauth2.png)
+2. Make sure **OAuth 2.0 Service Provider** is enabled in the Main Menu (menu button next to your username in the top left corner) --> System Console --> Custom Integrations menu, which you can find at `https://your.mattermost.domain/admin_console/integrations/custom`
+ ![mattermost-enable-oauth2](../../images/auth/mattermost-enable-oauth2.png)
3. Navigate to the OAuth integration settings through Main Menu --> Integrations --> OAuth 2.0 Applications, at `https://your.mattermost.domain/yourteam/integrations/oauth2-apps`
-4. Click on the **Add OAuth 2.0 Application** button to add a new OAuth application
-
-![mattermost-oauth-app-add](../images/auth/mattermost-oauth-app-add.png)
+4. Click on the **Add OAuth 2.0 Application** button to add a new OAuth application
+ ![mattermost-oauth-app-add](../../images/auth/mattermost-oauth-app-add.png)
-5. Fill out the form and click **Save**
-
-![mattermost-oauth-app-form](../images/auth/mattermost-oauth-app-form.png)
+5. Fill out the form and click **Save**
+ ![mattermost-oauth-app-form](../../images/auth/mattermost-oauth-app-form.png)
*Note: The callback URL is \<your-codimd-url\>/auth/oauth2/callback*
-6. After saving the application, you'll receive the Client ID and Client Secret
-
-![mattermost-oauth-app-done](../images/auth/mattermost-oauth-app-done.png)
+6. After saving the application, you'll receive the Client ID and Client Secret
+ ![mattermost-oauth-app-done](../../images/auth/mattermost-oauth-app-done.png)
7. Add the Client ID and Client Secret to your config.json file or pass them as environment variables
- * config.json:
- ````javascript
+ * `config.json`:
+ ```javascript
{
"production": {
"oauth2": {
@@ -43,9 +39,9 @@ This guide uses the generic OAuth2 module for compatibility with Mattermost vers
}
}
}
- ````
+ ```
* environment variables:
- ````
+ ```sh
CMD_OAUTH2_BASEURL=https://your.mattermost.domain
CMD_OAUTH2_USER_PROFILE_URL=https://your.mattermost.domain/api/v4/users/me
CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR=id
@@ -55,4 +51,4 @@ This guide uses the generic OAuth2 module for compatibility with Mattermost vers
CMD_OAUTH2_AUTHORIZATION_URL=https://your.mattermost.domain/oauth/authorize
CMD_OAUTH2_CLIENT_ID=ii4p1u3jz7dXXXXXXXXXXXXXXX
CMD_OAUTH2_CLIENT_SECRET=mqzzx6fydbXXXXXXXXXXXXXXXX
- ````
+ ```
diff --git a/docs/guides/auth/nextcloud.md b/docs/guides/auth/nextcloud.md
index 108772dd..3bf86d31 100644
--- a/docs/guides/auth/nextcloud.md
+++ b/docs/guides/auth/nextcloud.md
@@ -9,15 +9,15 @@ This guide uses the generic OAuth2 module for compatibility with Nextcloud 13 an
2. Navigate to the OAuth integration settings: Profile Icon (top right) --> Settings
Then choose Security Settings from the *Administration* part of the list - Don't confuse this with Personal Security Settings, where you would change your personal password!
- At the top there's OAuth 2.0-Clients.
- ![Where to find OAuth2 in Nextcloud](../images/auth/nextcloud-oauth2-1-settings.png)
+ At the top there's OAuth 2.0-Clients.
+ ![Where to find OAuth2 in Nextcloud](../../images/auth/nextcloud-oauth2-1-settings.png)
-3. Add your CodiMD instance by giving it a *name* (perhaps CodiMD, but could be anything) and a *Redirection-URI*. The Redirection-URI will be `\<your-codimd-url\>/auth/oauth2/callback`. Click <kbd>Add</kbd>.
- ![Adding a client to Nextcloud](../images/auth/nextcloud-oauth2-2-client-add.png)
+3. Add your CodiMD instance by giving it a *name* (perhaps CodiMD, but could be anything) and a *Redirection-URI*. The Redirection-URI will be `\<your-codimd-url\>/auth/oauth2/callback`. Click <kbd>Add</kbd>.
+ ![Adding a client to Nextcloud](../../images/auth/nextcloud-oauth2-2-client-add.png)
4. You'll now see a line containing a *client identifier* and a *Secret*.
- ![Successfully added OAuth2-client](../images/auth/nextcloud-oauth2-3-clientid-secret.png)
+ ![Successfully added OAuth2-client](../../images/auth/nextcloud-oauth2-3-clientid-secret.png)
5. That's it for Nextcloud, the rest is configured in your CodiMD `config.json` or via the `CMD_` environment variables!
diff --git a/docs/guides/auth/oauth.md b/docs/guides/auth/oauth.md
new file mode 100644
index 00000000..46314e26
--- /dev/null
+++ b/docs/guides/auth/oauth.md
@@ -0,0 +1,12 @@
+# OAuth general information
+
+| service | callback URL (after the server URL) |
+| ------- | --------- |
+| facebook | `/auth/facebook/callback` |
+| twitter | `/auth/twitter/callback` |
+| github | `/auth/github/callback` |
+| gitlab | `/auth/gitlab/callback` |
+| mattermost | `/auth/mattermost/callback` |
+| dropbox | `/auth/dropbox/callback` |
+| google | `/auth/google/callback` |
+| saml | `/auth/saml/callback` |
diff --git a/docs/guides/auth/saml-onelogin.md b/docs/guides/auth/saml-onelogin.md
index 02a5ffac..785e36ba 100644
--- a/docs/guides/auth/saml-onelogin.md
+++ b/docs/guides/auth/saml-onelogin.md
@@ -1,40 +1,35 @@
Authentication guide - SAML (OneLogin)
===
-***Note:** This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!*
+**Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!*
1. Sign-in or sign-up for an OneLogin account. (available free trial for 2 weeks)
2. Go to the administration page.
-3. Select the **APPS** menu and click on the **Add Apps**.
+3. Select the **APPS** menu and click on the **Add Apps**.
+ ![onelogin-add-app](../../images/auth/onelogin-add-app.png)
-![onelogin-add-app](../images/auth/onelogin-add-app.png)
+4. Find "SAML Test Connector (SP)" for template of settings and select it.
+ ![onelogin-select-template](../../images/auth/onelogin-select-template.png)
-4. Find "SAML Test Connector (SP)" for template of settings and select it.
-
-![onelogin-select-template](../images/auth/onelogin-select-template.png)
-
-5. Edit display name and icons for OneLogin dashboard as you want, and click **SAVE**.
-
-![onelogin-edit-app-name](../images/auth/onelogin-edit-app-name.png)
+5. Edit display name and icons for OneLogin dashboard as you want, and click **SAVE**.
+ ![onelogin-edit-app-name](../../images/auth/onelogin-edit-app-name.png)
6. After that other tabs will appear, click the **Configuration**, and fill out the below items, and click **SAVE**.
- * RelayState: The base URL of your hackmd, which is issuer. (last slash is not needed)
- * ACS (Consumer) URL Validator: The callback URL of your hackmd. (serverurl + /auth/saml/callback)
+ * RelayState: The base URL of your CodiMD, which is issuer. (last slash is not needed)
+ * ACS (Consumer) URL Validator: The callback URL of your CodiMD. (serverurl + /auth/saml/callback)
* ACS (Consumer) URL: same as above.
- * Login URL: login URL(SAML requester) of your hackmd. (serverurl + /auth/saml)
-
-![onelogin-edit-sp-metadata](../images/auth/onelogin-edit-sp-metadata.png)
+ * Login URL: login URL(SAML requester) of your CopiMD. (serverurl + /auth/saml)
+ ![onelogin-edit-sp-metadata](../../images/auth/onelogin-edit-sp-metadata.png)
7. The registration is completed. Next, click **SSO** and copy or download the items below.
* X.509 Certificate: Click **View Details** and **DOWNLOAD** or copy the content of certificate ....(A)
- * SAML 2.0 Endpoint (HTTP): Copy the URL ....(B)
-
-![onelogin-copy-idp-metadata](../images/auth/onelogin-copy-idp-metadata.png)
+ * SAML 2.0 Endpoint (HTTP): Copy the URL ....(B)
+ ![onelogin-copy-idp-metadata](../../images/auth/onelogin-copy-idp-metadata.png)
-8. In your hackmd server, create IdP certificate file from (A)
+8. In your CodiMD server, create IdP certificate file from (A)
9. Add the IdP URL (B) and the Idp certificate file path to your config.json file or pass them as environment variables.
- * config.json:
- ````javascript
+ * `config.json`:
+ ```javascript
{
"production": {
"saml": {
@@ -43,12 +38,11 @@ Authentication guide - SAML (OneLogin)
}
}
}
- ````
+ ```
* environment variables
- ````
- HMD_SAML_IDPSSOURL=https://*******.onelogin.com/trust/saml2/http-post/sso/******
- HMD_SAML_IDPCERT=/path/to/idp_cert.pem
- ````
-10. Try sign-in with SAML from your hackmd sign-in button or OneLogin dashboard (like the screenshot below).
-
-![onelogin-use-dashboard](../images/auth/onelogin-use-dashboard.png)
+ ```sh
+ CMD_SAML_IDPSSOURL=https://*******.onelogin.com/trust/saml2/http-post/sso/******
+ CMD_SAML_IDPCERT=/path/to/idp_cert.pem
+ ```
+10. Try sign-in with SAML from your CodiMD sign-in button or OneLogin dashboard (like the screenshot below).
+ ![onelogin-use-dashboard](../../images/auth/onelogin-use-dashboard.png)
diff --git a/docs/guides/auth/saml.md b/docs/guides/auth/saml.md
index 97ac9d3c..3a64f5f7 100644
--- a/docs/guides/auth/saml.md
+++ b/docs/guides/auth/saml.md
@@ -1,44 +1,44 @@
Authentication guide - SAML
===
-***Note:** This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!*
+**Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!*
The basic procedure is the same as the case of OneLogin which is mentioned in [OneLogin-Guide](./saml-onelogin.md). If you want to match your IdP, you can use more configurations as below.
-* If your IdP accepts metadata XML of the service provider to ease configuraion, use this url to download metadata XML.
+* If your IdP accepts metadata XML of the service provider to ease configuration, use this url to download metadata XML.
* {{your-serverurl}}/auth/saml/metadata
- * _Note: If not accessable from IdP, download to local once and upload to IdP._
+ * _Note: If not accessible from IdP, download to local once and upload to IdP._
* Change the value of `issuer`, `identifierFormat` to match your IdP.
- * `issuer`: A unique id to identify the application to the IdP, which is the base URL of your HackMD as default
+ * `issuer`: A unique id to identify the application to the IdP, which is the base URL of your CodiMD as default
* `identifierFormat`: A format of unique id to identify the user of IdP, which is the format based on email address as default. It is recommend that you use as below.
* urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress (default)
* urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
- * config.json:
- ````javascript
+ * `config.json`:
+ ```javascript
{
"production": {
"saml": {
/* omitted */
- "issuer": "myhackmd"
+ "issuer": "mycodimd"
"identifierFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
}
}
}
- ````
+ ```
* environment variables
- ````
- HMD_SAML_ISSUER=myhackmd
- HMD_SAML_IDENTIFIERFORMAT=urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
- ````
+ ```
+ CMD_SAML_ISSUER=mycodimd
+ CMD_SAML_IDENTIFIERFORMAT=urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
+ ```
* Change mapping of attribute names to customize the displaying user name and email address to match your IdP.
* `attribute`: A dictionary to map attribute names
- * `attribute.id`: A primary key of user table for your HackMD
- * `attribute.username`: Attribute name of displaying user name on HackMD
+ * `attribute.id`: A primary key of user table for your CodiMD
+ * `attribute.username`: Attribute name of displaying user name on CodiMD
* `attribute.email`: Attribute name of email address, which will be also used for Gravatar
* _Note: Default value of all attributes is NameID of SAML response, which is email address if `identifierFormat` is default._
- * config.json:
- ````javascript
+ * `config.json`:
+ ```javascript
{
"production": {
"saml": {
@@ -51,35 +51,35 @@ The basic procedure is the same as the case of OneLogin which is mentioned in [O
}
}
}
- ````
+ ```
* environment variables
- ````
- HMD_SAML_ATTRIBUTE_ID=sAMAccountName
- HMD_SAML_ATTRIBUTE_USERNAME=nickName
- HMD_SAML_ATTRIBUTE_EMAIL=mail
- ````
+ ```sh
+ CMD_SAML_ATTRIBUTE_ID=sAMAccountName
+ CMD_SAML_ATTRIBUTE_USERNAME=nickName
+ CMD_SAML_ATTRIBUTE_EMAIL=mail
+ ```
-* If you want to controll permission by group membership, add group attribute name and required group (allowed) or external group (not allowed).
+* If you want to control permission by group membership, add group attribute name and required group (allowed) or external group (not allowed).
* `groupAttribute`: An attribute name of group membership
- * `requiredGroups`: Group names array for allowed access to HackMD. Use vertical bar to separate for environment variables.
- * `externalGroups`: Group names array for not allowed access to HackMD. Use vertical bar to separate for environment variables.
+ * `requiredGroups`: Group names array for allowed access to CodiMD. Use vertical bar to separate for environment variables.
+ * `externalGroups`: Group names array for not allowed access to CodiMD. Use vertical bar to separate for environment variables.
* _Note: Evaluates `externalGroups` first_
- * config.json:
- ````javascript
+ * `config.json`:
+ ```javascript
{
"production": {
"saml": {
/* omitted */
"groupAttribute": "memberOf",
- "requiredGroups": [ "hackmd-users", "board-members" ],
+ "requiredGroups": [ "codimd-users", "board-members" ],
"externalGroups": [ "temporary-staff" ]
}
}
}
- ````
+ ```
* environment variables
- ````
- HMD_SAML_GROUPATTRIBUTE=memberOf
- HMD_SAML_REQUIREDGROUPS=hackmd-users|board-members
- HMD_SAML_EXTERNALGROUPS=temporary-staff
- ````
+ ```sh
+ CMD_SAML_GROUPATTRIBUTE=memberOf
+ CMD_SAML_REQUIREDGROUPS=codimd-users|board-members
+ CMD_SAML_EXTERNALGROUPS=temporary-staff
+ ```
diff --git a/docs/guides/auth/twitter.md b/docs/guides/auth/twitter.md
index 1b96288f..1973515c 100644
--- a/docs/guides/auth/twitter.md
+++ b/docs/guides/auth/twitter.md
@@ -1,33 +1,29 @@
Authentication guide - Twitter
===
-***Note:** This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!*
+**Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!*
1. Sign-in or sign-up for a Twitter account
2. Go to the Twitter Application management page [here](https://apps.twitter.com/)
-3. Click on the **Create New App** button to create a new Twitter app:
+3. Click on the **Create New App** button to create a new Twitter app:
+ ![create-twitter-app](../../images/auth/create-twitter-app.png)
-![create-twitter-app](../images/auth/create-twitter-app.png)
+4. Fill out the create application form, check the developer agreement box, and click **Create Your Twitter Application**
+ ![register-twitter-application](../../images/auth/register-twitter-application.png)
-4. Fill out the create application form, check the developer agreement box, and click **Create Your Twitter Application**
+ *Note: you may have to register your phone number with Twitter to create a Twitter application*
-![register-twitter-application](../images/auth/register-twitter-application.png)
+ To do this Click your profile icon --> Settings and privacy --> Mobile --> Select Country/region --> Enter phone number --> Click Continue
-*Note: you may have to register your phone number with Twitter to create a Twitter application*
+5. After you receive confirmation that the Twitter application was created, click **Keys and Access Tokens**
+ ![twitter-app-confirmation](../../images/auth/twitter-app-confirmation.png)
-To do this Click your profile icon --> Settings and privacy --> Mobile --> Select Country/region --> Enter phone number --> Click Continue
+6. Obtain your Twitter Consumer Key and Consumer Secret
+ ![twitter-app-keys](../../images/auth/twitter-app-keys.png)
-5. After you receive confirmation that the Twitter application was created, click **Keys and Access Tokens**
-
-![twitter-app-confirmation](../images/auth/twitter-app-confirmation.png)
-
-6. Obtain your Twitter Consumer Key and Consumer Secret
-
-![twitter-app-keys](../images/auth/twitter-app-keys.png)
-
-7. Add your Consumer Key and Consumer Secret to your config.json file or pass them as environment variables:
- * config.json:
- ````javascript
+7. Add your Consumer Key and Consumer Secret to your `config.json` file or pass them as environment variables:
+ * `config.json`:
+ ```javascript
{
"production": {
"twitter": {
@@ -36,9 +32,9 @@ To do this Click your profile icon --> Settings and privacy --> Mobile --> Sele
}
}
}
- ````
+ ```
* environment variables:
- ````
- HMD_TWITTER_CONSUMERKEY=esTCJFXXXXXXXXXXXXXXXXXXX
- HMD_TWITTER_CONSUMERSECRET=zpCs4tU86pRVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- ````
+ ```sh
+ CMD_TWITTER_CONSUMERKEY=esTCJFXXXXXXXXXXXXXXXXXXX
+ CMD_TWITTER_CONSUMERSECRET=zpCs4tU86pRVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ ```
diff --git a/docs/guides/migrate-etherpad.md b/docs/guides/migrate-etherpad.md
index c3783c89..914a240d 100644
--- a/docs/guides/migrate-etherpad.md
+++ b/docs/guides/migrate-etherpad.md
@@ -12,7 +12,7 @@ require some creativity to work properly in your case. When I wrote this guide,
[Etherpad 1.7.0] and [CodiMD 1.2.1]. Good luck!
[Etherpad 1.7.0]: https://github.com/ether/etherpad-lite/tree/1.7.0
-[CodiMD 1.2.1]: https://github.com/hackmdio/codimd/tree/1.2.1
+[CodiMD 1.2.1]: https://github.com/codimd/server/tree/1.2.1
## 0. Requirements
@@ -21,7 +21,7 @@ require some creativity to work properly in your case. When I wrote this guide,
- running CodiMD server
- [codimd-cli]
-[codimd-cli]: https://github.com/hackmdio/codimd-cli/blob/master/bin/codimd
+[codimd-cli]: https://github.com/codimd/cli/blob/master/bin/codimd
## 1. Retrieve the list of pads
@@ -56,8 +56,8 @@ configuration settings `ETHERPAD_SERVER` and `CODIMD_SERVER`.
# Description: Migrate pads from etherpad to codimd
# Author: Daan Sprenkels <hello@dsprenkels.com>
-# This script uses the codimd command line script[1] to import a list of pads from
-# [1]: https://github.com/hackmdio/codimd-cli/blob/master/bin/codimd
+# This script uses the codimd command line script[1] to import a list of pads from
+# [1]: https://github.com/codimd/cli/blob/master/bin/codimd
# The base url to where etherpad is hosted
ETHERPAD_SERVER="https://etherpad.example.com"
@@ -80,7 +80,7 @@ for PAD_NAME in $1; do
# Download the pad
PAD_FILE="$(mktemp)"
curl "$ETHERPAD_SERVER/p/$PAD_NAME/export/txt" >"$PAD_FILE"
-
+
# Import the pad into codimd
OUTPUT="$(./codimd import "$PAD_FILE")"
echo "$PAD_NAME -> $OUTPUT" >>"$REDIRECTS_FILE"
diff --git a/docs/guides/migrations-and-breaking-changes.md b/docs/guides/migrations-and-breaking-changes.md
new file mode 100644
index 00000000..ef65db1c
--- /dev/null
+++ b/docs/guides/migrations-and-breaking-changes.md
@@ -0,0 +1,56 @@
+Migrations and Notable Changes
+===
+
+## Migrating to 1.4.0
+
+We dropped support for node 6 with this version. If you have any trouble running this version, please double check that you are running at least node 8!
+
+## Migrating to 1.3.2
+
+This is not a breaking change, but to stay up to date with the community
+repository, you may need to update a few urls. This is not a breaking change.
+
+See more at [issue #10](https://github.com/codimd/server/issues/10)
+
+**Native setup using git:**
+
+Change the upstream remote using `git remote set-url origin https://github.com/codimd/server.git`.
+
+**Docker:**
+
+When you use our [container repository](https://github.com/codimd/container)
+(which was previously `codimd-container`) all you can simply run `git pull` and
+your `docker-compose.yml` will be updated.
+
+When you setup things yourself, make sure you use the new image:
+[`quay.io/codimd/server`](https://quay.io/repository/codimd/server?tab=tags).
+
+**Heroku:**
+
+All you need to do is [disconnect GitHub](https://devcenter.heroku.com/articles/github-integration#disconnecting-from-github)
+and [reconnect it](https://devcenter.heroku.com/articles/github-integration#enabling-github-integration)
+with this new repository.
+
+Or you can use our Heroku button and redeploy your instance and link the old
+database again.
+
+## Migrating to 1.1.0
+
+We deprecated the older lower case config style and moved on to camel case style. Please have a look at the current `config.json.example` and check the warnings on startup.
+
+*Notice: This is not a breaking change right now but will be in the future*
+
+## Migrating to 0.5.0
+
+[migration-to-0.5.0 migration tool](https://github.com/hackmdio/migration-to-0.5.0)
+
+We don't use LZString to compress socket.io data and DB data after version 0.5.0.
+Please run the migration tool if you're upgrading from the old version.
+
+## Migrating to 0.4.0
+
+[migration-to-0.4.0 migration tool](https://github.com/hackmdio/migration-to-0.4.0)
+
+We've dropped MongoDB after version 0.4.0.
+So here is the migration tool for you to transfer the old DB data to the new DB.
+This tool is also used for official service.
diff --git a/docs/guides/minio-image-upload.md b/docs/guides/minio-image-upload.md
index 7f5796ca..258b0d90 100644
--- a/docs/guides/minio-image-upload.md
+++ b/docs/guides/minio-image-upload.md
@@ -1,7 +1,7 @@
Minio Guide for CodiMD
===
-***Note:** This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!*
+**Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!*
1. First of all you need to setup Minio itself.
@@ -9,7 +9,7 @@ Minio Guide for CodiMD
production setup.
For checking it out and development purposes a non-persistent setup is enough:
- ```console
+ ```sh
docker run --name test-minio --rm -d -p 9000:9000 minio/minio server /data
```
@@ -18,29 +18,29 @@ Minio Guide for CodiMD
2. Next step is to get the credentials form the container:
- ```
+ ```sh
docker logs test-minio
```
- ![docker logs](images/minio-image-upload/docker-logs.png)
+ ![docker logs](../images/minio-image-upload/docker-logs.png)
3. Open http://localhost:9000 and login with the shown credentials.
- ![minio default view](images/minio-image-upload/default-view.png)
+ ![minio default view](../images/minio-image-upload/default-view.png)
-4. Create a bucket for HackMD
+4. Create a bucket for CodiMD
- ![minio create bucket](images/minio-image-upload/create-bucket.png)
+ ![minio create bucket](../images/minio-image-upload/create-bucket.png)
5. Add a policy for the prefix `uploads` and make it read-only.
- ![minio edit policy](images/minio-image-upload/open-edit-policy.png)
+ ![minio edit policy](../images/minio-image-upload/open-edit-policy.png)
*Open policy editor*
- ![minio policy adding](images/minio-image-upload/create-policy.png)
+ ![minio policy adding](../images/minio-image-upload/create-policy.png)
*Add policy for uploads*
-6. Set credentials and configs for Minio in HackMD's `config.json`
+6. Set credentials and configs for Minio in CodiMD's `config.json`
```JSON
"minio": {
@@ -58,7 +58,7 @@ Minio Guide for CodiMD
7. Set bucket name
```JSON
- "s3bucket": "hackmd"
+ "s3bucket": "codimd"
```
8. Set upload type.
@@ -79,7 +79,7 @@ Minio Guide for CodiMD
"port": 9000,
"secure": false
},
- "s3bucket": "hackmd",
+ "s3bucket": "codimd",
"imageuploadtype": "minio"
}
```
diff --git a/docs/guides/providing-terms.md b/docs/guides/providing-terms.md
index 1e580df9..73de2b37 100644
--- a/docs/guides/providing-terms.md
+++ b/docs/guides/providing-terms.md
@@ -15,3 +15,12 @@ To add a privacy policy you can use the same technique as for the terms of use.
See our example file `./public/docs/privacy.md.example` container some useful hints for writing your own privacy policy.
As with the terms of use, a link to the privacy notices will show up in the area where the release notes are provided on the index page.
+
+Setup your imprint
+===
+
+To add an imprint you can use the same technique as for the terms of use. The main difference is that the document is called `imprint.md`.
+
+It has to be provided under `./public/docs/` and will be automatically turned into a CodiMD document. It will also automatically updated as soon as you change the document on disk.
+
+As with the terms of use, a link to the imprint will show up in the area where the release notes are provided on the index page.
diff --git a/docs/guides/s3-image-upload.md b/docs/guides/s3-image-upload.md
index dc5e420d..7ca8dd12 100644
--- a/docs/guides/s3-image-upload.md
+++ b/docs/guides/s3-image-upload.md
@@ -1,18 +1,19 @@
-# Guide - Setup CodiMD S3 image upload
+Guide - Setup CodiMD S3 image upload
+===
-***Note:** This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!*
+**Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!*
1. Go to [AWS S3 console](https://console.aws.amazon.com/s3/home) and create a new bucket.
- ![create-bucket](images/s3-image-upload/create-bucket.png)
+ ![create-bucket](../images/s3-image-upload/create-bucket.png)
2. Click on bucket, select **Properties** on the side panel, and find **Permission** section. Click **Edit bucket policy**.
- ![bucket-property](images/s3-image-upload/bucket-property.png)
+ ![bucket-property](../images/s3-image-upload/bucket-property.png)
3. Enter the following policy, replace `bucket_name` with your bucket name:
- ![bucket-policy-editor](images/s3-image-upload/bucket-policy-editor.png)
+ ![bucket-policy-editor](../images/s3-image-upload/bucket-policy-editor.png)
```json
{
@@ -32,15 +33,15 @@
5. Enter user page, select **Permission** tab, look at **Inline Policies** section, and click **Create User Policy**
- ![iam-user](images/s3-image-upload/iam-user.png)
+ ![iam-user](../images/s3-image-upload/iam-user.png)
6. Select **Custom Policy**
- ![custom-policy](images/s3-image-upload/custom-policy.png)
+ ![custom-policy](../images/s3-image-upload/custom-policy.png)
7. Enter the following policy, replace `bucket_name` with your bucket name:
- ![review-policy](images/s3-image-upload/review-policy.png)
+ ![review-policy](../images/s3-image-upload/review-policy.png)
```json
{
@@ -76,7 +77,7 @@
}
```
-9. In additional to edit `config.json` directly, you could also try [environment variable](https://github.com/hackmdio/hackmd#environment-variables-will-overwrite-other-server-configs).
+9. In additional to edit `config.json` directly, you could also try [environment variables](../configuration-env-vars.md).
## Related Tools
diff --git a/docs/history.md b/docs/history.md
new file mode 100644
index 00000000..cd12a369
--- /dev/null
+++ b/docs/history.md
@@ -0,0 +1,40 @@
+History of CodiMD
+===
+
+## It started with HackMD
+
+HackMD is the origin of this project, which was mostly developed by Max Wu and
+Yukai Huang. Originally, this was open source under MIT license, but was
+[relicensed in October 2017 to be AGPLv3](https://github.com/hackmdio/codimd/pull/578).
+At the same time, [hackmd.io](https://hackmd.io) was founded to offer a
+commercial version of HackMD.
+
+The AGPLv3-version was developed and released by the community, this was for a
+while referred to as "HackMD community edition".
+
+*For more on the splitting of the projects, please refer to [A note to our community (2017-10-11)](https://hackmd.io/c/community-news/https%3A%2F%2Fhackmd.io%2Fs%2Fr1_4j9_hZ).*
+
+
+## HackMD CE became CodiMD
+
+In June 2018, CodiMD was renamed from its former name "HackMD" and continued to
+be developed under AGPLv3 by the community. We decided to change the name to
+break the confusion between HackMD (enterprise offering) and CodiMD (community
+project), as people mistook it for an open core development model.
+
+*For the whole renaming story, see the [issue where the renaming was discussed](https://github.com/hackmdio/hackmd/issues/720).*
+
+
+## CodiMD went independent
+
+In March 2019, a discussion over licensing, governance and the future of CodiMD
+lead to the formation of a distinct GitHub organization. Up to that point, the
+community project resided in the organization of hackmdio but was for the most
+part self-organized.
+
+During that debate, we did not reach an agreement that would have allowed us to
+move the repository, so we simply forked it. We still welcome the HackMD team
+as part of our community, especially since a large portion of this code base
+originated with them.
+
+*For the debate that lead to this step, please refer to the [governance debate](https://github.com/hackmdio/hackmd/issues/1170) and [the announcement of the new repository](https://github.com/codimd/server/issues/10).*
diff --git a/docs/images/CodiMD-1.3.2-features.png b/docs/images/CodiMD-1.3.2-features.png
new file mode 100644
index 00000000..952efe30
--- /dev/null
+++ b/docs/images/CodiMD-1.3.2-features.png
Binary files differ
diff --git a/docs/guides/images/auth/application-page.png b/docs/images/auth/application-page.png
index a57da017..a57da017 100644
--- a/docs/guides/images/auth/application-page.png
+++ b/docs/images/auth/application-page.png
Binary files differ
diff --git a/docs/guides/images/auth/create-oauth-app.png b/docs/images/auth/create-oauth-app.png
index 07d0b511..07d0b511 100644
--- a/docs/guides/images/auth/create-oauth-app.png
+++ b/docs/images/auth/create-oauth-app.png
Binary files differ
diff --git a/docs/guides/images/auth/create-twitter-app.png b/docs/images/auth/create-twitter-app.png
index c555464e..c555464e 100644
--- a/docs/guides/images/auth/create-twitter-app.png
+++ b/docs/images/auth/create-twitter-app.png
Binary files differ
diff --git a/docs/guides/images/auth/gitlab-application-details.png b/docs/images/auth/gitlab-application-details.png
index 6e042886..6e042886 100644
--- a/docs/guides/images/auth/gitlab-application-details.png
+++ b/docs/images/auth/gitlab-application-details.png
Binary files differ
diff --git a/docs/guides/images/auth/gitlab-new-application.png b/docs/images/auth/gitlab-new-application.png
index be9e4446..be9e4446 100644
--- a/docs/guides/images/auth/gitlab-new-application.png
+++ b/docs/images/auth/gitlab-new-application.png
Binary files differ
diff --git a/docs/guides/images/auth/gitlab-sign-in.png b/docs/images/auth/gitlab-sign-in.png
index 27aaf6dd..27aaf6dd 100644
--- a/docs/guides/images/auth/gitlab-sign-in.png
+++ b/docs/images/auth/gitlab-sign-in.png
Binary files differ
diff --git a/docs/guides/images/auth/mattermost-enable-oauth2.png b/docs/images/auth/mattermost-enable-oauth2.png
index af5cdbe2..af5cdbe2 100644
--- a/docs/guides/images/auth/mattermost-enable-oauth2.png
+++ b/docs/images/auth/mattermost-enable-oauth2.png
Binary files differ
diff --git a/docs/guides/images/auth/mattermost-oauth-app-add.png b/docs/images/auth/mattermost-oauth-app-add.png
index 4a8cdfa7..4a8cdfa7 100644
--- a/docs/guides/images/auth/mattermost-oauth-app-add.png
+++ b/docs/images/auth/mattermost-oauth-app-add.png
Binary files differ
diff --git a/docs/guides/images/auth/mattermost-oauth-app-done.png b/docs/images/auth/mattermost-oauth-app-done.png
index fcf1beaf..fcf1beaf 100644
--- a/docs/guides/images/auth/mattermost-oauth-app-done.png
+++ b/docs/images/auth/mattermost-oauth-app-done.png
Binary files differ
diff --git a/docs/guides/images/auth/mattermost-oauth-app-form.png b/docs/images/auth/mattermost-oauth-app-form.png
index 215947bf..215947bf 100644
--- a/docs/guides/images/auth/mattermost-oauth-app-form.png
+++ b/docs/images/auth/mattermost-oauth-app-form.png
Binary files differ
diff --git a/docs/guides/images/auth/nextcloud-oauth2-1-settings.png b/docs/images/auth/nextcloud-oauth2-1-settings.png
index 82652a54..82652a54 100644
--- a/docs/guides/images/auth/nextcloud-oauth2-1-settings.png
+++ b/docs/images/auth/nextcloud-oauth2-1-settings.png
Binary files differ
diff --git a/docs/guides/images/auth/nextcloud-oauth2-2-client-add.png b/docs/images/auth/nextcloud-oauth2-2-client-add.png
index 7909fa62..7909fa62 100644
--- a/docs/guides/images/auth/nextcloud-oauth2-2-client-add.png
+++ b/docs/images/auth/nextcloud-oauth2-2-client-add.png
Binary files differ
diff --git a/docs/guides/images/auth/nextcloud-oauth2-3-clientid-secret.png b/docs/images/auth/nextcloud-oauth2-3-clientid-secret.png
index b05513d1..b05513d1 100644
--- a/docs/guides/images/auth/nextcloud-oauth2-3-clientid-secret.png
+++ b/docs/images/auth/nextcloud-oauth2-3-clientid-secret.png
Binary files differ
diff --git a/docs/guides/images/auth/onelogin-add-app.png b/docs/images/auth/onelogin-add-app.png
index 356bb852..356bb852 100644
--- a/docs/guides/images/auth/onelogin-add-app.png
+++ b/docs/images/auth/onelogin-add-app.png
Binary files differ
diff --git a/docs/guides/images/auth/onelogin-copy-idp-metadata.png b/docs/images/auth/onelogin-copy-idp-metadata.png
index 7185f537..7185f537 100644
--- a/docs/guides/images/auth/onelogin-copy-idp-metadata.png
+++ b/docs/images/auth/onelogin-copy-idp-metadata.png
Binary files differ
diff --git a/docs/guides/images/auth/onelogin-edit-app-name.png b/docs/images/auth/onelogin-edit-app-name.png
index 634d1916..634d1916 100644
--- a/docs/guides/images/auth/onelogin-edit-app-name.png
+++ b/docs/images/auth/onelogin-edit-app-name.png
Binary files differ
diff --git a/docs/guides/images/auth/onelogin-edit-sp-metadata.png b/docs/images/auth/onelogin-edit-sp-metadata.png
index 111580b1..111580b1 100644
--- a/docs/guides/images/auth/onelogin-edit-sp-metadata.png
+++ b/docs/images/auth/onelogin-edit-sp-metadata.png
Binary files differ
diff --git a/docs/guides/images/auth/onelogin-select-template.png b/docs/images/auth/onelogin-select-template.png
index 13401816..13401816 100644
--- a/docs/guides/images/auth/onelogin-select-template.png
+++ b/docs/images/auth/onelogin-select-template.png
Binary files differ
diff --git a/docs/guides/images/auth/onelogin-use-dashboard.png b/docs/images/auth/onelogin-use-dashboard.png
index ea9038ff..ea9038ff 100644
--- a/docs/guides/images/auth/onelogin-use-dashboard.png
+++ b/docs/images/auth/onelogin-use-dashboard.png
Binary files differ
diff --git a/docs/guides/images/auth/register-oauth-application-form.png b/docs/images/auth/register-oauth-application-form.png
index bd27fd70..bd27fd70 100644
--- a/docs/guides/images/auth/register-oauth-application-form.png
+++ b/docs/images/auth/register-oauth-application-form.png
Binary files differ
diff --git a/docs/guides/images/auth/register-twitter-application.png b/docs/images/auth/register-twitter-application.png
index 442eb680..442eb680 100644
--- a/docs/guides/images/auth/register-twitter-application.png
+++ b/docs/images/auth/register-twitter-application.png
Binary files differ
diff --git a/docs/guides/images/auth/twitter-app-confirmation.png b/docs/images/auth/twitter-app-confirmation.png
index e24e9d56..e24e9d56 100644
--- a/docs/guides/images/auth/twitter-app-confirmation.png
+++ b/docs/images/auth/twitter-app-confirmation.png
Binary files differ
diff --git a/docs/guides/images/auth/twitter-app-keys.png b/docs/images/auth/twitter-app-keys.png
index e13be110..e13be110 100644
--- a/docs/guides/images/auth/twitter-app-keys.png
+++ b/docs/images/auth/twitter-app-keys.png
Binary files differ
diff --git a/docs/guides/images/minio-image-upload/create-bucket.png b/docs/images/minio-image-upload/create-bucket.png
index ccfb6715..ccfb6715 100644
--- a/docs/guides/images/minio-image-upload/create-bucket.png
+++ b/docs/images/minio-image-upload/create-bucket.png
Binary files differ
diff --git a/docs/guides/images/minio-image-upload/create-policy.png b/docs/images/minio-image-upload/create-policy.png
index f9cbd3bf..f9cbd3bf 100644
--- a/docs/guides/images/minio-image-upload/create-policy.png
+++ b/docs/images/minio-image-upload/create-policy.png
Binary files differ
diff --git a/docs/guides/images/minio-image-upload/default-view.png b/docs/images/minio-image-upload/default-view.png
index fadb50a4..fadb50a4 100644
--- a/docs/guides/images/minio-image-upload/default-view.png
+++ b/docs/images/minio-image-upload/default-view.png
Binary files differ
diff --git a/docs/guides/images/minio-image-upload/docker-logs.png b/docs/images/minio-image-upload/docker-logs.png
index a25f349a..a25f349a 100644
--- a/docs/guides/images/minio-image-upload/docker-logs.png
+++ b/docs/images/minio-image-upload/docker-logs.png
Binary files differ
diff --git a/docs/guides/images/minio-image-upload/open-edit-policy.png b/docs/images/minio-image-upload/open-edit-policy.png
index 1dac7bea..1dac7bea 100644
--- a/docs/guides/images/minio-image-upload/open-edit-policy.png
+++ b/docs/images/minio-image-upload/open-edit-policy.png
Binary files differ
diff --git a/docs/guides/images/s3-image-upload/bucket-policy-editor.png b/docs/images/s3-image-upload/bucket-policy-editor.png
index d5f4427f..d5f4427f 100644
--- a/docs/guides/images/s3-image-upload/bucket-policy-editor.png
+++ b/docs/images/s3-image-upload/bucket-policy-editor.png
Binary files differ
diff --git a/docs/guides/images/s3-image-upload/bucket-property.png b/docs/images/s3-image-upload/bucket-property.png
index 9f4dc828..9f4dc828 100644
--- a/docs/guides/images/s3-image-upload/bucket-property.png
+++ b/docs/images/s3-image-upload/bucket-property.png
Binary files differ
diff --git a/docs/guides/images/s3-image-upload/create-bucket.png b/docs/images/s3-image-upload/create-bucket.png
index 925f0926..925f0926 100644
--- a/docs/guides/images/s3-image-upload/create-bucket.png
+++ b/docs/images/s3-image-upload/create-bucket.png
Binary files differ
diff --git a/docs/guides/images/s3-image-upload/custom-policy.png b/docs/images/s3-image-upload/custom-policy.png
index 01c570cd..01c570cd 100644
--- a/docs/guides/images/s3-image-upload/custom-policy.png
+++ b/docs/images/s3-image-upload/custom-policy.png
Binary files differ
diff --git a/docs/guides/images/s3-image-upload/iam-user.png b/docs/images/s3-image-upload/iam-user.png
index b26be122..b26be122 100644
--- a/docs/guides/images/s3-image-upload/iam-user.png
+++ b/docs/images/s3-image-upload/iam-user.png
Binary files differ
diff --git a/docs/guides/images/s3-image-upload/review-policy.png b/docs/images/s3-image-upload/review-policy.png
index 7173788a..7173788a 100644
--- a/docs/guides/images/s3-image-upload/review-policy.png
+++ b/docs/images/s3-image-upload/review-policy.png
Binary files differ
diff --git a/contribute/developer-certificate-of-origin b/docs/legal/developer-certificate-of-origin.txt
index a6bbb984..a6bbb984 100644
--- a/contribute/developer-certificate-of-origin
+++ b/docs/legal/developer-certificate-of-origin.txt
diff --git a/docs/setup/cloudron.md b/docs/setup/cloudron.md
new file mode 100644
index 00000000..aa707dc4
--- /dev/null
+++ b/docs/setup/cloudron.md
@@ -0,0 +1,6 @@
+Cloudron
+===
+
+Install CodiMD on [Cloudron](https://cloudron.io):
+
+[![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=io.hackmd.cloudronapp)
diff --git a/docs/setup/docker-linuxserver.md b/docs/setup/docker-linuxserver.md
new file mode 100644
index 00000000..f99176e8
--- /dev/null
+++ b/docs/setup/docker-linuxserver.md
@@ -0,0 +1,14 @@
+LinuxServer.io CodiMD Image
+===
+[![LinuxServer.io Discord](https://img.shields.io/discord/354974912613449730.svg?logo=discord&label=LSIO%20Discord&style=flat-square)](https://discord.gg/YWrKVTn)[![container version badge](https://images.microbadger.com/badges/version/linuxserver/codimd.svg)](https://microbadger.com/images/linuxserver/codimd "Get your own version badge on microbadger.com")[![container image size badge](https://images.microbadger.com/badges/image/linuxserver/codimd.svg)](https://microbadger.com/images/linuxserver/codimd "Get your own version badge on microbadger.com")![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/codimd.svg)![Docker Stars](https://img.shields.io/docker/stars/linuxserver/codimd.svg)[![Build Status](https://ci.linuxserver.io/buildStatus/icon?job=Docker-Pipeline-Builders/docker-codimd/master)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-codimd/job/master/)[![LinuxServer.io CI summary](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/codimd/latest/badge.svg)](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/codimd/latest/index.html)
+
+[LinuxServer.io](https://linuxserver.io) have created an Ubuntu-based multi-arch container image for x86-64, arm64 and armhf which supports PDF export from all architectures using [PhantomJS](https://phantomjs.org/).
+
+- It supports all the environment variables detailed in the [configuration documentation](../configuration-env-vars.md) to modify it according to your needs.
+
+- It gets rebuilt on new releases from CodiMD and also weekly if necessary to update any other package changes in the underlying container, making it easy to keep your CodiMD instance up to date.
+
+- It also details how to easily [utilize Docker networking to reverse proxy](https://github.com/linuxserver/docker-codimd/#application-setup) CodiMD using their [LetsEncrypt docker image](https://github.com/linuxserver/docker-letsencrypt)
+
+In order to contribute check the LinuxServer.io [GitHub repository](https://github.com/linuxserver/docker-codimd/) for CodiMD.
+And to find all tags and versions of the image, check the [Docker Hub repository](https://hub.docker.com/r/linuxserver/codimd).
diff --git a/docs/setup/docker.md b/docs/setup/docker.md
new file mode 100644
index 00000000..0268727c
--- /dev/null
+++ b/docs/setup/docker.md
@@ -0,0 +1,23 @@
+CodiMD Docker Image
+===
+
+[![Try in PWD](https://cdn.rawgit.com/play-with-docker/stacks/cff22438/assets/images/button.png)](http://play-with-docker.com?stack=https://github.com/codimd/container/raw/master/docker-compose.yml&stack_name=codimd)
+
+
+**Debian-based version:**
+
+[![Docker Repository on Quay](https://quay.io/repository/codimd/server/status "Docker Repository on Quay")](https://quay.io/repository/codimd/server)
+
+
+**Alpine-based version:**
+
+[![Docker Repository on Quay](https://quay.io/repository/codimd/server/status "Docker Repository on Quay")](https://quay.io/repository/codimd/server)
+
+The easiest way to setup CodiMD using docker are using the following three commands:
+
+```sh
+git clone https://github.com/codimd/container.git codimd-container
+cd codimd-container
+docker-compose up
+```
+Read more about it in the [container repository](https://github.com/codimd/container).
diff --git a/docs/setup/heroku.md b/docs/setup/heroku.md
new file mode 100644
index 00000000..9dc3bb3a
--- /dev/null
+++ b/docs/setup/heroku.md
@@ -0,0 +1,7 @@
+Heroku Deployment
+===
+
+You can quickly setup a sample Heroku CodiMD application by clicking the button
+below.
+
+[![Deploy on Heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/codimd/server/tree/master)
diff --git a/docs/setup/kubernetes.md b/docs/setup/kubernetes.md
new file mode 100644
index 00000000..db596851
--- /dev/null
+++ b/docs/setup/kubernetes.md
@@ -0,0 +1,6 @@
+Kubernetes
+===
+
+To install use `helm install stable/hackmd`.
+
+For all further details, please check out the offical CodiMD [K8s helm chart](https://github.com/kubernetes/charts/tree/master/stable/hackmd).
diff --git a/docs/setup/manual-setup.md b/docs/setup/manual-setup.md
new file mode 100644
index 00000000..e15e624a
--- /dev/null
+++ b/docs/setup/manual-setup.md
@@ -0,0 +1,39 @@
+Manual Installation
+===
+
+## Requirements on your server
+
+- Node.js 8.5 or up
+- Database (PostgreSQL, MySQL, MariaDB, SQLite, MSSQL) use charset `utf8`
+- npm (and its dependencies, [node-gyp](https://github.com/nodejs/node-gyp#installation))
+- yarn
+- Bash (for the setup script)
+- For **building** CodiMD we recommend to use a machine with at least **2GB** RAM
+
+
+## Instructions
+
+1. Check if you meet the [requirements at the top of this document](#requirements-on-your-server).
+2. Clone this repository (preferred) or download a release and unzip it.
+3. Enter the directory and type `bin/setup`, which will install npm dependencies and create configs.
+4. Setup the configs, see more below
+5. Setup environment variables which will overwrite the configs
+6. Build front-end bundle by `npm run build` (use `npm run dev` if you are in development)
+7. Modify the file named `.sequelizerc`, change the value of the variable `url` with your db connection string
+ For example: `postgres://username:password@localhost:5432/codimd`
+8. It is recommended to start your server manually once: `npm start --production`, this way it's easier to see warnings or errors that might occur (leave out `--production` for development).
+9. Run the server as you like (node, forever, pm2, SystemD, Init-Scripts)
+
+
+## How to upgrade your installation
+
+If you are upgrading CodiMD from an older version, follow these steps:
+
+1. Check if you meet the [requirements at the top of this document](#requirements-on-your-server).
+2. Verify which version you were running before and take a look at [migrations and breaking changes](../guides/migrations-and-breaking-changes.md) to see if additional steps, or configuration changes are necessary!
+3. Fully stop your old CodiMD server.
+4. `git pull` or unzip a new release in the directory.
+5. Run `bin/setup`. This will take care of installing dependencies. It is safe to run on an existing installation.
+6. Build front-end bundle by `npm run build` (use `npm run dev` if you are in development).
+7. It is recommended to start your server manually once: `npm start --production`, this way it's easier to see warnings or errors that might occur (leave out `--production` for development).
+8. You can now restart the CodiMD server!
diff --git a/docs/slide-options.md b/docs/slide-options.md
new file mode 100644
index 00000000..d1277831
--- /dev/null
+++ b/docs/slide-options.md
@@ -0,0 +1,161 @@
+Slide Separators
+===
+
+If you're getting started with reveal.js slides, there are a few things you need to know.
+
+There are two types of slides, those that transition horizontally and those that transition vertically (subslides).
+
+The following separators are used for each in the CodiMD syntax:
+```
+# First Slide
+
+---
+
+# Next slide
+
+----
+
+## Subslide
+```
+as you can see, horizontal transitions are separated by `---` and vertical transitions by `----`
+
+## Basic YAML header
+It's possible to customise the slide options using the YAML header in the slide markdown.
+
+eg:
+```
+---
+title: Example Slide
+tags: presentation
+slideOptions:
+ theme: solarized
+ transition: 'fade'
+ # parallaxBackgroundImage: 'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'
+---
+```
+make sure to have two spaces only at the start of the listed slide options.
+
+you can comment out options with a `#`
+
+### Some other options
+```
+# Display controls in the bottom right corner
+controls: true
+
+# Display a presentation progress bar
+progress: true
+
+# Set default timing of 2 minutes per slide
+defaultTiming: 120
+
+# Display the page number of the current slide
+slideNumber: false
+
+# Push each slide change to the browser history
+history: false
+
+# Enable keyboard shortcuts for navigation
+keyboard: true
+
+# Enable the slide overview mode
+overview: true
+
+# Vertical centering of slides
+center: true
+
+# Enables touch navigation on devices with touch input
+touch: true
+
+# Loop the presentation
+loop: false
+
+# Change the presentation direction to be RTL
+rtl: false
+
+# Randomizes the order of slides each time the presentation loads
+shuffle: false
+
+# Turns fragments on and off globally
+fragments: true
+
+# Flags if the presentation is running in an embedded mode,
+# i.e. contained within a limited portion of the screen
+embedded: false
+
+# Flags if we should show a help overlay when the questionmark
+# key is pressed
+help: true
+
+# Flags if speaker notes should be visible to all viewers
+showNotes: false
+
+# Global override for autolaying embedded media (video/audio/iframe)
+# - null: Media will only autoplay if data-autoplay is present
+# - true: All media will autoplay, regardless of individual setting
+# - false: No media will autoplay, regardless of individual setting
+autoPlayMedia: null
+
+# Number of milliseconds between automatically proceeding to the
+# next slide, disabled when set to 0, this value can be overwritten
+# by using a data-autoslide attribute on your slides
+autoSlide: 0
+
+# Stop auto-sliding after user input
+autoSlideStoppable: true
+
+# Use this method for navigation when auto-sliding
+autoSlideMethod: Reveal.navigateNext
+
+# Enable slide navigation via mouse wheel
+mouseWheel: false
+
+# Hides the address bar on mobile devices
+hideAddressBar: true
+
+# Opens links in an iframe preview overlay
+previewLinks: false
+
+# Transition style
+transition: 'slide'
+# none/fade/slide/convex/concave/zoom
+
+# Transition speed
+transitionSpeed: 'default'
+# default/fast/slow
+
+# Transition style for full page slide backgrounds
+backgroundTransition: 'fade'
+# none/fade/slide/convex/concave/zoom
+
+# Number of slides away from the current that are visible
+viewDistance: 3
+
+# Parallax background image
+parallaxBackgroundImage: ''
+# e.g. "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'"
+
+# Parallax background size
+parallaxBackgroundSize: ''
+# CSS syntax, e.g. "2100px 900px"
+
+# Number of pixels to move the parallax background per slide
+# - Calculated automatically unless specified
+# - Set to 0 to disable movement along an axis
+parallaxBackgroundHorizontal: null
+parallaxBackgroundVertical: null
+
+# The display mode that will be used to show slides
+display: 'block'
+```
+
+## Customising individual slides
+
+custom background image:
+```
+---
+
+<!-- .slide: data-background="https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg" -->
+#### testslide
+
+---
+```
diff --git a/lib/config/default.js b/lib/config/default.js
index 9e401f38..12254d47 100644
--- a/lib/config/default.js
+++ b/lib/config/default.js
@@ -56,10 +56,15 @@ module.exports = {
// socket.io
heartbeatInterval: 5000,
heartbeatTimeout: 10000,
+ // too busy timeout
+ tooBusyLag: 70,
// document
documentMaxLength: 100000,
- // image upload setting, available options are imgur/s3/filesystem/azure
+ // image upload setting, available options are imgur/s3/filesystem/azure/lutim
imageUploadType: 'filesystem',
+ lutim: {
+ url: 'https://framapic.org/'
+ },
imgur: {
clientID: undefined
},
@@ -138,6 +143,7 @@ module.exports = {
idpCert: undefined,
issuer: undefined,
identifierFormat: 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
+ disableRequestedAuthnContext: false,
groupAttribute: undefined,
externalGroups: [],
requiredGroups: [],
diff --git a/lib/config/dockerSecret.js b/lib/config/dockerSecret.js
index fd66ddfe..50bf7fe2 100644
--- a/lib/config/dockerSecret.js
+++ b/lib/config/dockerSecret.js
@@ -13,11 +13,12 @@ function getSecret (secret) {
if (fs.existsSync(basePath)) {
module.exports = {
- sessionsecret: getSecret('sessionsecret'),
- sslkeypath: getSecret('sslkeypath'),
- sslcertpath: getSecret('sslcertpath'),
- sslcapath: getSecret('sslcapath'),
- dhparampath: getSecret('dhparampath'),
+ dbURL: getSecret('dbURL'),
+ sessionSecret: getSecret('sessionsecret'),
+ sslKeyPath: getSecret('sslkeypath'),
+ sslCertPath: getSecret('sslcertpath'),
+ sslCAPath: getSecret('sslcapath'),
+ dhParamPath: getSecret('dhparampath'),
s3: {
accessKeyId: getSecret('s3_acccessKeyId'),
secretAccessKey: getSecret('s3_secretAccessKey')
diff --git a/lib/config/environment.js b/lib/config/environment.js
index cdf87871..716f8b75 100644
--- a/lib/config/environment.js
+++ b/lib/config/environment.js
@@ -1,6 +1,6 @@
'use strict'
-const {toBooleanConfig, toArrayConfig, toIntegerConfig} = require('./utils')
+const { toBooleanConfig, toArrayConfig, toIntegerConfig } = require('./utils')
module.exports = {
sourceURL: process.env.CMD_SOURCE_URL,
@@ -14,7 +14,7 @@ module.exports = {
useSSL: toBooleanConfig(process.env.CMD_USESSL),
hsts: {
enable: toBooleanConfig(process.env.CMD_HSTS_ENABLE),
- maxAgeSeconds: process.env.CMD_HSTS_MAX_AGE,
+ maxAgeSeconds: toIntegerConfig(process.env.CMD_HSTS_MAX_AGE),
includeSubdomains: toBooleanConfig(process.env.CMD_HSTS_INCLUDE_SUBDOMAINS),
preload: toBooleanConfig(process.env.CMD_HSTS_PRELOAD)
},
@@ -33,6 +33,7 @@ module.exports = {
dbURL: process.env.CMD_DB_URL,
sessionSecret: process.env.CMD_SESSION_SECRET,
sessionLife: toIntegerConfig(process.env.CMD_SESSION_LIFE),
+ tooBusyLag: toIntegerConfig(process.env.CMD_TOOBUSY_LAG),
imageUploadType: process.env.CMD_IMAGE_UPLOAD_TYPE,
imgur: {
clientID: process.env.CMD_IMGUR_CLIENTID
@@ -50,6 +51,9 @@ module.exports = {
secure: toBooleanConfig(process.env.CMD_MINIO_SECURE),
port: toIntegerConfig(process.env.CMD_MINIO_PORT)
},
+ lutim: {
+ url: process.env.CMD_LUTIM_URL
+ },
s3bucket: process.env.CMD_S3_BUCKET,
azure: {
connectionString: process.env.CMD_AZURE_CONNECTION_STRING,
@@ -116,6 +120,7 @@ module.exports = {
idpCert: process.env.CMD_SAML_IDPCERT,
issuer: process.env.CMD_SAML_ISSUER,
identifierFormat: process.env.CMD_SAML_IDENTIFIERFORMAT,
+ disableRequestedAuthnContext: toBooleanConfig(process.env.CMD_SAML_DISABLEREQUESTEDAUTHNCONTEXT),
groupAttribute: process.env.CMD_SAML_GROUPATTRIBUTE,
externalGroups: toArrayConfig(process.env.CMD_SAML_EXTERNALGROUPS, '|', []),
requiredGroups: toArrayConfig(process.env.CMD_SAML_REQUIREDGROUPS, '|', []),
diff --git a/lib/config/hackmdEnvironment.js b/lib/config/hackmdEnvironment.js
index e1c11569..dcfda0bc 100644
--- a/lib/config/hackmdEnvironment.js
+++ b/lib/config/hackmdEnvironment.js
@@ -1,6 +1,6 @@
'use strict'
-const {toBooleanConfig, toArrayConfig, toIntegerConfig} = require('./utils')
+const { toBooleanConfig, toArrayConfig, toIntegerConfig } = require('./utils')
module.exports = {
domain: process.env.HMD_DOMAIN,
@@ -10,7 +10,7 @@ module.exports = {
useSSL: toBooleanConfig(process.env.HMD_USESSL),
hsts: {
enable: toBooleanConfig(process.env.HMD_HSTS_ENABLE),
- maxAgeSeconds: process.env.HMD_HSTS_MAX_AGE,
+ maxAgeSeconds: toIntegerConfig(process.env.HMD_HSTS_MAX_AGE),
includeSubdomains: toBooleanConfig(process.env.HMD_HSTS_INCLUDE_SUBDOMAINS),
preload: toBooleanConfig(process.env.HMD_HSTS_PRELOAD)
},
@@ -109,6 +109,7 @@ module.exports = {
idpCert: process.env.HMD_SAML_IDPCERT,
issuer: process.env.HMD_SAML_ISSUER,
identifierFormat: process.env.HMD_SAML_IDENTIFIERFORMAT,
+ disableRequestedAuthnContext: toBooleanConfig(process.env.HMD_SAML_DISABLEREQUESTEDAUTHNCONTEXT),
groupAttribute: process.env.HMD_SAML_GROUPATTRIBUTE,
externalGroups: toArrayConfig(process.env.HMD_SAML_EXTERNALGROUPS, '|', []),
requiredGroups: toArrayConfig(process.env.HMD_SAML_REQUIREDGROUPS, '|', []),
diff --git a/lib/config/index.js b/lib/config/index.js
index cbe6c39c..ee4817b3 100644
--- a/lib/config/index.js
+++ b/lib/config/index.js
@@ -4,11 +4,11 @@
const crypto = require('crypto')
const fs = require('fs')
const path = require('path')
-const {merge} = require('lodash')
+const { merge } = require('lodash')
const deepFreeze = require('deep-freeze')
-const {Environment, Permission} = require('./enum')
+const { Environment, Permission } = require('./enum')
const logger = require('../logger')
-const {getGitCommit, getGitHubURL} = require('./utils')
+const { getGitCommit, getGitHubURL } = require('./utils')
const appRootPath = path.resolve(__dirname, '../../')
const env = process.env.NODE_ENV || Environment.development
@@ -17,7 +17,7 @@ const debugConfig = {
}
// Get version string from package.json
-const {version, repository} = require(path.join(appRootPath, 'package.json'))
+const { version, repository } = require(path.join(appRootPath, 'package.json'))
const commitID = getGitCommit(appRootPath)
const sourceURL = getGitHubURL(repository.url, commitID || version)
@@ -128,7 +128,7 @@ if (config.gitlab && config.gitlab.version !== 'v4' && config.gitlab.version !==
config.gitlab.version = 'v4'
}
// If gitlab scope is api, enable snippets Export/import
-config.isGitlabSnippetsEnable = (!config.gitlab.scope || config.gitlab.scope === 'api')
+config.isGitlabSnippetsEnable = (!config.gitlab.scope || config.gitlab.scope === 'api') && config.isGitLabEnable
// Only update i18n files in development setups
config.updateI18nFiles = (env === Environment.development)
@@ -152,20 +152,20 @@ for (let i = keys.length; i--;) {
// Notify users about the prefix change and inform them they use legacy prefix for environment variables
if (Object.keys(process.env).toString().indexOf('HMD_') !== -1) {
- logger.warn('Using legacy HMD prefix for environment variables. Please change your variables in future. For details see: https://github.com/hackmdio/codimd#environment-variables-will-overwrite-other-server-configs')
+ logger.warn('Using legacy HMD prefix for environment variables. Please change your variables in future. For details see: https://github.com/codimd/server#environment-variables-will-overwrite-other-server-configs')
}
// Generate session secret if it stays on default values
if (config.sessionSecret === 'secret') {
logger.warn('Session secret not set. Using random generated one. Please set `sessionSecret` in your config.js file. All users will be logged out.')
config.sessionSecret = crypto.randomBytes(Math.ceil(config.sessionSecretLen / 2)) // generate crypto graphic random number
- .toString('hex') // convert to hexadecimal format
- .slice(0, config.sessionSecretLen) // return required number of characters
+ .toString('hex') // convert to hexadecimal format
+ .slice(0, config.sessionSecretLen) // return required number of characters
}
// Validate upload upload providers
-if (['filesystem', 's3', 'minio', 'imgur', 'azure'].indexOf(config.imageUploadType) === -1) {
- logger.error('"imageuploadtype" is not correctly set. Please use "filesystem", "s3", "minio", "azure" or "imgur". Defaulting to "filesystem"')
+if (['filesystem', 's3', 'minio', 'imgur', 'azure', 'lutim'].indexOf(config.imageUploadType) === -1) {
+ logger.error('"imageuploadtype" is not correctly set. Please use "filesystem", "s3", "minio", "azure", "lutim" or "imgur". Defaulting to "filesystem"')
config.imageUploadType = 'filesystem'
}
@@ -189,6 +189,12 @@ switch (config.imageUploadType) {
]
}
+// Disable PDF export due to security issue
+if (config.allowPDFExport) {
+ config.allowPDFExport = false
+ logger.warn('PDF export was disabled for this release to mitigate a critical security issue. This feature will hopefully become available again in future releases.')
+}
+
// generate correct path
config.sslCAPath.forEach(function (capath, i, array) {
array[i] = path.resolve(appRootPath, capath)
diff --git a/lib/config/oldEnvironment.js b/lib/config/oldEnvironment.js
index a3b13cb9..06047553 100644
--- a/lib/config/oldEnvironment.js
+++ b/lib/config/oldEnvironment.js
@@ -1,6 +1,6 @@
'use strict'
-const {toBooleanConfig} = require('./utils')
+const { toBooleanConfig } = require('./utils')
module.exports = {
debug: toBooleanConfig(process.env.DEBUG),
diff --git a/lib/history.js b/lib/history.js
index 9c389bfa..88a7ee05 100644
--- a/lib/history.js
+++ b/lib/history.js
@@ -4,7 +4,6 @@
var LZString = require('lz-string')
// core
-var config = require('./config')
var logger = require('./logger')
var response = require('./response')
var models = require('./models')
@@ -56,9 +55,7 @@ function getHistory (userid, callback) {
}
history = parseHistoryToObject(history)
}
- if (config.debug) {
- logger.info('read history success: ' + user.id)
- }
+ logger.debug(`read history success: ${user.id}`)
return callback(null, history)
}).catch(function (err) {
logger.error('read history failed: ' + err)
@@ -140,7 +137,7 @@ function historyPost (req, res) {
var noteId = req.params.noteId
if (!noteId) {
if (typeof req.body['history'] === 'undefined') return response.errorBadRequest(res)
- if (config.debug) { logger.info('SERVER received history from [' + req.user.id + ']: ' + req.body.history) }
+ logger.debug(`SERVER received history from [${req.user.id}]: ${req.body.history}`)
try {
var history = JSON.parse(req.body.history)
} catch (err) {
diff --git a/lib/letter-avatars.js b/lib/letter-avatars.js
index 7d463950..6fb1888a 100644
--- a/lib/letter-avatars.js
+++ b/lib/letter-avatars.js
@@ -30,13 +30,14 @@ exports.generateAvatarURL = function (name, email = '', big = true) {
if (typeof email !== 'string') {
email = '' + name + '@example.com'
}
+ name = encodeURIComponent(name)
let hash = crypto.createHash('md5')
hash.update(email.toLowerCase())
let hexDigest = hash.digest('hex')
if (email !== '' && config.allowGravatar) {
- photo = 'https://www.gravatar.com/avatar/' + hexDigest;
+ photo = 'https://cdn.libravatar.org/avatar/' + hexDigest
if (big) {
photo += '?s=400'
} else {
diff --git a/lib/logger.js b/lib/logger.js
index 5ef1860a..6d4bf69a 100644
--- a/lib/logger.js
+++ b/lib/logger.js
@@ -1,5 +1,5 @@
'use strict'
-const {createLogger, format, transports} = require('winston')
+const { createLogger, format, transports } = require('winston')
const logger = createLogger({
level: 'debug',
diff --git a/lib/migrations/20150702001020-update-to-0_3_1.js b/lib/migrations/20150702001020-update-to-0_3_1.js
index e1a88661..b941048e 100644
--- a/lib/migrations/20150702001020-update-to-0_3_1.js
+++ b/lib/migrations/20150702001020-update-to-0_3_1.js
@@ -22,6 +22,7 @@ module.exports = {
})
}).catch(function (error) {
if (error.message === 'SQLITE_ERROR: duplicate column name: shortid' || error.message === "ER_DUP_FIELDNAME: Duplicate column name 'shortid'" || error.message === 'column "shortid" of relation "Notes" already exists') {
+ // eslint-disable-next-line no-console
console.log('Migration has already run… ignoring.')
} else {
throw error
diff --git a/lib/migrations/20160112220142-note-add-lastchange.js b/lib/migrations/20160112220142-note-add-lastchange.js
index 87e3ff19..69781cef 100644
--- a/lib/migrations/20160112220142-note-add-lastchange.js
+++ b/lib/migrations/20160112220142-note-add-lastchange.js
@@ -9,6 +9,7 @@ module.exports = {
})
}).catch(function (error) {
if (error.message === 'SQLITE_ERROR: duplicate column name: lastchangeuserId' || error.message === "ER_DUP_FIELDNAME: Duplicate column name 'lastchangeuserId'" || error.message === 'column "lastchangeuserId" of relation "Notes" already exists') {
+ // eslint-disable-next-line no-console
console.log('Migration has already run… ignoring.')
} else {
throw error
@@ -18,8 +19,8 @@ module.exports = {
down: function (queryInterface, Sequelize) {
return queryInterface.removeColumn('Notes', 'lastchangeAt')
- .then(function () {
- return queryInterface.removeColumn('Notes', 'lastchangeuserId')
- })
+ .then(function () {
+ return queryInterface.removeColumn('Notes', 'lastchangeuserId')
+ })
}
}
diff --git a/lib/migrations/20160420180355-note-add-alias.js b/lib/migrations/20160420180355-note-add-alias.js
index 45d53e69..82941a91 100644
--- a/lib/migrations/20160420180355-note-add-alias.js
+++ b/lib/migrations/20160420180355-note-add-alias.js
@@ -9,6 +9,7 @@ module.exports = {
})
}).catch(function (error) {
if (error.message === 'SQLITE_ERROR: duplicate column name: alias' || error.message === "ER_DUP_FIELDNAME: Duplicate column name 'alias'" || error.message === 'column "alias" of relation "Notes" already exists') {
+ // eslint-disable-next-line no-console
console.log('Migration has already run… ignoring.')
} else {
throw error
diff --git a/lib/migrations/20160515114000-user-add-tokens.js b/lib/migrations/20160515114000-user-add-tokens.js
index 435ae9cb..e47ef5a4 100644
--- a/lib/migrations/20160515114000-user-add-tokens.js
+++ b/lib/migrations/20160515114000-user-add-tokens.js
@@ -5,6 +5,7 @@ module.exports = {
return queryInterface.addColumn('Users', 'refreshToken', Sequelize.STRING)
}).catch(function (error) {
if (error.message === 'SQLITE_ERROR: duplicate column name: accessToken' || error.message === "ER_DUP_FIELDNAME: Duplicate column name 'accessToken'" || error.message === 'column "accessToken" of relation "Users" already exists') {
+ // eslint-disable-next-line no-console
console.log('Migration has already run… ignoring.')
} else {
throw error
diff --git a/lib/migrations/20160607060246-support-revision.js b/lib/migrations/20160607060246-support-revision.js
index 547f89b8..b318ea44 100644
--- a/lib/migrations/20160607060246-support-revision.js
+++ b/lib/migrations/20160607060246-support-revision.js
@@ -17,6 +17,7 @@ module.exports = {
})
}).catch(function (error) {
if (error.message === 'SQLITE_ERROR: duplicate column name: savedAt' | error.message === "ER_DUP_FIELDNAME: Duplicate column name 'savedAt'" || error.message === 'column "savedAt" of relation "Notes" already exists') {
+ // eslint-disable-next-line no-console
console.log('Migration has already run… ignoring.')
} else {
throw error
diff --git a/lib/migrations/20160703062241-support-authorship.js b/lib/migrations/20160703062241-support-authorship.js
index f452b1a7..86054f1c 100644
--- a/lib/migrations/20160703062241-support-authorship.js
+++ b/lib/migrations/20160703062241-support-authorship.js
@@ -18,6 +18,7 @@ module.exports = {
})
}).catch(function (error) {
if (error.message === 'SQLITE_ERROR: duplicate column name: authorship' || error.message === "ER_DUP_FIELDNAME: Duplicate column name 'authorship'" || error.message === 'column "authorship" of relation "Notes" already exists') {
+ // eslint-disable-next-line no-console
console.log('Migration has already run… ignoring.')
} else {
throw error
diff --git a/lib/migrations/20161009040430-support-delete-note.js b/lib/migrations/20161009040430-support-delete-note.js
index 56a336ac..b7ee72c3 100644
--- a/lib/migrations/20161009040430-support-delete-note.js
+++ b/lib/migrations/20161009040430-support-delete-note.js
@@ -3,6 +3,7 @@ module.exports = {
up: function (queryInterface, Sequelize) {
return queryInterface.addColumn('Notes', 'deletedAt', Sequelize.DATE).catch(function (error) {
if (error.message === 'SQLITE_ERROR: duplicate column name: deletedAt' || error.message === "ER_DUP_FIELDNAME: Duplicate column name 'deletedAt'" || error.message === 'column "deletedAt" of relation "Notes" already exists') {
+ // eslint-disable-next-line no-console
console.log('Migration has already run… ignoring.')
} else {
throw error
diff --git a/lib/migrations/20161201050312-support-email-signin.js b/lib/migrations/20161201050312-support-email-signin.js
index 26bc09ea..5c9fbf85 100644
--- a/lib/migrations/20161201050312-support-email-signin.js
+++ b/lib/migrations/20161201050312-support-email-signin.js
@@ -4,6 +4,7 @@ module.exports = {
return queryInterface.addColumn('Users', 'email', Sequelize.TEXT).then(function () {
return queryInterface.addColumn('Users', 'password', Sequelize.TEXT).catch(function (error) {
if (error.message === "ER_DUP_FIELDNAME: Duplicate column name 'password'" || error.message === 'column "password" of relation "Users" already exists') {
+ // eslint-disable-next-line no-console
console.log('Migration has already run… ignoring.')
} else {
throw error
@@ -11,6 +12,7 @@ module.exports = {
})
}).catch(function (error) {
if (error.message === 'SQLITE_ERROR: duplicate column name: email' || error.message === "ER_DUP_FIELDNAME: Duplicate column name 'email'" || error.message === 'column "email" of relation "Users" already exists') {
+ // eslint-disable-next-line no-console
console.log('Migration has already run… ignoring.')
} else {
throw error
diff --git a/lib/migrations/20171009121200-longtext-for-mysql.js b/lib/migrations/20171009121200-longtext-for-mysql.js
index 2a7d0d3a..96bf7e87 100644
--- a/lib/migrations/20171009121200-longtext-for-mysql.js
+++ b/lib/migrations/20171009121200-longtext-for-mysql.js
@@ -1,16 +1,16 @@
'use strict'
module.exports = {
- up: function (queryInterface, Sequelize) {
- queryInterface.changeColumn('Notes', 'content', {type: Sequelize.TEXT('long')})
- queryInterface.changeColumn('Revisions', 'patch', {type: Sequelize.TEXT('long')})
- queryInterface.changeColumn('Revisions', 'content', {type: Sequelize.TEXT('long')})
- queryInterface.changeColumn('Revisions', 'lastContent', {type: Sequelize.TEXT('long')})
+ up: async function (queryInterface, Sequelize) {
+ await queryInterface.changeColumn('Notes', 'content', { type: Sequelize.TEXT('long') })
+ await queryInterface.changeColumn('Revisions', 'patch', { type: Sequelize.TEXT('long') })
+ await queryInterface.changeColumn('Revisions', 'content', { type: Sequelize.TEXT('long') })
+ await queryInterface.changeColumn('Revisions', 'lastContent', { type: Sequelize.TEXT('long') })
},
- down: function (queryInterface, Sequelize) {
- queryInterface.changeColumn('Notes', 'content', {type: Sequelize.TEXT})
- queryInterface.changeColumn('Revisions', 'patch', {type: Sequelize.TEXT})
- queryInterface.changeColumn('Revisions', 'content', {type: Sequelize.TEXT})
- queryInterface.changeColumn('Revisions', 'lastContent', {type: Sequelize.TEXT})
+ down: async function (queryInterface, Sequelize) {
+ await queryInterface.changeColumn('Notes', 'content', { type: Sequelize.TEXT })
+ await queryInterface.changeColumn('Revisions', 'patch', { type: Sequelize.TEXT })
+ await queryInterface.changeColumn('Revisions', 'content', { type: Sequelize.TEXT })
+ await queryInterface.changeColumn('Revisions', 'lastContent', { type: Sequelize.TEXT })
}
}
diff --git a/lib/migrations/20180209120907-longtext-of-authorship.js b/lib/migrations/20180209120907-longtext-of-authorship.js
index 4cca5444..04810009 100644
--- a/lib/migrations/20180209120907-longtext-of-authorship.js
+++ b/lib/migrations/20180209120907-longtext-of-authorship.js
@@ -1,13 +1,13 @@
'use strict'
module.exports = {
- up: function (queryInterface, Sequelize) {
- queryInterface.changeColumn('Notes', 'authorship', {type: Sequelize.TEXT('long')})
- queryInterface.changeColumn('Revisions', 'authorship', {type: Sequelize.TEXT('long')})
+ up: async function (queryInterface, Sequelize) {
+ await queryInterface.changeColumn('Notes', 'authorship', { type: Sequelize.TEXT('long') })
+ await queryInterface.changeColumn('Revisions', 'authorship', { type: Sequelize.TEXT('long') })
},
- down: function (queryInterface, Sequelize) {
- queryInterface.changeColumn('Notes', 'authorship', {type: Sequelize.TEXT})
- queryInterface.changeColumn('Revisions', 'authorship', {type: Sequelize.TEXT})
+ down: async function (queryInterface, Sequelize) {
+ await queryInterface.changeColumn('Notes', 'authorship', { type: Sequelize.TEXT })
+ await queryInterface.changeColumn('Revisions', 'authorship', { type: Sequelize.TEXT })
}
}
diff --git a/lib/migrations/20180306150303-fix-enum.js b/lib/migrations/20180306150303-fix-enum.js
index 0ee58a94..620a4229 100644
--- a/lib/migrations/20180306150303-fix-enum.js
+++ b/lib/migrations/20180306150303-fix-enum.js
@@ -2,10 +2,10 @@
module.exports = {
up: function (queryInterface, Sequelize) {
- queryInterface.changeColumn('Notes', 'permission', {type: Sequelize.ENUM('freely', 'editable', 'limited', 'locked', 'protected', 'private')})
+ return queryInterface.changeColumn('Notes', 'permission', { type: Sequelize.ENUM('freely', 'editable', 'limited', 'locked', 'protected', 'private') })
},
down: function (queryInterface, Sequelize) {
- queryInterface.changeColumn('Notes', 'permission', {type: Sequelize.ENUM('freely', 'editable', 'locked', 'private')})
+ return queryInterface.changeColumn('Notes', 'permission', { type: Sequelize.ENUM('freely', 'editable', 'locked', 'private') })
}
}
diff --git a/lib/models/author.js b/lib/models/author.js
index 03f832a4..e65791cb 100644
--- a/lib/models/author.js
+++ b/lib/models/author.js
@@ -18,25 +18,25 @@ module.exports = function (sequelize, DataTypes) {
unique: true,
fields: ['noteId', 'userId']
}
- ],
- classMethods: {
- associate: function (models) {
- Author.belongsTo(models.Note, {
- foreignKey: 'noteId',
- as: 'note',
- constraints: false,
- onDelete: 'CASCADE',
- hooks: true
- })
- Author.belongsTo(models.User, {
- foreignKey: 'userId',
- as: 'user',
- constraints: false,
- onDelete: 'CASCADE',
- hooks: true
- })
- }
- }
+ ]
})
+
+ Author.associate = function (models) {
+ Author.belongsTo(models.Note, {
+ foreignKey: 'noteId',
+ as: 'note',
+ constraints: false,
+ onDelete: 'CASCADE',
+ hooks: true
+ })
+ Author.belongsTo(models.User, {
+ foreignKey: 'userId',
+ as: 'user',
+ constraints: false,
+ onDelete: 'CASCADE',
+ hooks: true
+ })
+ }
+
return Author
}
diff --git a/lib/models/index.js b/lib/models/index.js
index ef70475e..88c1b168 100644
--- a/lib/models/index.js
+++ b/lib/models/index.js
@@ -3,14 +3,16 @@
var fs = require('fs')
var path = require('path')
var Sequelize = require('sequelize')
-const {cloneDeep} = require('lodash')
+const { cloneDeep } = require('lodash')
// core
var config = require('../config')
var logger = require('../logger')
var dbconfig = cloneDeep(config.db)
-dbconfig.logging = config.debug ? logger.info : false
+dbconfig.logging = config.debug ? (data) => {
+ logger.info(data)
+} : false
var sequelize = null
@@ -39,13 +41,13 @@ sequelize.processData = processData
var db = {}
fs.readdirSync(__dirname)
- .filter(function (file) {
- return (file.indexOf('.') !== 0) && (file !== 'index.js')
- })
- .forEach(function (file) {
- var model = sequelize.import(path.join(__dirname, file))
- db[model.name] = model
- })
+ .filter(function (file) {
+ return (file.indexOf('.') !== 0) && (file !== 'index.js')
+ })
+ .forEach(function (file) {
+ var model = sequelize.import(path.join(__dirname, file))
+ db[model.name] = model
+ })
Object.keys(db).forEach(function (modelName) {
if ('associate' in db[modelName]) {
diff --git a/lib/models/note.js b/lib/models/note.js
index 0e8dd4dd..3a8ccb67 100644
--- a/lib/models/note.js
+++ b/lib/models/note.js
@@ -86,486 +86,492 @@ module.exports = function (sequelize, DataTypes) {
}
}, {
paranoid: false,
- classMethods: {
- associate: function (models) {
- Note.belongsTo(models.User, {
- foreignKey: 'ownerId',
- as: 'owner',
- constraints: false,
- onDelete: 'CASCADE',
- hooks: true
- })
- Note.belongsTo(models.User, {
- foreignKey: 'lastchangeuserId',
- as: 'lastchangeuser',
- constraints: false
- })
- Note.hasMany(models.Revision, {
- foreignKey: 'noteId',
- constraints: false
- })
- Note.hasMany(models.Author, {
- foreignKey: 'noteId',
- as: 'authors',
- constraints: false
+ hooks: {
+ beforeCreate: function (note, options) {
+ return new Promise(function (resolve, reject) {
+ // if no content specified then use default note
+ if (!note.content) {
+ var body = null
+ let filePath = null
+ if (!note.alias) {
+ filePath = config.defaultNotePath
+ } else {
+ filePath = path.join(config.docsPath, note.alias + '.md')
+ }
+ if (Note.checkFileExist(filePath)) {
+ var fsCreatedTime = moment(fs.statSync(filePath).ctime)
+ body = fs.readFileSync(filePath, 'utf8')
+ note.title = Note.parseNoteTitle(body)
+ note.content = body
+ if (filePath !== config.defaultNotePath) {
+ note.createdAt = fsCreatedTime
+ }
+ }
+ }
+ // if no permission specified and have owner then give default permission in config, else default permission is freely
+ if (!note.permission) {
+ if (note.ownerId) {
+ note.permission = config.defaultPermission
+ } else {
+ note.permission = 'freely'
+ }
+ }
+ return resolve(note)
})
},
- checkFileExist: function (filePath) {
- try {
- return fs.statSync(filePath).isFile()
- } catch (err) {
- return false
- }
- },
- encodeNoteId: function (id) {
- // remove dashes in UUID and encode in url-safe base64
- let str = id.replace(/-/g, '')
- let hexStr = Buffer.from(str, 'hex')
- return base64url.encode(hexStr)
- },
- decodeNoteId: function (encodedId) {
- // decode from url-safe base64
- let id = base64url.toBuffer(encodedId).toString('hex')
- // add dashes between the UUID string parts
- let idParts = []
- idParts.push(id.substr(0, 8))
- idParts.push(id.substr(8, 4))
- idParts.push(id.substr(12, 4))
- idParts.push(id.substr(16, 4))
- idParts.push(id.substr(20, 12))
- return idParts.join('-')
- },
- checkNoteIdValid: function (id) {
- var uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i
- var result = id.match(uuidRegex)
- if (result && result.length === 1) { return true } else { return false }
- },
- parseNoteId: function (noteId, callback) {
- async.series({
- parseNoteIdByAlias: function (_callback) {
- // try to parse note id by alias (e.g. doc)
- Note.findOne({
- where: {
- alias: noteId
- }
- }).then(function (note) {
- if (note) {
- let filePath = path.join(config.docsPath, noteId + '.md')
- if (Note.checkFileExist(filePath)) {
- // if doc in filesystem have newer modified time than last change time
- // then will update the doc in db
- var fsModifiedTime = moment(fs.statSync(filePath).mtime)
- var dbModifiedTime = moment(note.lastchangeAt || note.createdAt)
- var body = fs.readFileSync(filePath, 'utf8')
- var contentLength = body.length
- var title = Note.parseNoteTitle(body)
- if (fsModifiedTime.isAfter(dbModifiedTime) && note.content !== body) {
+ afterCreate: function (note, options, callback) {
+ return new Promise(function (resolve, reject) {
+ sequelize.models.Revision.saveNoteRevision(note, function (err, revision) {
+ if (err) {
+ return reject(err)
+ }
+ return resolve(note)
+ })
+ })
+ }
+ }
+ })
+
+ Note.associate = function (models) {
+ Note.belongsTo(models.User, {
+ foreignKey: 'ownerId',
+ as: 'owner',
+ constraints: false,
+ onDelete: 'CASCADE',
+ hooks: true
+ })
+ Note.belongsTo(models.User, {
+ foreignKey: 'lastchangeuserId',
+ as: 'lastchangeuser',
+ constraints: false
+ })
+ Note.hasMany(models.Revision, {
+ foreignKey: 'noteId',
+ constraints: false
+ })
+ Note.hasMany(models.Author, {
+ foreignKey: 'noteId',
+ as: 'authors',
+ constraints: false
+ })
+ }
+ Note.checkFileExist = function (filePath) {
+ try {
+ return fs.statSync(filePath).isFile()
+ } catch (err) {
+ return false
+ }
+ }
+ Note.encodeNoteId = function (id) {
+ // remove dashes in UUID and encode in url-safe base64
+ let str = id.replace(/-/g, '')
+ let hexStr = Buffer.from(str, 'hex')
+ return base64url.encode(hexStr)
+ }
+ Note.decodeNoteId = function (encodedId) {
+ // decode from url-safe base64
+ let id = base64url.toBuffer(encodedId).toString('hex')
+ // add dashes between the UUID string parts
+ let idParts = []
+ idParts.push(id.substr(0, 8))
+ idParts.push(id.substr(8, 4))
+ idParts.push(id.substr(12, 4))
+ idParts.push(id.substr(16, 4))
+ idParts.push(id.substr(20, 12))
+ return idParts.join('-')
+ }
+ Note.checkNoteIdValid = function (id) {
+ var uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i
+ var result = id.match(uuidRegex)
+ if (result && result.length === 1) { return true } else { return false }
+ }
+ Note.parseNoteId = function (noteId, callback) {
+ async.series({
+ parseNoteIdByAlias: function (_callback) {
+ // try to parse note id by alias (e.g. doc)
+ Note.findOne({
+ where: {
+ alias: noteId
+ }
+ }).then(function (note) {
+ if (note) {
+ let filePath = path.join(config.docsPath, noteId + '.md')
+ if (Note.checkFileExist(filePath)) {
+ // if doc in filesystem have newer modified time than last change time
+ // then will update the doc in db
+ var fsModifiedTime = moment(fs.statSync(filePath).mtime)
+ var dbModifiedTime = moment(note.lastchangeAt || note.createdAt)
+ var body = fs.readFileSync(filePath, 'utf8')
+ var contentLength = body.length
+ var title = Note.parseNoteTitle(body)
+ if (fsModifiedTime.isAfter(dbModifiedTime) && note.content !== body) {
+ note.update({
+ title: title,
+ content: body,
+ lastchangeAt: fsModifiedTime
+ }).then(function (note) {
+ sequelize.models.Revision.saveNoteRevision(note, function (err, revision) {
+ if (err) return _callback(err, null)
+ // update authorship on after making revision of docs
+ var patch = dmp.patch_fromText(revision.patch)
+ var operations = Note.transformPatchToOperations(patch, contentLength)
+ var authorship = note.authorship
+ for (let i = 0; i < operations.length; i++) {
+ authorship = Note.updateAuthorshipByOperation(operations[i], null, authorship)
+ }
note.update({
- title: title,
- content: body,
- lastchangeAt: fsModifiedTime
+ authorship: authorship
}).then(function (note) {
- sequelize.models.Revision.saveNoteRevision(note, function (err, revision) {
- if (err) return _callback(err, null)
- // update authorship on after making revision of docs
- var patch = dmp.patch_fromText(revision.patch)
- var operations = Note.transformPatchToOperations(patch, contentLength)
- var authorship = note.authorship
- for (let i = 0; i < operations.length; i++) {
- authorship = Note.updateAuthorshipByOperation(operations[i], null, authorship)
- }
- note.update({
- authorship: authorship
- }).then(function (note) {
- return callback(null, note.id)
- }).catch(function (err) {
- return _callback(err, null)
- })
- })
+ return callback(null, note.id)
}).catch(function (err) {
return _callback(err, null)
})
- } else {
- return callback(null, note.id)
- }
- } else {
- return callback(null, note.id)
- }
- } else {
- var filePath = path.join(config.docsPath, noteId + '.md')
- if (Note.checkFileExist(filePath)) {
- Note.create({
- alias: noteId,
- owner: null,
- permission: 'locked'
- }).then(function (note) {
- return callback(null, note.id)
- }).catch(function (err) {
- return _callback(err, null)
})
- } else {
- return _callback(null, null)
- }
- }
- }).catch(function (err) {
- return _callback(err, null)
- })
- },
- // parse note id by LZString is deprecated, here for compability
- parseNoteIdByLZString: function (_callback) {
- // Calculate minimal string length for an UUID that is encoded
- // base64 encoded and optimize comparsion by using -1
- // this should make a lot of LZ-String parsing errors obsolete
- // as we can assume that a nodeId that is 48 chars or longer is a
- // noteID.
- const base64UuidLength = ((4 * 36) / 3) - 1
- if (!(noteId.length > base64UuidLength)) {
- return _callback(null, null)
- }
- // try to parse note id by LZString Base64
- try {
- var id = LZString.decompressFromBase64(noteId)
- if (id && Note.checkNoteIdValid(id)) { return callback(null, id) } else { return _callback(null, null) }
- } catch (err) {
- if (err.message === 'Cannot read property \'charAt\' of undefined') {
- logger.warning('Looks like we can not decode "' + noteId + '" with LZString. Can be ignored.')
- } else {
- logger.error(err)
- }
- return _callback(null, null)
- }
- },
- parseNoteIdByBase64Url: function (_callback) {
- // try to parse note id by base64url
- try {
- var id = Note.decodeNoteId(noteId)
- if (id && Note.checkNoteIdValid(id)) { return callback(null, id) } else { return _callback(null, null) }
- } catch (err) {
- logger.error(err)
- return _callback(null, null)
- }
- },
- parseNoteIdByShortId: function (_callback) {
- // try to parse note id by shortId
- try {
- if (shortId.isValid(noteId)) {
- Note.findOne({
- where: {
- shortid: noteId
- }
- }).then(function (note) {
- if (!note) return _callback(null, null)
- return callback(null, note.id)
}).catch(function (err) {
return _callback(err, null)
})
} else {
- return _callback(null, null)
+ return callback(null, note.id)
}
- } catch (err) {
- return _callback(err, null)
+ } else {
+ return callback(null, note.id)
+ }
+ } else {
+ var filePath = path.join(config.docsPath, noteId + '.md')
+ if (Note.checkFileExist(filePath)) {
+ Note.create({
+ alias: noteId,
+ owner: null,
+ permission: 'locked'
+ }).then(function (note) {
+ return callback(null, note.id)
+ }).catch(function (err) {
+ return _callback(err, null)
+ })
+ } else {
+ return _callback(null, null)
}
}
- }, function (err, result) {
- if (err) {
- logger.error(err)
- return callback(err, null)
- }
- return callback(null, null)
+ }).catch(function (err) {
+ return _callback(err, null)
})
},
- parseNoteInfo: function (body) {
- var parsed = Note.extractMeta(body)
- var $ = cheerio.load(md.render(parsed.markdown))
- return {
- title: Note.extractNoteTitle(parsed.meta, $),
- tags: Note.extractNoteTags(parsed.meta, $)
+ // parse note id by LZString is deprecated, here for compability
+ parseNoteIdByLZString: function (_callback) {
+ // Calculate minimal string length for an UUID that is encoded
+ // base64 encoded and optimize comparsion by using -1
+ // this should make a lot of LZ-String parsing errors obsolete
+ // as we can assume that a nodeId that is 48 chars or longer is a
+ // noteID.
+ const base64UuidLength = ((4 * 36) / 3) - 1
+ if (!(noteId.length > base64UuidLength)) {
+ return _callback(null, null)
}
- },
- parseNoteTitle: function (body) {
- var parsed = Note.extractMeta(body)
- var $ = cheerio.load(md.render(parsed.markdown))
- return Note.extractNoteTitle(parsed.meta, $)
- },
- extractNoteTitle: function (meta, $) {
- var title = ''
- if (meta.title && (typeof meta.title === 'string' || typeof meta.title === 'number')) {
- title = meta.title
- } else {
- var h1s = $('h1')
- if (h1s.length > 0 && h1s.first().text().split('\n').length === 1) { title = S(h1s.first().text()).stripTags().s }
- }
- if (!title) title = 'Untitled'
- return title
- },
- generateDescription: function (markdown) {
- return markdown.substr(0, 100).replace(/(?:\r\n|\r|\n)/g, ' ')
- },
- decodeTitle: function (title) {
- return title || 'Untitled'
- },
- generateWebTitle: function (title) {
- title = !title || title === 'Untitled' ? 'CodiMD - Collaborative markdown notes' : title + ' - CodiMD'
- return title
- },
- extractNoteTags: function (meta, $) {
- var tags = []
- var rawtags = []
- if (meta.tags && (typeof meta.tags === 'string' || typeof meta.tags === 'number')) {
- var metaTags = ('' + meta.tags).split(',')
- for (let i = 0; i < metaTags.length; i++) {
- var text = metaTags[i].trim()
- if (text) rawtags.push(text)
+ // try to parse note id by LZString Base64
+ try {
+ var id = LZString.decompressFromBase64(noteId)
+ if (id && Note.checkNoteIdValid(id)) { return callback(null, id) } else { return _callback(null, null) }
+ } catch (err) {
+ if (err.message === 'Cannot read property \'charAt\' of undefined') {
+ logger.warning('Looks like we can not decode "' + noteId + '" with LZString. Can be ignored.')
+ } else {
+ logger.error(err)
}
- } else {
- var h6s = $('h6')
- h6s.each(function (key, value) {
- if (/^tags/gmi.test($(value).text())) {
- var codes = $(value).find('code')
- for (let i = 0; i < codes.length; i++) {
- var text = S($(codes[i]).text().trim()).stripTags().s
- if (text) rawtags.push(text)
- }
- }
- })
+ return _callback(null, null)
}
- for (let i = 0; i < rawtags.length; i++) {
- var found = false
- for (let j = 0; j < tags.length; j++) {
- if (tags[j] === rawtags[i]) {
- found = true
- break
- }
- }
- if (!found) { tags.push(rawtags[i]) }
+ },
+ parseNoteIdByBase64Url: function (_callback) {
+ // try to parse note id by base64url
+ try {
+ var id = Note.decodeNoteId(noteId)
+ if (id && Note.checkNoteIdValid(id)) { return callback(null, id) } else { return _callback(null, null) }
+ } catch (err) {
+ logger.error(err)
+ return _callback(null, null)
}
- return tags
},
- extractMeta: function (content) {
- var obj = null
+ parseNoteIdByShortId: function (_callback) {
+ // try to parse note id by shortId
try {
- obj = metaMarked(content)
- if (!obj.markdown) obj.markdown = ''
- if (!obj.meta) obj.meta = {}
+ if (shortId.isValid(noteId)) {
+ Note.findOne({
+ where: {
+ shortid: noteId
+ }
+ }).then(function (note) {
+ if (!note) return _callback(null, null)
+ return callback(null, note.id)
+ }).catch(function (err) {
+ return _callback(err, null)
+ })
+ } else {
+ return _callback(null, null)
+ }
} catch (err) {
- obj = {
- markdown: content,
- meta: {}
+ return _callback(err, null)
+ }
+ }
+ }, function (err, result) {
+ if (err) {
+ logger.error(err)
+ return callback(err, null)
+ }
+ return callback(null, null)
+ })
+ }
+ Note.parseNoteInfo = function (body) {
+ var parsed = Note.extractMeta(body)
+ var $ = cheerio.load(md.render(parsed.markdown))
+ return {
+ title: Note.extractNoteTitle(parsed.meta, $),
+ tags: Note.extractNoteTags(parsed.meta, $)
+ }
+ }
+ Note.parseNoteTitle = function (body) {
+ var parsed = Note.extractMeta(body)
+ var $ = cheerio.load(md.render(parsed.markdown))
+ return Note.extractNoteTitle(parsed.meta, $)
+ }
+ Note.extractNoteTitle = function (meta, $) {
+ var title = ''
+ if (meta.title && (typeof meta.title === 'string' || typeof meta.title === 'number')) {
+ title = meta.title
+ } else {
+ var h1s = $('h1')
+ if (h1s.length > 0 && h1s.first().text().split('\n').length === 1) { title = S(h1s.first().text()).stripTags().s }
+ }
+ if (!title) title = 'Untitled'
+ return title
+ }
+ Note.generateDescription = function (markdown) {
+ return markdown.substr(0, 100).replace(/(?:\r\n|\r|\n)/g, ' ')
+ }
+ Note.decodeTitle = function (title) {
+ return title || 'Untitled'
+ }
+ Note.generateWebTitle = function (title) {
+ title = !title || title === 'Untitled' ? 'CodiMD - Collaborative markdown notes' : title + ' - CodiMD'
+ return title
+ }
+ Note.extractNoteTags = function (meta, $) {
+ var tags = []
+ var rawtags = []
+ if (meta.tags && (typeof meta.tags === 'string' || typeof meta.tags === 'number')) {
+ var metaTags = ('' + meta.tags).split(',')
+ for (let i = 0; i < metaTags.length; i++) {
+ var text = metaTags[i].trim()
+ if (text) rawtags.push(text)
+ }
+ } else {
+ var h6s = $('h6')
+ h6s.each(function (key, value) {
+ if (/^tags/gmi.test($(value).text())) {
+ var codes = $(value).find('code')
+ for (let i = 0; i < codes.length; i++) {
+ var text = S($(codes[i]).text().trim()).stripTags().s
+ if (text) rawtags.push(text)
}
}
- return obj
- },
- parseMeta: function (meta) {
- var _meta = {}
- if (meta) {
- if (meta.title && (typeof meta.title === 'string' || typeof meta.title === 'number')) { _meta.title = meta.title }
- if (meta.description && (typeof meta.description === 'string' || typeof meta.description === 'number')) { _meta.description = meta.description }
- if (meta.robots && (typeof meta.robots === 'string' || typeof meta.robots === 'number')) { _meta.robots = meta.robots }
- if (meta.GA && (typeof meta.GA === 'string' || typeof meta.GA === 'number')) { _meta.GA = meta.GA }
- if (meta.disqus && (typeof meta.disqus === 'string' || typeof meta.disqus === 'number')) { _meta.disqus = meta.disqus }
- if (meta.slideOptions && (typeof meta.slideOptions === 'object')) { _meta.slideOptions = meta.slideOptions }
+ })
+ }
+ for (let i = 0; i < rawtags.length; i++) {
+ var found = false
+ for (let j = 0; j < tags.length; j++) {
+ if (tags[j] === rawtags[i]) {
+ found = true
+ break
}
- return _meta
- },
- updateAuthorshipByOperation: function (operation, userId, authorships) {
- var index = 0
- var timestamp = Date.now()
- for (let i = 0; i < operation.length; i++) {
- var op = operation[i]
- if (ot.TextOperation.isRetain(op)) {
- index += op
- } else if (ot.TextOperation.isInsert(op)) {
- let opStart = index
- let opEnd = index + op.length
- var inserted = false
- // authorship format: [userId, startPos, endPos, createdAt, updatedAt]
- if (authorships.length <= 0) authorships.push([userId, opStart, opEnd, timestamp, timestamp])
- else {
- for (let j = 0; j < authorships.length; j++) {
- let authorship = authorships[j]
- if (!inserted) {
- let nextAuthorship = authorships[j + 1] || -1
- if ((nextAuthorship !== -1 && nextAuthorship[1] >= opEnd) || j >= authorships.length - 1) {
- if (authorship[1] < opStart && authorship[2] > opStart) {
- // divide
- let postLength = authorship[2] - opStart
- authorship[2] = opStart
- authorship[4] = timestamp
- authorships.splice(j + 1, 0, [userId, opStart, opEnd, timestamp, timestamp])
- authorships.splice(j + 2, 0, [authorship[0], opEnd, opEnd + postLength, authorship[3], timestamp])
- j += 2
- inserted = true
- } else if (authorship[1] >= opStart) {
- authorships.splice(j, 0, [userId, opStart, opEnd, timestamp, timestamp])
- j += 1
- inserted = true
- } else if (authorship[2] <= opStart) {
- authorships.splice(j + 1, 0, [userId, opStart, opEnd, timestamp, timestamp])
- j += 1
- inserted = true
- }
- }
- }
- if (authorship[1] >= opStart) {
- authorship[1] += op.length
- authorship[2] += op.length
- }
- }
- }
- index += op.length
- } else if (ot.TextOperation.isDelete(op)) {
- let opStart = index
- let opEnd = index - op
- if (operation.length === 1) {
- authorships = []
- } else if (authorships.length > 0) {
- for (let j = 0; j < authorships.length; j++) {
- let authorship = authorships[j]
- if (authorship[1] >= opStart && authorship[1] <= opEnd && authorship[2] >= opStart && authorship[2] <= opEnd) {
- authorships.splice(j, 1)
- j -= 1
- } else if (authorship[1] < opStart && authorship[1] < opEnd && authorship[2] > opStart && authorship[2] > opEnd) {
- authorship[2] += op
- authorship[4] = timestamp
- } else if (authorship[2] >= opStart && authorship[2] <= opEnd) {
+ }
+ if (!found) { tags.push(rawtags[i]) }
+ }
+ return tags
+ }
+ Note.extractMeta = function (content) {
+ var obj = null
+ try {
+ obj = metaMarked(content)
+ if (!obj.markdown) obj.markdown = ''
+ if (!obj.meta) obj.meta = {}
+ } catch (err) {
+ obj = {
+ markdown: content,
+ meta: {}
+ }
+ }
+ return obj
+ }
+ Note.parseMeta = function (meta) {
+ var _meta = {}
+ if (meta) {
+ if (meta.title && (typeof meta.title === 'string' || typeof meta.title === 'number')) { _meta.title = meta.title }
+ if (meta.description && (typeof meta.description === 'string' || typeof meta.description === 'number')) { _meta.description = meta.description }
+ if (meta.robots && (typeof meta.robots === 'string' || typeof meta.robots === 'number')) { _meta.robots = meta.robots }
+ if (meta.GA && (typeof meta.GA === 'string' || typeof meta.GA === 'number')) { _meta.GA = meta.GA }
+ if (meta.disqus && (typeof meta.disqus === 'string' || typeof meta.disqus === 'number')) { _meta.disqus = meta.disqus }
+ if (meta.slideOptions && (typeof meta.slideOptions === 'object')) { _meta.slideOptions = meta.slideOptions }
+ }
+ return _meta
+ }
+ Note.updateAuthorshipByOperation = function (operation, userId, authorships) {
+ var index = 0
+ var timestamp = Date.now()
+ for (let i = 0; i < operation.length; i++) {
+ var op = operation[i]
+ if (ot.TextOperation.isRetain(op)) {
+ index += op
+ } else if (ot.TextOperation.isInsert(op)) {
+ let opStart = index
+ let opEnd = index + op.length
+ var inserted = false
+ // authorship format: [userId, startPos, endPos, createdAt, updatedAt]
+ if (authorships.length <= 0) authorships.push([userId, opStart, opEnd, timestamp, timestamp])
+ else {
+ for (let j = 0; j < authorships.length; j++) {
+ let authorship = authorships[j]
+ if (!inserted) {
+ let nextAuthorship = authorships[j + 1] || -1
+ if ((nextAuthorship !== -1 && nextAuthorship[1] >= opEnd) || j >= authorships.length - 1) {
+ if (authorship[1] < opStart && authorship[2] > opStart) {
+ // divide
+ let postLength = authorship[2] - opStart
authorship[2] = opStart
authorship[4] = timestamp
- } else if (authorship[1] >= opStart && authorship[1] <= opEnd) {
- authorship[1] = opEnd
- authorship[4] = timestamp
- }
- if (authorship[1] >= opEnd) {
- authorship[1] += op
- authorship[2] += op
+ authorships.splice(j + 1, 0, [userId, opStart, opEnd, timestamp, timestamp])
+ authorships.splice(j + 2, 0, [authorship[0], opEnd, opEnd + postLength, authorship[3], timestamp])
+ j += 2
+ inserted = true
+ } else if (authorship[1] >= opStart) {
+ authorships.splice(j, 0, [userId, opStart, opEnd, timestamp, timestamp])
+ j += 1
+ inserted = true
+ } else if (authorship[2] <= opStart) {
+ authorships.splice(j + 1, 0, [userId, opStart, opEnd, timestamp, timestamp])
+ j += 1
+ inserted = true
}
}
}
- index += op
- }
- }
- // merge
- for (let j = 0; j < authorships.length; j++) {
- let authorship = authorships[j]
- for (let k = j + 1; k < authorships.length; k++) {
- let nextAuthorship = authorships[k]
- if (nextAuthorship && authorship[0] === nextAuthorship[0] && authorship[2] === nextAuthorship[1]) {
- let minTimestamp = Math.min(authorship[3], nextAuthorship[3])
- let maxTimestamp = Math.max(authorship[3], nextAuthorship[3])
- authorships.splice(j, 1, [authorship[0], authorship[1], nextAuthorship[2], minTimestamp, maxTimestamp])
- authorships.splice(k, 1)
- j -= 1
- break
+ if (authorship[1] >= opStart) {
+ authorship[1] += op.length
+ authorship[2] += op.length
}
}
}
- // clear
- for (let j = 0; j < authorships.length; j++) {
- let authorship = authorships[j]
- if (!authorship[0]) {
- authorships.splice(j, 1)
- j -= 1
- }
- }
- return authorships
- },
- transformPatchToOperations: function (patch, contentLength) {
- var operations = []
- if (patch.length > 0) {
- // calculate original content length
- for (let j = patch.length - 1; j >= 0; j--) {
- var p = patch[j]
- for (let i = 0; i < p.diffs.length; i++) {
- var diff = p.diffs[i]
- switch (diff[0]) {
- case 1: // insert
- contentLength -= diff[1].length
- break
- case -1: // delete
- contentLength += diff[1].length
- break
- }
+ index += op.length
+ } else if (ot.TextOperation.isDelete(op)) {
+ let opStart = index
+ let opEnd = index - op
+ if (operation.length === 1) {
+ authorships = []
+ } else if (authorships.length > 0) {
+ for (let j = 0; j < authorships.length; j++) {
+ let authorship = authorships[j]
+ if (authorship[1] >= opStart && authorship[1] <= opEnd && authorship[2] >= opStart && authorship[2] <= opEnd) {
+ authorships.splice(j, 1)
+ j -= 1
+ } else if (authorship[1] < opStart && authorship[1] < opEnd && authorship[2] > opStart && authorship[2] > opEnd) {
+ authorship[2] += op
+ authorship[4] = timestamp
+ } else if (authorship[2] >= opStart && authorship[2] <= opEnd) {
+ authorship[2] = opStart
+ authorship[4] = timestamp
+ } else if (authorship[1] >= opStart && authorship[1] <= opEnd) {
+ authorship[1] = opEnd
+ authorship[4] = timestamp
}
- }
- // generate operations
- var bias = 0
- var lengthBias = 0
- for (let j = 0; j < patch.length; j++) {
- var operation = []
- let p = patch[j]
- var currIndex = p.start1
- var currLength = contentLength - bias
- for (let i = 0; i < p.diffs.length; i++) {
- let diff = p.diffs[i]
- switch (diff[0]) {
- case 0: // retain
- if (i === 0) {
- // first
- operation.push(currIndex + diff[1].length)
- } else if (i !== p.diffs.length - 1) {
- // mid
- operation.push(diff[1].length)
- } else {
- // last
- operation.push(currLength + lengthBias - currIndex)
- }
- currIndex += diff[1].length
- break
- case 1: // insert
- operation.push(diff[1])
- lengthBias += diff[1].length
- currIndex += diff[1].length
- break
- case -1: // delete
- operation.push(-diff[1].length)
- bias += diff[1].length
- currIndex += diff[1].length
- break
- }
+ if (authorship[1] >= opEnd) {
+ authorship[1] += op
+ authorship[2] += op
}
- operations.push(operation)
}
}
- return operations
+ index += op
}
- },
- hooks: {
- beforeCreate: function (note, options, callback) {
- // if no content specified then use default note
- if (!note.content) {
- var body = null
- let filePath = null
- if (!note.alias) {
- filePath = config.defaultNotePath
- } else {
- filePath = path.join(config.docsPath, note.alias + '.md')
- }
- if (Note.checkFileExist(filePath)) {
- var fsCreatedTime = moment(fs.statSync(filePath).ctime)
- body = fs.readFileSync(filePath, 'utf8')
- note.title = Note.parseNoteTitle(body)
- note.content = body
- if (filePath !== config.defaultNotePath) {
- note.createdAt = fsCreatedTime
- }
+ }
+ // merge
+ for (let j = 0; j < authorships.length; j++) {
+ let authorship = authorships[j]
+ for (let k = j + 1; k < authorships.length; k++) {
+ let nextAuthorship = authorships[k]
+ if (nextAuthorship && authorship[0] === nextAuthorship[0] && authorship[2] === nextAuthorship[1]) {
+ let minTimestamp = Math.min(authorship[3], nextAuthorship[3])
+ let maxTimestamp = Math.max(authorship[3], nextAuthorship[3])
+ authorships.splice(j, 1, [authorship[0], authorship[1], nextAuthorship[2], minTimestamp, maxTimestamp])
+ authorships.splice(k, 1)
+ j -= 1
+ break
+ }
+ }
+ }
+ // clear
+ for (let j = 0; j < authorships.length; j++) {
+ let authorship = authorships[j]
+ if (!authorship[0]) {
+ authorships.splice(j, 1)
+ j -= 1
+ }
+ }
+ return authorships
+ }
+ Note.transformPatchToOperations = function (patch, contentLength) {
+ var operations = []
+ if (patch.length > 0) {
+ // calculate original content length
+ for (let j = patch.length - 1; j >= 0; j--) {
+ var p = patch[j]
+ for (let i = 0; i < p.diffs.length; i++) {
+ var diff = p.diffs[i]
+ switch (diff[0]) {
+ case 1: // insert
+ contentLength -= diff[1].length
+ break
+ case -1: // delete
+ contentLength += diff[1].length
+ break
}
}
- // if no permission specified and have owner then give default permission in config, else default permission is freely
- if (!note.permission) {
- if (note.ownerId) {
- note.permission = config.defaultPermission
- } else {
- note.permission = 'freely'
+ }
+ // generate operations
+ var bias = 0
+ var lengthBias = 0
+ for (let j = 0; j < patch.length; j++) {
+ var operation = []
+ let p = patch[j]
+ var currIndex = p.start1
+ var currLength = contentLength - bias
+ for (let i = 0; i < p.diffs.length; i++) {
+ let diff = p.diffs[i]
+ switch (diff[0]) {
+ case 0: // retain
+ if (i === 0) {
+ // first
+ operation.push(currIndex + diff[1].length)
+ } else if (i !== p.diffs.length - 1) {
+ // mid
+ operation.push(diff[1].length)
+ } else {
+ // last
+ operation.push(currLength + lengthBias - currIndex)
+ }
+ currIndex += diff[1].length
+ break
+ case 1: // insert
+ operation.push(diff[1])
+ lengthBias += diff[1].length
+ currIndex += diff[1].length
+ break
+ case -1: // delete
+ operation.push(-diff[1].length)
+ bias += diff[1].length
+ currIndex += diff[1].length
+ break
}
}
- return callback(null, note)
- },
- afterCreate: function (note, options, callback) {
- sequelize.models.Revision.saveNoteRevision(note, function (err, revision) {
- callback(err, note)
- })
+ operations.push(operation)
}
}
- })
+ return operations
+ }
return Note
}
diff --git a/lib/models/revision.js b/lib/models/revision.js
index 4ee080da..dbd76e4e 100644
--- a/lib/models/revision.js
+++ b/lib/models/revision.js
@@ -7,8 +7,9 @@ var childProcess = require('child_process')
var shortId = require('shortid')
var path = require('path')
+var Op = Sequelize.Op
+
// core
-var config = require('../config')
var logger = require('../logger')
var dmpWorker = createDmpWorker()
@@ -18,7 +19,7 @@ function createDmpWorker () {
var worker = childProcess.fork(path.resolve(__dirname, '../workers/dmpWorker.js'), {
stdio: 'ignore'
})
- if (config.debug) logger.info('dmp worker process started')
+ logger.debug('dmp worker process started')
worker.on('message', function (data) {
if (!data || !data.msg || !data.cacheKey) {
return logger.error('dmp worker error: not enough data on message')
@@ -36,7 +37,7 @@ function createDmpWorker () {
})
worker.on('close', function (code) {
dmpWorker = null
- if (config.debug) logger.info('dmp worker process exited with code ' + code)
+ logger.debug(`dmp worker process exited with code ${code}`)
})
return worker
}
@@ -97,214 +98,212 @@ module.exports = function (sequelize, DataTypes) {
this.setDataValue('authorship', value ? JSON.stringify(value) : value)
}
}
- }, {
- classMethods: {
- associate: function (models) {
- Revision.belongsTo(models.Note, {
- foreignKey: 'noteId',
- as: 'note',
- constraints: false,
- onDelete: 'CASCADE',
- hooks: true
- })
- },
- getNoteRevisions: function (note, callback) {
- Revision.findAll({
- where: {
- noteId: note.id
- },
- order: [['createdAt', 'DESC']]
- }).then(function (revisions) {
- var data = []
- for (var i = 0, l = revisions.length; i < l; i++) {
- var revision = revisions[i]
- data.push({
- time: moment(revision.createdAt).valueOf(),
- length: revision.length
- })
- }
- callback(null, data)
- }).catch(function (err) {
- callback(err, null)
- })
+ })
+
+ Revision.associate = function (models) {
+ Revision.belongsTo(models.Note, {
+ foreignKey: 'noteId',
+ as: 'note',
+ constraints: false,
+ onDelete: 'CASCADE',
+ hooks: true
+ })
+ }
+ Revision.getNoteRevisions = function (note, callback) {
+ Revision.findAll({
+ where: {
+ noteId: note.id
},
- getPatchedNoteRevisionByTime: function (note, time, callback) {
- // find all revisions to prepare for all possible calculation
- Revision.findAll({
- where: {
- noteId: note.id
- },
- order: [['createdAt', 'DESC']]
- }).then(function (revisions) {
- if (revisions.length <= 0) return callback(null, null)
- // measure target revision position
- Revision.count({
- where: {
- noteId: note.id,
- createdAt: {
- $gte: time
- }
- },
- order: [['createdAt', 'DESC']]
- }).then(function (count) {
- if (count <= 0) return callback(null, null)
- sendDmpWorker({
- msg: 'get revision',
- revisions: revisions,
- count: count
- }, callback)
- }).catch(function (err) {
- return callback(err, null)
- })
- }).catch(function (err) {
- return callback(err, null)
+ order: [['createdAt', 'DESC']]
+ }).then(function (revisions) {
+ var data = []
+ for (var i = 0, l = revisions.length; i < l; i++) {
+ var revision = revisions[i]
+ data.push({
+ time: moment(revision.createdAt).valueOf(),
+ length: revision.length
})
+ }
+ callback(null, data)
+ }).catch(function (err) {
+ callback(err, null)
+ })
+ }
+ Revision.getPatchedNoteRevisionByTime = function (note, time, callback) {
+ // find all revisions to prepare for all possible calculation
+ Revision.findAll({
+ where: {
+ noteId: note.id
},
- checkAllNotesRevision: function (callback) {
- Revision.saveAllNotesRevision(function (err, notes) {
- if (err) return callback(err, null)
- if (!notes || notes.length <= 0) {
- return callback(null, notes)
- } else {
- Revision.checkAllNotesRevision(callback)
+ order: [['createdAt', 'DESC']]
+ }).then(function (revisions) {
+ if (revisions.length <= 0) return callback(null, null)
+ // measure target revision position
+ Revision.count({
+ where: {
+ noteId: note.id,
+ createdAt: {
+ [Op.gte]: time
}
- })
- },
- saveAllNotesRevision: function (callback) {
- sequelize.models.Note.findAll({
- // query all notes that need to save for revision
- where: {
- $and: [
- {
- lastchangeAt: {
- $or: {
- $eq: null,
- $and: {
- $ne: null,
- $gt: sequelize.col('createdAt')
- }
- }
- }
- },
- {
- savedAt: {
- $or: {
- $eq: null,
- $lt: sequelize.col('lastchangeAt')
- }
+ },
+ order: [['createdAt', 'DESC']]
+ }).then(function (count) {
+ if (count <= 0) return callback(null, null)
+ sendDmpWorker({
+ msg: 'get revision',
+ revisions: revisions,
+ count: count
+ }, callback)
+ }).catch(function (err) {
+ return callback(err, null)
+ })
+ }).catch(function (err) {
+ return callback(err, null)
+ })
+ }
+ Revision.checkAllNotesRevision = function (callback) {
+ Revision.saveAllNotesRevision(function (err, notes) {
+ if (err) return callback(err, null)
+ if (!notes || notes.length <= 0) {
+ return callback(null, notes)
+ } else {
+ Revision.checkAllNotesRevision(callback)
+ }
+ })
+ }
+ Revision.saveAllNotesRevision = function (callback) {
+ sequelize.models.Note.findAll({
+ // query all notes that need to save for revision
+ where: {
+ [Op.and]: [
+ {
+ lastchangeAt: {
+ [Op.or]: {
+ [Op.eq]: null,
+ [Op.and]: {
+ [Op.ne]: null,
+ [Op.gt]: sequelize.col('createdAt')
}
}
- ]
- }
- }).then(function (notes) {
- if (notes.length <= 0) return callback(null, notes)
- var savedNotes = []
- async.each(notes, function (note, _callback) {
- // revision saving policy: note not been modified for 5 mins or not save for 10 mins
- if (note.lastchangeAt && note.savedAt) {
- var lastchangeAt = moment(note.lastchangeAt)
- var savedAt = moment(note.savedAt)
- if (moment().isAfter(lastchangeAt.add(5, 'minutes'))) {
- savedNotes.push(note)
- Revision.saveNoteRevision(note, _callback)
- } else if (lastchangeAt.isAfter(savedAt.add(10, 'minutes'))) {
- savedNotes.push(note)
- Revision.saveNoteRevision(note, _callback)
- } else {
- return _callback(null, null)
- }
- } else {
- savedNotes.push(note)
- Revision.saveNoteRevision(note, _callback)
}
- }, function (err) {
- if (err) {
- return callback(err, null)
+ },
+ {
+ savedAt: {
+ [Op.or]: {
+ [Op.eq]: null,
+ [Op.lt]: sequelize.col('lastchangeAt')
+ }
}
- // return null when no notes need saving at this moment but have delayed tasks to be done
- var result = ((savedNotes.length === 0) && (notes.length > savedNotes.length)) ? null : savedNotes
- return callback(null, result)
- })
+ }
+ ]
+ }
+ }).then(function (notes) {
+ if (notes.length <= 0) return callback(null, notes)
+ var savedNotes = []
+ async.each(notes, function (note, _callback) {
+ // revision saving policy: note not been modified for 5 mins or not save for 10 mins
+ if (note.lastchangeAt && note.savedAt) {
+ var lastchangeAt = moment(note.lastchangeAt)
+ var savedAt = moment(note.savedAt)
+ if (moment().isAfter(lastchangeAt.add(5, 'minutes'))) {
+ savedNotes.push(note)
+ Revision.saveNoteRevision(note, _callback)
+ } else if (lastchangeAt.isAfter(savedAt.add(10, 'minutes'))) {
+ savedNotes.push(note)
+ Revision.saveNoteRevision(note, _callback)
+ } else {
+ return _callback(null, null)
+ }
+ } else {
+ savedNotes.push(note)
+ Revision.saveNoteRevision(note, _callback)
+ }
+ }, function (err) {
+ if (err) {
+ return callback(err, null)
+ }
+ // return null when no notes need saving at this moment but have delayed tasks to be done
+ var result = ((savedNotes.length === 0) && (notes.length > savedNotes.length)) ? null : savedNotes
+ return callback(null, result)
+ })
+ }).catch(function (err) {
+ return callback(err, null)
+ })
+ }
+ Revision.saveNoteRevision = function (note, callback) {
+ Revision.findAll({
+ where: {
+ noteId: note.id
+ },
+ order: [['createdAt', 'DESC']]
+ }).then(function (revisions) {
+ if (revisions.length <= 0) {
+ // if no revision available
+ Revision.create({
+ noteId: note.id,
+ lastContent: note.content ? note.content : '',
+ length: note.content ? note.content.length : 0,
+ authorship: note.authorship
+ }).then(function (revision) {
+ Revision.finishSaveNoteRevision(note, revision, callback)
}).catch(function (err) {
return callback(err, null)
})
- },
- saveNoteRevision: function (note, callback) {
- Revision.findAll({
- where: {
- noteId: note.id
- },
- order: [['createdAt', 'DESC']]
- }).then(function (revisions) {
- if (revisions.length <= 0) {
- // if no revision available
- Revision.create({
- noteId: note.id,
- lastContent: note.content ? note.content : '',
- length: note.content ? note.content.length : 0,
- authorship: note.authorship
+ } else {
+ var latestRevision = revisions[0]
+ var lastContent = latestRevision.content || latestRevision.lastContent
+ var content = note.content
+ sendDmpWorker({
+ msg: 'create patch',
+ lastDoc: lastContent,
+ currDoc: content
+ }, function (err, patch) {
+ if (err) logger.error('save note revision error', err)
+ if (!patch) {
+ // if patch is empty (means no difference) then just update the latest revision updated time
+ latestRevision.changed('updatedAt', true)
+ latestRevision.update({
+ updatedAt: Date.now()
}).then(function (revision) {
Revision.finishSaveNoteRevision(note, revision, callback)
}).catch(function (err) {
return callback(err, null)
})
} else {
- var latestRevision = revisions[0]
- var lastContent = latestRevision.content || latestRevision.lastContent
- var content = note.content
- sendDmpWorker({
- msg: 'create patch',
- lastDoc: lastContent,
- currDoc: content
- }, function (err, patch) {
- if (err) logger.error('save note revision error', err)
- if (!patch) {
- // if patch is empty (means no difference) then just update the latest revision updated time
- latestRevision.changed('updatedAt', true)
- latestRevision.update({
- updatedAt: Date.now()
- }).then(function (revision) {
- Revision.finishSaveNoteRevision(note, revision, callback)
- }).catch(function (err) {
- return callback(err, null)
- })
- } else {
- Revision.create({
- noteId: note.id,
- patch: patch,
- content: note.content,
- length: note.content.length,
- authorship: note.authorship
- }).then(function (revision) {
- // clear last revision content to reduce db size
- latestRevision.update({
- content: null
- }).then(function () {
- Revision.finishSaveNoteRevision(note, revision, callback)
- }).catch(function (err) {
- return callback(err, null)
- })
- }).catch(function (err) {
- return callback(err, null)
- })
- }
+ Revision.create({
+ noteId: note.id,
+ patch: patch,
+ content: note.content,
+ length: note.content.length,
+ authorship: note.authorship
+ }).then(function (revision) {
+ // clear last revision content to reduce db size
+ latestRevision.update({
+ content: null
+ }).then(function () {
+ Revision.finishSaveNoteRevision(note, revision, callback)
+ }).catch(function (err) {
+ return callback(err, null)
+ })
+ }).catch(function (err) {
+ return callback(err, null)
})
}
- }).catch(function (err) {
- return callback(err, null)
- })
- },
- finishSaveNoteRevision: function (note, revision, callback) {
- note.update({
- savedAt: revision.updatedAt
- }).then(function () {
- return callback(null, revision)
- }).catch(function (err) {
- return callback(err, null)
})
}
- }
- })
+ }).catch(function (err) {
+ return callback(err, null)
+ })
+ }
+ Revision.finishSaveNoteRevision = function (note, revision, callback) {
+ note.update({
+ savedAt: revision.updatedAt
+ }).then(function () {
+ return callback(null, revision)
+ }).catch(function (err) {
+ return callback(err, null)
+ })
+ }
return Revision
}
diff --git a/lib/models/user.js b/lib/models/user.js
index 648db73e..50c78108 100644
--- a/lib/models/user.js
+++ b/lib/models/user.js
@@ -1,11 +1,20 @@
'use strict'
// external modules
-var Sequelize = require('sequelize')
-var scrypt = require('@mlink/scrypt')
+const Sequelize = require('sequelize')
+const crypto = require('crypto')
+if (!crypto.scrypt) {
+ // polyfill for node.js 8.0, see https://github.com/chrisveness/scrypt-kdf#openssl-implementation
+ const scryptAsync = require('scrypt-async')
+ crypto.scrypt = function (password, salt, keylen, options, callback) {
+ const opt = Object.assign({}, options, { dkLen: keylen })
+ scryptAsync(password, salt, opt, (derivedKey) => callback(null, Buffer.from(derivedKey)))
+ }
+}
+const scrypt = require('scrypt-kdf')
// core
-var logger = require('../logger')
-var {generateAvatarURL} = require('../letter-avatars')
+const logger = require('../logger')
+const { generateAvatarURL } = require('../letter-avatars')
module.exports = function (sequelize, DataTypes) {
var User = sequelize.define('User', {
@@ -41,117 +50,125 @@ module.exports = function (sequelize, DataTypes) {
}
},
password: {
- type: Sequelize.TEXT,
- set: function (value) {
- var hash = scrypt.kdfSync(value, scrypt.paramsSync(0.1)).toString('hex')
- this.setDataValue('password', hash)
+ type: Sequelize.TEXT
+ }
+ })
+
+ User.prototype.verifyPassword = function (attempt) {
+ return scrypt.verify(Buffer.from(this.password, 'hex'), attempt)
+ }
+
+ User.associate = function (models) {
+ User.hasMany(models.Note, {
+ foreignKey: 'ownerId',
+ constraints: false
+ })
+ User.hasMany(models.Note, {
+ foreignKey: 'lastchangeuserId',
+ constraints: false
+ })
+ }
+ User.getProfile = function (user) {
+ if (!user) {
+ return null
+ }
+ return user.profile ? User.parseProfile(user.profile) : (user.email ? User.parseProfileByEmail(user.email) : null)
+ }
+ User.parseProfile = function (profile) {
+ try {
+ profile = JSON.parse(profile)
+ } catch (err) {
+ logger.error(err)
+ profile = null
+ }
+ if (profile) {
+ profile = {
+ name: profile.displayName || profile.username,
+ photo: User.parsePhotoByProfile(profile),
+ biggerphoto: User.parsePhotoByProfile(profile, true)
}
}
- }, {
- instanceMethods: {
- verifyPassword: function (attempt) {
- if (scrypt.verifyKdfSync(Buffer.from(this.password, 'hex'), attempt)) {
- return this
+ return profile
+ }
+ User.parsePhotoByProfile = function (profile, bigger) {
+ var photo = null
+ switch (profile.provider) {
+ case 'facebook':
+ photo = 'https://graph.facebook.com/' + profile.id + '/picture'
+ if (bigger) photo += '?width=400'
+ else photo += '?width=96'
+ break
+ case 'twitter':
+ photo = 'https://twitter.com/' + profile.username + '/profile_image'
+ if (bigger) photo += '?size=original'
+ else photo += '?size=bigger'
+ break
+ case 'github':
+ photo = 'https://avatars.githubusercontent.com/u/' + profile.id
+ if (bigger) photo += '?s=400'
+ else photo += '?s=96'
+ break
+ case 'gitlab':
+ photo = profile.avatarUrl
+ if (photo) {
+ if (bigger) photo = photo.replace(/(\?s=)\d*$/i, '$1400')
+ else photo = photo.replace(/(\?s=)\d*$/i, '$196')
} else {
- return false
- }
- }
- },
- classMethods: {
- associate: function (models) {
- User.hasMany(models.Note, {
- foreignKey: 'ownerId',
- constraints: false
- })
- User.hasMany(models.Note, {
- foreignKey: 'lastchangeuserId',
- constraints: false
- })
- },
- getProfile: function (user) {
- if (!user) {
- return null
- }
- return user.profile ? User.parseProfile(user.profile) : (user.email ? User.parseProfileByEmail(user.email) : null)
- },
- parseProfile: function (profile) {
- try {
- profile = JSON.parse(profile)
- } catch (err) {
- logger.error(err)
- profile = null
+ photo = generateAvatarURL(profile.username)
}
- if (profile) {
- profile = {
- name: profile.displayName || profile.username,
- photo: User.parsePhotoByProfile(profile),
- biggerphoto: User.parsePhotoByProfile(profile, true)
- }
- }
- return profile
- },
- parsePhotoByProfile: function (profile, bigger) {
- var photo = null
- switch (profile.provider) {
- case 'facebook':
- photo = 'https://graph.facebook.com/' + profile.id + '/picture'
- if (bigger) photo += '?width=400'
- else photo += '?width=96'
- break
- case 'twitter':
- photo = 'https://twitter.com/' + profile.username + '/profile_image'
- if (bigger) photo += '?size=original'
- else photo += '?size=bigger'
- break
- case 'github':
- photo = 'https://avatars.githubusercontent.com/u/' + profile.id
- if (bigger) photo += '?s=400'
- else photo += '?s=96'
- break
- case 'gitlab':
- photo = profile.avatarUrl
- if (photo) {
- if (bigger) photo = photo.replace(/(\?s=)\d*$/i, '$1400')
- else photo = photo.replace(/(\?s=)\d*$/i, '$196')
- } else {
- photo = generateAvatarURL(profile.username)
- }
- break
- case 'mattermost':
- photo = profile.avatarUrl
- if (photo) {
- if (bigger) photo = photo.replace(/(\?s=)\d*$/i, '$1400')
- else photo = photo.replace(/(\?s=)\d*$/i, '$196')
- } else {
- photo = generateAvatarURL(profile.username)
- }
- break
- case 'dropbox':
- photo = generateAvatarURL('', profile.emails[0].value, bigger)
- break
- case 'google':
- photo = profile.photos[0].value
- if (bigger) photo = photo.replace(/(\?sz=)\d*$/i, '$1400')
- else photo = photo.replace(/(\?sz=)\d*$/i, '$196')
- break
- case 'ldap':
- photo = generateAvatarURL(profile.username, profile.emails[0], bigger)
- break
- case 'saml':
- photo = generateAvatarURL(profile.username, profile.emails[0], bigger)
- break
- }
- return photo
- },
- parseProfileByEmail: function (email) {
- return {
- name: email.substring(0, email.lastIndexOf('@')),
- photo: generateAvatarURL('', email, false),
- biggerphoto: generateAvatarURL('', email, true)
+ break
+ case 'mattermost':
+ photo = profile.avatarUrl
+ if (photo) {
+ if (bigger) photo = photo.replace(/(\?s=)\d*$/i, '$1400')
+ else photo = photo.replace(/(\?s=)\d*$/i, '$196')
+ } else {
+ photo = generateAvatarURL(profile.username)
}
- }
+ break
+ case 'dropbox':
+ photo = generateAvatarURL('', profile.emails[0].value, bigger)
+ break
+ case 'google':
+ photo = profile.photos[0].value
+ if (bigger) photo = photo.replace(/(\?sz=)\d*$/i, '$1400')
+ else photo = photo.replace(/(\?sz=)\d*$/i, '$196')
+ break
+ case 'ldap':
+ photo = generateAvatarURL(profile.username, profile.emails[0], bigger)
+ break
+ case 'saml':
+ photo = generateAvatarURL(profile.username, profile.emails[0], bigger)
+ break
+ default:
+ photo = generateAvatarURL(profile.username)
+ break
}
- })
+ return photo
+ }
+ User.parseProfileByEmail = function (email) {
+ return {
+ name: email.substring(0, email.lastIndexOf('@')),
+ photo: generateAvatarURL('', email, false),
+ biggerphoto: generateAvatarURL('', email, true)
+ }
+ }
+
+ function updatePasswordHashHook (user, options) {
+ // suggested way to hash passwords to be able to do this asynchronously:
+ // @see https://github.com/sequelize/sequelize/issues/1821#issuecomment-44265819
+
+ if (!user.changed('password')) {
+ return Promise.resolve()
+ }
+
+ return scrypt.kdf(user.getDataValue('password'), { logN: 15 }).then(keyBuf => {
+ user.setDataValue('password', keyBuf.toString('hex'))
+ })
+ }
+
+ User.beforeCreate(updatePasswordHashHook)
+ User.beforeUpdate(updatePasswordHashHook)
return User
}
diff --git a/lib/realtime.js b/lib/realtime.js
index d04ffdc2..d85d728e 100644
--- a/lib/realtime.js
+++ b/lib/realtime.js
@@ -49,7 +49,7 @@ function secure (socket, next) {
if (handshakeData.sessionID &&
handshakeData.cookie[config.sessionName] &&
handshakeData.cookie[config.sessionName] !== handshakeData.sessionID) {
- if (config.debug) { logger.info('AUTH success cookie: ' + handshakeData.sessionID) }
+ logger.debug(`AUTH success cookie: ${handshakeData.sessionID}`)
return next()
} else {
next(new Error('AUTH failed: Cookie is invalid.'))
@@ -82,7 +82,7 @@ setInterval(function () {
async.each(Object.keys(notes), function (key, callback) {
var note = notes[key]
if (note.server.isDirty) {
- if (config.debug) logger.info('updater found dirty note: ' + key)
+ logger.debug(`updater found dirty note: ${key}`)
note.server.isDirty = false
updateNote(note, function (err, _note) {
// handle when note already been clean up
@@ -182,7 +182,7 @@ setInterval(function () {
var socket = realtime.io.sockets.connected[key]
if ((!socket && users[key]) ||
(socket && (!socket.rooms || socket.rooms.length <= 0))) {
- if (config.debug) { logger.info('cleaner found redundant user: ' + key) }
+ logger.debug(`cleaner found redundant user: ${key}`)
if (!socket) {
socket = {
id: key
@@ -429,11 +429,11 @@ function finishConnection (socket, noteId, socketId) {
if (config.debug) {
let noteId = socket.noteId
- logger.info('SERVER connected a client to [' + noteId + ']:')
- logger.info(JSON.stringify(user))
- // logger.info(notes);
+ logger.debug(`SERVER connected a client to [${noteId}]:`)
+ logger.debug(JSON.stringify(user))
+ logger.debug(notes)
getStatus(function (data) {
- logger.info(JSON.stringify(data))
+ logger.debug(JSON.stringify(data))
})
}
}
@@ -541,10 +541,8 @@ function disconnect (socket) {
if (isDisconnectBusy) return
isDisconnectBusy = true
- if (config.debug) {
- logger.info('SERVER disconnected a client')
- logger.info(JSON.stringify(users[socket.id]))
- }
+ logger.debug('SERVER disconnected a client')
+ logger.debug(JSON.stringify(users[socket.id]))
if (users[socket.id]) {
delete users[socket.id]
@@ -574,9 +572,9 @@ function disconnect (socket) {
delete note.server
delete notes[noteId]
if (config.debug) {
- // logger.info(notes);
+ logger.debug(notes)
getStatus(function (data) {
- logger.info(JSON.stringify(data))
+ logger.debug(JSON.stringify(data))
})
}
})
@@ -595,9 +593,9 @@ function disconnect (socket) {
if (disconnectSocketQueue.length > 0) { disconnect(disconnectSocketQueue[0]) }
if (config.debug) {
- // logger.info(notes);
+ logger.debug(notes)
getStatus(function (data) {
- logger.info(JSON.stringify(data))
+ logger.debug(JSON.stringify(data))
})
}
}
@@ -774,7 +772,7 @@ function connection (socket) {
var noteId = socket.noteId
var user = users[socket.id]
if (!noteId || !notes[noteId] || !user) return
- if (config.debug) { logger.info('SERVER received [' + noteId + '] user status from [' + socket.id + ']: ' + JSON.stringify(data)) }
+ logger.debug(`SERVER received [${noteId}] user status from [${socket.id}]: ${JSON.stringify(data)}`)
if (data) {
user.idle = data.idle
user.type = data.type
diff --git a/lib/response.js b/lib/response.js
index 8191e74f..6450bdf5 100644
--- a/lib/response.js
+++ b/lib/response.js
@@ -18,12 +18,12 @@ var utils = require('./utils')
// public
var response = {
errorForbidden: function (res) {
- const {req} = res
+ const { req } = res
if (req.user) {
responseError(res, '403', 'Forbidden', 'oh no.')
} else {
req.flash('error', 'You are not allowed to access this page. Maybe try logging in?')
- res.redirect(config.serverURL)
+ res.redirect(config.serverURL + '/')
}
},
errorNotFound: function (res) {
@@ -70,6 +70,7 @@ function showIndex (req, res, next) {
signin: authStatus,
infoMessage: req.flash('info'),
errorMessage: req.flash('error'),
+ imprint: fs.existsSync(path.join(config.docsPath, 'imprint.md')),
privacyStatement: fs.existsSync(path.join(config.docsPath, 'privacy.md')),
termsOfUse: fs.existsSync(path.join(config.docsPath, 'terms-of-use.md')),
deleteToken: deleteToken
@@ -226,7 +227,8 @@ function showPublishNote (req, res, next) {
robots: meta.robots || false, // default allow robots
GA: meta.GA,
disqus: meta.disqus,
- cspNonce: res.locals.nonce
+ cspNonce: res.locals.nonce,
+ dnt: req.headers.dnt
}
return renderPublish(data, res)
}).catch(function (err) {
@@ -427,7 +429,7 @@ function publishNoteActions (req, res, next) {
actionDownload(req, res, note)
break
case 'edit':
- res.redirect(config.serverURL + '/' + (note.alias ? note.alias : models.Note.encodeNoteId(note.id)))
+ res.redirect(config.serverURL + '/' + (note.alias ? note.alias : models.Note.encodeNoteId(note.id)) + '?both')
break
default:
res.redirect(config.serverURL + '/s/' + note.shortid)
@@ -441,7 +443,7 @@ function publishSlideActions (req, res, next) {
var action = req.params.action
switch (action) {
case 'edit':
- res.redirect(config.serverURL + '/' + (note.alias ? note.alias : models.Note.encodeNoteId(note.id)))
+ res.redirect(config.serverURL + '/' + (note.alias ? note.alias : models.Note.encodeNoteId(note.id)) + '?both')
break
default:
res.redirect(config.serverURL + '/p/' + note.shortid)
@@ -549,16 +551,16 @@ function gitlabActionProjects (req, res, note) {
ret.accesstoken = user.accessToken
ret.profileid = user.profileid
request(
- config.gitlab.baseURL + '/api/' + config.gitlab.version + '/projects?membership=yes&per_page=100&access_token=' + user.accessToken,
- function (error, httpResponse, body) {
- if (!error && httpResponse.statusCode === 200) {
- ret.projects = JSON.parse(body)
- return res.send(ret)
- } else {
- return res.send(ret)
- }
- }
- )
+ config.gitlab.baseURL + '/api/' + config.gitlab.version + '/projects?membership=yes&per_page=100&access_token=' + user.accessToken,
+ function (error, httpResponse, body) {
+ if (!error && httpResponse.statusCode === 200) {
+ ret.projects = JSON.parse(body)
+ return res.send(ret)
+ } else {
+ return res.send(ret)
+ }
+ }
+ )
}).catch(function (err) {
logger.error('gitlab action projects failed: ' + err)
return response.errorInternalError(res)
@@ -608,7 +610,8 @@ function showPublishSlide (req, res, next) {
robots: meta.robots || false, // default allow robots
GA: meta.GA,
disqus: meta.disqus,
- cspNonce: res.locals.nonce
+ cspNonce: res.locals.nonce,
+ dnt: req.headers.dnt
}
return renderPublishSlide(data, res)
}).catch(function (err) {
diff --git a/lib/utils.js b/lib/utils.js
index 247f85f2..1725f6e8 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -21,6 +21,8 @@ exports.getImageMimeType = function getImageMimeType (imagePath) {
return 'image/png'
case 'tiff':
return 'image/tiff'
+ case 'svg':
+ return 'image/svg+xml'
default:
return undefined
}
diff --git a/lib/web/auth/dropbox/index.js b/lib/web/auth/dropbox/index.js
index c44607da..1cfabd29 100644
--- a/lib/web/auth/dropbox/index.js
+++ b/lib/web/auth/dropbox/index.js
@@ -4,7 +4,7 @@ const Router = require('express').Router
const passport = require('passport')
const DropboxStrategy = require('passport-dropbox-oauth2').Strategy
const config = require('../../../config')
-const {setReturnToFromReferer, passportGeneralCallback} = require('../utils')
+const { setReturnToFromReferer, passportGeneralCallback } = require('../utils')
let dropboxAuth = module.exports = Router()
diff --git a/lib/web/auth/email/index.js b/lib/web/auth/email/index.js
index f7e58d46..32e21428 100644
--- a/lib/web/auth/email/index.js
+++ b/lib/web/auth/email/index.js
@@ -7,8 +7,8 @@ const LocalStrategy = require('passport-local').Strategy
const config = require('../../../config')
const models = require('../../../models')
const logger = require('../../../logger')
-const {setReturnToFromReferer} = require('../utils')
-const {urlencodedParser} = require('../../utils')
+const { setReturnToFromReferer } = require('../utils')
+const { urlencodedParser } = require('../../utils')
const response = require('../../../response')
let emailAuth = module.exports = Router()
@@ -23,8 +23,14 @@ passport.use(new LocalStrategy({
}
}).then(function (user) {
if (!user) return done(null, false)
- if (!user.verifyPassword(password)) return done(null, false)
- return done(null, user)
+ user.verifyPassword(password).then(verified => {
+ if (verified) {
+ return done(null, user)
+ } else {
+ logger.warn('invalid password given for %s', user.email)
+ return done(null, false)
+ }
+ })
}).catch(function (err) {
logger.error(err)
return done(err)
diff --git a/lib/web/auth/facebook/index.js b/lib/web/auth/facebook/index.js
index b2364989..418ddeee 100644
--- a/lib/web/auth/facebook/index.js
+++ b/lib/web/auth/facebook/index.js
@@ -5,7 +5,7 @@ const passport = require('passport')
const FacebookStrategy = require('passport-facebook').Strategy
const config = require('../../../config')
-const {setReturnToFromReferer, passportGeneralCallback} = require('../utils')
+const { setReturnToFromReferer, passportGeneralCallback } = require('../utils')
let facebookAuth = module.exports = Router()
diff --git a/lib/web/auth/github/index.js b/lib/web/auth/github/index.js
index ece634ba..afa5fa31 100644
--- a/lib/web/auth/github/index.js
+++ b/lib/web/auth/github/index.js
@@ -5,7 +5,7 @@ const passport = require('passport')
const GithubStrategy = require('passport-github').Strategy
const config = require('../../../config')
const response = require('../../../response')
-const {setReturnToFromReferer, passportGeneralCallback} = require('../utils')
+const { setReturnToFromReferer, passportGeneralCallback } = require('../utils')
let githubAuth = module.exports = Router()
diff --git a/lib/web/auth/gitlab/index.js b/lib/web/auth/gitlab/index.js
index 38436024..4cebbc10 100644
--- a/lib/web/auth/gitlab/index.js
+++ b/lib/web/auth/gitlab/index.js
@@ -5,7 +5,7 @@ const passport = require('passport')
const GitlabStrategy = require('passport-gitlab2').Strategy
const config = require('../../../config')
const response = require('../../../response')
-const {setReturnToFromReferer, passportGeneralCallback} = require('../utils')
+const { setReturnToFromReferer, passportGeneralCallback } = require('../utils')
let gitlabAuth = module.exports = Router()
diff --git a/lib/web/auth/google/index.js b/lib/web/auth/google/index.js
index 60282cf5..ad9bcd7a 100644
--- a/lib/web/auth/google/index.js
+++ b/lib/web/auth/google/index.js
@@ -4,21 +4,22 @@ const Router = require('express').Router
const passport = require('passport')
var GoogleStrategy = require('passport-google-oauth20').Strategy
const config = require('../../../config')
-const {setReturnToFromReferer, passportGeneralCallback} = require('../utils')
+const { setReturnToFromReferer, passportGeneralCallback } = require('../utils')
let googleAuth = module.exports = Router()
passport.use(new GoogleStrategy({
clientID: config.google.clientID,
clientSecret: config.google.clientSecret,
- callbackURL: config.serverURL + '/auth/google/callback'
+ callbackURL: config.serverURL + '/auth/google/callback',
+ userProfileURL: 'https://www.googleapis.com/oauth2/v3/userinfo'
}, passportGeneralCallback))
googleAuth.get('/auth/google', function (req, res, next) {
setReturnToFromReferer(req)
passport.authenticate('google', { scope: ['profile'] })(req, res, next)
})
- // google auth callback
+// google auth callback
googleAuth.get('/auth/google/callback',
passport.authenticate('google', {
successReturnToOrRedirect: config.serverURL + '/',
diff --git a/lib/web/auth/ldap/index.js b/lib/web/auth/ldap/index.js
index 8d71c18e..96143664 100644
--- a/lib/web/auth/ldap/index.js
+++ b/lib/web/auth/ldap/index.js
@@ -6,8 +6,8 @@ const LDAPStrategy = require('passport-ldapauth')
const config = require('../../../config')
const models = require('../../../models')
const logger = require('../../../logger')
-const {setReturnToFromReferer} = require('../utils')
-const {urlencodedParser} = require('../../utils')
+const { setReturnToFromReferer } = require('../utils')
+const { urlencodedParser } = require('../../utils')
const response = require('../../../response')
let ldapAuth = module.exports = Router()
@@ -66,11 +66,11 @@ passport.use(new LDAPStrategy({
}
if (needSave) {
user.save().then(function () {
- if (config.debug) { logger.debug('user login: ' + user.id) }
+ logger.debug(`user login: ${user.id}`)
return done(null, user)
})
} else {
- if (config.debug) { logger.debug('user login: ' + user.id) }
+ logger.debug(`user login: ${user.id}`)
return done(null, user)
}
}
diff --git a/lib/web/auth/mattermost/index.js b/lib/web/auth/mattermost/index.js
index 63a4886f..48d6d297 100644
--- a/lib/web/auth/mattermost/index.js
+++ b/lib/web/auth/mattermost/index.js
@@ -5,7 +5,7 @@ const passport = require('passport')
const Mattermost = require('mattermost')
const OAuthStrategy = require('passport-oauth2').Strategy
const config = require('../../../config')
-const {setReturnToFromReferer, passportGeneralCallback} = require('../utils')
+const { setReturnToFromReferer, passportGeneralCallback } = require('../utils')
const mattermost = new Mattermost.Client()
@@ -24,12 +24,12 @@ mattermostStrategy.userProfile = (accessToken, done) => {
mattermost.token = accessToken
mattermost.useHeaderToken()
mattermost.getMe(
- (data) => {
- done(null, data)
- },
- (err) => {
- done(err)
- }
+ (data) => {
+ done(null, data)
+ },
+ (err) => {
+ done(err)
+ }
)
}
diff --git a/lib/web/auth/oauth2/index.js b/lib/web/auth/oauth2/index.js
index 57ab9b9a..78434271 100644
--- a/lib/web/auth/oauth2/index.js
+++ b/lib/web/auth/oauth2/index.js
@@ -4,7 +4,7 @@ const Router = require('express').Router
const passport = require('passport')
const { Strategy, InternalOAuthError } = require('passport-oauth2')
const config = require('../../../config')
-const {setReturnToFromReferer, passportGeneralCallback} = require('../utils')
+const { setReturnToFromReferer, passportGeneralCallback } = require('../utils')
let oauth2Auth = module.exports = Router()
diff --git a/lib/web/auth/openid/index.js b/lib/web/auth/openid/index.js
index c45c6d71..b0a28bec 100644
--- a/lib/web/auth/openid/index.js
+++ b/lib/web/auth/openid/index.js
@@ -6,8 +6,8 @@ const OpenIDStrategy = require('@passport-next/passport-openid').Strategy
const config = require('../../../config')
const models = require('../../../models')
const logger = require('../../../logger')
-const {urlencodedParser} = require('../../utils')
-const {setReturnToFromReferer} = require('../utils')
+const { urlencodedParser } = require('../../utils')
+const { setReturnToFromReferer } = require('../utils')
let openIDAuth = module.exports = Router()
@@ -33,11 +33,11 @@ passport.use(new OpenIDStrategy({
}
if (needSave) {
user.save().then(function () {
- if (config.debug) { logger.info('user login: ' + user.id) }
+ logger.debug(`user login: ${user.id}`)
return done(null, user)
})
} else {
- if (config.debug) { logger.info('user login: ' + user.id) }
+ logger.debug(`user login: ${user.id}`)
return done(null, user)
}
}
diff --git a/lib/web/auth/saml/index.js b/lib/web/auth/saml/index.js
index b8d98340..40a6f8b3 100644
--- a/lib/web/auth/saml/index.js
+++ b/lib/web/auth/saml/index.js
@@ -6,7 +6,7 @@ const SamlStrategy = require('passport-saml').Strategy
const config = require('../../../config')
const models = require('../../../models')
const logger = require('../../../logger')
-const {urlencodedParser} = require('../../utils')
+const { urlencodedParser } = require('../../utils')
const fs = require('fs')
const intersection = function (array1, array2) { return array1.filter((n) => array2.includes(n)) }
@@ -17,7 +17,8 @@ passport.use(new SamlStrategy({
entryPoint: config.saml.idpSsoUrl,
issuer: config.saml.issuer || config.serverURL,
cert: fs.readFileSync(config.saml.idpCert, 'utf-8'),
- identifierFormat: config.saml.identifierFormat
+ identifierFormat: config.saml.identifierFormat,
+ disableRequestedAuthnContext: config.saml.disableRequestedAuthnContext
}, function (user, done) {
// check authorization if needed
if (config.saml.externalGroups && config.saml.groupAttribute) {
@@ -61,11 +62,11 @@ passport.use(new SamlStrategy({
}
if (needSave) {
user.save().then(function () {
- if (config.debug) { logger.debug('user login: ' + user.id) }
+ logger.debug(`user login: ${user.id}`)
return done(null, user)
})
} else {
- if (config.debug) { logger.debug('user login: ' + user.id) }
+ logger.debug(`user login: ${user.id}`)
return done(null, user)
}
}
diff --git a/lib/web/auth/twitter/index.js b/lib/web/auth/twitter/index.js
index c1860d93..5aba20ff 100644
--- a/lib/web/auth/twitter/index.js
+++ b/lib/web/auth/twitter/index.js
@@ -5,7 +5,7 @@ const passport = require('passport')
const TwitterStrategy = require('passport-twitter').Strategy
const config = require('../../../config')
-const {setReturnToFromReferer, passportGeneralCallback} = require('../utils')
+const { setReturnToFromReferer, passportGeneralCallback } = require('../utils')
let twitterAuth = module.exports = Router()
diff --git a/lib/web/auth/utils.js b/lib/web/auth/utils.js
index ff7a1237..141a0d6f 100644
--- a/lib/web/auth/utils.js
+++ b/lib/web/auth/utils.js
@@ -1,7 +1,6 @@
'use strict'
const models = require('../../models')
-const config = require('../../config')
const logger = require('../../logger')
exports.setReturnToFromReferer = function setReturnToFromReferer (req) {
@@ -38,11 +37,11 @@ exports.passportGeneralCallback = function callback (accessToken, refreshToken,
}
if (needSave) {
user.save().then(function () {
- if (config.debug) { logger.info('user login: ' + user.id) }
+ logger.debug(`user login: ${user.id}`)
return done(null, user)
})
} else {
- if (config.debug) { logger.info('user login: ' + user.id) }
+ logger.debug(`user login: ${user.id}`)
return done(null, user)
}
}
diff --git a/lib/web/historyRouter.js b/lib/web/historyRouter.js
index 1b22c232..fa426bbb 100644
--- a/lib/web/historyRouter.js
+++ b/lib/web/historyRouter.js
@@ -2,7 +2,7 @@
const Router = require('express').Router
-const {urlencodedParser} = require('./utils')
+const { urlencodedParser } = require('./utils')
const history = require('../history')
const historyRouter = module.exports = Router()
diff --git a/lib/web/imageRouter/azure.js b/lib/web/imageRouter/azure.js
index cc98e5fc..22ee5585 100644
--- a/lib/web/imageRouter/azure.js
+++ b/lib/web/imageRouter/azure.js
@@ -7,13 +7,13 @@ const logger = require('../../logger')
const azure = require('azure-storage')
exports.uploadImage = function (imagePath, callback) {
- if (!imagePath || typeof imagePath !== 'string') {
- callback(new Error('Image path is missing or wrong'), null)
+ if (!callback || typeof callback !== 'function') {
+ logger.error('Callback has to be a function')
return
}
- if (!callback || typeof callback !== 'function') {
- logger.error('Callback has to be a function')
+ if (!imagePath || typeof imagePath !== 'string') {
+ callback(new Error('Image path is missing or wrong'), null)
return
}
diff --git a/lib/web/imageRouter/filesystem.js b/lib/web/imageRouter/filesystem.js
index 7c876d66..3ba09e88 100644
--- a/lib/web/imageRouter/filesystem.js
+++ b/lib/web/imageRouter/filesystem.js
@@ -6,13 +6,13 @@ const config = require('../../config')
const logger = require('../../logger')
exports.uploadImage = function (imagePath, callback) {
- if (!imagePath || typeof imagePath !== 'string') {
- callback(new Error('Image path is missing or wrong'), null)
+ if (!callback || typeof callback !== 'function') {
+ logger.error('Callback has to be a function')
return
}
- if (!callback || typeof callback !== 'function') {
- logger.error('Callback has to be a function')
+ if (!imagePath || typeof imagePath !== 'string') {
+ callback(new Error('Image path is missing or wrong'), null)
return
}
diff --git a/lib/web/imageRouter/imgur.js b/lib/web/imageRouter/imgur.js
index 2a20002c..dcb03a7a 100644
--- a/lib/web/imageRouter/imgur.js
+++ b/lib/web/imageRouter/imgur.js
@@ -5,24 +5,22 @@ const logger = require('../../logger')
const imgur = require('imgur')
exports.uploadImage = function (imagePath, callback) {
- if (!imagePath || typeof imagePath !== 'string') {
- callback(new Error('Image path is missing or wrong'), null)
+ if (!callback || typeof callback !== 'function') {
+ logger.error('Callback has to be a function')
return
}
- if (!callback || typeof callback !== 'function') {
- logger.error('Callback has to be a function')
+ if (!imagePath || typeof imagePath !== 'string') {
+ callback(new Error('Image path is missing or wrong'), null)
return
}
imgur.setClientId(config.imgur.clientID)
imgur.uploadFile(imagePath)
- .then(function (json) {
- if (config.debug) {
- logger.info('SERVER uploadimage success: ' + JSON.stringify(json))
- }
- callback(null, json.data.link.replace(/^http:\/\//i, 'https://'))
- }).catch(function (err) {
- callback(new Error(err), null)
- })
+ .then(function (json) {
+ logger.debug(`SERVER uploadimage success: ${JSON.stringify(json)}`)
+ callback(null, json.data.link.replace(/^http:\/\//i, 'https://'))
+ }).catch(function (err) {
+ callback(new Error(err), null)
+ })
}
diff --git a/lib/web/imageRouter/index.js b/lib/web/imageRouter/index.js
index f3c2decf..0b59218b 100644
--- a/lib/web/imageRouter/index.js
+++ b/lib/web/imageRouter/index.js
@@ -21,18 +21,19 @@ imageRouter.post('/uploadimage', function (req, res) {
form.parse(req, function (err, fields, files) {
if (err || !files.image || !files.image.path) {
+ logger.error(`formidable error: ${err}`)
response.errorForbidden(res)
} else {
- if (config.debug) {
- logger.info('SERVER received uploadimage: ' + JSON.stringify(files.image))
- }
+ logger.debug(`SERVER received uploadimage: ${JSON.stringify(files.image)}`)
const uploadProvider = require('./' + config.imageUploadType)
+ logger.debug(`imageRouter: Uploading ${files.image.path} using ${config.imageUploadType}`)
uploadProvider.uploadImage(files.image.path, function (err, url) {
if (err !== null) {
logger.error(err)
return res.status(500).end('upload image error')
}
+ logger.debug(`SERVER sending ${url} to client`)
res.send({
link: url
})
diff --git a/lib/web/imageRouter/lutim.js b/lib/web/imageRouter/lutim.js
new file mode 100644
index 00000000..61930ad6
--- /dev/null
+++ b/lib/web/imageRouter/lutim.js
@@ -0,0 +1,30 @@
+'use strict'
+const config = require('../../config')
+const logger = require('../../logger')
+
+const lutim = require('lutim')
+
+exports.uploadImage = function (imagePath, callback) {
+ if (!callback || typeof callback !== 'function') {
+ logger.error('Callback has to be a function')
+ return
+ }
+
+ if (!imagePath || typeof imagePath !== 'string') {
+ callback(new Error('Image path is missing or wrong'), null)
+ return
+ }
+
+ if (config.lutim && config.lutim.url) {
+ lutim.setAPIUrl(config.lutim.url)
+ logger.debug(`Set lutim URL to ${lutim.getApiUrl()}`)
+ }
+
+ lutim.uploadImage(imagePath)
+ .then(function (json) {
+ logger.debug(`SERVER uploadimage success: ${JSON.stringify(json)}`)
+ callback(null, lutim.getAPIUrl() + json.msg.short)
+ }).catch(function (err) {
+ callback(new Error(err), null)
+ })
+}
diff --git a/lib/web/imageRouter/minio.js b/lib/web/imageRouter/minio.js
index b921c2d2..fe43f76f 100644
--- a/lib/web/imageRouter/minio.js
+++ b/lib/web/imageRouter/minio.js
@@ -3,7 +3,7 @@ const fs = require('fs')
const path = require('path')
const config = require('../../config')
-const {getImageMimeType} = require('../../utils')
+const { getImageMimeType } = require('../../utils')
const logger = require('../../logger')
const Minio = require('minio')
@@ -40,7 +40,9 @@ exports.uploadImage = function (imagePath, callback) {
callback(new Error(err), null)
return
}
- callback(null, `${protocol}://${config.minio.endPoint}:${config.minio.port}/${config.s3bucket}/${key}`)
+ let hidePort = [80, 443].includes(config.minio.port)
+ let urlPort = hidePort ? '' : `:${config.minio.port}`
+ callback(null, `${protocol}://${config.minio.endPoint}${urlPort}/${config.s3bucket}/${key}`)
})
})
}
diff --git a/lib/web/imageRouter/s3.js b/lib/web/imageRouter/s3.js
index f2a5a5df..2bf08cc7 100644
--- a/lib/web/imageRouter/s3.js
+++ b/lib/web/imageRouter/s3.js
@@ -3,7 +3,7 @@ const fs = require('fs')
const path = require('path')
const config = require('../../config')
-const {getImageMimeType} = require('../../utils')
+const { getImageMimeType } = require('../../utils')
const logger = require('../../logger')
const AWS = require('aws-sdk')
@@ -35,6 +35,7 @@ exports.uploadImage = function (imagePath, callback) {
const mimeType = getImageMimeType(imagePath)
if (mimeType) { params.ContentType = mimeType }
+ logger.debug(`S3 object parameters: ${JSON.stringify(params)}`)
s3.putObject(params, function (err, data) {
if (err) {
callback(new Error(err), null)
diff --git a/lib/web/middleware/tooBusy.js b/lib/web/middleware/tooBusy.js
index f1b72330..49efbe37 100644
--- a/lib/web/middleware/tooBusy.js
+++ b/lib/web/middleware/tooBusy.js
@@ -3,6 +3,9 @@
const toobusy = require('toobusy-js')
const response = require('../../response')
+const config = require('../../config')
+
+toobusy.maxLag(config.tooBusyLag)
module.exports = function (req, res, next) {
if (toobusy()) {
diff --git a/lib/web/noteRouter.js b/lib/web/noteRouter.js
index 41bf5f73..bac2cf88 100644
--- a/lib/web/noteRouter.js
+++ b/lib/web/noteRouter.js
@@ -4,7 +4,7 @@ const Router = require('express').Router
const response = require('../response')
-const {markdownParser} = require('./utils')
+const { markdownParser } = require('./utils')
const noteRouter = module.exports = Router()
diff --git a/lib/web/statusRouter.js b/lib/web/statusRouter.js
index 2b9cb65f..da69e62c 100644
--- a/lib/web/statusRouter.js
+++ b/lib/web/statusRouter.js
@@ -8,7 +8,7 @@ const config = require('../config')
const models = require('../models')
const logger = require('../logger')
-const {urlencodedParser} = require('./utils')
+const { urlencodedParser } = require('./utils')
const statusRouter = module.exports = Router()
@@ -68,9 +68,7 @@ statusRouter.post('/temp', urlencodedParser, function (req, res) {
if (!data) {
response.errorForbidden(res)
} else {
- if (config.debug) {
- logger.info('SERVER received temp from [' + host + ']: ' + req.body.data)
- }
+ logger.debug(`SERVER received temp from [${host}]: ${req.body.data}`)
models.Temp.create({
data: data
}).then(function (temp) {
diff --git a/lib/web/userRouter.js b/lib/web/userRouter.js
index ca364422..73b519ec 100644
--- a/lib/web/userRouter.js
+++ b/lib/web/userRouter.js
@@ -8,7 +8,7 @@ const response = require('../response')
const config = require('../config')
const models = require('../models')
const logger = require('../logger')
-const {generateAvatar} = require('../letter-avatars')
+const { generateAvatar } = require('../letter-avatars')
const UserRouter = module.exports = Router()
diff --git a/lib/workers/dmpWorker.js b/lib/workers/dmpWorker.js
index 60db0a12..ca68b4ab 100644
--- a/lib/workers/dmpWorker.js
+++ b/lib/workers/dmpWorker.js
@@ -4,7 +4,6 @@ var DiffMatchPatch = require('diff-match-patch')
var dmp = new DiffMatchPatch()
// core
-var config = require('../config')
var logger = require('../logger')
process.on('message', function (data) {
@@ -61,10 +60,8 @@ function createPatch (lastDoc, currDoc) {
var patch = dmp.patch_make(lastDoc, diff)
patch = dmp.patch_toText(patch)
var msEnd = (new Date()).getTime()
- if (config.debug) {
- logger.info(patch)
- logger.info((msEnd - msStart) + 'ms')
- }
+ logger.debug(patch)
+ logger.debug((msEnd - msStart) + 'ms')
return patch
}
@@ -123,9 +120,7 @@ function getRevision (revisions, count) {
authorship: authorship
}
var msEnd = (new Date()).getTime()
- if (config.debug) {
- logger.info((msEnd - msStart) + 'ms')
- }
+ logger.debug((msEnd - msStart) + 'ms')
return data
}
diff --git a/locales/ar.json b/locales/ar.json
new file mode 100644
index 00000000..35c4c374
--- /dev/null
+++ b/locales/ar.json
@@ -0,0 +1,121 @@
+{
+ "Collaborative markdown notes": "ملاحظات ماركداون تعاونية",
+ "Realtime collaborative markdown notes on all platforms.": "Collaborate on markdown notes on all platforms in realtime.",
+ "Best way to write and share your knowledge in markdown.": "The best platform to write and share markdown.",
+ "Intro": "مُقدِّمة",
+ "History": "التاريخ",
+ "New guest note": "ملاحظة ضيف جديد",
+ "Collaborate with URL": "Real time collaboration",
+ "Support charts and MathJax": "دعم المنحنيات البيانية و MathJax",
+ "Support slide mode": "دعم الشرائح التقديمية",
+ "Sign In": "لِج",
+ "Below is the history from browser": "Below is history from this browser",
+ "Welcome!": "أهلا بك!",
+ "New note": "ملاحظة جديدة",
+ "or": "أو",
+ "Sign Out": "خروج",
+ "Explore all features": "استكشف جميع الميزات",
+ "Select tags...": "اختر كلمات مفتاحية...",
+ "Search keyword...": "البحث عن كلمة مفتاحية...",
+ "Sort by title": "الترتيب حسب العنوان",
+ "Title": "العنوان",
+ "Sort by time": "فرز حسب الوقت",
+ "Time": "الزمن",
+ "Export history": "تصدير التاريخ",
+ "Import history": "استيراد التاريخ",
+ "Clear history": "مسح التاريخ",
+ "Refresh history": "حدث التاريخ",
+ "No history": "No history",
+ "Import from browser": "استيراد من المتصفح",
+ "Releases": "إصدارات",
+ "Are you sure?": "هل أنت واثق؟",
+ "Do you really want to delete this note?": "هل تريد حقًا حذف هذه الملاحظة؟",
+ "All users will lose their connection.": "سيفقد جميع المستخدمين اتصالهم.",
+ "Cancel": "إلغاء",
+ "Yes, do it!": "Yes, do it!",
+ "Choose method": "اختر الطريقة",
+ "Sign in via %s": "لِج عبر %s",
+ "New": "جديد",
+ "Publish": "انشر",
+ "Extra": "إضافي",
+ "Revision": "مراجعة",
+ "Slide Mode": "نمط الشرائح التقديمية",
+ "Export": "تصدير",
+ "Import": "استيراد",
+ "Clipboard": "الحافظة",
+ "Download": "تنزيل",
+ "Raw HTML": "Raw HTML",
+ "Edit": "عدّل",
+ "View": "View",
+ "Both": "معا",
+ "Help": "المساعدة",
+ "Upload Image": "تحميل صورة",
+ "Menu": "القائمة",
+ "This page need refresh": "هذه الصفحة بحاجة إلى تحديث",
+ "You have an incompatible client version.": "نسخة العميل غير متوافقة ",
+ "Refresh to update.": "حدث الصفحة للحصول على التحديث",
+ "New version available!": "نسخة جديدة متوفرة",
+ "See releases notes here": "إطلع على ملاحضة الاصدار هنا ",
+ "Refresh to enjoy new features.": "حدث الصفحة لتستمتع بالمميزات الجديدة",
+ "Your user state has changed.": "لقد تغيرت حالة المستخدم الخاصة بك.",
+ "Refresh to load new user state.": "قم بتحديث الصفحة لتحميل حالة المستخدم الجديدة.",
+ "Refresh": "تحديث",
+ "Contacts": "جهات الاتصال",
+ "Report an issue": "بلغ عن خطأ",
+ "Meet us on %s": "قابِلنا في %s",
+ "Send us email": "أرسل لنا بريدا إلكترونيا",
+ "Documents": "المستندات",
+ "Features": "المميزات",
+ "YAML Metadata": "YAML Metadata",
+ "Slide Example": "Slide Example",
+ "Cheatsheet": "Cheatsheet",
+ "Example": "مثال",
+ "Syntax": "Syntax",
+ "Header": "الترويسة",
+ "Unordered List": "قائمة غير مرتبة",
+ "Ordered List": "قائمة مرتبة",
+ "Todo List": "Checklist",
+ "Blockquote": "Blockquote",
+ "Bold font": "خط غامق",
+ "Italics font": "خط مائل",
+ "Strikethrough": "Strikethrough",
+ "Inserted text": "نص مُسَطَّر",
+ "Marked text": "نص بارز",
+ "Link": "الرابط",
+ "Image": "صورة",
+ "Code": "الشفرة",
+ "Externals": "Externals",
+ "This is a alert area.": "This is an alert area.",
+ "Revert": "تراجع",
+ "Import from clipboard": "استيراد من الحافظة",
+ "Paste your markdown or webpage here...": "Paste your markdown or webpage here…",
+ "Clear": "امسح",
+ "This note is locked": "هذه الملاحظة مقفلة",
+ "Sorry, only owner can edit this note.": "آسف ، يمكن للمالك فقط تعديل هذه الملاحظة.",
+ "OK": "حسنا",
+ "Reach the limit": "Reach the limit",
+ "Sorry, you've reached the max length this note can be.": "عذرًا ، لقد بلغت الحد الأقصى لطول هذه الملاحظة.",
+ "Please reduce the content or divide it to more notes, thank you!": "الرجاء قصر هذه الملاحظة",
+ "Import from Gist": "استيراد من Gist",
+ "Paste your gist url here...": "الصق عنوان url الخاص بك هنا...",
+ "Import from Snippet": "استرداد من سنيبت",
+ "Select From Available Projects": "اختر من بين المشاريع المتاحة",
+ "Select From Available Snippets": "اختر من بين المقتطفات المتاحة",
+ "OR": "أو",
+ "Export to Snippet": "صدر إلى سنيبت",
+ "Select Visibility Level": "حدد مستوى الرؤية",
+ "Night Theme": "الوضع الليلي",
+ "Follow us on %s and %s.": "تابِعنا على %s و %s.",
+ "Privacy": "الخصوصية",
+ "Terms of Use": "شروط الاستخدام",
+ "Do you really want to delete your user account?": "هل تريد حقًا حذف حسابك؟",
+ "This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "سيؤدي هذا إلى حذف حسابك ، وجميع الملاحظات التي تملكها وإزالة جميع الإشارات إلى حسابك من الملاحظات الأخرى.",
+ "Delete user": "احذف المستخدم",
+ "Export user data": "تصدير بيانات المستخدم",
+ "Help us translating on %s": "ساعدنا في الترجمة على %s",
+ "Source Code": "الشفرة المصدرية",
+ "Register": "انشئ حسابا",
+ "Powered by %s": "مدعوم بـ %s",
+ "Help us translating": "ساعدنا في الترجمة",
+ "Join the community": "انضم إلى المجتمع"
+} \ No newline at end of file
diff --git a/locales/de.json b/locales/de.json
index 57a5e64d..3f91244a 100644
--- a/locales/de.json
+++ b/locales/de.json
@@ -1,12 +1,12 @@
{
"Collaborative markdown notes": "Gemeinschaftliche Markdown Notizen",
- "Realtime collaborative markdown notes on all platforms.": "Gemeinschaftliche Notizen in Echtzeit auf allen Plattformen.",
+ "Realtime collaborative markdown notes on all platforms.": "Gemeinschaftliche Notizen in Echtzeit auf allen Plattformen.",
"Best way to write and share your knowledge in markdown.": "Der beste Weg, Notizen zu schreiben und teilen.",
- "Intro": "Intro",
+ "Intro": "Einleitung",
"History": "Verlauf",
- "New guest note": "Neue Gast Notiz",
+ "New guest note": "Neue Gastnotiz",
"Collaborate with URL": "Zusammenarbeiten mit URL",
- "Support charts and MathJax": "Unterstützt charts und Mathjax",
+ "Support charts and MathJax": "Unterstützt Charts und MathJax",
"Support slide mode": "Unterstützt Präsentationsmodus",
"Sign In": "Einloggen",
"Below is the history from browser": "Lokaler Browserverlauf",
@@ -28,7 +28,7 @@
"No history": "Kein Verlauf",
"Import from browser": "Vom Browser importieren",
"Releases": "Versionen",
- "Are you sure?": "Sind sie sicher?",
+ "Are you sure?": "Sind Sie sicher?",
"Do you really want to delete this note?": "Möchten Sie diese Notiz wirklich löschen?",
"All users will lose their connection.": "Alle Benutzer werden getrennt.",
"Cancel": "Abbrechen",
@@ -52,8 +52,8 @@
"Upload Image": "Foto hochladen",
"Menu": "Menü",
"This page need refresh": "Bitte laden Sie die Seite neu",
- "You have an incompatible client version.": "Ihre Client Version ist nicht mit dem Server kompatibel",
- "Refresh to update.": "Neu laden zum Updaten.",
+ "You have an incompatible client version.": "Ihre Client-Version ist nicht mit dem Server kompatibel",
+ "Refresh to update.": "Neu laden zum aktualisieren.",
"New version available!": "Neue Version verfügbar.",
"See releases notes here": "Versionshinweise",
"Refresh to enjoy new features.": "Neu laden für neue Funktionen",
@@ -66,15 +66,15 @@
"Send us email": "Kontakt",
"Documents": "Dokumente",
"Features": "Funktionen",
- "YAML Metadata": "YAML Metadaten",
- "Slide Example": "Beispiel Präsentation",
+ "YAML Metadata": "YAML-Metadaten",
+ "Slide Example": "Beispiel-Präsentation",
"Cheatsheet": "Cheatsheet",
"Example": "Beispiel",
"Syntax": "Syntax",
"Header": "Überschrift",
"Unordered List": "Stichpunkte",
"Ordered List": "Nummeriert",
- "Todo List": "To Do Liste",
+ "Todo List": "To-do-Liste",
"Blockquote": "Zitat",
"Bold font": "Fett",
"Italics font": "Kursiv",
@@ -92,12 +92,12 @@
"Clear": "Zurücksetzen",
"This note is locked": "Diese Notiz ist gesperrt",
"Sorry, only owner can edit this note.": "Entschuldigung, nur der Besitzer darf die Notiz bearbeiten.",
- "OK": "Ok",
+ "OK": "OK",
"Reach the limit": "Limit erreicht",
"Sorry, you've reached the max length this note can be.": "Entschuldigung, die maximale Länge der Notiz ist erreicht.",
"Please reduce the content or divide it to more notes, thank you!": "Bitte reduzieren Sie den Inhalt oder nutzen zwei Notizen, danke.",
"Import from Gist": "Aus GitHub Gist importieren",
- "Paste your gist url here...": "gist URL hier einfügen ...",
+ "Paste your gist url here...": "Gist URL hier einfügen ...",
"Import from Snippet": "Aus Snippet importieren",
"Select From Available Projects": "Aus verfügbaren Projekten wählen",
"Select From Available Snippets": "Aus verfügbaren Snippets wählen",
@@ -106,12 +106,17 @@
"Select Visibility Level": "Sichtbarkeit bestimmen",
"Night Theme": "Nachtmodus",
"Follow us on %s and %s.": "Folge uns auf %s und %s.",
- "Privacy": "Privatsphäre",
+ "Imprint": "Impressum",
+ "Privacy": "Datenschutz",
"Terms of Use": "Nutzungsbedingungen",
- "Do you really want to delete your user account?": "Möchten Sie wirklich Ihr Nutzeraccount löschen?",
- "This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "Hiermit löschen Sie Ihren Account, alle Ihre Dokumente und alle Verweise auf Ihren Account aus anderen Dokumenten.",
+ "Do you really want to delete your user account?": "Möchten Sie wirklich Ihr Nutzerkonto löschen?",
+ "This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "Hiermit löschen Sie Ihr Konto, alle Ihre Dokumente und alle Verweise auf Ihr Konto aus anderen Dokumenten.",
"Delete user": "Benutzer löschen",
"Export user data": "Exportiere Nutzerdaten",
- "Help us translating on %s": "Hilf uns übersetzen auf %s",
- "Source Code": "Quelltext"
+ "Help us translating on %s": "Hilf uns bei der Übersetzung auf %s",
+ "Source Code": "Quelltext",
+ "Register": "Registrieren",
+ "Powered by %s": "Ermöglicht durch %s",
+ "Help us translating": "Hilf uns beim Übersetzen",
+ "Join the community": "Tritt der Community bei"
} \ No newline at end of file
diff --git a/locales/en.json b/locales/en.json
index ead7ce2f..4f661cf5 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -106,12 +106,16 @@
"Select Visibility Level": "Select Visibility Level",
"Night Theme": "Night Theme",
"Follow us on %s and %s.": "Follow us on %s, and %s.",
+ "Imprint": "Imprint",
"Privacy": "Privacy",
"Terms of Use": "Terms of Use",
"Do you really want to delete your user account?": "Do you really want to delete your user account?",
"This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "This will delete your account, all notes that are owned by you and remove all references to your account from other notes.",
"Delete user": "Delete user",
"Export user data": "Export user data",
- "Help us translating on %s": "Help us translating on %s",
- "Source Code": "Source Code"
+ "Source Code": "Source Code",
+ "Powered by %s": "Powered by %s",
+ "Register": "Register",
+ "Help us translating": "Help us translating",
+ "Join the community": "Join the community"
}
diff --git a/locales/es.json b/locales/es.json
index a3bc1fc4..a3fcfe3f 100644
--- a/locales/es.json
+++ b/locales/es.json
@@ -1,104 +1,121 @@
{
- "Collaborative markdown notes": "Notas colaborativas en Markdown",
- "Realtime collaborative markdown notes on all platforms.": "Notas colaborativas en Markdown para todas las plataformas.",
- "Best way to write and share your knowledge in markdown.": "La mejor forma de escribir y compartir tu conocimiento en Markdown.",
- "Intro": "Introducción",
- "History": "Historia",
- "New guest note": "Nueva nota como invitado",
- "Collaborate with URL": "Colaborar via URL",
- "Support charts and MathJax": "Soporte para gráficos y MathJax",
- "Support slide mode": "Soporte para diapositivas",
- "Sign In": "Ingresar",
- "Below is the history from browser": "A continuación se muestra el historial del navegador",
- "Welcome!": "¡Bienvenido!",
- "New note": "Nueva nota",
- "or": "o",
- "Sign Out": "Salir",
- "Explore all features": "Explorar todas las funciones",
- "Select tags...": "Seleccionar etiquetas...",
- "Search keyword...": "Buscar palabras clave...",
- "Sort by title": "Ordenar por título",
- "Title": "Título",
- "Sort by time": "Ordenar por fecha",
- "Time": "Tiempo",
- "Export history": "Exportar historial",
- "Import history": "Importar historial",
- "Clear history": "Borrar historial",
- "Refresh history": "Actualizar historial",
- "No history": "Ningún historial",
- "Import from browser": "Importar del navegador",
- "Releases": "Versiones",
- "Are you sure?": "¿Estás seguro?",
- "Cancel": "Cancelar",
- "Yes, do it!": "Si, ¡hazlo!",
- "Choose method": "Elegir método",
- "Sign in via %s": "Ingresar via %s",
- "New": "Nuevo",
- "Publish": "Publicar",
- "Extra": "Extra",
- "Revision": "Revision",
- "Slide Mode": "Modo presentación",
- "Export": "Exportar",
- "Import": "Importar",
- "Clipboard": "Portapapeles",
- "Download": "Descargar",
- "Raw HTML": "HTML puro",
- "Edit": "Editar",
- "View": "Ver",
- "Both": "Ambos",
- "Help": "Ayuda",
- "Upload Image": "Subir imagen",
- "Menu": "Menú",
- "This page need refresh": "Esta página necesita ser cargada de nuevo",
- "You have an incompatible client version.": "Tienes una version del cliente incompatible.",
- "Refresh to update.": "Cargar de nuevo para actualizar.",
- "New version available!": "¡Nueva versión disponible!",
- "See releases notes here": "Ver aquí las notas de publicación",
- "Refresh to enjoy new features.": "Actualizar para usar las nuevas funciones.",
- "Your user state has changed.": "El estado de tu usuario ha cambiado.",
- "Refresh to load new user state.": "Recargar para actualizar el estado de tu usuario.",
- "Refresh": "Recargar",
- "Contacts": "Contactos",
- "Report an issue": "Reportar un problema",
- "Send us email": "Enviarnos un email",
- "Documents": "Documentos",
- "Features": "Funciones",
- "YAML Metadata": "Metadatos en YAML",
- "Slide Example": "Ejemplo de diapositiva",
- "Cheatsheet": "Ayudamemorias",
- "Example": "Ejemplo",
- "Syntax": "Sintaxis",
- "Header": "Cabecera",
- "Unordered List": "Lista desordenada",
- "Ordered List": "Lista ordenada",
- "Todo List": "Lista de tareas",
- "Blockquote": "Bloque de cita",
- "Bold font": "Fuente negrita",
- "Italics font": "Fuente itálica",
- "Strikethrough": "Tachado",
- "Inserted text": "Texto subrayado",
- "Marked text": "Texto marcado",
- "Link": "Enlace",
- "Image": "Imagen",
- "Code": "Código",
- "Externals": "Externos",
- "This is a alert area.": "Esto es un área de alerta.",
- "Revert": "Revertir",
- "Import from clipboard": "Importar del portapapeles",
- "Paste your markdown or webpage here...": "Pega tu markdown o página web aquí...",
- "Clear": "Limpiar",
- "This note is locked": "Esta nota está bloqueada",
- "Sorry, only owner can edit this note.": "Disculpa, solo el dueño puede editar esta nota.",
- "OK": "OK",
- "Reach the limit": "Haz alcanzado el límite",
- "Sorry, you've reached the max length this note can be.": "Disculpa, haz alcanzado la longitud máxima que puede tener esta nota.",
- "Please reduce the content or divide it to more notes, thank you!": "Por favor, reduce el contenido o dividela en mas notas, ¡gracias!",
- "Import from Gist": "Importar de un Gist",
- "Paste your gist url here...": "Pega el URL de tu Gist aquí...",
- "Import from Snippet": "Importar de Snippet",
- "Select From Available Projects": "Elegir de un proyecto disponible",
- "Select From Available Snippets": "Elegir de un Snippet disponible",
- "OR": "O",
- "Export to Snippet": "Exportar a Snippet",
- "Select Visibility Level": "Elegir el nivel de visibilidad"
-}
+ "Collaborative markdown notes": "Notas colaborativas en Markdown",
+ "Realtime collaborative markdown notes on all platforms.": "Notas colaborativas en Markdown para todas las plataformas en tiempo real.",
+ "Best way to write and share your knowledge in markdown.": "La mejor forma de escribir y compartir tu conocimiento en Markdown.",
+ "Intro": "Introducción",
+ "History": "Historia",
+ "New guest note": "Nueva nota como invitado",
+ "Collaborate with URL": "Colaborar via URL",
+ "Support charts and MathJax": "Soporte para gráficos y MathJax",
+ "Support slide mode": "Soporte para diapositivas",
+ "Sign In": "Ingresar",
+ "Below is the history from browser": "A continuación se muestra el historial del navegador",
+ "Welcome!": "¡Bienvenido!",
+ "New note": "Nueva nota",
+ "or": "o",
+ "Sign Out": "Salir",
+ "Explore all features": "Explorar todas las funciones",
+ "Select tags...": "Seleccionar etiquetas...",
+ "Search keyword...": "Buscar palabras clave...",
+ "Sort by title": "Ordenar por título",
+ "Title": "Título",
+ "Sort by time": "Ordenar por fecha",
+ "Time": "Tiempo",
+ "Export history": "Exportar historial",
+ "Import history": "Importar historial",
+ "Clear history": "Borrar historial",
+ "Refresh history": "Actualizar historial",
+ "No history": "Ningún historial",
+ "Import from browser": "Importar del navegador",
+ "Releases": "Versiones",
+ "Are you sure?": "¿Estás seguro?",
+ "Do you really want to delete this note?": "¿Realmente quieres eliminar esta nota?",
+ "All users will lose their connection.": "Todos los usuarios perderán su conexión.",
+ "Cancel": "Cancelar",
+ "Yes, do it!": "Si, ¡hazlo!",
+ "Choose method": "Elegir método",
+ "Sign in via %s": "Ingresar via %s",
+ "New": "Nuevo",
+ "Publish": "Publicar",
+ "Extra": "Extra",
+ "Revision": "Revision",
+ "Slide Mode": "Modo presentación",
+ "Export": "Exportar",
+ "Import": "Importar",
+ "Clipboard": "Portapapeles",
+ "Download": "Descargar",
+ "Raw HTML": "HTML puro",
+ "Edit": "Editar",
+ "View": "Ver",
+ "Both": "Ambos",
+ "Help": "Ayuda",
+ "Upload Image": "Subir imagen",
+ "Menu": "Menú",
+ "This page need refresh": "Esta página necesita ser cargada de nuevo",
+ "You have an incompatible client version.": "Tienes una version del cliente incompatible.",
+ "Refresh to update.": "Cargar de nuevo para actualizar.",
+ "New version available!": "¡Nueva versión disponible!",
+ "See releases notes here": "Ver aquí las notas de publicación",
+ "Refresh to enjoy new features.": "Actualizar para usar las nuevas funciones.",
+ "Your user state has changed.": "El estado de tu usuario ha cambiado.",
+ "Refresh to load new user state.": "Recargar para actualizar el estado de tu usuario.",
+ "Refresh": "Recargar",
+ "Contacts": "Contactos",
+ "Report an issue": "Reportar un problema",
+ "Meet us on %s": "Encuéntranos en %s",
+ "Send us email": "Enviarnos un email",
+ "Documents": "Documentos",
+ "Features": "Funciones",
+ "YAML Metadata": "Metadatos en YAML",
+ "Slide Example": "Ejemplo de diapositiva",
+ "Cheatsheet": "Ayudamemorias",
+ "Example": "Ejemplo",
+ "Syntax": "Sintaxis",
+ "Header": "Cabecera",
+ "Unordered List": "Lista desordenada",
+ "Ordered List": "Lista ordenada",
+ "Todo List": "Lista de tareas",
+ "Blockquote": "Bloque de cita",
+ "Bold font": "Fuente negrita",
+ "Italics font": "Fuente itálica",
+ "Strikethrough": "Tachado",
+ "Inserted text": "Texto subrayado",
+ "Marked text": "Texto marcado",
+ "Link": "Enlace",
+ "Image": "Imagen",
+ "Code": "Código",
+ "Externals": "Externos",
+ "This is a alert area.": "Esto es un área de alerta.",
+ "Revert": "Revertir",
+ "Import from clipboard": "Importar del portapapeles",
+ "Paste your markdown or webpage here...": "Pega tu markdown o página web aquí...",
+ "Clear": "Limpiar",
+ "This note is locked": "Esta nota está bloqueada",
+ "Sorry, only owner can edit this note.": "Disculpa, solo el dueño puede editar esta nota.",
+ "OK": "OK",
+ "Reach the limit": "Haz alcanzado el límite",
+ "Sorry, you've reached the max length this note can be.": "Disculpa, haz alcanzado la longitud máxima que puede tener esta nota.",
+ "Please reduce the content or divide it to more notes, thank you!": "Por favor, reduce el contenido o dividela en mas notas, ¡gracias!",
+ "Import from Gist": "Importar de un Gist",
+ "Paste your gist url here...": "Pega el URL de tu Gist aquí...",
+ "Import from Snippet": "Importar de Snippet",
+ "Select From Available Projects": "Elegir de un proyecto disponible",
+ "Select From Available Snippets": "Elegir de un Snippet disponible",
+ "OR": "O",
+ "Export to Snippet": "Exportar a Snippet",
+ "Select Visibility Level": "Elegir el nivel de visibilidad",
+ "Night Theme": "Modo nocturno",
+ "Follow us on %s and %s.": "Síguenos en %s, y %s.",
+ "Privacy": "Privacidad",
+ "Terms of Use": "Términos de uso",
+ "Do you really want to delete your user account?": "¿Estás seguro que quieres eliminar tu cuenta de usuario?",
+ "This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "Esta acción eliminará tu cuenta, todas tus notas y las referencias a tu cuenta desde otras notas.",
+ "Delete user": "Eliminar usuario",
+ "Export user data": "Exportar información de usuario",
+ "Help us translating on %s": "Ayúdanos traduciendo en %s",
+ "Source Code": "Código fuente",
+ "Register": "Registrar",
+ "Powered by %s": "Desarrollado por %s.",
+ "Help us translating": "Ayúdanos traduciendo",
+ "Join the community": "Únete a la comunidad"
+} \ No newline at end of file
diff --git a/locales/fr.json b/locales/fr.json
index e4555027..2a476724 100644
--- a/locales/fr.json
+++ b/locales/fr.json
@@ -15,7 +15,7 @@
"or": "ou",
"Sign Out": "Se déconnecter",
"Explore all features": "Explorer toutes les fonctionnalités",
- "Select tags...": "Selectionner les tags...",
+ "Select tags...": "Sélectionner les tags...",
"Search keyword...": "Chercher un mot-clef...",
"Sort by title": "Trier par titre",
"Title": "Titre",
@@ -29,7 +29,7 @@
"Import from browser": "Importer depuis le navigateur",
"Releases": "Versions",
"Are you sure?": "Ëtes-vous sûr ?",
- "Do you really want to delete this note?": "Voulez-vous vraiment supprimer cette note?",
+ "Do you really want to delete this note?": "Voulez-vous vraiment supprimer cette note ?",
"All users will lose their connection.": "Tous les utilisateurs perdront leur connexion.",
"Cancel": "Annuler",
"Yes, do it!": "Oui, je suis sûr !",
@@ -62,7 +62,7 @@
"Refresh": "Recharger",
"Contacts": "Contacts",
"Report an issue": "Signaler un problème",
- "Meet us on %s": "Rencontrez-nous sur %s",
+ "Meet us on %s": "Rencontrez-nous sur %s",
"Send us email": "Envoyez-nous un mail",
"Documents": "Documents",
"Features": "Fonctionnalités",
@@ -88,14 +88,14 @@
"This is a alert area.": "Ceci est un texte d'alerte.",
"Revert": "Revenir en arrière",
"Import from clipboard": "Importer depuis le presse-papier",
- "Paste your markdown or webpage here...": "Coller votre markdown ou votre page web ici...",
+ "Paste your markdown or webpage here...": "Collez votre markdown ou votre page web ici...",
"Clear": "Vider",
"This note is locked": "Cette note est verrouillée",
- "Sorry, only owner can edit this note.": "Désolé, seulement le propriétaire peut éditer cette note.",
+ "Sorry, only owner can edit this note.": "Désolé, seul le propriétaire peut éditer cette note.",
"OK": "OK",
"Reach the limit": "Atteindre la limite",
"Sorry, you've reached the max length this note can be.": "Désolé, vous avez atteint la longueur maximale que cette note peut avoir.",
- "Please reduce the content or divide it to more notes, thank you!": "Merci de réduire le contenu ou de le diviser en plusieurs notes!",
+ "Please reduce the content or divide it to more notes, thank you!": "Merci de réduire le contenu ou de le diviser en plusieurs notes !",
"Import from Gist": "Importer depuis Gist",
"Paste your gist url here...": "Coller l'URL de votre Gist ici...",
"Import from Snippet": "Importer depuis Snippet",
@@ -104,14 +104,18 @@
"OR": "OU",
"Export to Snippet": "Exporter vers Snippet",
"Select Visibility Level": "Sélectionner le niveau de visibilité",
- "Night Theme": "Theme Nuit",
+ "Night Theme": "Thème Nuit",
"Follow us on %s and %s.": "Suivez-nous sur %s, et %s.",
"Privacy": "Confidentialité",
"Terms of Use": "Conditions d'utilisation",
- "Do you really want to delete your user account?": "Voulez-vous vraiment supprimer votre compte utilisateur",
+ "Do you really want to delete your user account?": "Voulez-vous vraiment supprimer votre compte utilisateur ?",
"This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "Cela supprimera votre compte, toutes les notes dont vous êtes propriétaire et supprimera toute référence à votre compte dans les autres notes.",
- "Delete user": "Suprrimez l'utilisteur",
- "Export user data": "Exportez les données utilisateur",
+ "Delete user": "Supprimer l'utilisateur",
+ "Export user data": "Exporter les données utilisateur",
"Help us translating on %s": "Aidez nous à traduire sur %s",
- "Source Code": "Code source"
+ "Source Code": "Code source",
+ "Register": "S'enregistrer",
+ "Powered by %s": "Propulsé par %s",
+ "Help us translating": "Aidez nous à traduire",
+ "Join the community": "Rejoignez la communauté"
} \ No newline at end of file
diff --git a/locales/id.json b/locales/id.json
index 9748a5f4..3c50f4d1 100644
--- a/locales/id.json
+++ b/locales/id.json
@@ -111,5 +111,11 @@
"Do you really want to delete your user account?": "Apakah anda yakin ingin menghapus akun anda?",
"This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "Ini akan menghapus akun anda, semua catatan yang dimiliki oleh anda akan dihapus dan menghapus semua referensi ke akun anda dari catatan lain.",
"Delete user": "Hapus pengguna",
- "Export user data": "Ekspor data pengguna"
+ "Export user data": "Ekspor data pengguna",
+ "Help us translating on %s": "Bantu kami menerjemahkan di %s",
+ "Source Code": "Sumber Kode",
+ "Register": "Daftar",
+ "Powered by %s": "Ditenagai oleh %s",
+ "Help us translating": "Bantu kami menerjemahkan",
+ "Join the community": "Bergabung dengan komunitas"
} \ No newline at end of file
diff --git a/locales/it.json b/locales/it.json
index 8a2ed581..b0a6f6aa 100644
--- a/locales/it.json
+++ b/locales/it.json
@@ -113,5 +113,9 @@
"Delete user": "Elimina utente",
"Export user data": "Esporta dati utente",
"Help us translating on %s": "Aiutaci nella traduzione su %s",
- "Source Code": "Codice Sorgente"
+ "Source Code": "Codice Sorgente",
+ "Register": "Registrati",
+ "Powered by %s": "Alimentato da %s",
+ "Help us translating": "Aiutaci nella traduzione",
+ "Join the community": "Unisciti alla comunità"
} \ No newline at end of file
diff --git a/locales/ja.json b/locales/ja.json
index 7358af4f..32f97d22 100644
--- a/locales/ja.json
+++ b/locales/ja.json
@@ -113,5 +113,9 @@
"Delete user": "ユーザーの削除",
"Export user data": "ユーザーデータをエクスポート",
"Help us translating on %s": "%s の翻訳にご協力ください",
- "Source Code": "ソースコード"
+ "Source Code": "ソースコード",
+ "Register": "登録",
+ "Powered by %s": "Powered by %s",
+ "Help us translating": "翻訳のお手伝いをお願いします",
+ "Join the community": "コミュニティに参加しましょう"
} \ No newline at end of file
diff --git a/locales/nl.json b/locales/nl.json
index 4cb6e4a1..f11d14f3 100644
--- a/locales/nl.json
+++ b/locales/nl.json
@@ -6,8 +6,8 @@
"History": "Geschiedenis",
"New guest note": "Nieuwe gastnotitie",
"Collaborate with URL": "Samenwerken met URL",
- "Support charts and MathJax": "Ondersteun grafieken en MathJax",
- "Support slide mode": "Ondersteun presentatiemodus",
+ "Support charts and MathJax": "Ondersteunt grafieken en MathJax",
+ "Support slide mode": "Ondersteunt presentatiemodus",
"Sign In": "Inloggen",
"Below is the history from browser": "Hier onder staat de browser geschiedenis",
"Welcome!": "Welkom!",
@@ -113,5 +113,7 @@
"Delete user": "Gebruiker verwijderen",
"Export user data": "Gebruikersdata exporteren",
"Help us translating on %s": "Help ons vertalen op %s",
- "Source Code": "Broncode"
+ "Source Code": "Broncode",
+ "Register": "Registreren",
+ "Powered by %s": "Powered by %s"
} \ No newline at end of file
diff --git a/locales/pl.json b/locales/pl.json
index 2036f7ae..8ee04f83 100644
--- a/locales/pl.json
+++ b/locales/pl.json
@@ -29,8 +29,8 @@
"Import from browser": "Importuj z przeglądarki",
"Releases": "Wydania",
"Are you sure?": "Jesteś pewny?",
- "Do you really want to delete this note?": "Do you really want to delete this note?",
- "All users will lose their connection.": "All users will lose their connection.",
+ "Do you really want to delete this note?": "Czy chcesz usunąć tą notatkę?",
+ "All users will lose their connection.": "Wszyscy użytkownicy stracą swoje połączenie.",
"Cancel": "Anuluj",
"Yes, do it!": "Tak, zrób to!",
"Choose method": "Wybierz metodę",
@@ -62,7 +62,7 @@
"Refresh": "Odśwież",
"Contacts": "Kontakty",
"Report an issue": "Zgłoś błąd",
- "Meet us on %s": "Meet us on %s",
+ "Meet us on %s": "Spotkaj się z nami na %s",
"Send us email": "Wyślij nam email",
"Documents": "Dokumenty",
"Features": "Funkcje",
@@ -104,12 +104,18 @@
"OR": "LUB",
"Export to Snippet": "Eksportuj do Snippet",
"Select Visibility Level": "Wybierz poziom widoczności",
- "Night Theme": "Night Theme",
- "Follow us on %s and %s.": "Follow us on %s, and %s.",
- "Privacy": "Privacy",
- "Terms of Use": "Terms of Use",
- "Do you really want to delete your user account?": "Do you really want to delete your user account?",
- "This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "This will delete your account, all notes that are owned by you and remove all references to your account from other notes.",
- "Delete user": "Delete user",
- "Export user data": "Export user data"
+ "Night Theme": "Motyw Nocny",
+ "Follow us on %s and %s.": "Znajdź nas na %s oraz %s.",
+ "Privacy": "Prywatność",
+ "Terms of Use": "Warunki korzystania",
+ "Do you really want to delete your user account?": "Czy chcesz usunąć swoje konto użytkownika?",
+ "This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "Ta akcja usunie twoje konto, wszystkie notatki które posiadasz oraz wszystkie referencje do tego konta w twoich pozostałych notatkach.",
+ "Delete user": "Usuń użytkownika",
+ "Export user data": "Eksportuj dane użytkownika",
+ "Help us translating on %s": "Pomóż nam przetłumaczyć na język %s",
+ "Source Code": "Kod źródłowy",
+ "Register": "Zarejestruj",
+ "Powered by %s": "Wspierany przez %s",
+ "Help us translating": "Pomóż nam w tłumaczeniu",
+ "Join the community": "Dołącz do społeczności"
} \ No newline at end of file
diff --git a/locales/sr.json b/locales/sr.json
new file mode 100644
index 00000000..ef81feff
--- /dev/null
+++ b/locales/sr.json
@@ -0,0 +1,121 @@
+{
+ "Collaborative markdown notes": "Дељене белешке у Markdown формату",
+ "Realtime collaborative markdown notes on all platforms.": "Заједнички рад на markdown тексту у реалном времену, на свим платформама",
+ "Best way to write and share your knowledge in markdown.": "Савршен начин за писање и дељење знања у markdown формату",
+ "Intro": "Увод",
+ "History": "Историја",
+ "New guest note": "Нова белешка госта",
+ "Collaborate with URL": "Сарадња уз помоћ URL-а",
+ "Support charts and MathJax": "Подршка за графиконе и MathJax",
+ "Support slide mode": "Подршка за слајдове и презентације",
+ "Sign In": "Пријави се",
+ "Below is the history from browser": "Ниже је историјат преузет из прегледача",
+ "Welcome!": "Добродошли!",
+ "New note": "Нова белешка",
+ "or": "или",
+ "Sign Out": "Одјави се",
+ "Explore all features": "Истражи све могућности",
+ "Select tags...": "Одабери тагове...",
+ "Search keyword...": "Претрага по кључној речи...",
+ "Sort by title": "Редослед по наслову",
+ "Title": "Наслов",
+ "Sort by time": "Редослед по времену",
+ "Time": "време",
+ "Export history": "Извези историјат",
+ "Import history": "Увези историјат",
+ "Clear history": "Очисти историју",
+ "Refresh history": "Освежи историју",
+ "No history": "Нема историје",
+ "Import from browser": "Увези из прегледача",
+ "Releases": "Издања",
+ "Are you sure?": "Јесте ли сигурни?",
+ "Do you really want to delete this note?": "Да ли заиста желите да обришете ову белешку?",
+ "All users will lose their connection.": "Сви корисници ће изгубити везу у реалном времену.",
+ "Cancel": "Одустани",
+ "Yes, do it!": "Да, уради!",
+ "Choose method": "Изаберите начин",
+ "Sign in via %s": "Пријави се уз %s",
+ "New": "Ново",
+ "Publish": "Објави",
+ "Extra": "Додатно",
+ "Revision": "Ревизија",
+ "Slide Mode": "Презентациони мод",
+ "Export": "Извоз",
+ "Import": "Увоз",
+ "Clipboard": "Клипборд",
+ "Download": "Преузимање",
+ "Raw HTML": "Сирови HTML",
+ "Edit": "Измени",
+ "View": "Прегледај",
+ "Both": "Обоје",
+ "Help": "Помоћ",
+ "Upload Image": "Пошаљи слику",
+ "Menu": "Мени",
+ "This page need refresh": "Ову страну је неопходно освежити",
+ "You have an incompatible client version.": "Ова верзија клијента није компатибилна.",
+ "Refresh to update.": "Освежите за приказ измена.",
+ "New version available!": "Доступна је нова верзија!",
+ "See releases notes here": "Овде погледајте напомене о издањима",
+ "Refresh to enjoy new features.": "Освежите како бисте уживали у новим функцијама.",
+ "Your user state has changed.": "Ваше корисничко стање се променило.",
+ "Refresh to load new user state.": "Освежите за учитавање новог корисничког стања.",
+ "Refresh": "Освежи",
+ "Contacts": "Контакти",
+ "Report an issue": "Пријава проблема",
+ "Meet us on %s": "Пронађите нас на %s",
+ "Send us email": "Пошаљите нам имејл",
+ "Documents": "Документи",
+ "Features": "Могућности",
+ "YAML Metadata": "YAML Метаподаци",
+ "Slide Example": "Пример слајда",
+ "Cheatsheet": "Трикови и форе",
+ "Example": "Пример",
+ "Syntax": "Синтакса",
+ "Header": "Заглавље",
+ "Unordered List": "Неуређени списак",
+ "Ordered List": "Уређени списак",
+ "Todo List": "Списак обавеза",
+ "Blockquote": "Пасус са наводима",
+ "Bold font": "Масна слова",
+ "Italics font": "Закривљена слова",
+ "Strikethrough": "Прецртано",
+ "Inserted text": "Уметнут текст",
+ "Marked text": "Означени текст",
+ "Link": "Линк",
+ "Image": "Слика",
+ "Code": "Код",
+ "Externals": "Спољни",
+ "This is a alert area.": "Ово је пасус за упозорења.",
+ "Revert": "Врати",
+ "Import from clipboard": "Увези из клипборда",
+ "Paste your markdown or webpage here...": "Залепи свој markdown или веб страну овде...",
+ "Clear": "Очисти",
+ "This note is locked": "Ова белешка је закључана",
+ "Sorry, only owner can edit this note.": "Жао нам је, ову белешку може мењати само њен власник.",
+ "OK": "OK",
+ "Reach the limit": "Досегни лимит",
+ "Sorry, you've reached the max length this note can be.": "Нажалост, досегли сте максималну дужину ове белешке.",
+ "Please reduce the content or divide it to more notes, thank you!": "Молимо Вас да смањите количину текста или да га поделите на више белешки, хвала!",
+ "Import from Gist": "Увези из Github Gist-а",
+ "Paste your gist url here...": "Залепите Gist URL адресу овде...",
+ "Import from Snippet": "Увези из \"исечака\"",
+ "Select From Available Projects": "Изабери из доступних пројеката",
+ "Select From Available Snippets": "Изабери из доступних исечака",
+ "OR": "ИЛИ",
+ "Export to Snippet": "Извези у \"исечак\"",
+ "Select Visibility Level": "Изаберите ниво читкости",
+ "Night Theme": "Ноћна тема",
+ "Follow us on %s and %s.": "Пратите нас на %s и %s.",
+ "Privacy": "Приватност",
+ "Terms of Use": "Услови коришћења",
+ "Do you really want to delete your user account?": "Да ли заиста желите да трајно обришете свој налог?",
+ "This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "Ова операција ће избрисати ваш налог, све ваше белешке, а уклониће и све везе ка вашем налогу из других белешки.",
+ "Delete user": "Обриши корисника",
+ "Export user data": "Извоз свих корисничких података",
+ "Help us translating on %s": "Помозите око превода на %s",
+ "Source Code": "Изворни код",
+ "Register": "Региструј се",
+ "Powered by %s": "Покреће %s",
+ "Help us translating": "Помозите око превода",
+ "Join the community": "Приступите заједници"
+} \ No newline at end of file
diff --git a/locales/sv.json b/locales/sv.json
index 8d537a5e..66676b67 100644
--- a/locales/sv.json
+++ b/locales/sv.json
@@ -1,104 +1,121 @@
{
- "Collaborative markdown notes": "Kollaborativa markdownanteckningar",
- "Realtime collaborative markdown notes on all platforms.": "Kollaborativa markdownantackningar på alla plattformar.",
- "Best way to write and share your knowledge in markdown.": "Bästa sättet att skriva och dela din kunskap i markdown.",
- "Intro": "Intro",
- "History": "Historia",
- "New guest note": "Ny gästanteckning",
- "Collaborate with URL": "Samarbeta med URL",
- "Support charts and MathJax": "Stöd för diagram och MathJax",
- "Support slide mode": "Stöd för slide mode",
- "Sign In": "Logga in",
- "Below is the history from browser": "Nedanför finns historia från webbläsaren",
- "Welcome!": "Välkommen!",
- "New note": "Ny anteckning",
- "or": "eller",
- "Sign Out": "Logga ut",
- "Explore all features": "Upptäck alla funktioner",
- "Select tags...": "Välj taggar...",
- "Search keyword...": "Sök nyckelord...",
- "Sort by title": "Sortera titlar",
- "Title": "Titel",
- "Sort by time": "Sortera kronologiskt",
- "Time": "Tid",
- "Export history": "Exporthistorik",
- "Import history": "Importhistorik",
- "Clear history": "Rensa historik",
- "Refresh history": "Uppdatera historik",
- "No history": "Ingen historik",
- "Import from browser": "Importera från webbläsare",
- "Releases": "Lanseringar",
- "Are you sure?": "Är du säker?",
- "Cancel": "Avbryt",
- "Yes, do it!": "Ja, gör det!",
- "Choose method": "Välj metod",
- "Sign in via %s": "Logga in via %s",
- "New": "Ny",
- "Publish": "Publicera",
- "Extra": "Extra",
- "Revision": "Revision",
- "Slide Mode": "Slide Mode",
- "Export": "Exportera",
- "Import": "Importera",
- "Clipboard": "Urklipp",
- "Download": "Ladda ner",
- "Raw HTML": "Rå HTML",
- "Edit": "Redigera",
- "View": "Visa",
- "Both": "Båda",
- "Help": "Hjälp",
- "Upload Image": "Ladda upp bilder",
- "Menu": "Meny",
- "This page need refresh": "Den här sidan behöver laddas om",
- "You have an incompatible client version.": "Du har en inkompatibel klientversion.",
- "Refresh to update.": "Ladda om för att uppdatera.",
- "New version available!": "Ny version tillgänglig!",
- "See releases notes here": "Se releaseanteckningar här",
- "Refresh to enjoy new features.": "Ladda om för att använda de nya funktionerna.",
- "Your user state has changed.": "Din användarstatus har förändrats.",
- "Refresh to load new user state.": "Ladda om för att ladda ny användarstatus.",
- "Refresh": "Ladda om",
- "Contacts": "Kontakter",
- "Report an issue": "Rapportera ett fel",
- "Send us email": "Skicka e-post till oss",
- "Documents": "Dokument",
- "Features": "Funktioner",
- "YAML Metadata": "YAML Metadata",
- "Slide Example": "Slideexempel",
- "Cheatsheet": "Cheatsheet",
- "Example": "Exempel",
- "Syntax": "Syntax",
- "Header": "Huvud",
- "Unordered List": "Oordnad lists",
- "Ordered List": "Ordnad lista",
- "Todo List": "Todo-lista",
- "Blockquote": "Blockcitat",
- "Bold font": "Fet stil",
- "Italics font": "Kursiv stil",
- "Strikethrough": "Genomstrykning",
- "Inserted text": "Insatt text",
- "Marked text": "Markerad text",
- "Link": "Länk",
- "Image": "Bild",
- "Code": "Kod",
- "Externals": "Externa",
- "This is a alert area.": "Det här är ett varnande område.",
- "Revert": "Återgå",
- "Import from clipboard": "Importera från urklipp",
- "Paste your markdown or webpage here...": "Klipp in din markdown eller hemsida här...",
- "Clear": "Rensa",
- "This note is locked": "Anteckningen är låst",
- "Sorry, only owner can edit this note.": "Ursäkta, men endast ägaren kan redigera den här anteckningen.",
- "OK": "Okej",
- "Reach the limit": "Nå gränsen",
- "Sorry, you've reached the max length this note can be.": "Usräkta, men duhar nått maxlängden för vad en anteckning får vara.",
- "Please reduce the content or divide it to more notes, thank you!": "Var vänlig förkorta innehållet eller dela upp det i flera anteckningar, tack!",
- "Import from Gist": "Importera från Gist",
- "Paste your gist url here...": "Klipp in din gist-url här...",
- "Import from Snippet": "Importera från Snippet",
- "Select From Available Projects": "Välj från tillgängliga projekt",
- "Select From Available Snippets": "Välj från tillgängliga Snippets",
- "OR": "ELLER",
- "Export to Snippet": "Exportera till Snippet",
- "Select Visibility Level": "Välj synlighetsnivå"
-}
+ "Collaborative markdown notes": "Kollaborativa markdownanteckningar",
+ "Realtime collaborative markdown notes on all platforms.": "Kollaborativa markdownantackningar på alla plattformar.",
+ "Best way to write and share your knowledge in markdown.": "Bästa sättet att skriva och dela din kunskap i markdown.",
+ "Intro": "Intro",
+ "History": "Historia",
+ "New guest note": "Ny gästanteckning",
+ "Collaborate with URL": "Samarbeta med URL",
+ "Support charts and MathJax": "Stöd för diagram och MathJax",
+ "Support slide mode": "Stöd för slide mode",
+ "Sign In": "Logga in",
+ "Below is the history from browser": "Nedanför finns historia från webbläsaren",
+ "Welcome!": "Välkommen!",
+ "New note": "Ny anteckning",
+ "or": "eller",
+ "Sign Out": "Logga ut",
+ "Explore all features": "Upptäck alla funktioner",
+ "Select tags...": "Välj taggar...",
+ "Search keyword...": "Sök nyckelord...",
+ "Sort by title": "Sortera titlar",
+ "Title": "Titel",
+ "Sort by time": "Sortera kronologiskt",
+ "Time": "Tid",
+ "Export history": "Exporthistorik",
+ "Import history": "Importhistorik",
+ "Clear history": "Rensa historik",
+ "Refresh history": "Uppdatera historik",
+ "No history": "Ingen historik",
+ "Import from browser": "Importera från webbläsare",
+ "Releases": "Lanseringar",
+ "Are you sure?": "Är du säker?",
+ "Do you really want to delete this note?": "Vill du verkligen radera denna anteckning?",
+ "All users will lose their connection.": "Alla användare kommer att förlora sin anslutning.",
+ "Cancel": "Avbryt",
+ "Yes, do it!": "Ja, gör det!",
+ "Choose method": "Välj metod",
+ "Sign in via %s": "Logga in via %s",
+ "New": "Ny",
+ "Publish": "Publicera",
+ "Extra": "Extra",
+ "Revision": "Revision",
+ "Slide Mode": "Slide Mode",
+ "Export": "Exportera",
+ "Import": "Importera",
+ "Clipboard": "Urklipp",
+ "Download": "Ladda ner",
+ "Raw HTML": "Rå HTML",
+ "Edit": "Redigera",
+ "View": "Visa",
+ "Both": "Båda",
+ "Help": "Hjälp",
+ "Upload Image": "Ladda upp bilder",
+ "Menu": "Meny",
+ "This page need refresh": "Den här sidan behöver laddas om",
+ "You have an incompatible client version.": "Du har en inkompatibel klientversion.",
+ "Refresh to update.": "Ladda om för att uppdatera.",
+ "New version available!": "Ny version tillgänglig!",
+ "See releases notes here": "Se releaseanteckningar här",
+ "Refresh to enjoy new features.": "Ladda om för att använda de nya funktionerna.",
+ "Your user state has changed.": "Din användarstatus har förändrats.",
+ "Refresh to load new user state.": "Ladda om för att ladda ny användarstatus.",
+ "Refresh": "Ladda om",
+ "Contacts": "Kontakter",
+ "Report an issue": "Rapportera ett fel",
+ "Meet us on %s": "Träffa oss på %s",
+ "Send us email": "Skicka e-post till oss",
+ "Documents": "Dokument",
+ "Features": "Funktioner",
+ "YAML Metadata": "YAML Metadata",
+ "Slide Example": "Slideexempel",
+ "Cheatsheet": "Cheatsheet",
+ "Example": "Exempel",
+ "Syntax": "Syntax",
+ "Header": "Huvud",
+ "Unordered List": "Oordnad lists",
+ "Ordered List": "Ordnad lista",
+ "Todo List": "Todo-lista",
+ "Blockquote": "Blockcitat",
+ "Bold font": "Fet stil",
+ "Italics font": "Kursiv stil",
+ "Strikethrough": "Genomstrykning",
+ "Inserted text": "Insatt text",
+ "Marked text": "Markerad text",
+ "Link": "Länk",
+ "Image": "Bild",
+ "Code": "Kod",
+ "Externals": "Externa",
+ "This is a alert area.": "Det här är ett varnande område.",
+ "Revert": "Återgå",
+ "Import from clipboard": "Importera från urklipp",
+ "Paste your markdown or webpage here...": "Klipp in din markdown eller hemsida här...",
+ "Clear": "Rensa",
+ "This note is locked": "Anteckningen är låst",
+ "Sorry, only owner can edit this note.": "Ursäkta, men endast ägaren kan redigera den här anteckningen.",
+ "OK": "Okej",
+ "Reach the limit": "Nå gränsen",
+ "Sorry, you've reached the max length this note can be.": "Usräkta, men duhar nått maxlängden för vad en anteckning får vara.",
+ "Please reduce the content or divide it to more notes, thank you!": "Var vänlig förkorta innehållet eller dela upp det i flera anteckningar, tack!",
+ "Import from Gist": "Importera från Gist",
+ "Paste your gist url here...": "Klipp in din gist-url här...",
+ "Import from Snippet": "Importera från Snippet",
+ "Select From Available Projects": "Välj från tillgängliga projekt",
+ "Select From Available Snippets": "Välj från tillgängliga Snippets",
+ "OR": "ELLER",
+ "Export to Snippet": "Exportera till Snippet",
+ "Select Visibility Level": "Välj synlighetsnivå",
+ "Night Theme": "Natttema",
+ "Follow us on %s and %s.": "Följ oss på %s och %s.",
+ "Privacy": "Integritet",
+ "Terms of Use": "Villkor",
+ "Do you really want to delete your user account?": "Vill du verkligen ta bort ditt användarkonto?",
+ "This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "Detta tar bort ditt konto, alla anteckningar som ägs av dig och tar bort alla referenser till ditt konto från andra anteckningar.",
+ "Delete user": "Ta bort användare",
+ "Export user data": "Exportera användardata",
+ "Help us translating on %s": "Hjälp oss att översätta på %s",
+ "Source Code": "Källkod",
+ "Register": "Registrera",
+ "Powered by %s": "Drivs av %s",
+ "Help us translating": "Hjälp oss att översätta",
+ "Join the community": "Gå med i samhället"
+} \ No newline at end of file
diff --git a/locales/vi.json b/locales/vi.json
new file mode 100644
index 00000000..40c9257a
--- /dev/null
+++ b/locales/vi.json
@@ -0,0 +1,121 @@
+{
+ "Collaborative markdown notes": "Cộng tác ghi chú markdown",
+ "Realtime collaborative markdown notes on all platforms.": "Cộng tác ghi chú markdown đa nền tảng thời gian thực",
+ "Best way to write and share your knowledge in markdown.": "Nền tảng tốt nhất để viết và chia sẻ markdown",
+ "Intro": "Giới thiệu",
+ "History": "Lịch sử",
+ "New guest note": "Khách mới",
+ "Collaborate with URL": "Cộng tác thời gian thực",
+ "Support charts and MathJax": "Làm việc với biểu đồ và MathJax",
+ "Support slide mode": "Hỗ trợ chế độ slide",
+ "Sign In": "Đăng nhập",
+ "Below is the history from browser": "Dưới đây là lịch sử của trình duyệt",
+ "Welcome!": "Chào mừng bạn!",
+ "New note": "Tạo mới ghi chú",
+ "or": "hoặc",
+ "Sign Out": "Đăng xuất",
+ "Explore all features": "Khám phá tất cả tính năng",
+ "Select tags...": "Chọn tag",
+ "Search keyword...": "Tìm kiếm",
+ "Sort by title": "Sắp xếp theo tiêu đề",
+ "Title": "Tiêu đề",
+ "Sort by time": "Sắp xếp theo thời gian",
+ "Time": "Thời gian",
+ "Export history": "Xuất lịch sử",
+ "Import history": "Nhập lịch sử",
+ "Clear history": "Xóa lịch sử",
+ "Refresh history": "Làm mới lịch sử",
+ "No history": "Không có lịch sử",
+ "Import from browser": "Nhập từ trình duyệt",
+ "Releases": "Xuất bản",
+ "Are you sure?": "Bạn có chắc chắn không ?",
+ "Do you really want to delete this note?": "Bạn có thực sự muốn xóa ghi chú này ?",
+ "All users will lose their connection.": "Tất cả người dùng sẽ mất liên kết này.",
+ "Cancel": "Hủy",
+ "Yes, do it!": "Đồng ý",
+ "Choose method": "Chọn phương thức",
+ "Sign in via %s": "Đăng nhấp với %s",
+ "New": "Mới",
+ "Publish": "Xuất bản",
+ "Extra": "Extra",
+ "Revision": "Sửa đổi",
+ "Slide Mode": "Chế độ slide",
+ "Export": "Xuất",
+ "Import": "Nhập",
+ "Clipboard": "Clipboard",
+ "Download": "Tải xuống",
+ "Raw HTML": "Raw HTML",
+ "Edit": "Sửa",
+ "View": "Hiện",
+ "Both": "Cả hai",
+ "Help": "Trợ giúp",
+ "Upload Image": "Tải ảnh lên",
+ "Menu": "Menu",
+ "This page need refresh": "Trang này cần được làm mới",
+ "You have an incompatible client version.": "Phiên bản của client không tương thích.",
+ "Refresh to update.": "Làm mới để cập nhập.",
+ "New version available!": "Phiên bản mới đã có sẵn.",
+ "See releases notes here": "Xem ghi chú xuất bản ở đây.",
+ "Refresh to enjoy new features.": "Làm mới để trải nghiệm tính năng mới.",
+ "Your user state has changed.": "Trạng thái người dùng bị thay đổi.",
+ "Refresh to load new user state.": "Làm mới để cập nhập trạng thái người dùng mới.",
+ "Refresh": "Làm mới",
+ "Contacts": "Liên Lạc",
+ "Report an issue": "Báo cáo vấn đề",
+ "Meet us on %s": "Gặp chúng tôi ở %s",
+ "Send us email": "Gửi email cho chúng tôi",
+ "Documents": "Tài liệu",
+ "Features": "Tính năng",
+ "YAML Metadata": "YAML Metadata",
+ "Slide Example": "Slide ví dụ",
+ "Cheatsheet": "Cheetsheet",
+ "Example": "Ví dụ",
+ "Syntax": "Cú pháp",
+ "Header": "Đầu đề",
+ "Unordered List": "Danh sách chưa sắp xếp",
+ "Ordered List": "Danh sách đã sắp xếp",
+ "Todo List": "Checklist",
+ "Blockquote": "Blockquote",
+ "Bold font": "Bôi đậm",
+ "Italics font": "In nghiêng",
+ "Strikethrough": "Gạch ngang",
+ "Inserted text": "Gạch chân",
+ "Marked text": "Hightlight",
+ "Link": "Liên kết",
+ "Image": "Ảnh",
+ "Code": "Code",
+ "Externals": "Externals",
+ "This is a alert area.": "Đây là khu vực cảnh báo",
+ "Revert": "Trở lại như cũ",
+ "Import from clipboard": "Thêm từ clipboard",
+ "Paste your markdown or webpage here...": "Dán markdown hoặc webpage ở đây ...",
+ "Clear": "Xóa",
+ "This note is locked": "Ghi chú này bị khóa.",
+ "Sorry, only owner can edit this note.": "Xin lỗi, chỉ chủ sở hữu có thể xóa note.",
+ "OK": "Đồng ý",
+ "Reach the limit": "Đạt giới hạn",
+ "Sorry, you've reached the max length this note can be.": "Rất tiếc, bạn đã đạt tới độ dài tối đa ",
+ "Please reduce the content or divide it to more notes, thank you!": "Vui lòng rút ngắn ghi chú",
+ "Import from Gist": "Nhập từ Gist",
+ "Paste your gist url here...": "Dán liên kết gist vào đây ...",
+ "Import from Snippet": "Thêm từ Snippet",
+ "Select From Available Projects": "Chọn từ Project có sẵn",
+ "Select From Available Snippets": "Chọn từ Snippets có sẵn",
+ "OR": "HOẶC",
+ "Export to Snippet": "Xuất ra Snippet",
+ "Select Visibility Level": "Chọn cấp độ hiển thị",
+ "Night Theme": "Giao diện tối",
+ "Follow us on %s and %s.": "Cho phép chúng tôi %s, và %s.",
+ "Privacy": "Quyền riêng tư.",
+ "Terms of Use": "Điều khoản sử dụng.",
+ "Do you really want to delete your user account?": "Bạn có thực sự muốn xóa tài khoản ?",
+ "This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "Điều này sẽ xóa tài khoản của bạn, tất cả các ghi chú thuộc sở hữu của bạn và xóa tất cả các liên kết đến tài khoản của bạn khỏi các ghi chú khác.",
+ "Delete user": "Xóa người dùng",
+ "Export user data": "Xuất dữ liệu người dùng",
+ "Help us translating on %s": "Giúp chúng tôi dịch trên %s",
+ "Source Code": "Mã nguồn",
+ "Register": "Đăng ký",
+ "Powered by %s": "Cung cấp bởi %s",
+ "Help us translating": "Giúp chúng tôi dịch",
+ "Join the community": "Tham gia vào cộng đồng"
+} \ No newline at end of file
diff --git a/locales/zh-CN.json b/locales/zh-CN.json
index 93e1c86f..0303b83c 100644
--- a/locales/zh-CN.json
+++ b/locales/zh-CN.json
@@ -1,117 +1,121 @@
{
"Collaborative markdown notes": "Markdown 协作笔记",
- "Realtime collaborative markdown notes on all platforms.": "使用 Markdown 的跨平台即时协作笔记",
- "Best way to write and share your knowledge in markdown.": "您使用 Markdown 写作与分享知识的最佳方式",
+ "Realtime collaborative markdown notes on all platforms.": "使用 Markdown 的跨平台即时协作笔记。",
+ "Best way to write and share your knowledge in markdown.": "写作与分享 Markdown 的最佳平台。",
"Intro": "简介",
"History": "历史",
- "New guest note": "建立访客笔记",
- "Collaborate with URL": "使用网址协作",
+ "New guest note": "新建访客笔记",
+ "Collaborate with URL": "实时协作",
"Support charts and MathJax": "支持图表与 MathJax",
- "Support slide mode": "支持简报模式",
+ "Support slide mode": "支持幻灯模式",
"Sign In": "登录",
"Below is the history from browser": "以下为来自浏览器的历史",
"Welcome!": "欢迎!",
- "New note": "建立笔记",
+ "New note": "新建笔记",
"or": "或",
"Sign Out": "登出",
"Explore all features": "探索所有功能",
"Select tags...": "选择标签...",
"Search keyword...": "搜索关键字...",
- "Sort by title": "用标题排序",
+ "Sort by title": "按标题排序",
"Title": "标题",
- "Sort by time": "用时间排序",
+ "Sort by time": "按时间排序",
"Time": "时间",
"Export history": "导出历史",
"Import history": "导入历史",
"Clear history": "清空历史",
"Refresh history": "刷新历史",
- "No history": "没有历史",
+ "No history": "无历史记录",
"Import from browser": "从浏览器导入",
"Releases": "版本",
- "Are you sure?": "你确定吗?",
- "Do you really want to delete this note?": "确定要删除这个文件吗?",
- "All users will lose their connection.": "所有用户将失去连接",
+ "Are you sure?": "您确定吗?",
+ "Do you really want to delete this note?": "您确定要删除这篇笔记吗?",
+ "All users will lose their connection.": "所有用户将失去连接。",
"Cancel": "取消",
- "Yes, do it!": "没错,就这样办!",
+ "Yes, do it!": "是的,就这样做!",
"Choose method": "选择方式",
"Sign in via %s": "通过 %s 登录",
- "New": "新增",
+ "New": "新建",
"Publish": "发表",
- "Extra": "增益",
+ "Extra": "附加功能",
"Revision": "修订版本",
- "Slide Mode": "简报模式",
+ "Slide Mode": "幻灯模式",
"Export": "导出",
"Import": "导入",
"Clipboard": "剪贴板",
"Download": "下载",
- "Raw HTML": "纯 HTML",
+ "Raw HTML": "原始 HTML",
"Edit": "编辑",
- "View": "检视",
+ "View": "预览",
"Both": "双栏",
"Help": "帮助",
"Upload Image": "上传图片",
"Menu": "菜单",
- "This page need refresh": "此页面需要重新整理",
- "You have an incompatible client version.": "您使用的是不相容的客户端",
- "Refresh to update.": "请重新整理来更新",
- "New version available!": "新版本来了!",
- "See releases notes here": "请由此查阅更新纪录",
- "Refresh to enjoy new features.": "请重新整理来享受最新功能",
- "Your user state has changed.": "您的使用者状态已变更",
- "Refresh to load new user state.": "请重新整理来载入新的使用者状态",
- "Refresh": "重新整理",
- "Contacts": "联络方式",
+ "This page need refresh": "此页面需要刷新",
+ "You have an incompatible client version.": "您的客户端版本不兼容。",
+ "Refresh to update.": "刷新页面以更新。",
+ "New version available!": "新版本可用!",
+ "See releases notes here": "在此查看更新记录",
+ "Refresh to enjoy new features.": "刷新页面以体验新功能。",
+ "Your user state has changed.": "您的用户状态已变更。",
+ "Refresh to load new user state.": "刷新页面以加载新的用户状态。",
+ "Refresh": "刷新",
+ "Contacts": "联系我们",
"Report an issue": "报告问题",
"Meet us on %s": "在 %s 上联系我们",
- "Send us email": "寄信给我们",
- "Documents": "文件",
- "Features": "功能简介",
- "YAML Metadata": "YAML Metadata",
- "Slide Example": "简报范例",
- "Cheatsheet": "快速简表",
+ "Send us email": "给我们发送电子邮件",
+ "Documents": "文档",
+ "Features": "功能",
+ "YAML Metadata": "YAML 元数据",
+ "Slide Example": "幻灯范例",
+ "Cheatsheet": "速查表",
"Example": "范例",
"Syntax": "语法",
"Header": "标题",
- "Unordered List": "无序清单",
- "Ordered List": "有序清单",
- "Todo List": "待办事项",
+ "Unordered List": "无序列表",
+ "Ordered List": "有序列表",
+ "Todo List": "清单",
"Blockquote": "引用",
"Bold font": "粗体",
"Italics font": "斜体",
"Strikethrough": "删除线",
- "Inserted text": "插入文字",
- "Marked text": "标记文字",
+ "Inserted text": "下划线文字",
+ "Marked text": "高亮文字",
"Link": "链接",
"Image": "图片",
"Code": "代码",
- "Externals": "外部",
- "This is a alert area.": "这是警告区块",
+ "Externals": "外部扩展",
+ "This is a alert area.": "这是一个警告区块。",
"Revert": "还原",
"Import from clipboard": "从剪贴板导入",
- "Paste your markdown or webpage here...": "在这里贴上 Markdown 或是网页内容...",
+ "Paste your markdown or webpage here...": "在这里粘贴 Markdown 或网页内容...",
"Clear": "清除",
- "This note is locked": "此份笔记已被锁定",
- "Sorry, only owner can edit this note.": "抱歉,只有拥有者可以编辑此笔记",
+ "This note is locked": "这篇笔记已被锁定",
+ "Sorry, only owner can edit this note.": "抱歉,只有所有者可以编辑这篇笔记。",
"OK": "好的",
- "Reach the limit": "到达上限",
- "Sorry, you've reached the max length this note can be.": "抱歉,您已使用到此份笔记可用的最大长度",
- "Please reduce the content or divide it to more notes, thank you!": "请减少内容或是将内容切成更多笔记,谢谢!",
+ "Reach the limit": "达到上限",
+ "Sorry, you've reached the max length this note can be.": "抱歉,您的这篇笔记已达到可用的最大长度。",
+ "Please reduce the content or divide it to more notes, thank you!": "请减少笔记的内容。",
"Import from Gist": "从 Gist 导入",
- "Paste your gist url here...": "在这里贴上 gist 网址...",
+ "Paste your gist url here...": "在这里粘贴 Gist 网址...",
"Import from Snippet": "从 Snippet 导入",
"Select From Available Projects": "从可用的项目中选择",
- "Select From Available Snippets": "从可用的 Snippets 中选择",
- "OR": "或是",
+ "Select From Available Snippets": "从可用的 Snippet 中选择",
+ "OR": "或",
"Export to Snippet": "导出到 Snippet",
"Select Visibility Level": "选择可见层级",
"Night Theme": "夜间主题",
- "Follow us on %s and %s.": "在%s和%s上关注我们",
- "Privacy": "隐私政策",
+ "Follow us on %s and %s.": "在 %s 和 %s 上关注我们",
+ "Privacy": "隐私",
"Terms of Use": "使用条款",
- "Do you really want to delete your user account?": "你确定真的想要删除帐户?",
- "This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "我们将会删除你的帐户、你所拥有的笔记、以及你在别人笔记里的作者纪录。",
+ "Do you really want to delete your user account?": "您确定要删除帐户吗?",
+ "This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "您的帐户、您所拥有的笔记、他人笔记中对您帐户的引用都将被删除。",
"Delete user": "删除帐户",
- "Export user data": "汇出使用者资料",
- "Help us translating on %s": "来 %s 帮我们翻译",
- "Source Code": "源码"
+ "Export user data": "导出用户数据",
+ "Help us translating on %s": "在 %s 上帮我们翻译",
+ "Source Code": "源代码",
+ "Register": "注册",
+ "Powered by %s": "由 %s 驱动",
+ "Help us translating": "帮助我们翻译",
+ "Join the community": "加入社区"
} \ No newline at end of file
diff --git a/locales/zh-TW.json b/locales/zh-TW.json
index eb95e630..d60b1006 100644
--- a/locales/zh-TW.json
+++ b/locales/zh-TW.json
@@ -113,5 +113,9 @@
"Delete user": "刪除使用者",
"Export user data": "匯出使用者資料",
"Help us translating on %s": "來 %s 幫我們翻譯",
- "Source Code": "原始碼"
+ "Source Code": "原始碼",
+ "Register": "註冊",
+ "Powered by %s": "由 %s 強力驅動",
+ "Help us translating": "幫助我們改進翻譯",
+ "Join the community": "加入社群"
} \ No newline at end of file
diff --git a/package.json b/package.json
index 8f7b1363..172822a2 100644
--- a/package.json
+++ b/package.json
@@ -1,19 +1,19 @@
{
"name": "CodiMD",
- "version": "1.2.1",
+ "version": "1.5.0",
"description": "Realtime collaborative markdown notes on all platforms.",
"main": "app.js",
"license": "AGPL-3.0",
"scripts": {
- "test": "npm run-script eslint && npm run-script jsonlint && mocha",
- "eslint": "node_modules/.bin/eslint lib public test app.js",
+ "test": "npm run-script eslint && npm run-script jsonlint && npm run-script mocha-suite",
+ "eslint": "node_modules/.bin/eslint --max-warnings 0 lib public test app.js",
"jsonlint": "find . -not -path './node_modules/*' -type f -name '*.json' -o -type f -name '*.json.example' | while read json; do echo $json ; jq . $json; done",
+ "mocha-suite": "NODE_ENV=test CMD_DB_URL=\"sqlite::memory:\" mocha --exit",
"standard": "echo 'standard is no longer being used, use `npm run eslint` instead!' && exit 1",
"dev": "webpack --config webpack.dev.js --progress --colors --watch",
+ "heroku-prebuild": "bin/heroku",
"build": "webpack --config webpack.prod.js --progress --colors --bail",
- "postinstall": "bin/heroku",
- "start": "sequelize db:migrate && node app.js",
- "doctoc": "doctoc --title='# Table of Contents' README.md"
+ "start": "sequelize db:migrate && node app.js"
},
"dependencies": {
"@passport-next/passport-openid": "^1.0.0",
@@ -31,13 +31,14 @@
"codemirror": "git+https://github.com/hackmdio/CodeMirror.git",
"compression": "^1.6.2",
"connect-flash": "^0.1.1",
- "connect-session-sequelize": "^4.1.0",
+ "connect-session-sequelize": "^6.0.0",
"cookie": "0.3.1",
"cookie-parser": "1.4.3",
"deep-freeze": "^0.0.1",
"diff-match-patch": "git+https://github.com/hackmdio/diff-match-patch.git",
"ejs": "^2.5.5",
"emojify.js": "~1.1.0",
+ "escape-html": "^1.0.3",
"express": ">=4.14",
"express-session": "^1.14.2",
"file-saver": "^1.3.3",
@@ -46,23 +47,23 @@
"formidable": "^1.0.17",
"gist-embed": "~2.6.0",
"graceful-fs": "^4.1.11",
- "handlebars": "^4.0.6",
+ "handlebars": "^4.1.2",
"helmet": "^3.13.0",
"highlight.js": "~9.12.0",
"i18n": "^0.8.3",
"imgur": "git+https://github.com/hackmdio/node-imgur.git",
"ionicons": "~2.0.1",
- "jquery": "^3.1.1",
+ "jquery": "^3.4.1",
"jquery-mousewheel": "^3.1.13",
"jquery-ui": "^1.12.1",
"js-cookie": "^2.1.3",
- "js-sequence-diagrams": "^1000000.0.6",
- "js-url": "^2.3.0",
- "js-yaml": "^3.7.0",
+ "js-sequence-diagrams": "git+https://github.com/codimd/js-sequence-diagrams.git",
+ "js-yaml": "^3.13.1",
"jsdom-nogyp": "^0.8.3",
"keymaster": "^1.6.2",
"list.js": "^1.5.0",
"lodash": "^4.17.11",
+ "lutim": "^1.0.2",
"lz-string": "git+https://github.com/hackmdio/lz-string.git",
"markdown-it": "^8.2.2",
"markdown-it-abbr": "^1.0.4",
@@ -80,14 +81,14 @@
"markdown-pdf": "^9.0.0",
"mathjax": "~2.7.0",
"mattermost": "^3.4.0",
- "mermaid": "~7.1.0",
- "meta-marked": "^0.4.2",
+ "mermaid": "~8.2.3",
+ "meta-marked": "git+https://github.com/codimd/meta-marked#semver:^0.4.5",
"method-override": "^2.3.7",
"minimist": "^1.2.0",
"minio": "^6.0.0",
"moment": "^2.17.1",
"morgan": "^1.7.0",
- "mysql": "^2.12.0",
+ "mysql2": "^1.6.5",
"passport": "^0.4.0",
"passport-dropbox-oauth2": "^1.1.0",
"passport-facebook": "^2.1.1",
@@ -109,15 +110,15 @@
"readline-sync": "^1.4.7",
"request": "^2.88.0",
"reveal.js": "~3.7.0",
- "@mlink/scrypt": "^6.1.2",
+ "scrypt-async": "^2.0.1",
+ "scrypt-kdf": "^2.0.1",
"select2": "^3.5.2-browserify",
- "sequelize": "^3.28.0",
- "sequelize-cli": "^2.5.1",
+ "sequelize": "^5.8.12",
"shortid": "2.2.8",
"socket.io": "~2.1.1",
"socket.io-client": "~2.1.1",
"spin.js": "^2.3.2",
- "sqlite3": "^4.0.1",
+ "sqlite3": "^4.0.7",
"store": "^2.0.12",
"string": "^3.3.3",
"tedious": "^1.14.0",
@@ -130,15 +131,18 @@
"viz.js": "^1.7.0",
"winston": "^3.1.0",
"ws": "^6.0.0",
+ "wurl": "^2.5.3",
"xss": "^1.0.3"
},
"resolutions": {
- "**/tough-cookie": "~2.4.0"
+ "**/tough-cookie": "~2.4.0",
+ "**/minimatch": "^3.0.2",
+ "**/request": "^2.88.0"
},
"engines": {
- "node": ">=6.x"
+ "node": ">=8.x"
},
- "bugs": "https://github.com/hackmdio/codimd/issues",
+ "bugs": "https://github.com/codimd/server/issues",
"keywords": [
"Collaborative",
"Markdown",
@@ -147,17 +151,18 @@
"homepage": "https://codimd.org",
"maintainers": [
{
- "name": "Max Wu",
- "email": "jackymaxj@gmail.com"
+ "name": "Claudius Coenen",
+ "url": "https://www.claudiuscoenen.de/"
},
{
"name": "Christoph (Sheogorath) Kern",
- "email": "codimd@sheogorath.shivering-isles.com"
+ "email": "codimd@sheogorath.shivering-isles.com",
+ "url": "https://shivering-isles.com"
}
],
"repository": {
"type": "git",
- "url": "https://github.com/hackmdio/codimd.git"
+ "url": "https://github.com/codimd/server.git"
},
"devDependencies": {
"babel-cli": "^6.26.0",
@@ -169,7 +174,6 @@
"babel-runtime": "^6.26.0",
"copy-webpack-plugin": "^4.5.2",
"css-loader": "^1.0.0",
- "doctoc": "^1.4.0",
"ejs-loader": "^0.3.1",
"eslint": "^5.9.0",
"eslint-config-standard": "^12.0.0",
@@ -190,6 +194,7 @@
"mock-require": "^3.0.3",
"optimize-css-assets-webpack-plugin": "^5.0.0",
"script-loader": "^0.7.2",
+ "sequelize-cli": "^5.4.0",
"string-loader": "^0.0.1",
"style-loader": "^0.21.0",
"uglifyjs-webpack-plugin": "^1.2.7",
diff --git a/public/css/extra.css b/public/css/extra.css
index 3954c046..d5945ba9 100644
--- a/public/css/extra.css
+++ b/public/css/extra.css
@@ -384,6 +384,24 @@ small .dropdown a:focus, small .dropdown a:hover {
color: #eee;
}
+
+/* Prevent linked heading from being hidden underneath navbar.
+ * Example: http://localhost:3000/features#Editor-Modes would open and
+ * hide the headline "Editor Modes" underneath the navbar without this CSS rule.
+ */
+.markdown-body h1[id]:before,
+.markdown-body h2[id]:before,
+.markdown-body h3[id]:before,
+.markdown-body h4[id]:before,
+.markdown-body h5[id]:before,
+.markdown-body h6[id]:before {
+ display: block;
+ content: " ";
+ margin-top: -55px;
+ height: 55px;
+ visibility: hidden;
+}
+
@media print {
div, table, img, pre, blockquote {
page-break-inside: avoid !important;
diff --git a/public/css/index.css b/public/css/index.css
index d9ebf6de..d266ad88 100644
--- a/public/css/index.css
+++ b/public/css/index.css
@@ -20,24 +20,6 @@ body.night{
background: #333 !important;
}
-.toolbar {
- background-color: #1c1c1e;
- border: 1px solid #343434;
-}
-
-.toolbar > .btn-toolbar > .btn-group > .btn {
- background-color: #1c1c1e;
- padding: 5px;
- font-size: 1em;
-}
-
-.toolbar > .btn-toolbar > .btn-group > .btn:hover {
- background-color: #383a3e;
-
- padding: 5px;
-}
-
-
.CodeMirror {
font-family: "Source Code Pro", Consolas, monaco, monospace;
letter-spacing: 0.025em;
@@ -124,7 +106,10 @@ body.night{
color: #78B2F2 !important;
}
.CodeMirror-sizer {
- margin-bottom: 0px !important;
+ /* Make sure CodeMirror doesn't hide text under the status bar
+ * 26px is the height of the status bar.
+ */
+ margin-bottom: 26px !important;
}
.CodeMirror-insert-match {
background: lawngreen;
@@ -385,7 +370,7 @@ div[contenteditable]:empty:not(:focus):before{
color: #eee;
}
-.night .btn.btn-default.ui-view.active{
+.night .btn.btn-default.active{
background: #202020;
}
diff --git a/public/css/slide-preview.css b/public/css/slide-preview.css
index 1f8288c7..963ee340 100644
--- a/public/css/slide-preview.css
+++ b/public/css/slide-preview.css
@@ -56,3 +56,64 @@
height: 1.5em;
border: 3px solid #777;
}
+
+.markdown-body.slides aside.notes {
+ display: none;
+}
+
+.markdown-body.slides ul, .markdown-body.slides ol {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+ padding: 0;
+}
+
+.markdown-body.slides table {
+ width: 50%;
+ margin: 0 auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+ display: table;
+}
+
+.markdown-body.slides table th, .markdown-body.slides table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border:none;
+ border-bottom: 1px solid;
+}
+
+.markdown-body.slides table tr {
+ border-top: 0;
+ background-color: #fff;
+}
+
+.markdown-body.slides table tr:nth-child(2n) {
+ background-color: inherit;
+}
+
+.markdown-body.slides table tbody tr:last-child th, .markdown-body.slides table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.markdown-body.slides h1, .markdown-body.slides h2 {
+ border-bottom: 0;
+}
+
+.night .markdown-body.slides h1,
+.night .markdown-body.slides h2,
+.night .markdown-body.slides h3,
+.night .markdown-body.slides h4,
+.night .markdown-body.slides h5,
+.night .markdown-body.slides h6 {
+ color: black;
+}
+
+.markdown-body section > section:last-child {
+ margin-bottom: 1.5em !important;
+}
+
+/* slides previews get a black background, controlled by js */
+.ui-view-area.black {
+ background-color: black !important;;
+}
diff --git a/public/css/ui/toolbar.css b/public/css/ui/toolbar.css
new file mode 100644
index 00000000..fa51e1cb
--- /dev/null
+++ b/public/css/ui/toolbar.css
@@ -0,0 +1,33 @@
+.toolbar {
+ background-color: #fafafa;
+ border: 1px solid #ededed;
+}
+
+.toolbar > .btn-toolbar > .btn-group > .btn {
+ background-color: #fafafa;
+ padding: 5px;
+ font-size: 1em;
+ color: #555;
+}
+
+.toolbar > .btn-toolbar > .btn-group > .btn:hover {
+ background-color: #e1e1e1;
+ padding: 5px;
+}
+
+body.night .toolbar {
+ background-color: #1c1c1e;
+ border: 1px solid #353538;
+}
+
+body.night .toolbar > .btn-toolbar > .btn-group > .btn {
+ background-color: #1c1c1e;
+ padding: 5px;
+ font-size: 1em;
+ color: #5EB7E0;
+}
+
+body.night .toolbar > .btn-toolbar > .btn-group > .btn:hover {
+ background-color: #37373b;
+ padding: 5px;
+}
diff --git a/public/docs/features.md b/public/docs/features.md
index a4ffb633..92ccb89f 100644
--- a/public/docs/features.md
+++ b/public/docs/features.md
@@ -1,131 +1,138 @@
-Features
-===
+# Features
+
+## Introduction
-Introduction
-===
<i class="fa fa-file-text"></i> **CodiMD** is a real-time, multi-platform collaborative markdown note editor.
This means that you can write notes with other people on your **desktop**, **tablet** or even on the **phone**.
You can sign-in via multiple auth providers like **Facebook**, **Twitter**, **GitHub** and many more on the [_homepage_](/).
-If you experience any _issues_, feel free to report it on [**GitHub**](https://github.com/hackmdio/codimd/issues).
+If you experience any _issues_, feel free to report it on [**GitHub**](https://github.com/codimd/server/issues).
Or meet us on [**Matrix.org**](https://riot.im/app/#/room/#codimd:matrix.org) for dev-talk and interactive help.
**Thank you very much!**
-Workspace
-===
-## Modes
-**Desktop & Tablet**
+## Workspace
+
+### Modes
+
+#### Desktop & Tablet
-<i class="fa fa-edit fa-fw"></i> Edit: See only the editor.
<i class="fa fa-eye fa-fw"></i> View: See only the result.
-<i class="fa fa-columns fa-fw"></i> Both: See both in split view.
+<i class="fa fa-columns fa-fw"></i> Both: See editor and result at the same time.
+<i class="fa fa-pencil fa-fw"></i> Edit: See only the editor.
-**Mobile**
+#### Mobile
-<i class="fa fa-toggle-on fa-fw"></i> View: See only the result.
-<i class="fa fa-toggle-off fa-fw"></i> Edit: See only the editor.
+<i class="fa fa-eye fa-fw"></i> View: See only the result.
+<i class="fa fa-pencil fa-fw"></i> Edit: See only the editor.
+
+### Night Mode
-## Night Mode:
When you are tired of a white screen and like a night mode, click on the little moon <i class="fa fa-moon-o"></i> and turn on the night view of CodiMD.
The editor view, which is in night mode by default, can also be toggled between night and day view using the the little sun<i class="fa fa-sun-o fa-fw"></i>.
-## Image Upload:
-You can upload an image simply by clicking on the camera button <i class="fa fa-camera"></i>.
+### Image Upload
+
+You can upload an image simply by clicking on the upload button <i class="fa fa-upload"></i>.
Alternatively, you can **drag-n-drop** an image into the editor. Even **pasting** images is possible!
-This will automatically upload the image to **[imgur](http://imgur.com)**, **[Amazon S3](https://aws.amazon.com/s3/)**, **[Minio](https://minio.io)** or **local filesystem**, nothing to worry about. :tada:
+This will automatically upload the image to **[imgur](http://imgur.com)**, **[Amazon S3](https://aws.amazon.com/s3/)**, **[Minio](https://minio.io)** or the **local filesystem** (depending on the instance's configuration), nothing to worry about. :tada:
+
![imgur](https://i.imgur.com/9cgQVqD.png)
-## Share Notes:
+### Share Notes
+
If you want to share an **editable** note, just copy the URL.
-If you want to share a **read-only** note, simply press publish button <i class="fa fa-share-square-o"></i> and copy the URL.
+If you want to share a **read-only** note, simply press the publish button <i class="fa fa-share-square-o"></i> and copy the URL.
+
+### Save a Note
+
+Currently, you can save to **Dropbox** <i class="fa fa-dropbox"></i> (depending on the instance's configuration) or save a Markdown <i class="fa fa-file-text"></i>, HTML or raw HTML <i class="fa fa-file-code-o"></i> file locally.
+
+### Import Notes
-## Save a Note:
-Currently, you can save to **Dropbox** <i class="fa fa-dropbox"></i> or save an `.md` file <i class="fa fa-file-text"></i> locally.
+Similarly to the _save_ feature, you can also import a Markdown file from **Dropbox** <i class="fa fa-dropbox"></i> (depending on the instance's configuration), or import content from your **clipboard** <i class="fa fa-clipboard"></i>, which can parse some HTML. :smiley:
-## Import Notes:
-Similarly to the _save_ feature, you can also import an `.md` file from **Dropbox** <i class="fa fa-dropbox"></i>,
-or import content from your **clipboard** <i class="fa fa-clipboard"></i>, and that can parse some **html** which might be useful :smiley:
+### Permissions
-## Permissions:
-It is possible to change the access permission to a note through the little button on the top right of the view.
+It is possible to change the access permission of a note through the little button on the top right of the view.
There are four possible options:
| |Owner read/write|Signed-in read|Signed-in write|Guest read|Guest write|
|:-----------------------------|:--------------:|:------------:|:-------------:|:--------:|:---------:|
-|<span class="text-nowrap"><i class="fa fa-leaf fa-fw"></i> **Freely**</span> |✔|✔|✔|✔|✔|
-|<span class="text-nowrap"><i class="fa fa-pencil fa-fw"></i> **Editable**</span> |✔|✔|✔|✔|✖|
-|<span class="text-nowrap"><i class="fa fa-id-card fa-fw"></i> **Limited**</span> |✔|✔|✔|✖|✖|
-|<span class="text-nowrap"><i class="fa fa-lock fa-fw"></i> **Locked**</span> |✔|✔|✖|✔|✖|
-|<span class="text-nowrap"><i class="fa fa-umbrella fa-fw"></i> **Protected**</span> |✔|✔|✖|✖|✖|
-|<span class="text-nowrap"><i class="fa fa-hand-stop-o fa-fw"></i> **Private**</span> |✔|✖|✖|✖|✖|
-
+|<span class="text-nowrap"><i class="fa fa-leaf fa-fw"></i> **Freely**</span>|✔|✔|✔|✔|✔|
+|<span class="text-nowrap"><i class="fa fa-pencil fa-fw"></i> **Editable**</span>|✔|✔|✔|✔|✖|
+|<span class="text-nowrap"><i class="fa fa-id-card fa-fw"></i> **Limited**</span>|✔|✔|✔|✖|✖|
+|<span class="text-nowrap"><i class="fa fa-lock fa-fw"></i> **Locked**</span>|✔|✔|✖|✔|✖|
+|<span class="text-nowrap"><i class="fa fa-umbrella fa-fw"></i> **Protected**</span>|✔|✔|✖|✖|✖|
+|<span class="text-nowrap"><i class="fa fa-hand-stop-o fa-fw"></i> **Private**</span>|✔|✖|✖|✖|✖|
**Only the owner of the note can change the note's permissions.**
-## Embed a Note:
+### Embed a Note
+
Notes can be embedded as follows:
```xml
-<iframe width="100%" height="500" src="https://hackmd.io/features" frameborder="0"></iframe>
+<iframe width="100%" height="500" src="https://demo.codimd.io/features" frameborder="0"></iframe>
```
-## [Slide Mode](./slide-example):
+### [Slide Mode](./slide-example)
+
You can use a special syntax to organize your note into slides.
After that, you can use the **[Slide Mode](./slide-example)** <i class="fa fa-tv"></i> to make a presentation.
Visit the above link for details.
To switch the editor into slide mode, set the [document type](./yaml-metadata#type) to `slide`.
-View
-===
-## Table of Contents:
+## View
+
+### Autogenerated Table of Contents
+
You can look at the bottom right section of the view area, there is a _ToC_ button <i class="fa fa-bars"></i>.
Pressing that button will show you a current _Table of Contents_, and will highlight which section you're at.
ToCs support up to **three header levels**.
-## Permalink
+### Permalink
+
Every header will automatically add a permalink on the right side.
You can hover and click <i class="fa fa-chain"></i> to anchor on it.
-Edit:
-===
-## Editor Modes:
-You can look in the bottom right section of the editor area, there you'll find a button with `sublime` on it.
-When you click it, you can select 3 editor modes:
+## Edit
-- sublime (default)
-- emacs
-- vim
+### Editor Modes
-## Shortcut Keys:
-The shortcut keys depend on your selected editor mode. By default they are just like Sublime text, which is pretty quick and convenient.
-> For more information, see [here](https://codemirror.net/demo/sublime.html).
+You can look in the bottom right section of the editor area, there you'll find a button with `SUBLIME` on it.
+When you click it, you can select 3 editor modes, which will also define your shortcut keys:
-For emacs:
-> For more information, see [here](https://codemirror.net/demo/emacs.html).
+- [Sublime](https://codemirror.net/demo/sublime.html) (default)
+- [Emacs](https://codemirror.net/demo/emacs.html)
+- [Vim](https://codemirror.net/demo/vim.html)
-For vim:
-> For more information, see [here](https://codemirror.net/demo/vim.html).
+### Auto-Complete
-## Auto-Complete:
This editor provides full auto-complete hints in markdown.
+
- Emojis: type `:` to show hints.
-- Code blocks: type ` ``` ` and plus a character to show hint. <i hidden>```</i>
+- Code blocks: type ` ``` `, followed by another character to show syntax highlighting suggestions.
- Headers: type `#` to show hint.
- Referrals: type `[]` to show hint.
- Externals: type `{}` to show hint.
- Images: type `!` to show hint.
-## Title:
-This will take the first **level 1 header** as the note title.
+### Title
+
+The first **level 1 heading** (e.g. `# Title`) will be used as the note title.
+
+### Tags
-## Tags:
Using tags as follows, the specified tags will show in your **history**.
+
###### tags: `features` `cool` `updated`
-## [YAML Metadata](./yaml-metadata)
+### [YAML Metadata](./yaml-metadata)
+
You can provide advanced note information to set the browser behavior (visit above link for details):
+
- robots: set web robots meta
- lang: set browser language
- dir: set text direction
@@ -134,23 +141,30 @@ You can provide advanced note information to set the browser behavior (visit abo
- disqus: set to use Disqus
- slideOptions: setup slide mode options
-## ToC:
-Use the syntax `[TOC]` to embed table of content into your note.
+### Table of Contents
+
+Use the syntax `[TOC]` to embed a table of contents into your note.
[TOC]
-## Emoji
+### Emoji
+
You can type any emoji like this :smile: :smiley: :cry: :wink:
+
> See full emoji list [here](http://www.emoji-cheat-sheet.com/).
-## ToDo List:
+### ToDo List
+
- [ ] ToDos
- [x] Buy some salad
- [ ] Brush teeth
- [x] Drink some water
+ - [ ] **Click my box** and see the source code, if you're allowed to edit!
+
+### Code Block
-## Code Block:
We support many programming languages, use the auto complete function to see the entire list.
+
```javascript=
var s = "JavaScript syntax highlighting";
alert(s);
@@ -168,9 +182,11 @@ function $initHighlight(block, cls) {
}
}
```
-> If you want **line numbers**, type `=` after specifying the code block languagues.
-> Also, you can specify the start line number.
-> Like below, the line number starts from 101:
+
+If you want **line numbers**, type `=` after specifying the code block languagues.
+Also, you can specify the start line number.
+Like below, the line number starts from 101:
+
```javascript=101
var s = "JavaScript syntax highlighting";
alert(s);
@@ -189,47 +205,50 @@ function $initHighlight(block, cls) {
}
```
-> Or you might want to continue the previous code block's line number, use `=+`
+Or you might want to continue the previous code block's line number, use `=+`:
```javascript=+
var s = "JavaScript syntax highlighting";
alert(s);
```
-> Somtimes you have a super long text without breaks. It's time to use `!` to wrap your code.
+Somtimes you have a super long text without breaks. It's time to use `!` to wrap your code:
```!
When you’re a carpenter making a beautiful chest of drawers, you’re not going to use a piece of plywood on the back.
```
-### Blockquote Tags:
+### Blockquote Tags
+
> Using the syntax below to specifiy your **name, time and color** to vary the blockquotes.
> [name=ChengHan Wu] [time=Sun, Jun 28, 2015 9:59 PM] [color=#907bf7]
-> > Even support the nest blockquotes!
-> > [name=ChengHan Wu] [time=Sun, Jun 28, 2015 10:00 PM] [color=red]
+> > Even support nested blockquotes!
+> > [name=Max Mustermann] [time=Sun, Jun 28, 2015 9:47 PM] [color=red]
-## Externals
+### Externals
+
+#### YouTube
-### YouTube
{%youtube aqz-KE-bpKQ %}
-### Vimeo
+#### Vimeo
+
{%vimeo 124148255 %}
-### Gist
+#### Gist
+
{%gist schacon/4277%}
-### SlideShare
+#### SlideShare
+
{%slideshare briansolis/26-disruptive-technology-trends-2016-2018-56796196 %}
-### Speakerdeck
-{%speakerdeck sugarenia/xxlcss-how-to-scale-css-and-keep-your-sanity %}
+#### PDF
-### PDF
**Caution: this might be blocked by your browser if not using an `https` URL.**
{%pdf https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf %}
-## MathJax
+### MathJax
You can render *LaTeX* mathematical expressions using **MathJax**, as on [math.stackexchange.com](http://math.stackexchange.com/):
@@ -245,9 +264,9 @@ $$
> More information about **LaTeX** mathematical expressions [here](http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference).
-## UML Diagrams
+### Diagrams
-### Sequence Diagrams
+#### UML Sequence Diagrams
You can render sequence diagrams like this:
@@ -259,9 +278,12 @@ Note left of Alice: Alice responds
Alice->Bob: Where have you been?
```
-### Flow Charts
+More information about **sequence diagrams** syntax [here](http://bramp.github.io/js-sequence-diagrams/).
+
+#### Flow Charts
Flow charts can be specified like this:
+
```flow
st=>start: Start
e=>end: End
@@ -274,36 +296,45 @@ cond(yes)->e
cond(no)->op2
```
-### Graphviz
+More information about **flow charts** syntax [here](http://adrai.github.io/flowchart.js/).
+
+#### Graphviz
+
```graphviz
digraph hierarchy {
+ nodesep=1.0 // Increases the separation between nodes
- nodesep=1.0 // increases the separation between nodes
-
- node [color=Red,fontname=Courier,shape=box] //All nodes will this shape and colour
- edge [color=Blue, style=dashed] //All the lines look like this
+ node [color=Red,fontname=Courier,shape=box] // All nodes will this shape and colour
+ edge [color=Blue, style=dashed] // All the lines look like this
- Headteacher->{Deputy1 Deputy2 BusinessManager}
- Deputy1->{Teacher1 Teacher2}
- BusinessManager->ITManager
- {rank=same;ITManager Teacher1 Teacher2} // Put them on the same level
+ Headteacher->{Deputy1 Deputy2 BusinessManager}
+ Deputy1->{Teacher1 Teacher2}
+ BusinessManager->ITManager
+ {rank=same;ITManager Teacher1 Teacher2} // Put them on the same level
}
```
-### Mermaid
+More information about **graphviz** syntax [here](http://www.tonyballantyne.com/graphs.html)
+
+#### Mermaid
+
```mermaid
gantt
- title A Gantt Diagram
-
- section Section
- A task :a1, 2014-01-01, 30d
- Another task :after a1 , 20d
- section Another
- Task in sec :2014-01-12 , 12d
- anther task : 24d
+ title A Gantt Diagram
+
+ section Section
+ A task: a1, 2014-01-01, 30d
+ Another task: after a1, 20d
+
+ section Another
+ Task in sec: 2014-01-12, 12d
+ Another task: 24d
```
-### Abc
+More information about **mermaid** syntax [here](http://knsv.github.io/mermaid)
+
+#### Abc Music Notation
+
```abc
X:1
T:Speed the Plough
@@ -316,14 +347,10 @@ GABc dedB|dedB dedB|c2ec B2dB|A2F2 G4:|
g2gf g2Bd|g2f2 e2d2|c2ec B2dB|A2F2 G4:|
```
-> More information about **sequence diagrams** syntax [here](http://bramp.github.io/js-sequence-diagrams/).
-> More information about **flow charts** syntax [here](http://adrai.github.io/flowchart.js/).
-> More information about **graphviz** syntax [here](http://www.tonyballantyne.com/graphs.html)
-> More information about **mermaid** syntax [here](http://knsv.github.io/mermaid)
-> More information about **abc** syntax [here](http://abcnotation.com/learn)
+More information about **abc** syntax [here](http://abcnotation.com/learn)
+
+### Alert Area
-Alert Area
----
:::success
Yes :tada:
:::
@@ -340,11 +367,11 @@ Watch out :zap:
Oh No! :fire:
:::
-## Typography
+### Typography
-### Headers
+#### Headers
-```
+``` markdown
# h1 Heading
## h2 Heading
### h3 Heading
@@ -353,7 +380,7 @@ Oh No! :fire:
###### h6 Heading
```
-### Horizontal Rules
+#### Horizontal Rules
___
@@ -361,8 +388,7 @@ ___
***
-
-### Typographic Replacements
+#### Typographic Replacements
Enable typographer option to see result.
@@ -378,7 +404,7 @@ Remarkable -- awesome
'Smartypants, single quotes'
-### Emphasis
+#### Emphasis
**This is bold text**
@@ -400,18 +426,15 @@ Subscript: H~2~O
==Marked text==
-
-### Blockquotes
-
+#### Blockquotes
> Blockquotes can also be nested...
>> ...by using additional greater-than signs right next to each other...
> > > ...or with spaces between arrows.
+#### Lists
-### Lists
-
-#### Unordered
+##### Unordered
+ Create a list by starting a line with `+`, `-`, or `*`
+ Sub-lists are made by indenting 2 spaces:
@@ -421,27 +444,26 @@ Subscript: H~2~O
- Nulla volutpat aliquam velit
+ Very easy!
-#### Ordered
+##### Ordered
1. Lorem ipsum dolor sit amet
2. Consectetur adipiscing elit
-3. Integer molestie lorem at massa
-
+3. Aenean commodo ligula eget dolor
-1. You can use sequential numbers...
-1. ...or keep all the numbers as `1.`
-1. feafw
-2. 332
-3. 242
-4. 2552
-1. e2
+1. **You can use sequential numbers...**
+1. **...or keep all the numbers as `1.`**
+1. Aenean massa
+2. Cum sociis natoque penatibus
+3. Magnis dis parturient montes
+4. Nascetur ridiculus mus
+1. Donec quam felis
Start numbering with offset:
57. foo
1. bar
-### Code
+#### Code
Inline `code`
@@ -452,7 +474,6 @@ Indented code
line 2 of code
line 3 of code
-
Block code "fences"
```
@@ -469,7 +490,7 @@ var foo = function (bar) {
console.log(foo(5));
```
-### Tables
+#### Tables
| Option | Description |
| ------ | ----------- |
@@ -501,26 +522,28 @@ Center aligned columns
| engine | engine to be used for processing templates. Handlebars is the default. |
| ext | extension to be used for dest files. |
+#### Links
-### Links
-[link text](http://dev.nodeca.com)
-[link with title](http://nodeca.github.io/pica/demo/ "title text!")
+[link text](https://demo.codimd.org)
+[link with title](https://nodeca.github.io/pica/demo/ "title text!")
Autoconverted link https://github.com/nodeca/pica
+#### Images
-### Images
![Minion](https://octodex.github.com/images/minion.png)
+
+With a title:
![Stormtroopocat](https://octodex.github.com/images/stormtroopocat.jpg "The Stormtroopocat")
-Like links, Images also have a footnote style syntax
-![Alt text][id]
-With a reference later in the document defining the URL location:
-[id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat"
+Like links, images also have a footnote style syntax with a reference later in the document defining the URL location:
+![Dojocat][dojoref]
+
+[dojoref]: https://octodex.github.com/images/dojocat.jpg "The Dojocat"
+Show the image with given size:
![Minion](https://octodex.github.com/images/minion.png =200x200)
-Show the image with given size
-### Footnotes
+#### Footnotes
Footnote 1 link[^first].
Footnote 2 link[^second].
@@ -531,7 +554,7 @@ Duplicated footnote reference[^second].
and multiple paragraphs.
[^second]: Footnote text.
-### Definition Lists
+#### Definition Lists
Term 1
@@ -555,7 +578,7 @@ Term 2
~ Definition 2a
~ Definition 2b
-### Abbreviations
+#### Abbreviations
This is an HTML abbreviation example.
It converts "HTML", but keeps intact partial entries like "xxxHTMLyyy" and so on.
diff --git a/public/docs/release-notes.md b/public/docs/release-notes.md
index c775b70a..690d89d4 100644
--- a/public/docs/release-notes.md
+++ b/public/docs/release-notes.md
@@ -1,6 +1,256 @@
Release Notes
===
+<i class="fa fa-tag"></i> 1.5.0 <i class="fa fa-clock-o"></i> 2019-08-15 00:00
+---
+
+### Announcements
+* There is a new docker image available by LinuxServer.io providing an ARM container
+* Disabling PDF export due to security problems
+
+### Enhancements
+* Add migration guide for Node version 6
+* Add functionality to respect Do-Not-Track header
+* Add Arabian translation
+
+### Fixes
+* Fix styling in slide preview
+* Fix some lint warning
+* Upgrade Sequelize to version 5
+* Add Linuxserver.io setup instructions for CodiMD
+* Update translations for DE, SV, ID
+* Add ability to upload SVGs
+* Add `dbURL`config as docker secret
+* Upgrade meta-marked - Fixes DOS capability in CodiMD (https://github.com/codimd/server/commit/ba6a24a673c24db25969de2a59b9341247f3f722)
+* Fix variable names in docker secrets config library
+
+### Refactors
+* Refactor debug logging in various places
+
+### Deprecations
+* `useCDN` will be deprecated and will disappear in favor of locally served resources. (https://community.codimd.org/t/poll-on-cdn-usage/28)
+
+### Contributors
+* [Amolith](https://github.com/Amolith) (social media)
+* Aro Row (translator)
+* bitinerant (security)
+* Butterflyoffire (translator)
+* [Claudius Coenen (ccoenen)](https://github.com/ccoenen)
+* Erik (translator)
+* Fajar Maulana (translator)
+* id7xyz (translator)
+* joohoi (security)
+* [Jonas Thelemann (dargmuesli)](https://github.com/dargmuesli)
+* [Lennart Weller (lhw)](https://github.com/lhw)
+* [chbmb](https://github.com/CHBMB)
+* [Raccoon (a60814billy)](https://github.com/a60814billy)
+* RS232 (translator)
+* [Toma Tasovac (ttasovac)](https://github.com/ttasovac)
+
+
+<i class="fa fa-tag"></i> 1.4.0 <i class="fa fa-clock-o"></i> 2019-05-31 00:00
+---
+
+### Announcements
+* CodiMD now has a [Mastodon account](https://social.codimd.org/mastodon)
+* CodiMD now has a [community forum](https://community.codimd.org)
+* With CodiMD 1.4.0 we're dropping node 6 support. That version of node.js is discontinued and no longer receives any security updates. We would like to encourage you to upgrade node 8 or later. Node 8 will continue to be supported at least until its end-of-life in January 2020.
+
+### Enhancements
+* Use libravatar instead of Gravatar
+* Fix language description capitalization
+* Move upload button into the toolbar
+* Clean up Heroku configurations
+* Add new screenshot to README and index page
+* Add link to community call to README
+* Update languages (pl, sr, zh-CN, fr, it, ja, zh-TW, de, sv, es)
+* Change edit link to `both` view
+* Hide minio default ports
+* Add missing passport-saml configuration
+* Add lutim support
+* Update dependencies
+* Add documentation for keycloak
+* Add tests for user model
+* Add Mastodon link
+* Add config for toobusy middleware
+* Add vietnamese language
+
+### Fixes
+* Fix missing space in footer
+* Fix various possible security vulnerabilities in dependencies
+* Fix broken dependency js-sequence-diagrams
+* Fix XSS in graphviz error message rendering
+* Fix toolbar night mode
+* Fix hidden header on scroll
+* Fix missing pictures for OpenID
+* Fix statusbar hiding text in edit view
+
+### Refactors
+* Refactor README and documentation
+* Integrate the old wiki into documentation section
+* Refactor headers on Features page
+* Replace js-url with wurl
+* Refactor scrypt integration
+
+### Removals
+* Remove sass-loader
+
+### Contributors
+* [Amolith](https://github.com/Amolith)
+* CasperS (translator)
+* Cedric.couralet (translator)
+* [Claudius Coenen (ccoenen)](https://github.com/ccoenen)
+* Daniel (translator)
+* Deluxghost (translator)
+* [Dylan Dervaux (Dylanderv)](https://github.com/Dylanderv)
+* [Emmanuel Ormancey (nopap)](https://github.com/nopap)
+* Grzegorz (translator)
+* [Henrik Hüttemann (HerHde)](https://github.com/HerHde)
+* Hồng (translator)
+* [Mauricio Robayo (archemiro)](https://github.com/archemiro)
+* [Max Wu (jackycute)](https://github.com/jackycute)
+* [naimo](https://github.com/naimo)
+* [Pedro Ferreira (pferreir)](https://github.com/pferreir)
+* [Simon Fish (boardfish)](https://github.com/boardfish)
+* [Stéphane Guillou (stragu)](https://github.com/stragu)
+* Sylke Vicious (translator)
+* [Thor77](https://github.com/Thor77)
+* veracosta (translator)
+* Vladan (translator)
+* War (translator)
+* Zhai233 (translator)
+
+
+<i class="fa fa-tag"></i> 1.3.2 <i class="fa fa-clock-o"></i> 2019-03-28 00:00
+---
+
+### Announcement
+* CodiMD is now running in an own organization. [Check out our vision for the future](https://github.com/codimd/server/issues/10)
+
+### Fixes
+* Update various links to the new repositories
+* Fix background color for mode switching button in night mode
+
+<i class="fa fa-tag"></i> 1.3.1 <i class="fa fa-clock-o"></i> 2019-03-23 00:00
+---
+
+### Enhancements
+* Add some missing translations
+* Add Serbian language
+
+### Fixes
+* Fix broken redirect for empty `serverURL`
+* Fix wrong variable type for HSTS maxAge
+* Fix GitLab snippets showing up without being configured
+* Fix Google's API after disabling Google+
+* Fix broken PDF export
+
+### Contributors
+* atachibana (translator)
+* [Aurélien JANVIER](https://github.com/ajanvier) (translator)
+* [Daan Sprenkels](https://github.com/dsprenkels) (translator)
+* Farizrizaldy (translator)
+* [Luclu7](https://github.com/Luclu7)
+* Sylke Vicious (translator)
+* [toshi0123](https://github.com/toshi0123) & okochi-toshiki
+* [Turakar](https://github.com/Turakar)
+* [Vladan](https://github.com/cvladan) (translator)
+
+<i class="fa fa-tag"></i> 1.3.0 <i class="fa fa-clock-o"></i> 2019-03-03 00:00
+---
+
+### Enhancements
+* Run db migrations on `npm start`
+* Add documentation about integration with AD LDAP
+* Add `rel="noopener"` to all links
+* Add documentation about integration with Nextcloud for authentication
+* Update URL on frontpage to point to codimd.org
+* Replace Fontawesome with Forkawesome
+* Add OpenID support
+* Add print icon to slide view
+* Add auto-complete for language names that are highlighted in codeblocks
+* Improve translations for Chinese, Dutch, French, German, Italien, Korean, Polish, and Russian language
+* Add Download action to published document API
+* Add reset password feature to `manage_users` script
+* Move from own `./tmp` directory to system temp directory
+* Add Etherpad migration guide
+* Move XSS library to a more native position
+* Use full version string to determine changes from the backend
+* Update winston (logging library)
+* Use slide preview in slide example
+* Improve migration handling
+* Update reveal.js to version 3.7.0
+* Replace scrypt library with its successor
+* Replace `to-markdown` with `turndown` (successor library)
+* Update socket.io
+* Add warning on missing base URL
+* Update bootstrap to version 3.4.0
+* Update handlebar
+
+### Fixes
+* Fix paths in GitLab documentation
+* Fix missing `data:` URL in CSP
+* Fix oAuth2 name/label field
+* Fix GitLab API integration
+* Fix auto-completed but not rendered emojis
+* Fix menu organization depending on enabled services
+* Fix some logging in the OT module
+* Fix some unhandled internalOAuthError exception
+* Fix unwanted creation of robots.txt document in "freeurl-mode"
+* Fix some links on index page to lead to the right sections on feature page
+* Fix document breaking, empty headlines
+* Fix wrong multiplication for HSTS header seconds
+* Fix wrong subdirectories in exported user data
+* Fix CSP for speaker notes
+* Fix CSP for disqus
+* Fix URL API usage
+* Fix Gist embedding
+* Fix upload provider error message
+* Fix unescaped disqus user names
+* Fix SAML vulnerability
+* Fix link to SAML guide
+* Fix deep dependency problem with node 6.x
+* Fix broken PDF export by wrong unlink call
+* Fix possible XSS attack in MathJax
+
+### Refactors
+* Refactor to use `ws` instead of the the no longer supported `uws`
+* Refactor frontend build system to use webpack version 4
+* Refactor file path configuration (views, uploads, …)
+* Refactor `manage_users` script
+* Refactor handling of template variables
+* Refactor linting to use eslint
+
+### Removals
+* Remove no longer working Octicons
+* Remove links to our old Gitter channel
+* Remove unused library node-uuid
+* Remove unneeded blueimp-md5 dependency
+* Remove speakerdeck due to broken implementation
+
+### Contributors
+* Adam.emts (translator)
+* [Alex Garcia](https://github.com/asg017)
+* [Cédric Couralet (micedre)](https://github.com/micedre)
+* [Claudius Coenen](https://github.com/ccoenen)
+* [Daan Sprenkels](https://github.com/dsprenkels)
+* [David Mehren](https://github.com/davidmehren)
+* [Erona](https://github.com/Eronana)
+* [Felix Yan](https://github.com/felixonmars)
+* [Jonathan](https://github.com/phrix32)
+* Jong-kai Yang (translator)
+* [MartB](https://github.com/MartB)
+* [Max Wu (jackycute)](https://github.com/jackycute)
+* [mcnesium](https://github.com/mcnesium)
+* Nullnine (translator)
+* RanoIP (translator)
+* [SuNbiT](https://github.com/sunbit)
+* Sylke Vicious (translator)
+* Timothee (translator)
+* [WilliButz](https://github.com/WilliButz)
+* [Xaver Maierhofer](https://github.com/xf-)
+* [云屿](https://github.com/cloudyu)
+
<i class="fa fa-tag"></i> 1.2.1 <i class="fa fa-clock-o"></i> 2018-09-26 00:00
---
@@ -38,7 +288,7 @@ Release Notes
### Deprecations
* NodeJS version 6
-* Mattermost login integration (is replaced by [generic oAuth2 module](https://github.com/hackmdio/codimd/blob/6ce7b20a7f92ccff2f7f870ff5d116d685310cfd/docs/guides/auth/mattermost-self-hosted.md))
+* Mattermost login integration (is replaced by [generic oAuth2 module](https://github.com/codimd/server/blob/6ce7b20a7f92ccff2f7f870ff5d116d685310cfd/docs/guides/auth/mattermost-self-hosted.md))
### Honorable mentions
* [Alex Hesse (Pingu501)](https://github.com/Pingu501)
@@ -54,7 +304,7 @@ Release Notes
---
### Announcement
-* HackMD CE is renamed to CodiMD to prevent confusion. [For details see here](https://github.com/hackmdio/codimd#hackmd-ce-became-codimd)
+* HackMD CE is renamed to CodiMD to prevent confusion. [For details see here](https://github.com/codimd/server/tree/master/docs/history.md)
### Enhancements
* Show full title by hovering over to table of contents entries
diff --git a/public/js/cover.js b/public/js/cover.js
index 79fb3a2a..94748cdc 100644
--- a/public/js/cover.js
+++ b/public/js/cover.js
@@ -1,37 +1,37 @@
/* eslint-env browser, jquery */
/* global moment, serverurl */
-require('./locale')
-
-require('../css/cover.css')
-require('../css/site.css')
-
import {
- checkIfAuth,
- clearLoginState,
- getLoginState,
- resetCheckAuth,
- setloginStateChangeEvent
+ checkIfAuth,
+ clearLoginState,
+ getLoginState,
+ resetCheckAuth,
+ setloginStateChangeEvent
} from './lib/common/login'
import {
- clearDuplicatedHistory,
- deleteServerHistory,
- getHistory,
- getStorageHistory,
- parseHistory,
- parseServerToHistory,
- parseStorageToHistory,
- postHistoryToServer,
- removeHistory,
- saveHistory,
- saveStorageHistoryToServer
+ clearDuplicatedHistory,
+ deleteServerHistory,
+ getHistory,
+ getStorageHistory,
+ parseHistory,
+ parseServerToHistory,
+ parseStorageToHistory,
+ postHistoryToServer,
+ removeHistory,
+ saveHistory,
+ saveStorageHistoryToServer
} from './history'
import { saveAs } from 'file-saver'
import List from 'list.js'
import S from 'string'
+require('./locale')
+
+require('../css/cover.css')
+require('../css/site.css')
+
const options = {
valueNames: ['id', 'text', 'timestamp', 'fromNow', 'time', 'tags', 'pinned'],
item: `<li class="col-xs-12 col-sm-6 col-md-6 col-lg-4">
@@ -67,27 +67,27 @@ pageInit()
function pageInit () {
checkIfAuth(
- data => {
- $('.ui-signin').hide()
- $('.ui-or').hide()
- $('.ui-welcome').show()
- if (data.photo) $('.ui-avatar').prop('src', data.photo).show()
- else $('.ui-avatar').prop('src', '').hide()
- $('.ui-name').html(data.name)
- $('.ui-signout').show()
- $('.ui-history').click()
- parseServerToHistory(historyList, parseHistoryCallback)
- },
- () => {
- $('.ui-signin').show()
- $('.ui-or').show()
- $('.ui-welcome').hide()
- $('.ui-avatar').prop('src', '').hide()
- $('.ui-name').html('')
- $('.ui-signout').hide()
- parseStorageToHistory(historyList, parseHistoryCallback)
- }
- )
+ data => {
+ $('.ui-signin').hide()
+ $('.ui-or').hide()
+ $('.ui-welcome').show()
+ if (data.photo) $('.ui-avatar').prop('src', data.photo).show()
+ else $('.ui-avatar').prop('src', '').hide()
+ $('.ui-name').html(data.name)
+ $('.ui-signout').show()
+ $('.ui-history').click()
+ parseServerToHistory(historyList, parseHistoryCallback)
+ },
+ () => {
+ $('.ui-signin').show()
+ $('.ui-or').show()
+ $('.ui-welcome').hide()
+ $('.ui-avatar').prop('src', '').hide()
+ $('.ui-name').html('')
+ $('.ui-signout').hide()
+ parseStorageToHistory(historyList, parseHistoryCallback)
+ }
+ )
}
$('.masthead-nav li').click(function () {
@@ -132,7 +132,7 @@ function checkHistoryList () {
function parseHistoryCallback (list, notehistory) {
checkHistoryList()
- // sort by pinned then timestamp
+ // sort by pinned then timestamp
list.sort('', {
sortFunction (a, b) {
const notea = a.values()
@@ -152,13 +152,13 @@ function parseHistoryCallback (list, notehistory) {
}
}
})
- // parse filter tags
+ // parse filter tags
const filtertags = []
for (let i = 0, l = list.items.length; i < l; i++) {
const tags = list.items[i]._values.tags
if (tags && tags.length > 0) {
for (let j = 0; j < tags.length; j++) {
- // push info filtertags if not found
+ // push info filtertags if not found
let found = false
if (filtertags.includes(tags[j])) { found = true }
if (!found) { filtertags.push(tags[j]) }
@@ -178,20 +178,20 @@ historyList.on('updated', e => {
const a = itemEl.find('a')
const pin = itemEl.find('.ui-history-pin')
const tagsEl = itemEl.find('.tags')
- // parse link to element a
+ // parse link to element a
a.attr('href', `${serverurl}/${values.id}`)
- // parse pinned
+ // parse pinned
if (values.pinned) {
pin.addClass('active')
} else {
pin.removeClass('active')
}
- // parse tags
+ // parse tags
const tags = values.tags
if (tags && tags.length > 0 && tagsEl.children().length <= 0) {
const labels = []
for (let j = 0; j < tags.length; j++) {
- // push into the item label
+ // push into the item label
labels.push(`<span class='label label-default'>${tags[j]}</span>`)
}
tagsEl.html(labels.join(' '))
@@ -328,7 +328,7 @@ $('.ui-open-history').bind('change', e => {
const reader = new FileReader()
reader.onload = () => {
const notehistory = JSON.parse(reader.result)
- // console.log(notehistory);
+ // console.log(notehistory);
if (!reader.result) return
getHistory(data => {
let mergedata = data.concat(notehistory)
diff --git a/public/js/extra.js b/public/js/extra.js
index 76e95635..4431513d 100644
--- a/public/js/extra.js
+++ b/public/js/extra.js
@@ -1,6 +1,22 @@
/* eslint-env browser, jquery */
+/* eslint no-console: ["error", { allow: ["warn", "error"] }] */
/* global moment, serverurl */
+import Prism from 'prismjs'
+import hljs from 'highlight.js'
+import PDFObject from 'pdfobject'
+import S from 'string'
+import { saveAs } from 'file-saver'
+import escapeHTML from 'escape-html'
+
+import getUIElements from './lib/editor/ui-elements'
+
+import markdownit from 'markdown-it'
+import markdownitContainer from 'markdown-it-container'
+
+/* Defined regex markdown it plugins */
+import Plugin from 'markdown-it-regexp'
+
require('prismjs/themes/prism.css')
require('prismjs/components/prism-wiki')
require('prismjs/components/prism-haskell')
@@ -10,17 +26,9 @@ require('prismjs/components/prism-jsx')
require('prismjs/components/prism-makefile')
require('prismjs/components/prism-gherkin')
-import Prism from 'prismjs'
-import hljs from 'highlight.js'
-import PDFObject from 'pdfobject'
-import S from 'string'
-import { saveAs } from 'file-saver'
-
require('./lib/common/login')
require('../vendor/md-toc')
var Viz = require('viz.js')
-
-import getUIElements from './lib/editor/ui-elements'
const ui = getUIElements()
// auto update last change
@@ -190,7 +198,7 @@ export function parseMeta (md, edit, view, toc, tocAffix) {
dir = meta.dir
breaks = meta.breaks
}
- // text language
+ // text language
if (lang && typeof lang === 'string') {
view.attr('lang', lang)
toc.attr('lang', lang)
@@ -202,7 +210,7 @@ export function parseMeta (md, edit, view, toc, tocAffix) {
tocAffix.removeAttr('lang')
if (edit) { edit.removeAttr('lang', lang) }
}
- // text direction
+ // text direction
if (dir && typeof dir === 'string') {
view.attr('dir', dir)
toc.attr('dir', dir)
@@ -212,7 +220,7 @@ export function parseMeta (md, edit, view, toc, tocAffix) {
toc.removeAttr('dir')
tocAffix.removeAttr('dir')
}
- // breaks
+ // breaks
if (typeof breaks === 'boolean' && !breaks) {
md.options.breaks = false
} else {
@@ -245,7 +253,7 @@ if (typeof window.mermaid !== 'undefined' && window.mermaid) window.mermaid.star
// dynamic event or object binding here
export function finishView (view) {
- // todo list
+ // todo list
const lis = view.find('li.raw').removeClass('raw').sortByDepth().toArray()
for (let li of lis) {
@@ -261,7 +269,7 @@ export function finishView (view) {
if (typeof editor !== 'undefined' && window.havePermission()) { disabled = '' }
if (/^\s*\[[x ]\]\s*/.test(html)) {
li.innerHTML = html.replace(/^\s*\[ \]\s*/, `<input type="checkbox" class="task-list-item-checkbox "${disabled}><label></label>`)
- .replace(/^\s*\[x\]\s*/, `<input type="checkbox" class="task-list-item-checkbox" checked ${disabled}><label></label>`)
+ .replace(/^\s*\[x\]\s*/, `<input type="checkbox" class="task-list-item-checkbox" checked ${disabled}><label></label>`)
if (li.tagName.toLowerCase() !== 'li') {
li.parentElement.setAttribute('class', 'task-list-item')
} else {
@@ -269,42 +277,42 @@ export function finishView (view) {
}
}
if (typeof editor !== 'undefined' && window.havePermission()) { $(li).find('input').change(toggleTodoEvent) }
- // color tag in list will convert it to tag icon with color
+ // color tag in list will convert it to tag icon with color
const tagColor = $(li).closest('ul').find('.color')
tagColor.each((key, value) => {
$(value).addClass('fa fa-tag').css('color', $(value).attr('data-color'))
})
}
- // youtube
+ // youtube
view.find('div.youtube.raw').removeClass('raw')
- .click(function () {
- imgPlayiframe(this, '//www.youtube.com/embed/')
- })
+ .click(function () {
+ imgPlayiframe(this, '//www.youtube.com/embed/')
+ })
// vimeo
view.find('div.vimeo.raw').removeClass('raw')
- .click(function () {
- imgPlayiframe(this, '//player.vimeo.com/video/')
- })
- .each((key, value) => {
- $.ajax({
- type: 'GET',
- url: `//vimeo.com/api/v2/video/${$(value).attr('data-videoid')}.json`,
- jsonp: 'callback',
- dataType: 'jsonp',
- success (data) {
- const thumbnailSrc = data[0].thumbnail_large
- const image = `<img src="${thumbnailSrc}" />`
- $(value).prepend(image)
- if (window.viewAjaxCallback) window.viewAjaxCallback()
- }
- })
- })
+ .click(function () {
+ imgPlayiframe(this, '//player.vimeo.com/video/')
+ })
+ .each((key, value) => {
+ $.ajax({
+ type: 'GET',
+ url: `//vimeo.com/api/v2/video/${$(value).attr('data-videoid')}.json`,
+ jsonp: 'callback',
+ dataType: 'jsonp',
+ success (data) {
+ const thumbnailSrc = data[0].thumbnail_large
+ const image = `<img src="${thumbnailSrc}" />`
+ $(value).prepend(image)
+ if (window.viewAjaxCallback) window.viewAjaxCallback()
+ }
+ })
+ })
// gist
view.find('code[data-gist-id]').each((key, value) => {
if ($(value).children().length === 0) { $(value).gist(window.viewAjaxCallback) }
})
- // sequence diagram
+ // sequence diagram
const sequences = view.find('div.sequence-diagram.raw').removeClass('raw')
sequences.each((key, value) => {
try {
@@ -323,11 +331,11 @@ export function finishView (view) {
svg[0].setAttribute('preserveAspectRatio', 'xMidYMid meet')
} catch (err) {
$value.unwrap()
- $value.parent().append('<div class="alert alert-warning">' + err + '</div>')
+ $value.parent().append(`<div class="alert alert-warning">${escapeHTML(err)}</div>`)
console.warn(err)
}
})
- // flowchart
+ // flowchart
const flow = view.find('div.flow-chart.raw').removeClass('raw')
flow.each((key, value) => {
try {
@@ -347,11 +355,11 @@ export function finishView (view) {
$value.children().unwrap().unwrap()
} catch (err) {
$value.unwrap()
- $value.parent().append('<div class="alert alert-warning">' + err + '</div>')
+ $value.parent().append(`<div class="alert alert-warning">${escapeHTML(err)}</div>`)
console.warn(err)
}
})
- // graphviz
+ // graphviz
var graphvizs = view.find('div.graphviz.raw').removeClass('raw')
graphvizs.each(function (key, value) {
try {
@@ -366,11 +374,11 @@ export function finishView (view) {
$value.children().unwrap().unwrap()
} catch (err) {
$value.unwrap()
- $value.parent().append('<div class="alert alert-warning">' + err + '</div>')
+ $value.parent().append(`<div class="alert alert-warning">${escapeHTML(err)}</div>`)
console.warn(err)
}
})
- // mermaid
+ // mermaid
const mermaids = view.find('div.mermaid.raw').removeClass('raw')
mermaids.each((key, value) => {
try {
@@ -388,7 +396,7 @@ export function finishView (view) {
}
$value.unwrap()
- $value.parent().append('<div class="alert alert-warning">' + errormessage + '</div>')
+ $value.parent().append(`<div class="alert alert-warning">${escapeHTML(errormessage)}</div>`)
console.warn(errormessage)
}
})
@@ -408,20 +416,20 @@ export function finishView (view) {
svg[0].setAttribute('preserveAspectRatio', 'xMidYMid meet')
} catch (err) {
$value.unwrap()
- $value.parent().append('<div class="alert alert-warning">' + err + '</div>')
+ $value.parent().append(`<div class="alert alert-warning">${escapeHTML(err)}</div>`)
console.warn(err)
}
})
- // image href new window(emoji not included)
+ // image href new window(emoji not included)
const images = view.find('img.raw[src]').removeClass('raw')
images.each((key, value) => {
- // if it's already wrapped by link, then ignore
+ // if it's already wrapped by link, then ignore
const $value = $(value)
$value[0].onload = e => {
if (window.viewAjaxCallback) window.viewAjaxCallback()
}
})
- // blockquote
+ // blockquote
const blockquote = view.find('blockquote.raw').removeClass('raw')
const blockquoteP = blockquote.find('p')
blockquoteP.each((key, value) => {
@@ -429,117 +437,96 @@ export function finishView (view) {
html = replaceExtraTags(html)
$(value).html(html)
})
- // color tag in blockquote will change its left border color
+ // color tag in blockquote will change its left border color
const blockquoteColor = blockquote.find('.color')
blockquoteColor.each((key, value) => {
$(value).closest('blockquote').css('border-left-color', $(value).attr('data-color'))
})
- // slideshare
+ // slideshare
view.find('div.slideshare.raw').removeClass('raw')
- .each((key, value) => {
- $.ajax({
- type: 'GET',
- url: `//www.slideshare.net/api/oembed/2?url=http://www.slideshare.net/${$(value).attr('data-slideshareid')}&format=json`,
- jsonp: 'callback',
- dataType: 'jsonp',
- success (data) {
- const $html = $(data.html)
- const iframe = $html.closest('iframe')
- const caption = $html.closest('div')
- const inner = $('<div class="inner"></div>').append(iframe)
- const height = iframe.attr('height')
- const width = iframe.attr('width')
- const ratio = (height / width) * 100
- inner.css('padding-bottom', `${ratio}%`)
- $(value).html(inner).append(caption)
- if (window.viewAjaxCallback) window.viewAjaxCallback()
- }
- })
- })
+ .each((key, value) => {
+ $.ajax({
+ type: 'GET',
+ url: `//www.slideshare.net/api/oembed/2?url=http://www.slideshare.net/${$(value).attr('data-slideshareid')}&format=json`,
+ jsonp: 'callback',
+ dataType: 'jsonp',
+ success (data) {
+ const $html = $(data.html)
+ const iframe = $html.closest('iframe')
+ const caption = $html.closest('div')
+ const inner = $('<div class="inner"></div>').append(iframe)
+ const height = iframe.attr('height')
+ const width = iframe.attr('width')
+ const ratio = (height / width) * 100
+ inner.css('padding-bottom', `${ratio}%`)
+ $(value).html(inner).append(caption)
+ if (window.viewAjaxCallback) window.viewAjaxCallback()
+ }
+ })
+ })
// speakerdeck
view.find('div.speakerdeck.raw').removeClass('raw')
- .each((key, value) => {
- const url = `https://speakerdeck.com/oembed.json?url=https%3A%2F%2Fspeakerdeck.com%2F${encodeURIComponent($(value).attr('data-speakerdeckid'))}`
- // use yql because speakerdeck not support jsonp
- $.ajax({
- url: 'https://query.yahooapis.com/v1/public/yql',
- data: {
- q: `select * from json where url ='${url}'`,
- format: 'json'
- },
- dataType: 'jsonp',
- success (data) {
- if (!data.query || !data.query.results) return
- const json = data.query.results.json
- const html = json.html
- var ratio = json.height / json.width
- $(value).html(html)
- const iframe = $(value).children('iframe')
- const src = iframe.attr('src')
- if (src.indexOf('//') === 0) { iframe.attr('src', `https:${src}`) }
- const inner = $('<div class="inner"></div>').append(iframe)
- const height = iframe.attr('height')
- const width = iframe.attr('width')
- ratio = (height / width) * 100
- inner.css('padding-bottom', `${ratio}%`)
- $(value).html(inner)
- if (window.viewAjaxCallback) window.viewAjaxCallback()
- }
- })
- })
+ .each((key, value) => {
+ const url = `https://speakerdeck.com/${$(value).attr('data-speakerdeckid')}`
+ const inner = $('<a>Speakerdeck</a>')
+ inner.attr('href', url)
+ inner.attr('rel', 'noopener noreferrer')
+ inner.attr('target', '_blank')
+ $(value).append(inner)
+ })
// pdf
view.find('div.pdf.raw').removeClass('raw')
- .each(function (key, value) {
- const url = $(value).attr('data-pdfurl')
- const inner = $('<div></div>')
- $(this).append(inner)
- PDFObject.embed(url, inner, {
- height: '400px'
- })
- })
+ .each(function (key, value) {
+ const url = $(value).attr('data-pdfurl')
+ const inner = $('<div></div>')
+ $(this).append(inner)
+ PDFObject.embed(url, inner, {
+ height: '400px'
+ })
+ })
// syntax highlighting
view.find('code.raw').removeClass('raw')
- .each((key, value) => {
- const langDiv = $(value)
- if (langDiv.length > 0) {
- const reallang = langDiv[0].className.replace(/hljs|wrap/g, '').trim()
- const codeDiv = langDiv.find('.code')
- let code = ''
- if (codeDiv.length > 0) code = codeDiv.html()
- else code = langDiv.html()
- var result
- if (!reallang) {
- result = {
- value: code
- }
- } else if (reallang === 'haskell' || reallang === 'go' || reallang === 'typescript' || reallang === 'jsx' || reallang === 'gherkin') {
- code = S(code).unescapeHTML().s
- result = {
- value: Prism.highlight(code, Prism.languages[reallang])
- }
- } else if (reallang === 'tiddlywiki' || reallang === 'mediawiki') {
- code = S(code).unescapeHTML().s
- result = {
- value: Prism.highlight(code, Prism.languages.wiki)
- }
- } else if (reallang === 'cmake') {
- code = S(code).unescapeHTML().s
- result = {
- value: Prism.highlight(code, Prism.languages.makefile)
- }
- } else {
- code = S(code).unescapeHTML().s
- const languages = hljs.listLanguages()
- if (!languages.includes(reallang)) {
- result = hljs.highlightAuto(code)
- } else {
- result = hljs.highlight(reallang, code)
- }
- }
- if (codeDiv.length > 0) codeDiv.html(result.value)
- else langDiv.html(result.value)
+ .each((key, value) => {
+ const langDiv = $(value)
+ if (langDiv.length > 0) {
+ const reallang = langDiv[0].className.replace(/hljs|wrap/g, '').trim()
+ const codeDiv = langDiv.find('.code')
+ let code = ''
+ if (codeDiv.length > 0) code = codeDiv.html()
+ else code = langDiv.html()
+ var result
+ if (!reallang) {
+ result = {
+ value: code
}
- })
+ } else if (reallang === 'haskell' || reallang === 'go' || reallang === 'typescript' || reallang === 'jsx' || reallang === 'gherkin') {
+ code = S(code).unescapeHTML().s
+ result = {
+ value: Prism.highlight(code, Prism.languages[reallang])
+ }
+ } else if (reallang === 'tiddlywiki' || reallang === 'mediawiki') {
+ code = S(code).unescapeHTML().s
+ result = {
+ value: Prism.highlight(code, Prism.languages.wiki)
+ }
+ } else if (reallang === 'cmake') {
+ code = S(code).unescapeHTML().s
+ result = {
+ value: Prism.highlight(code, Prism.languages.makefile)
+ }
+ } else {
+ code = S(code).unescapeHTML().s
+ const languages = hljs.listLanguages()
+ if (!languages.includes(reallang)) {
+ result = hljs.highlightAuto(code)
+ } else {
+ result = hljs.highlight(reallang, code)
+ }
+ }
+ if (codeDiv.length > 0) codeDiv.html(result.value)
+ else langDiv.html(result.value)
+ }
+ })
// mathjax
const mathjaxdivs = view.find('span.mathjax.raw').removeClass('raw').toArray()
try {
@@ -553,7 +540,7 @@ export function finishView (view) {
} catch (err) {
console.warn(err)
}
- // render title
+ // render title
document.title = renderTitle(view)
}
@@ -589,7 +576,7 @@ export function postProcess (code) {
if (warning && warning.length > 0) {
warning.text(md.metaError)
} else {
- warning = $('<div id="meta-error" class="alert alert-warning">' + md.metaError + '</div>')
+ warning = $(`<div id="meta-error" class="alert alert-warning">${escapeHTML(md.metaError)}</div>`)
result.prepend(warning)
}
}
@@ -613,23 +600,23 @@ window.removeDOMEvents = removeDOMEvents
function generateCleanHTML (view) {
const src = view.clone()
const eles = src.find('*')
- // remove syncscroll parts
+ // remove syncscroll parts
eles.removeClass('part')
src.find('*[class=""]').removeAttr('class')
eles.removeAttr('data-startline data-endline')
src.find("a[href^='#'][smoothhashscroll]").removeAttr('smoothhashscroll')
- // remove gist content
+ // remove gist content
src.find('code[data-gist-id]').children().remove()
- // disable todo list
+ // disable todo list
src.find('input.task-list-item-checkbox').attr('disabled', '')
- // replace emoji image path
+ // replace emoji image path
src.find('img.emoji').each((key, value) => {
let name = $(value).attr('alt')
name = name.substr(1)
name = name.slice(0, name.length - 1)
$(value).attr('src', `https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/images/basic/${name}.png`)
})
- // replace video to iframe
+ // replace video to iframe
src.find('div[data-videoid]').each((key, value) => {
const id = $(value).attr('data-videoid')
const style = $(value).attr('style')
@@ -665,12 +652,12 @@ export function exportToHTML (view) {
const title = renderTitle(ui.area.markdown)
const filename = `${renderFilename(ui.area.markdown)}.html`
const src = generateCleanHTML(view)
- // generate toc
+ // generate toc
const toc = $('#ui-toc').clone()
toc.find('*').removeClass('active').find("a[href^='#'][smoothhashscroll]").removeAttr('smoothhashscroll')
const tocAffix = $('#ui-toc-affix').clone()
tocAffix.find('*').removeClass('active').find("a[href^='#'][smoothhashscroll]").removeAttr('smoothhashscroll')
- // generate html via template
+ // generate html via template
$.get(`${serverurl}/build/html.min.css`, css => {
$.get(`${serverurl}/views/html.hbs`, data => {
const template = window.Handlebars.compile(data)
@@ -685,7 +672,6 @@ export function exportToHTML (view) {
dir: (md && md.meta && md.meta.dir) ? `dir="${md.meta.dir}"` : null
}
const html = template(context)
- // console.log(html);
const blob = new Blob([html], {
type: 'text/html;charset=utf-8'
})
@@ -800,20 +786,20 @@ export function smoothHashScroll () {
const hash = element.hash
if (hash) {
$element.on('click', function (e) {
- // store hash
+ // store hash
const hash = decodeURIComponent(this.hash)
- // escape special characters in jquery selector
+ // escape special characters in jquery selector
const $hash = $(hash.replace(/(:|\.|\[|\]|,)/g, '\\$1'))
- // return if no element been selected
+ // return if no element been selected
if ($hash.length <= 0) return
- // prevent default anchor click behavior
+ // prevent default anchor click behavior
e.preventDefault()
- // animate
+ // animate
$('body, html').stop(true, true).animate({
scrollTop: $hash.offset().top
}, 100, 'linear', () => {
- // when done, add hash to url
- // (default click behaviour)
+ // when done, add hash to url
+ // (default click behaviour)
window.location.hash = hash
})
})
@@ -955,9 +941,6 @@ function highlightRender (code, lang) {
return result.value
}
-import markdownit from 'markdown-it'
-import markdownitContainer from 'markdown-it-container'
-
export let md = markdownit('default', {
html: true,
breaks: true,
@@ -1055,109 +1038,106 @@ md.renderer.rules.fence = (tokens, idx, options, env, self) => {
return `<pre><code${self.renderAttrs(token)}>${highlighted}</code></pre>\n`
}
-/* Defined regex markdown it plugins */
-import Plugin from 'markdown-it-regexp'
-
// youtube
const youtubePlugin = new Plugin(
- // regexp to match
- /{%youtube\s*([\d\D]*?)\s*%}/,
-
- (match, utils) => {
- const videoid = match[1]
- if (!videoid) return
- const div = $('<div class="youtube raw"></div>')
- div.attr('data-videoid', videoid)
- const thumbnailSrc = `//img.youtube.com/vi/${videoid}/hqdefault.jpg`
- const image = `<img src="${thumbnailSrc}" />`
- div.append(image)
- const icon = '<i class="icon fa fa-youtube-play fa-5x"></i>'
- div.append(icon)
- return div[0].outerHTML
- }
+ // regexp to match
+ /{%youtube\s*([\d\D]*?)\s*%}/,
+
+ (match, utils) => {
+ const videoid = match[1]
+ if (!videoid) return
+ const div = $('<div class="youtube raw"></div>')
+ div.attr('data-videoid', videoid)
+ const thumbnailSrc = `//img.youtube.com/vi/${videoid}/hqdefault.jpg`
+ const image = `<img src="${thumbnailSrc}" />`
+ div.append(image)
+ const icon = '<i class="icon fa fa-youtube-play fa-5x"></i>'
+ div.append(icon)
+ return div[0].outerHTML
+ }
)
// vimeo
const vimeoPlugin = new Plugin(
- // regexp to match
- /{%vimeo\s*([\d\D]*?)\s*%}/,
-
- (match, utils) => {
- const videoid = match[1]
- if (!videoid) return
- const div = $('<div class="vimeo raw"></div>')
- div.attr('data-videoid', videoid)
- const icon = '<i class="icon fa fa-vimeo-square fa-5x"></i>'
- div.append(icon)
- return div[0].outerHTML
- }
+ // regexp to match
+ /{%vimeo\s*([\d\D]*?)\s*%}/,
+
+ (match, utils) => {
+ const videoid = match[1]
+ if (!videoid) return
+ const div = $('<div class="vimeo raw"></div>')
+ div.attr('data-videoid', videoid)
+ const icon = '<i class="icon fa fa-vimeo-square fa-5x"></i>'
+ div.append(icon)
+ return div[0].outerHTML
+ }
)
// gist
const gistPlugin = new Plugin(
- // regexp to match
- /{%gist\s*([\d\D]*?)\s*%}/,
+ // regexp to match
+ /{%gist\s*([\d\D]*?)\s*%}/,
- (match, utils) => {
- const gistid = match[1]
- const code = `<code data-gist-id="${gistid}"></code>`
- return code
- }
+ (match, utils) => {
+ const gistid = match[1]
+ const code = `<code data-gist-id="${gistid}"></code>`
+ return code
+ }
)
// TOC
const tocPlugin = new Plugin(
- // regexp to match
- /^\[TOC\]$/i,
+ // regexp to match
+ /^\[TOC\]$/i,
- (match, utils) => '<div class="toc"></div>'
+ (match, utils) => '<div class="toc"></div>'
)
// slideshare
const slidesharePlugin = new Plugin(
- // regexp to match
- /{%slideshare\s*([\d\D]*?)\s*%}/,
-
- (match, utils) => {
- const slideshareid = match[1]
- const div = $('<div class="slideshare raw"></div>')
- div.attr('data-slideshareid', slideshareid)
- return div[0].outerHTML
- }
+ // regexp to match
+ /{%slideshare\s*([\d\D]*?)\s*%}/,
+
+ (match, utils) => {
+ const slideshareid = match[1]
+ const div = $('<div class="slideshare raw"></div>')
+ div.attr('data-slideshareid', slideshareid)
+ return div[0].outerHTML
+ }
)
// speakerdeck
const speakerdeckPlugin = new Plugin(
- // regexp to match
- /{%speakerdeck\s*([\d\D]*?)\s*%}/,
-
- (match, utils) => {
- const speakerdeckid = match[1]
- const div = $('<div class="speakerdeck raw"></div>')
- div.attr('data-speakerdeckid', speakerdeckid)
- return div[0].outerHTML
- }
+ // regexp to match
+ /{%speakerdeck\s*([\d\D]*?)\s*%}/,
+
+ (match, utils) => {
+ const speakerdeckid = match[1]
+ const div = $('<div class="speakerdeck raw"></div>')
+ div.attr('data-speakerdeckid', speakerdeckid)
+ return div[0].outerHTML
+ }
)
// pdf
const pdfPlugin = new Plugin(
- // regexp to match
- /{%pdf\s*([\d\D]*?)\s*%}/,
-
- (match, utils) => {
- const pdfurl = match[1]
- if (!isValidURL(pdfurl)) return match[0]
- const div = $('<div class="pdf raw"></div>')
- div.attr('data-pdfurl', pdfurl)
- return div[0].outerHTML
- }
+ // regexp to match
+ /{%pdf\s*([\d\D]*?)\s*%}/,
+
+ (match, utils) => {
+ const pdfurl = match[1]
+ if (!isValidURL(pdfurl)) return match[0]
+ const div = $('<div class="pdf raw"></div>')
+ div.attr('data-pdfurl', pdfurl)
+ return div[0].outerHTML
+ }
)
const emojijsPlugin = new Plugin(
- // regexp to match emoji shortcodes :something:
- // We generate an universal regex that guaranteed only contains the
- // emojies we have available. This should prevent all false-positives
- new RegExp(':(' + window.emojify.emojiNames.map((item) => { return RegExp.escape(item) }).join('|') + '):', 'i'),
-
- (match, utils) => {
- const emoji = match[1].toLowerCase()
- const div = $(`<img class="emoji" src="${serverurl}/build/emojify.js/dist/images/basic/${emoji}.png"></img>`)
- return div[0].outerHTML
- }
+ // regexp to match emoji shortcodes :something:
+ // We generate an universal regex that guaranteed only contains the
+ // emojies we have available. This should prevent all false-positives
+ new RegExp(':(' + window.emojify.emojiNames.map((item) => { return RegExp.escape(item) }).join('|') + '):', 'i'),
+
+ (match, utils) => {
+ const emoji = match[1].toLowerCase()
+ const div = $(`<img class="emoji" alt=":${emoji}:" src="${serverurl}/build/emojify.js/dist/images/basic/${emoji}.png"></img>`)
+ return div[0].outerHTML
+ }
)
// yaml meta, from https://github.com/eugeneware/remarkable-meta
diff --git a/public/js/history.js b/public/js/history.js
index 6007bef4..e0154185 100644
--- a/public/js/history.js
+++ b/public/js/history.js
@@ -1,9 +1,11 @@
/* eslint-env browser, jquery */
+/* eslint no-console: ["error", { allow: ["warn", "error", "debug"] }] */
/* global serverurl, moment */
import store from 'store'
import S from 'string'
import LZString from 'lz-string'
+import url from 'wurl'
import {
checkNoteIdValid,
@@ -11,11 +13,11 @@ import {
} from './utils'
import {
- checkIfAuth
+ checkIfAuth
} from './lib/common/login'
import {
- urlpath
+ urlpath
} from './lib/config'
window.migrateHistoryFromTempCallback = null
@@ -23,44 +25,44 @@ window.migrateHistoryFromTempCallback = null
migrateHistoryFromTemp()
function migrateHistoryFromTemp () {
- if (window.url('#tempid')) {
+ if (url('#tempid')) {
$.get(`${serverurl}/temp`, {
- tempid: window.url('#tempid')
+ tempid: url('#tempid')
})
- .done(data => {
- if (data && data.temp) {
- getStorageHistory(olddata => {
- if (!olddata || olddata.length === 0) {
- saveHistoryToStorage(JSON.parse(data.temp))
+ .done(data => {
+ if (data && data.temp) {
+ getStorageHistory(olddata => {
+ if (!olddata || olddata.length === 0) {
+ saveHistoryToStorage(JSON.parse(data.temp))
+ }
+ })
+ }
+ })
+ .always(() => {
+ let hash = location.hash.split('#')[1]
+ hash = hash.split('&')
+ for (let i = 0; i < hash.length; i++) {
+ if (hash[i].indexOf('tempid') === 0) {
+ hash.splice(i, 1)
+ i--
}
- })
- }
- })
- .always(() => {
- let hash = location.hash.split('#')[1]
- hash = hash.split('&')
- for (let i = 0; i < hash.length; i++) {
- if (hash[i].indexOf('tempid') === 0) {
- hash.splice(i, 1)
- i--
}
- }
- hash = hash.join('&')
- location.hash = hash
- if (window.migrateHistoryFromTempCallback) { window.migrateHistoryFromTempCallback() }
- })
+ hash = hash.join('&')
+ location.hash = hash
+ if (window.migrateHistoryFromTempCallback) { window.migrateHistoryFromTempCallback() }
+ })
}
}
export function saveHistory (notehistory) {
checkIfAuth(
- () => {
- saveHistoryToServer(notehistory)
- },
- () => {
- saveHistoryToStorage(notehistory)
- }
- )
+ () => {
+ saveHistoryToServer(notehistory)
+ },
+ () => {
+ saveHistoryToStorage(notehistory)
+ }
+ )
}
function saveHistoryToStorage (notehistory) {
@@ -79,9 +81,9 @@ export function saveStorageHistoryToServer (callback) {
$.post(`${serverurl}/history`, {
history: data
})
- .done(data => {
- callback(data)
- })
+ .done(data => {
+ callback(data)
+ })
}
}
@@ -108,7 +110,7 @@ export function clearDuplicatedHistory (notehistory) {
}
function addHistory (id, text, time, tags, pinned, notehistory) {
- // only add when note id exists
+ // only add when note id exists
if (id) {
notehistory.push({
id,
@@ -134,14 +136,14 @@ export function removeHistory (id, notehistory) {
// used for inner
export function writeHistory (title, tags) {
checkIfAuth(
- () => {
- // no need to do this anymore, this will count from server-side
- // writeHistoryToServer(title, tags);
- },
- () => {
- writeHistoryToStorage(title, tags)
- }
- )
+ () => {
+ // no need to do this anymore, this will count from server-side
+ // writeHistoryToServer(title, tags);
+ },
+ () => {
+ writeHistoryToStorage(title, tags)
+ }
+ )
}
function writeHistoryToStorage (title, tags) {
@@ -162,7 +164,7 @@ if (!Array.isArray) {
}
function renderHistory (title, tags) {
- // console.debug(tags);
+ // console.debug(tags);
const id = urlpath ? location.pathname.slice(urlpath.length + 1, location.pathname.length).split('/')[1] : location.pathname.split('/')[1]
return {
id,
@@ -174,7 +176,7 @@ function renderHistory (title, tags) {
function generateHistory (title, tags, notehistory) {
const info = renderHistory(title, tags)
- // keep any pinned data
+ // keep any pinned data
let pinned = false
for (let i = 0; i < notehistory.length; i++) {
if (notehistory[i].id === info.id && notehistory[i].pinned) {
@@ -191,25 +193,25 @@ function generateHistory (title, tags, notehistory) {
// used for outer
export function getHistory (callback) {
checkIfAuth(
- () => {
- getServerHistory(callback)
- },
- () => {
- getStorageHistory(callback)
- }
- )
+ () => {
+ getServerHistory(callback)
+ },
+ () => {
+ getStorageHistory(callback)
+ }
+ )
}
function getServerHistory (callback) {
$.get(`${serverurl}/history`)
- .done(data => {
- if (data.history) {
- callback(data.history)
- }
- })
- .fail((xhr, status, error) => {
- console.error(xhr.responseText)
- })
+ .done(data => {
+ if (data.history) {
+ callback(data.history)
+ }
+ })
+ .fail((xhr, status, error) => {
+ console.error(xhr.responseText)
+ })
}
export function getStorageHistory (callback) {
@@ -224,25 +226,25 @@ export function getStorageHistory (callback) {
export function parseHistory (list, callback) {
checkIfAuth(
- () => {
- parseServerToHistory(list, callback)
- },
- () => {
- parseStorageToHistory(list, callback)
- }
- )
+ () => {
+ parseServerToHistory(list, callback)
+ },
+ () => {
+ parseStorageToHistory(list, callback)
+ }
+ )
}
export function parseServerToHistory (list, callback) {
$.get(`${serverurl}/history`)
- .done(data => {
- if (data.history) {
- parseToHistory(list, data.history, callback)
- }
- })
- .fail((xhr, status, error) => {
- console.error(xhr.responseText)
- })
+ .done(data => {
+ if (data.history) {
+ parseToHistory(list, data.history, callback)
+ }
+ })
+ .fail((xhr, status, error) => {
+ console.error(xhr.responseText)
+ })
}
export function parseStorageToHistory (list, callback) {
@@ -268,15 +270,15 @@ function parseToHistory (list, notehistory, callback) {
} catch (err) {
console.error(err)
}
- // parse time to timestamp and fromNow
+ // parse time to timestamp and fromNow
const timestamp = (typeof notehistory[i].time === 'number' ? moment(notehistory[i].time) : moment(notehistory[i].time, 'MMMM Do YYYY, h:mm:ss a'))
notehistory[i].timestamp = timestamp.valueOf()
notehistory[i].fromNow = timestamp.fromNow()
notehistory[i].time = timestamp.format('llll')
- // prevent XSS
+ // prevent XSS
notehistory[i].text = S(notehistory[i].text).escapeHTML().s
notehistory[i].tags = (notehistory[i].tags && notehistory[i].tags.length > 0) ? S(notehistory[i].tags).escapeHTML().s.split(',') : []
- // add to list
+ // add to list
if (notehistory[i].id && list.get('id', notehistory[i].id).length === 0) { list.add(notehistory[i]) }
}
}
diff --git a/public/js/index.js b/public/js/index.js
index a845b5d3..6ba174a5 100644
--- a/public/js/index.js
+++ b/public/js/index.js
@@ -1,16 +1,7 @@
/* eslint-env browser, jquery */
-/* global CodeMirror, Cookies, moment, editor, ui, Spinner,
- modeType, Idle, serverurl, key, gapi, Dropbox, FilePicker
- ot, MediaUploader, hex2rgb, num_loaded, Visibility */
-
-require('../vendor/showup/showup')
-
-require('../css/index.css')
-require('../css/extra.css')
-require('../css/slide-preview.css')
-require('../css/site.css')
-
-require('highlight.js/styles/github-gist.css')
+/* eslint no-console: ["error", { allow: ["warn", "error", "debug"] }] */
+/* global CodeMirror, Cookies, moment, Spinner, Idle, serverurl,
+ key, Dropbox, ot, hex2rgb, Visibility */
import TurndownService from 'turndown'
@@ -18,61 +9,62 @@ import { saveAs } from 'file-saver'
import randomColor from 'randomcolor'
import store from 'store'
import hljs from 'highlight.js'
+import url from 'wurl'
import _ from 'lodash'
import List from 'list.js'
import {
- checkLoginStateChanged,
- setloginStateChangeEvent
+ checkLoginStateChanged,
+ setloginStateChangeEvent
} from './lib/common/login'
import {
- debug,
- DROPBOX_APP_KEY,
- noteid,
- noteurl,
- urlpath,
- version
+ debug,
+ DROPBOX_APP_KEY,
+ noteid,
+ noteurl,
+ urlpath,
+ version
} from './lib/config'
import {
- autoLinkify,
- deduplicatedHeaderId,
- exportToHTML,
- exportToRawHTML,
- removeDOMEvents,
- finishView,
- generateToc,
- isValidURL,
- md,
- parseMeta,
- postProcess,
- renderFilename,
- renderTOC,
- renderTags,
- renderTitle,
- scrollToHash,
- smoothHashScroll,
- updateLastChange,
- updateLastChangeUser,
- updateOwner
+ autoLinkify,
+ deduplicatedHeaderId,
+ exportToHTML,
+ exportToRawHTML,
+ removeDOMEvents,
+ finishView,
+ generateToc,
+ isValidURL,
+ md,
+ parseMeta,
+ postProcess,
+ renderFilename,
+ renderTOC,
+ renderTags,
+ renderTitle,
+ scrollToHash,
+ smoothHashScroll,
+ updateLastChange,
+ updateLastChangeUser,
+ updateOwner
} from './extra'
import {
- clearMap,
- setupSyncAreas,
- syncScrollToEdit,
- syncScrollToView
+ clearMap,
+ setupSyncAreas,
+ syncScrollToEdit,
+ syncScrollToView
} from './lib/syncscroll'
import {
- writeHistory,
- deleteServerHistory,
- getHistory,
- saveHistory,
- removeHistory
+ writeHistory,
+ deleteServerHistory,
+ getHistory,
+ saveHistory,
+ removeHistory
} from './history'
import { preventXSS } from './render'
@@ -83,6 +75,15 @@ import getUIElements from './lib/editor/ui-elements'
import modeType from './lib/modeType'
import appState from './lib/appState'
+require('../vendor/showup/showup')
+
+require('../css/index.css')
+require('../css/extra.css')
+require('../css/slide-preview.css')
+require('../css/site.css')
+
+require('highlight.js/styles/github-gist.css')
+
var defaultTextHeight = 20
var viewportMargin = 20
var defaultEditorMode = 'gfm'
@@ -305,7 +306,6 @@ var editor = editorInstance.init(textit)
// FIXME: global referncing in jquery-textcomplete patch
window.editor = editor
-var inlineAttach = inlineAttachment.editors.codemirror4.attach(editor)
defaultTextHeight = parseInt($('.CodeMirror').css('line-height'))
// initalize ui reference
@@ -419,7 +419,7 @@ Visibility.change(function (e, state) {
$(document).ready(function () {
idle.checkAway()
checkResponsive()
- // if in smaller screen, we don't need advanced scrollbar
+ // if in smaller screen, we don't need advanced scrollbar
var scrollbarStyle
if (visibleXS) {
scrollbarStyle = 'native'
@@ -439,12 +439,12 @@ $(document).ready(function () {
if (isTouchDevice) {
/* bind events */
$(document)
- .on('focus', 'textarea, input', function () {
- $body.addClass('fixfixed')
- })
- .on('blur', 'textarea, input', function () {
- $body.removeClass('fixfixed')
- })
+ .on('focus', 'textarea, input', function () {
+ $body.addClass('fixfixed')
+ })
+ .on('blur', 'textarea, input', function () {
+ $body.removeClass('fixfixed')
+ })
}
// Re-enable nightmode
@@ -669,14 +669,14 @@ function checkEditorScrollbarInner () {
}
function checkTocStyle () {
- // toc right
+ // toc right
var paddingRight = parseFloat(ui.area.markdown.css('padding-right'))
var right = ($(window).width() - (ui.area.markdown.offset().left + ui.area.markdown.outerWidth() - paddingRight))
ui.toc.toc.css('right', right + 'px')
- // affix toc left
+ // affix toc left
var newbool
var rightMargin = (ui.area.markdown.parent().outerWidth() - ui.area.markdown.outerWidth()) / 2
- // for ipad or wider device
+ // for ipad or wider device
if (rightMargin >= 133) {
newbool = true
var affixLeftMargin = (ui.toc.affix.outerWidth() - ui.toc.affix.width()) / 2
@@ -763,7 +763,7 @@ function toggleMode () {
var lastMode = null
function changeMode (type) {
- // lock navbar to prevent it hide after changeMode
+ // lock navbar to prevent it hide after changeMode
lockNavbar()
saveInfo()
if (type) {
@@ -802,7 +802,6 @@ function changeMode (type) {
editor.getInputField().blur()
}
if (appState.currentMode === modeType.edit || appState.currentMode === modeType.both) {
- ui.toolbar.uploadImage.fadeIn()
// add and update status bar
if (!editorInstance.statusBar) {
editorInstance.addStatusBar()
@@ -815,8 +814,6 @@ function changeMode (type) {
// work around foldGutter might not init properly
editor.setOption('foldGutter', false)
editor.setOption('foldGutter', true)
- } else {
- ui.toolbar.uploadImage.fadeOut()
}
if (appState.currentMode !== modeType.edit) {
$(document.body).css('background-color', 'white')
@@ -824,7 +821,7 @@ function changeMode (type) {
} else {
$(document.body).css('background-color', ui.area.codemirror.css('background-color'))
}
- // check resizable editor style
+ // check resizable editor style
if (appState.currentMode === modeType.both) {
if (lastEditorWidth > 0) {
ui.area.edit.css('width', lastEditorWidth + 'px')
@@ -902,13 +899,13 @@ function showMessageModal (title, header, href, text, success) {
// check if dropbox app key is set and load scripts
if (DROPBOX_APP_KEY) {
$('<script>')
- .attr('type', 'text/javascript')
- .attr('src', 'https://www.dropbox.com/static/api/2/dropins.js')
- .attr('id', 'dropboxjs')
- .attr('data-app-key', DROPBOX_APP_KEY)
- .prop('async', true)
- .prop('defer', true)
- .appendTo('body')
+ .attr('type', 'text/javascript')
+ .attr('src', 'https://www.dropbox.com/static/api/2/dropins.js')
+ .attr('id', 'dropboxjs')
+ .attr('data-app-key', DROPBOX_APP_KEY)
+ .prop('async', true)
+ .prop('defer', true)
+ .appendTo('body')
} else {
ui.toolbar.import.dropbox.hide()
ui.toolbar.export.dropbox.hide()
@@ -968,35 +965,35 @@ ui.toolbar.export.gist.attr('href', noteurl + '/gist')
ui.toolbar.export.snippet.click(function () {
ui.spinner.show()
$.get(serverurl + '/auth/gitlab/callback/' + noteid + '/projects')
- .done(function (data) {
- $('#snippetExportModalAccessToken').val(data.accesstoken)
- $('#snippetExportModalBaseURL').val(data.baseURL)
- $('#snippetExportModalVersion').val(data.version)
- $('#snippetExportModalLoading').hide()
- $('#snippetExportModal').modal('toggle')
- $('#snippetExportModalProjects').find('option').remove().end().append('<option value="init" selected="selected" disabled="disabled">Select From Available Projects</option>')
- if (data.projects) {
- data.projects.sort(function (a, b) {
- return (a.path_with_namespace < b.path_with_namespace) ? -1 : ((a.path_with_namespace > b.path_with_namespace) ? 1 : 0)
- })
- data.projects.forEach(function (project) {
- if (!project.snippets_enabled ||
+ .done(function (data) {
+ $('#snippetExportModalAccessToken').val(data.accesstoken)
+ $('#snippetExportModalBaseURL').val(data.baseURL)
+ $('#snippetExportModalVersion').val(data.version)
+ $('#snippetExportModalLoading').hide()
+ $('#snippetExportModal').modal('toggle')
+ $('#snippetExportModalProjects').find('option').remove().end().append('<option value="init" selected="selected" disabled="disabled">Select From Available Projects</option>')
+ if (data.projects) {
+ data.projects.sort(function (a, b) {
+ return (a.path_with_namespace < b.path_with_namespace) ? -1 : ((a.path_with_namespace > b.path_with_namespace) ? 1 : 0)
+ })
+ data.projects.forEach(function (project) {
+ if (!project.snippets_enabled ||
(project.permissions.project_access === null && project.permissions.group_access === null) ||
(project.permissions.project_access !== null && project.permissions.project_access.access_level < 20)) {
- return
- }
- $('<option>').val(project.id).text(project.path_with_namespace).appendTo('#snippetExportModalProjects')
- })
- $('#snippetExportModalProjects').prop('disabled', false)
+ return
}
- $('#snippetExportModalLoading').hide()
- })
- .fail(function (data) {
- showMessageModal('<i class="fa fa-gitlab"></i> Import from Snippet', 'Unable to fetch gitlab parameters :(', '', '', false)
- })
- .always(function () {
- ui.spinner.hide()
+ $('<option>').val(project.id).text(project.path_with_namespace).appendTo('#snippetExportModalProjects')
})
+ $('#snippetExportModalProjects').prop('disabled', false)
+ }
+ $('#snippetExportModalLoading').hide()
+ })
+ .fail(function (data) {
+ showMessageModal('<i class="fa fa-gitlab"></i> Import from Snippet', 'Unable to fetch gitlab parameters :(', '', '', false)
+ })
+ .always(function () {
+ ui.spinner.hide()
+ })
})
// import from dropbox
ui.toolbar.import.dropbox.click(function () {
@@ -1014,54 +1011,43 @@ ui.toolbar.import.dropbox.click(function () {
})
// import from gist
ui.toolbar.import.gist.click(function () {
- // na
+ // na
})
// import from snippet
ui.toolbar.import.snippet.click(function () {
ui.spinner.show()
$.get(serverurl + '/auth/gitlab/callback/' + noteid + '/projects')
- .done(function (data) {
- $('#snippetImportModalAccessToken').val(data.accesstoken)
- $('#snippetImportModalBaseURL').val(data.baseURL)
- $('#snippetImportModalVersion').val(data.version)
- $('#snippetImportModalContent').prop('disabled', false)
- $('#snippetImportModalConfirm').prop('disabled', false)
- $('#snippetImportModalLoading').hide()
- $('#snippetImportModal').modal('toggle')
- $('#snippetImportModalProjects').find('option').remove().end().append('<option value="init" selected="selected" disabled="disabled">Select From Available Projects</option>')
- if (data.projects) {
- data.projects.sort(function (a, b) {
- return (a.path_with_namespace < b.path_with_namespace) ? -1 : ((a.path_with_namespace > b.path_with_namespace) ? 1 : 0)
- })
- data.projects.forEach(function (project) {
- if (!project.snippets_enabled ||
+ .done(function (data) {
+ $('#snippetImportModalAccessToken').val(data.accesstoken)
+ $('#snippetImportModalBaseURL').val(data.baseURL)
+ $('#snippetImportModalVersion').val(data.version)
+ $('#snippetImportModalContent').prop('disabled', false)
+ $('#snippetImportModalConfirm').prop('disabled', false)
+ $('#snippetImportModalLoading').hide()
+ $('#snippetImportModal').modal('toggle')
+ $('#snippetImportModalProjects').find('option').remove().end().append('<option value="init" selected="selected" disabled="disabled">Select From Available Projects</option>')
+ if (data.projects) {
+ data.projects.sort(function (a, b) {
+ return (a.path_with_namespace < b.path_with_namespace) ? -1 : ((a.path_with_namespace > b.path_with_namespace) ? 1 : 0)
+ })
+ data.projects.forEach(function (project) {
+ if (!project.snippets_enabled ||
(project.permissions.project_access === null && project.permissions.group_access === null) ||
(project.permissions.project_access !== null && project.permissions.project_access.access_level < 20)) {
- return
- }
- $('<option>').val(project.id).text(project.path_with_namespace).appendTo('#snippetImportModalProjects')
- })
- $('#snippetImportModalProjects').prop('disabled', false)
+ return
}
- $('#snippetImportModalLoading').hide()
- })
- .fail(function (data) {
- showMessageModal('<i class="fa fa-gitlab"></i> Import from Snippet', 'Unable to fetch gitlab parameters :(', '', '', false)
+ $('<option>').val(project.id).text(project.path_with_namespace).appendTo('#snippetImportModalProjects')
})
- .always(function () {
- ui.spinner.hide()
- })
-})
-// import from clipboard
-ui.toolbar.import.clipboard.click(function () {
- // na
-})
-// upload image
-ui.toolbar.uploadImage.bind('change', function (e) {
- var files = e.target.files || e.dataTransfer.files
- e.dataTransfer = {}
- e.dataTransfer.files = files
- inlineAttach.onDrop(e)
+ $('#snippetImportModalProjects').prop('disabled', false)
+ }
+ $('#snippetImportModalLoading').hide()
+ })
+ .fail(function (data) {
+ showMessageModal('<i class="fa fa-gitlab"></i> Import from Snippet', 'Unable to fetch gitlab parameters :(', '', '', false)
+ })
+ .always(function () {
+ ui.spinner.hide()
+ })
})
// toc
ui.toc.dropdown.click(function (e) {
@@ -1084,18 +1070,19 @@ var revision = null
var revisionTime = null
ui.modal.revision.on('show.bs.modal', function (e) {
$.get(noteurl + '/revision')
- .done(function (data) {
- parseRevisions(data.revision)
- initRevisionViewer()
- })
- .fail(function (err) {
- if (debug) {
- console.log(err)
- }
- })
- .always(function () {
- // na
- })
+ .done(function (data) {
+ parseRevisions(data.revision)
+ initRevisionViewer()
+ })
+ .fail(function (err) {
+ if (debug) {
+ // eslint-disable-next-line no-console
+ console.debug(err)
+ }
+ })
+ .always(function () {
+ // na
+ })
})
function checkRevisionViewer () {
if (revisionViewer) {
@@ -1138,74 +1125,75 @@ function parseRevisions (_revisions) {
function selectRevision (time) {
if (time === revisionTime) return
$.get(noteurl + '/revision/' + time)
- .done(function (data) {
- revision = data
- revisionTime = time
- var lastScrollInfo = revisionViewer.getScrollInfo()
- revisionList.children().removeClass('active')
- revisionList.find('[data-revision-time="' + time + '"]').addClass('active')
- var content = revision.content
- revisionViewer.setValue(content)
- revisionViewer.scrollTo(null, lastScrollInfo.top)
- revisionInsert = []
- revisionDelete = []
- // mark the text which have been insert or delete
- if (revision.patch.length > 0) {
- var bias = 0
- for (var j = 0; j < revision.patch.length; j++) {
- var patch = revision.patch[j]
- var currIndex = patch.start1 + bias
- for (var i = 0; i < patch.diffs.length; i++) {
- var diff = patch.diffs[i]
- // ignore if diff only contains line breaks
- if ((diff[1].match(/\n/g) || []).length === diff[1].length) continue
- var prePos
- var postPos
- switch (diff[0]) {
- case 0: // retain
- currIndex += diff[1].length
- break
- case 1: // insert
- prePos = revisionViewer.posFromIndex(currIndex)
- postPos = revisionViewer.posFromIndex(currIndex + diff[1].length)
- revisionInsert.push({
- from: prePos,
- to: postPos
- })
- revisionViewer.markText(prePos, postPos, {
- css: 'background-color: rgba(230,255,230,0.7); text-decoration: underline;'
- })
- currIndex += diff[1].length
- break
- case -1: // delete
- prePos = revisionViewer.posFromIndex(currIndex)
- revisionViewer.replaceRange(diff[1], prePos)
- postPos = revisionViewer.posFromIndex(currIndex + diff[1].length)
- revisionDelete.push({
- from: prePos,
- to: postPos
- })
- revisionViewer.markText(prePos, postPos, {
- css: 'background-color: rgba(255,230,230,0.7); text-decoration: line-through;'
- })
- bias += diff[1].length
- currIndex += diff[1].length
- break
- }
- }
+ .done(function (data) {
+ revision = data
+ revisionTime = time
+ var lastScrollInfo = revisionViewer.getScrollInfo()
+ revisionList.children().removeClass('active')
+ revisionList.find('[data-revision-time="' + time + '"]').addClass('active')
+ var content = revision.content
+ revisionViewer.setValue(content)
+ revisionViewer.scrollTo(null, lastScrollInfo.top)
+ revisionInsert = []
+ revisionDelete = []
+ // mark the text which have been insert or delete
+ if (revision.patch.length > 0) {
+ var bias = 0
+ for (var j = 0; j < revision.patch.length; j++) {
+ var patch = revision.patch[j]
+ var currIndex = patch.start1 + bias
+ for (var i = 0; i < patch.diffs.length; i++) {
+ var diff = patch.diffs[i]
+ // ignore if diff only contains line breaks
+ if ((diff[1].match(/\n/g) || []).length === diff[1].length) continue
+ var prePos
+ var postPos
+ switch (diff[0]) {
+ case 0: // retain
+ currIndex += diff[1].length
+ break
+ case 1: // insert
+ prePos = revisionViewer.posFromIndex(currIndex)
+ postPos = revisionViewer.posFromIndex(currIndex + diff[1].length)
+ revisionInsert.push({
+ from: prePos,
+ to: postPos
+ })
+ revisionViewer.markText(prePos, postPos, {
+ css: 'background-color: rgba(230,255,230,0.7); text-decoration: underline;'
+ })
+ currIndex += diff[1].length
+ break
+ case -1: // delete
+ prePos = revisionViewer.posFromIndex(currIndex)
+ revisionViewer.replaceRange(diff[1], prePos)
+ postPos = revisionViewer.posFromIndex(currIndex + diff[1].length)
+ revisionDelete.push({
+ from: prePos,
+ to: postPos
+ })
+ revisionViewer.markText(prePos, postPos, {
+ css: 'background-color: rgba(255,230,230,0.7); text-decoration: line-through;'
+ })
+ bias += diff[1].length
+ currIndex += diff[1].length
+ break
}
}
- revisionInsertAnnotation.update(revisionInsert)
- revisionDeleteAnnotation.update(revisionDelete)
- })
- .fail(function (err) {
- if (debug) {
- console.log(err)
- }
- })
- .always(function () {
- // na
- })
+ }
+ }
+ revisionInsertAnnotation.update(revisionInsert)
+ revisionDeleteAnnotation.update(revisionDelete)
+ })
+ .fail(function (err) {
+ if (debug) {
+ // eslint-disable-next-line no-console
+ console.debug(err)
+ }
+ })
+ .always(function () {
+ // na
+ })
}
function initRevisionViewer () {
if (revisionViewer) return
@@ -1250,22 +1238,23 @@ ui.modal.snippetImportProjects.change(function () {
$('#snippetImportModalLoading').show()
$('#snippetImportModalContent').val('/projects/' + project)
$.get(baseURL + '/api/' + version + '/projects/' + project + '/snippets?access_token=' + accesstoken)
- .done(function (data) {
- $('#snippetImportModalSnippets').find('option').remove().end().append('<option value="init" selected="selected" disabled="disabled">Select From Available Snippets</option>')
- data.forEach(function (snippet) {
- $('<option>').val(snippet.id).text(snippet.title).appendTo($('#snippetImportModalSnippets'))
- })
- $('#snippetImportModalLoading').hide()
- $('#snippetImportModalSnippets').prop('disabled', false)
- })
- .fail(function (err) {
- if (debug) {
- console.log(err)
- }
- })
- .always(function () {
- // na
- })
+ .done(function (data) {
+ $('#snippetImportModalSnippets').find('option').remove().end().append('<option value="init" selected="selected" disabled="disabled">Select From Available Snippets</option>')
+ data.forEach(function (snippet) {
+ $('<option>').val(snippet.id).text(snippet.title).appendTo($('#snippetImportModalSnippets'))
+ })
+ $('#snippetImportModalLoading').hide()
+ $('#snippetImportModalSnippets').prop('disabled', false)
+ })
+ .fail(function (err) {
+ if (debug) {
+ // eslint-disable-next-line no-console
+ console.debug(err)
+ }
+ })
+ .always(function () {
+ // na
+ })
})
// snippet snippets
ui.modal.snippetImportSnippets.change(function () {
@@ -1325,8 +1314,8 @@ function generateScrollspy () {
ui.toc.affix.hide()
ui.toc.toc.show()
}
- // $(document.body).scroll();
- // ui.area.view.scroll();
+ // $(document.body).scroll();
+ // ui.area.view.scroll();
}
function updateScrollspy () {
@@ -1336,10 +1325,10 @@ function updateScrollspy () {
headerMap.push($(headers[i]).offset().top - parseInt($(headers[i]).css('margin-top')))
}
applyScrollspyActive($(window).scrollTop(), headerMap, headers,
- $('.scrollspy-body'), 0)
+ $('.scrollspy-body'), 0)
var offset = ui.area.view.scrollTop() - ui.area.view.offset().top
applyScrollspyActive(ui.area.view.scrollTop(), headerMap, headers,
- $('.scrollspy-view'), offset - 10)
+ $('.scrollspy-view'), offset - 10)
}
function applyScrollspyActive (top, headerMap, headers, target, offset) {
@@ -1389,32 +1378,32 @@ $('#gistImportModalConfirm').click(function () {
if (!isValidURL(gisturl)) {
showMessageModal('<i class="fa fa-github"></i> Import from Gist', 'Not a valid URL :(', '', '', false)
} else {
- var hostname = window.url('hostname', gisturl)
+ var hostname = url('hostname', gisturl)
if (hostname !== 'gist.github.com') {
showMessageModal('<i class="fa fa-github"></i> Import from Gist', 'Not a valid Gist URL :(', '', '', false)
} else {
ui.spinner.show()
- $.get('https://api.github.com/gists/' + window.url('-1', gisturl))
- .done(function (data) {
- if (data.files) {
- var contents = ''
- Object.keys(data.files).forEach(function (key) {
- contents += key
- contents += '\n---\n'
- contents += data.files[key].content
- contents += '\n\n'
- })
- replaceAll(contents)
- } else {
- showMessageModal('<i class="fa fa-github"></i> Import from Gist', 'Unable to fetch gist files :(', '', '', false)
- }
- })
- .fail(function (data) {
- showMessageModal('<i class="fa fa-github"></i> Import from Gist', 'Not a valid Gist URL :(', '', JSON.stringify(data), false)
- })
- .always(function () {
- ui.spinner.hide()
- })
+ $.get('https://api.github.com/gists/' + url('-1', gisturl))
+ .done(function (data) {
+ if (data.files) {
+ var contents = ''
+ Object.keys(data.files).forEach(function (key) {
+ contents += key
+ contents += '\n---\n'
+ contents += data.files[key].content
+ contents += '\n\n'
+ })
+ replaceAll(contents)
+ } else {
+ showMessageModal('<i class="fa fa-github"></i> Import from Gist', 'Unable to fetch gist files :(', '', '', false)
+ }
+ })
+ .fail(function (data) {
+ showMessageModal('<i class="fa fa-github"></i> Import from Gist', 'Not a valid Gist URL :(', '', JSON.stringify(data), false)
+ })
+ .always(function () {
+ ui.spinner.hide()
+ })
}
}
})
@@ -1438,34 +1427,34 @@ $('#snippetImportModalConfirm').click(function () {
var accessToken = '?access_token=' + $('#snippetImportModalAccessToken').val()
var fullURL = $('#snippetImportModalBaseURL').val() + '/api/' + $('#snippetImportModalVersion').val() + snippeturl
$.get(fullURL + accessToken)
- .done(function (data) {
- var content = '# ' + (data.title || 'Snippet Import')
- var fileInfo = data.file_name.split('.')
- fileInfo[1] = (fileInfo[1]) ? fileInfo[1] : 'md'
- $.get(fullURL + '/raw' + accessToken)
- .done(function (raw) {
- if (raw) {
- content += '\n\n'
- if (fileInfo[1] !== 'md') {
- content += '```' + fileTypes[fileInfo[1]] + '\n'
- }
- content += raw
- if (fileInfo[1] !== 'md') {
- content += '\n```'
- }
- replaceAll(content)
- }
- })
- .fail(function (data) {
- showMessageModal('<i class="fa fa-gitlab"></i> Import from Snippet', 'Not a valid Snippet URL :(', '', JSON.stringify(data), false)
- })
- .always(function () {
- ui.spinner.hide()
- })
- })
- .fail(function (data) {
- showMessageModal('<i class="fa fa-gitlab"></i> Import from Snippet', 'Not a valid Snippet URL :(', '', JSON.stringify(data), false)
- })
+ .done(function (data) {
+ var content = '# ' + (data.title || 'Snippet Import')
+ var fileInfo = data.file_name.split('.')
+ fileInfo[1] = (fileInfo[1]) ? fileInfo[1] : 'md'
+ $.get(fullURL + '/raw' + accessToken)
+ .done(function (raw) {
+ if (raw) {
+ content += '\n\n'
+ if (fileInfo[1] !== 'md') {
+ content += '```' + fileTypes[fileInfo[1]] + '\n'
+ }
+ content += raw
+ if (fileInfo[1] !== 'md') {
+ content += '\n```'
+ }
+ replaceAll(content)
+ }
+ })
+ .fail(function (data) {
+ showMessageModal('<i class="fa fa-gitlab"></i> Import from Snippet', 'Not a valid Snippet URL :(', '', JSON.stringify(data), false)
+ })
+ .always(function () {
+ ui.spinner.hide()
+ })
+ })
+ .fail(function (data) {
+ showMessageModal('<i class="fa fa-gitlab"></i> Import from Snippet', 'Not a valid Snippet URL :(', '', JSON.stringify(data), false)
+ })
}
})
@@ -1487,14 +1476,14 @@ $('#snippetExportModalConfirm').click(function () {
$('#snippetExportModalLoading').show()
var fullURL = baseURL + '/api/' + version + '/projects/' + $('#snippetExportModalProjects').val() + '/snippets?access_token=' + accesstoken
$.post(fullURL
- , data
- , function (ret) {
- $('#snippetExportModalLoading').hide()
- $('#snippetExportModal').modal('hide')
- var redirect = baseURL + '/' + $("#snippetExportModalProjects option[value='" + $('#snippetExportModalProjects').val() + "']").text() + '/snippets/' + ret.id
- showMessageModal('<i class="fa fa-gitlab"></i> Export to Snippet', 'Export Successful!', redirect, 'View Snippet Here', true)
- }
- )
+ , data
+ , function (ret) {
+ $('#snippetExportModalLoading').hide()
+ $('#snippetExportModal').modal('hide')
+ var redirect = baseURL + '/' + $("#snippetExportModalProjects option[value='" + $('#snippetExportModalProjects').val() + "']").text() + '/snippets/' + ret.id
+ showMessageModal('<i class="fa fa-gitlab"></i> Export to Snippet', 'Export Successful!', redirect, 'View Snippet Here', true)
+ }
+ )
})
function parseToEditor (data) {
@@ -1518,7 +1507,7 @@ function replaceAll (data) {
}
function importFromUrl (url) {
- // console.log(url);
+ // console.debug(url);
if (!url) return
if (!isValidURL(url)) {
showMessageModal('<i class="fa fa-cloud-download"></i> Import from URL', 'Not a valid URL :(', '', '', false)
@@ -1756,7 +1745,7 @@ socket.on('disconnect', function (data) {
}
})
socket.on('reconnect', function (data) {
- // sync back any change in offline
+ // sync back any change in offline
emitUserStatus(true)
cursorActivity(editor)
socket.emit('online users')
@@ -1783,7 +1772,7 @@ var authorship = []
var authorMarks = {} // temp variable
var addTextMarkers = [] // temp variable
function updateInfo (data) {
- // console.log(data);
+ // console.debug(data);
if (data.hasOwnProperty('createtime') && window.createtime !== data.createtime) {
window.createtime = data.createtime
updateLastChange()
@@ -1846,7 +1835,7 @@ var addStyleRule = (function () {
}
}())
function updateAuthorshipInner () {
- // ignore when ot not synced yet
+ // ignore when ot not synced yet
if (havePendingOperation()) return
authorMarks = {}
for (let i = 0; i < authorship.length; i++) {
@@ -2008,7 +1997,7 @@ editorInstance.on('update', function () {
})
})
socket.on('check', function (data) {
- // console.log(data);
+ // console.debug(data);
updateInfo(data)
})
socket.on('permission', function (data) {
@@ -2017,13 +2006,13 @@ socket.on('permission', function (data) {
var permission = null
socket.on('refresh', function (data) {
- // console.log(data);
+ // console.debug(data);
editorInstance.config.docmaxlength = data.docmaxlength
editor.setOption('maxLength', editorInstance.config.docmaxlength)
updateInfo(data)
updatePermission(data.permission)
if (!window.loaded) {
- // auto change mode if no content detected
+ // auto change mode if no content detected
var nocontent = editor.getValue().length <= 0
if (nocontent) {
if (visibleXS) { appState.currentMode = modeType.edit } else { appState.currentMode = modeType.both }
@@ -2162,7 +2151,7 @@ socket.on('cursor focus', function (data) {
}
}
if (data.id !== socket.id) { buildCursor(data) }
- // force show
+ // force show
var cursor = $('div[data-clientid="' + data.id + '"]')
if (cursor.length > 0) {
cursor.stop(true).fadeIn()
@@ -2185,7 +2174,7 @@ socket.on('cursor blur', function (data) {
}
}
if (data.id !== socket.id) { buildCursor(data) }
- // force hide
+ // force hide
var cursor = $('div[data-clientid="' + data.id + '"]')
if (cursor.length > 0) {
cursor.stop(true).fadeOut()
@@ -2209,7 +2198,7 @@ function updateOnlineStatus () {
var _onlineUsers = deduplicateOnlineUsers(onlineUsers)
showStatus(statusType.online, _onlineUsers.length)
var items = onlineUserList.items
- // update or remove current list items
+ // update or remove current list items
for (let i = 0; i < items.length; i++) {
let found = false
let foundindex = null
@@ -2229,7 +2218,7 @@ function updateOnlineStatus () {
shortOnlineUserList.remove('id', id)
}
}
- // add not in list items
+ // add not in list items
for (let i = 0; i < _onlineUsers.length; i++) {
let found = false
for (let j = 0; j < items.length; j++) {
@@ -2243,16 +2232,16 @@ function updateOnlineStatus () {
shortOnlineUserList.add(_onlineUsers[i])
}
}
- // sorting
+ // sorting
sortOnlineUserList(onlineUserList)
sortOnlineUserList(shortOnlineUserList)
- // render list items
+ // render list items
renderUserStatusList(onlineUserList)
renderUserStatusList(shortOnlineUserList)
}
function sortOnlineUserList (list) {
- // sort order by isSelf, login state, idle state, alphabet name, color brightness
+ // sort order by isSelf, login state, idle state, alphabet name, color brightness
list.sort('', {
sortFunction: function (a, b) {
var usera = a.values()
@@ -2288,7 +2277,7 @@ function renderUserStatusList (list) {
var usericon = $(item.elm).find('.ui-user-icon')
if (item.values().login && item.values().photo) {
usericon.css('background-image', 'url(' + item.values().photo + ')')
- // add 1px more to right, make it feel aligned
+ // add 1px more to right, make it feel aligned
usericon.css('margin-right', '6px')
$(item.elm).css('border-left', '4px solid ' + item.values().color)
usericon.css('margin-left', '-4px')
@@ -2569,15 +2558,15 @@ editorInstance.on('beforeChange', function (cm, change) {
if (cmClient && !socket.connected) { cmClient.editorAdapter.ignoreNextChange = true }
})
editorInstance.on('cut', function () {
- // na
+ // na
})
editorInstance.on('paste', function () {
- // na
+ // na
})
editorInstance.on('changes', function (editor, changes) {
updateHistory()
var docLength = editor.getValue().length
- // workaround for big documents
+ // workaround for big documents
var newViewportMargin = 20
if (docLength > 20000) {
newViewportMargin = 1
@@ -2755,6 +2744,7 @@ function updateViewInner () {
delete md.metaError
var rendered = md.render(value)
if (md.meta.type && md.meta.type === 'slide') {
+ ui.area.view.addClass('black')
var slideOptions = {
separator: '^(\r\n?|\n)---(\r\n?|\n)$',
verticalSeparator: '^(\r\n?|\n)----(\r\n?|\n)$'
@@ -2762,7 +2752,7 @@ function updateViewInner () {
var slides = window.RevealMarkdown.slidify(editor.getValue(), slideOptions)
ui.area.markdown.html(slides)
window.RevealMarkdown.initialize()
- // prevent XSS
+ // prevent XSS
ui.area.markdown.html(preventXSS(ui.area.markdown.html()))
ui.area.markdown.addClass('slides')
appState.syncscroll = false
@@ -2771,15 +2761,16 @@ function updateViewInner () {
if (lastMeta.type && lastMeta.type === 'slide') {
refreshView()
ui.area.markdown.removeClass('slides')
+ ui.area.view.removeClass('black')
appState.syncscroll = true
checkSyncToggle()
}
- // only render again when meta changed
+ // only render again when meta changed
if (JSON.stringify(md.meta) !== JSON.stringify(lastMeta)) {
parseMeta(md, ui.area.codemirror, ui.area.markdown, $('#ui-toc'), $('#ui-toc-affix'))
rendered = md.render(value)
}
- // prevent XSS
+ // prevent XSS
rendered = preventXSS(rendered)
var result = postProcess(rendered).children().toArray()
partialUpdate(result, lastResult, ui.area.markdown.children().toArray())
@@ -2799,7 +2790,7 @@ function updateViewInner () {
smoothHashScroll()
isDirty = false
clearMap()
- // buildMap();
+ // buildMap();
updateTitleReminder()
if (postUpdateEvent && typeof postUpdateEvent === 'function') { postUpdateEvent() }
}
@@ -2813,7 +2804,7 @@ function updateHistoryInner () {
}
function updateDataAttrs (src, des) {
- // sync data attr startline and endline
+ // sync data attr startline and endline
for (var i = 0; i < src.length; i++) {
copyAttribute(src[i], des[i], 'data-startline')
copyAttribute(src[i], des[i], 'data-endline')
@@ -2832,8 +2823,8 @@ function partialUpdate (src, tar, des) {
var rawSrc = cloneAndRemoveDataAttr(src[i])
var rawTar = cloneAndRemoveDataAttr(tar[i])
if (rawSrc.outerHTML !== rawTar.outerHTML) {
- // console.log(rawSrc);
- // console.log(rawTar);
+ // console.debug(rawSrc);
+ // console.debug(rawTar);
$(des[i]).replaceWith(src[i])
}
}
@@ -2841,8 +2832,8 @@ function partialUpdate (src, tar, des) {
var start = 0
// find diff start position
for (let i = 0; i < tar.length; i++) {
- // copyAttribute(src[i], des[i], 'data-startline');
- // copyAttribute(src[i], des[i], 'data-endline');
+ // copyAttribute(src[i], des[i], 'data-startline');
+ // copyAttribute(src[i], des[i], 'data-endline');
let rawSrc = cloneAndRemoveDataAttr(src[i])
let rawTar = cloneAndRemoveDataAttr(tar[i])
if (!rawSrc || !rawTar || rawSrc.outerHTML !== rawTar.outerHTML) {
@@ -2850,12 +2841,12 @@ function partialUpdate (src, tar, des) {
break
}
}
- // find diff end position
+ // find diff end position
var srcEnd = 0
var tarEnd = 0
for (let i = 0; i < src.length; i++) {
- // copyAttribute(src[i], des[i], 'data-startline');
- // copyAttribute(src[i], des[i], 'data-endline');
+ // copyAttribute(src[i], des[i], 'data-startline');
+ // copyAttribute(src[i], des[i], 'data-endline');
let rawSrc = cloneAndRemoveDataAttr(src[i])
let rawTar = cloneAndRemoveDataAttr(tar[i])
if (!rawSrc || !rawTar || rawSrc.outerHTML !== rawTar.outerHTML) {
@@ -2863,12 +2854,12 @@ function partialUpdate (src, tar, des) {
break
}
}
- // tar end
+ // tar end
for (let i = 1; i <= tar.length + 1; i++) {
let srcLength = src.length
let tarLength = tar.length
- // copyAttribute(src[srcLength - i], des[srcLength - i], 'data-startline');
- // copyAttribute(src[srcLength - i], des[srcLength - i], 'data-endline');
+ // copyAttribute(src[srcLength - i], des[srcLength - i], 'data-startline');
+ // copyAttribute(src[srcLength - i], des[srcLength - i], 'data-endline');
let rawSrc = cloneAndRemoveDataAttr(src[srcLength - i])
let rawTar = cloneAndRemoveDataAttr(tar[tarLength - i])
if (!rawSrc || !rawTar || rawSrc.outerHTML !== rawTar.outerHTML) {
@@ -2876,12 +2867,12 @@ function partialUpdate (src, tar, des) {
break
}
}
- // src end
+ // src end
for (let i = 1; i <= src.length + 1; i++) {
let srcLength = src.length
let tarLength = tar.length
- // copyAttribute(src[srcLength - i], des[srcLength - i], 'data-startline');
- // copyAttribute(src[srcLength - i], des[srcLength - i], 'data-endline');
+ // copyAttribute(src[srcLength - i], des[srcLength - i], 'data-startline');
+ // copyAttribute(src[srcLength - i], des[srcLength - i], 'data-endline');
let rawSrc = cloneAndRemoveDataAttr(src[srcLength - i])
let rawTar = cloneAndRemoveDataAttr(tar[tarLength - i])
if (!rawSrc || !rawTar || rawSrc.outerHTML !== rawTar.outerHTML) {
@@ -2889,25 +2880,25 @@ function partialUpdate (src, tar, des) {
break
}
}
- // check if tar end overlap tar start
+ // check if tar end overlap tar start
var overlap = 0
for (var i = start; i >= 0; i--) {
var rawTarStart = cloneAndRemoveDataAttr(tar[i - 1])
var rawTarEnd = cloneAndRemoveDataAttr(tar[tarEnd + 1 + start - i])
if (rawTarStart && rawTarEnd && rawTarStart.outerHTML === rawTarEnd.outerHTML) { overlap++ } else { break }
}
- if (debug) { console.log('overlap:' + overlap) }
- // show diff content
+ if (debug) { console.debug('overlap:' + overlap) }
+ // show diff content
if (debug) {
- console.log('start:' + start)
- console.log('tarEnd:' + tarEnd)
- console.log('srcEnd:' + srcEnd)
+ console.debug('start:' + start)
+ console.debug('tarEnd:' + tarEnd)
+ console.debug('srcEnd:' + srcEnd)
}
tarEnd += overlap
srcEnd += overlap
var repeatAdd = (start - srcEnd) < (start - tarEnd)
var repeatDiff = Math.abs(srcEnd - tarEnd) - 1
- // push new elements
+ // push new elements
var newElements = []
if (srcEnd >= start) {
for (let j = start; j <= srcEnd; j++) {
@@ -2920,7 +2911,7 @@ function partialUpdate (src, tar, des) {
newElements.push(des[j].outerHTML)
}
}
- // push remove elements
+ // push remove elements
var removeElements = []
if (tarEnd >= start) {
for (let j = start; j <= tarEnd; j++) {
@@ -2933,17 +2924,17 @@ function partialUpdate (src, tar, des) {
removeElements.push(des[j])
}
}
- // add elements
+ // add elements
if (debug) {
- console.log('ADD ELEMENTS')
- console.log(newElements.join('\n'))
+ console.debug('ADD ELEMENTS')
+ console.debug(newElements.join('\n'))
}
if (des[start]) { $(newElements.join('')).insertBefore(des[start]) } else { $(newElements.join('')).insertAfter(des[start - 1]) }
- // remove elements
- if (debug) { console.log('REMOVE ELEMENTS') }
+ // remove elements
+ if (debug) { console.debug('REMOVE ELEMENTS') }
for (let j = 0; j < removeElements.length; j++) {
if (debug) {
- console.log(removeElements[j].outerHTML)
+ console.debug(removeElements[j].outerHTML)
}
if (removeElements[j]) { $(removeElements[j]).remove() }
}
@@ -2977,50 +2968,50 @@ function reverseSortCursorMenu (dropdown) {
var checkCursorMenu = _.throttle(checkCursorMenuInner, cursorMenuThrottle)
function checkCursorMenuInner () {
- // get element
+ // get element
var dropdown = $('.cursor-menu > .dropdown-menu')
- // return if not exists
+ // return if not exists
if (dropdown.length <= 0) return
- // set margin
+ // set margin
var menuRightMargin = 10
var menuBottomMargin = 4
- // use sizer to get the real doc size (won't count status bar and gutters)
+ // use sizer to get the real doc size (won't count status bar and gutters)
var docWidth = ui.area.codemirrorSizer.width()
- // get editor size (status bar not count in)
+ // get editor size (status bar not count in)
var editorHeight = ui.area.codemirror.height()
- // get element size
+ // get element size
var width = dropdown.outerWidth()
var height = dropdown.outerHeight()
- // get cursor
+ // get cursor
var cursor = editor.getCursor()
- // set element cursor data
+ // set element cursor data
if (!dropdown.hasClass('CodeMirror-other-cursor')) { dropdown.addClass('CodeMirror-other-cursor') }
dropdown.attr('data-line', cursor.line)
dropdown.attr('data-ch', cursor.ch)
- // get coord position
+ // get coord position
var coord = editor.charCoords({
line: cursor.line,
ch: cursor.ch
}, 'windows')
var left = coord.left
var top = coord.top
- // get doc top offset (to workaround with viewport)
+ // get doc top offset (to workaround with viewport)
var docTopOffset = ui.area.codemirrorSizerInner.position().top
- // set offset
+ // set offset
var offsetLeft = 0
var offsetTop = defaultTextHeight
- // set up side down
+ // set up side down
window.upSideDown = false
var lastUpSideDown = window.upSideDown = false
- // only do when have width and height
+ // only do when have width and height
if (width > 0 && height > 0) {
- // make element right bound not larger than doc width
+ // make element right bound not larger than doc width
if (left + width + offsetLeft + menuRightMargin > docWidth) { offsetLeft = -(left + width - docWidth + menuRightMargin) }
- // flip y when element bottom bound larger than doc height
- // and element top position is larger than element height
+ // flip y when element bottom bound larger than doc height
+ // and element top position is larger than element height
if (top + docTopOffset + height + offsetTop + menuBottomMargin > Math.max(editor.doc.height, editorHeight) && top + docTopOffset > height + menuBottomMargin) {
offsetTop = -(height + menuBottomMargin)
- // reverse sort menu because upSideDown
+ // reverse sort menu because upSideDown
dropdown.html(reverseSortCursorMenu(dropdown))
window.upSideDown = true
}
@@ -3028,18 +3019,18 @@ function checkCursorMenuInner () {
lastUpSideDown = textCompleteDropdown.upSideDown
textCompleteDropdown.upSideDown = window.upSideDown
}
- // make menu scroll top only if upSideDown changed
+ // make menu scroll top only if upSideDown changed
if (window.upSideDown !== lastUpSideDown) { dropdown.scrollTop(dropdown[0].scrollHeight) }
- // set element offset data
+ // set element offset data
dropdown.attr('data-offset-left', offsetLeft)
dropdown.attr('data-offset-top', offsetTop)
- // set position
+ // set position
dropdown[0].style.left = left + offsetLeft + 'px'
dropdown[0].style.top = top + offsetTop + 'px'
}
function checkInIndentCode () {
- // if line starts with tab or four spaces is a code block
+ // if line starts with tab or four spaces is a code block
var line = editor.getLine(editor.getCursor().line)
var isIndentCode = ((line.substr(0, 4) === ' ') || (line.substr(0, 1) === '\t'))
return isIndentCode
@@ -3058,7 +3049,7 @@ function checkAbove (method) {
text.push(editor.getLine(i))
}
text = text.join('\n') + '\n' + editor.getLine(cursor.line).slice(0, cursor.ch)
- // console.log(text);
+ // console.debug(text);
return method(text)
}
@@ -3070,7 +3061,7 @@ function checkBelow (method) {
text.push(editor.getLine(i))
}
text = editor.getLine(cursor.line).slice(cursor.ch) + '\n' + text.join('\n')
- // console.log(text);
+ // console.debug(text);
return method(text)
}
@@ -3097,7 +3088,7 @@ function checkInContainer () {
}
function checkInContainerSyntax () {
- // if line starts with :::, it's in container syntax
+ // if line starts with :::, it's in container syntax
var line = editor.getLine(editor.getCursor().line)
isInContainerSyntax = (line.substr(0, 3) === ':::')
}
@@ -3113,229 +3104,229 @@ function matchInContainer (text) {
}
$(editor.getInputField())
- .textcomplete([
- { // emoji strategy
- match: /(^|\n|\s)\B:([-+\w]*)$/,
- search: function (term, callback) {
- var line = editor.getLine(editor.getCursor().line)
- term = line.match(this.match)[2]
- var list = []
- $.map(window.emojify.emojiNames, function (emoji) {
- if (emoji.indexOf(term) === 0) { // match at first character
- list.push(emoji)
- }
- })
- $.map(window.emojify.emojiNames, function (emoji) {
- if (emoji.indexOf(term) !== -1) { // match inside the word
- list.push(emoji)
- }
- })
- callback(list)
- },
- template: function (value) {
- return '<img class="emoji" src="' + serverurl + '/build/emojify.js/dist/images/basic/' + value + '.png"></img> ' + value
- },
- replace: function (value) {
- return '$1:' + value + ': '
- },
- index: 1,
- context: function (text) {
- checkInCode()
- checkInContainer()
- checkInContainerSyntax()
- return !isInCode && !isInContainerSyntax
- }
- },
- { // Code block language strategy
- langs: supportCodeModes,
- charts: supportCharts,
- match: /(^|\n)```(\w+)$/,
- search: function (term, callback) {
- var line = editor.getLine(editor.getCursor().line)
- term = line.match(this.match)[2]
- var list = []
- $.map(this.langs, function (lang) {
- if (lang.indexOf(term) === 0 && lang !== term) { list.push(lang) }
- })
- $.map(this.charts, function (chart) {
- if (chart.indexOf(term) === 0 && chart !== term) { list.push(chart) }
- })
- callback(list)
- },
- replace: function (lang) {
- var ending = ''
- if (!checkBelow(matchInCode)) {
- ending = '\n\n```'
+ .textcomplete([
+ { // emoji strategy
+ match: /(^|\n|\s)\B:([-+\w]*)$/,
+ search: function (term, callback) {
+ var line = editor.getLine(editor.getCursor().line)
+ term = line.match(this.match)[2]
+ var list = []
+ $.map(window.emojify.emojiNames, function (emoji) {
+ if (emoji.indexOf(term) === 0) { // match at first character
+ list.push(emoji)
}
- if (this.langs.indexOf(lang) !== -1) { return '$1```' + lang + '=' + ending } else if (this.charts.indexOf(lang) !== -1) { return '$1```' + lang + ending }
- },
- done: function () {
- var cursor = editor.getCursor()
- var text = []
- text.push(editor.getLine(cursor.line - 1))
- text.push(editor.getLine(cursor.line))
- text = text.join('\n')
- // console.log(text);
- if (text === '\n```') { editor.doc.cm.execCommand('goLineUp') }
- },
- context: function (text) {
- return isInCode
- }
- },
- { // Container strategy
- containers: supportContainers,
- match: /(^|\n):::(\s*)(\w*)$/,
- search: function (term, callback) {
- var line = editor.getLine(editor.getCursor().line)
- term = line.match(this.match)[3].trim()
- var list = []
- $.map(this.containers, function (container) {
- if (container.indexOf(term) === 0 && container !== term) { list.push(container) }
- })
- callback(list)
- },
- replace: function (lang) {
- var ending = ''
- if (!checkBelow(matchInContainer)) {
- ending = '\n\n:::'
+ })
+ $.map(window.emojify.emojiNames, function (emoji) {
+ if (emoji.indexOf(term) !== -1) { // match inside the word
+ list.push(emoji)
}
- if (this.containers.indexOf(lang) !== -1) { return '$1:::$2' + lang + ending }
- },
- done: function () {
- var cursor = editor.getCursor()
- var text = []
- text.push(editor.getLine(cursor.line - 1))
- text.push(editor.getLine(cursor.line))
- text = text.join('\n')
- // console.log(text);
- if (text === '\n:::') { editor.doc.cm.execCommand('goLineUp') }
- },
- context: function (text) {
- return !isInCode && isInContainer
+ })
+ callback(list)
+ },
+ template: function (value) {
+ return '<img class="emoji" src="' + serverurl + '/build/emojify.js/dist/images/basic/' + value + '.png"></img> ' + value
+ },
+ replace: function (value) {
+ return '$1:' + value + ': '
+ },
+ index: 1,
+ context: function (text) {
+ checkInCode()
+ checkInContainer()
+ checkInContainerSyntax()
+ return !isInCode && !isInContainerSyntax
+ }
+ },
+ { // Code block language strategy
+ langs: supportCodeModes,
+ charts: supportCharts,
+ match: /(^|\n)```(\w+)$/,
+ search: function (term, callback) {
+ var line = editor.getLine(editor.getCursor().line)
+ term = line.match(this.match)[2]
+ var list = []
+ $.map(this.langs, function (lang) {
+ if (lang.indexOf(term) === 0 && lang !== term) { list.push(lang) }
+ })
+ $.map(this.charts, function (chart) {
+ if (chart.indexOf(term) === 0 && chart !== term) { list.push(chart) }
+ })
+ callback(list)
+ },
+ replace: function (lang) {
+ var ending = ''
+ if (!checkBelow(matchInCode)) {
+ ending = '\n\n```'
}
+ if (this.langs.indexOf(lang) !== -1) { return '$1```' + lang + '=' + ending } else if (this.charts.indexOf(lang) !== -1) { return '$1```' + lang + ending }
},
- { // header
- match: /(?:^|\n)(\s{0,3})(#{1,6}\w*)$/,
- search: function (term, callback) {
- callback($.map(supportHeaders, function (header) {
- return header.search.indexOf(term) === 0 ? header.text : null
- }))
- },
- replace: function (value) {
- return '$1' + value
- },
- context: function (text) {
- return !isInCode
+ done: function () {
+ var cursor = editor.getCursor()
+ var text = []
+ text.push(editor.getLine(cursor.line - 1))
+ text.push(editor.getLine(cursor.line))
+ text = text.join('\n')
+ // console.debug(text);
+ if (text === '\n```') { editor.doc.cm.execCommand('goLineUp') }
+ },
+ context: function (text) {
+ return isInCode
+ }
+ },
+ { // Container strategy
+ containers: supportContainers,
+ match: /(^|\n):::(\s*)(\w*)$/,
+ search: function (term, callback) {
+ var line = editor.getLine(editor.getCursor().line)
+ term = line.match(this.match)[3].trim()
+ var list = []
+ $.map(this.containers, function (container) {
+ if (container.indexOf(term) === 0 && container !== term) { list.push(container) }
+ })
+ callback(list)
+ },
+ replace: function (lang) {
+ var ending = ''
+ if (!checkBelow(matchInContainer)) {
+ ending = '\n\n:::'
}
+ if (this.containers.indexOf(lang) !== -1) { return '$1:::$2' + lang + ending }
+ },
+ done: function () {
+ var cursor = editor.getCursor()
+ var text = []
+ text.push(editor.getLine(cursor.line - 1))
+ text.push(editor.getLine(cursor.line))
+ text = text.join('\n')
+ // console.debug(text);
+ if (text === '\n:::') { editor.doc.cm.execCommand('goLineUp') }
+ },
+ context: function (text) {
+ return !isInCode && isInContainer
+ }
+ },
+ { // header
+ match: /(?:^|\n)(\s{0,3})(#{1,6}\w*)$/,
+ search: function (term, callback) {
+ callback($.map(supportHeaders, function (header) {
+ return header.search.indexOf(term) === 0 ? header.text : null
+ }))
+ },
+ replace: function (value) {
+ return '$1' + value
+ },
+ context: function (text) {
+ return !isInCode
+ }
+ },
+ { // extra tags for list
+ match: /(^[>\s]*[-+*]\s(?:\[[x ]\]|.*))(\[\])(\w*)$/,
+ search: function (term, callback) {
+ var list = []
+ $.map(supportExtraTags, function (extratag) {
+ if (extratag.search.indexOf(term) === 0) { list.push(extratag.command()) }
+ })
+ $.map(supportReferrals, function (referral) {
+ if (referral.search.indexOf(term) === 0) { list.push(referral.text) }
+ })
+ callback(list)
+ },
+ replace: function (value) {
+ return '$1' + value
},
- { // extra tags for list
- match: /(^[>\s]*[-+*]\s(?:\[[x ]\]|.*))(\[\])(\w*)$/,
- search: function (term, callback) {
- var list = []
+ context: function (text) {
+ return !isInCode
+ }
+ },
+ { // extra tags for blockquote
+ match: /(?:^|\n|\s)(>.*|\s|)((\^|)\[(\^|)\](\[\]|\(\)|:|)\s*\w*)$/,
+ search: function (term, callback) {
+ var line = editor.getLine(editor.getCursor().line)
+ var quote = line.match(this.match)[1].trim()
+ var list = []
+ if (quote.indexOf('>') === 0) {
$.map(supportExtraTags, function (extratag) {
if (extratag.search.indexOf(term) === 0) { list.push(extratag.command()) }
})
- $.map(supportReferrals, function (referral) {
- if (referral.search.indexOf(term) === 0) { list.push(referral.text) }
- })
- callback(list)
- },
- replace: function (value) {
- return '$1' + value
- },
- context: function (text) {
- return !isInCode
}
+ $.map(supportReferrals, function (referral) {
+ if (referral.search.indexOf(term) === 0) { list.push(referral.text) }
+ })
+ callback(list)
},
- { // extra tags for blockquote
- match: /(?:^|\n|\s)(>.*|\s|)((\^|)\[(\^|)\](\[\]|\(\)|:|)\s*\w*)$/,
- search: function (term, callback) {
- var line = editor.getLine(editor.getCursor().line)
- var quote = line.match(this.match)[1].trim()
- var list = []
- if (quote.indexOf('>') === 0) {
- $.map(supportExtraTags, function (extratag) {
- if (extratag.search.indexOf(term) === 0) { list.push(extratag.command()) }
- })
- }
- $.map(supportReferrals, function (referral) {
- if (referral.search.indexOf(term) === 0) { list.push(referral.text) }
- })
- callback(list)
- },
- replace: function (value) {
- return '$1' + value
- },
- context: function (text) {
- return !isInCode
- }
+ replace: function (value) {
+ return '$1' + value
},
- { // referral
- match: /(^\s*|\n|\s{2})((\[\]|\[\]\[\]|\[\]\(\)|!|!\[\]|!\[\]\[\]|!\[\]\(\))\s*\w*)$/,
- search: function (term, callback) {
- callback($.map(supportReferrals, function (referral) {
- return referral.search.indexOf(term) === 0 ? referral.text : null
- }))
- },
- replace: function (value) {
- return '$1' + value
- },
- context: function (text) {
- return !isInCode
- }
- },
- { // externals
- match: /(^|\n|\s)\{\}(\w*)$/,
- search: function (term, callback) {
- callback($.map(supportExternals, function (external) {
- return external.search.indexOf(term) === 0 ? external.text : null
- }))
- },
- replace: function (value) {
- return '$1' + value
- },
- context: function (text) {
- return !isInCode
- }
+ context: function (text) {
+ return !isInCode
}
- ], {
- appendTo: $('.cursor-menu')
- })
- .on({
- 'textComplete:beforeSearch': function (e) {
- // NA
+ },
+ { // referral
+ match: /(^\s*|\n|\s{2})((\[\]|\[\]\[\]|\[\]\(\)|!|!\[\]|!\[\]\[\]|!\[\]\(\))\s*\w*)$/,
+ search: function (term, callback) {
+ callback($.map(supportReferrals, function (referral) {
+ return referral.search.indexOf(term) === 0 ? referral.text : null
+ }))
},
- 'textComplete:afterSearch': function (e) {
- checkCursorMenu()
+ replace: function (value) {
+ return '$1' + value
},
- 'textComplete:select': function (e, value, strategy) {
- // NA
+ context: function (text) {
+ return !isInCode
+ }
+ },
+ { // externals
+ match: /(^|\n|\s)\{\}(\w*)$/,
+ search: function (term, callback) {
+ callback($.map(supportExternals, function (external) {
+ return external.search.indexOf(term) === 0 ? external.text : null
+ }))
},
- 'textComplete:show': function (e) {
- $(this).data('autocompleting', true)
- editor.setOption('extraKeys', {
- 'Up': function () {
- return false
- },
- 'Right': function () {
- editor.doc.cm.execCommand('goCharRight')
- },
- 'Down': function () {
- return false
- },
- 'Left': function () {
- editor.doc.cm.execCommand('goCharLeft')
- },
- 'Enter': function () {
- return false
- },
- 'Backspace': function () {
- editor.doc.cm.execCommand('delCharBefore')
- }
- })
+ replace: function (value) {
+ return '$1' + value
},
- 'textComplete:hide': function (e) {
- $(this).data('autocompleting', false)
- editor.setOption('extraKeys', editorInstance.defaultExtraKeys)
+ context: function (text) {
+ return !isInCode
}
- })
+ }
+ ], {
+ appendTo: $('.cursor-menu')
+ })
+ .on({
+ 'textComplete:beforeSearch': function (e) {
+ // NA
+ },
+ 'textComplete:afterSearch': function (e) {
+ checkCursorMenu()
+ },
+ 'textComplete:select': function (e, value, strategy) {
+ // NA
+ },
+ 'textComplete:show': function (e) {
+ $(this).data('autocompleting', true)
+ editor.setOption('extraKeys', {
+ 'Up': function () {
+ return false
+ },
+ 'Right': function () {
+ editor.doc.cm.execCommand('goCharRight')
+ },
+ 'Down': function () {
+ return false
+ },
+ 'Left': function () {
+ editor.doc.cm.execCommand('goCharLeft')
+ },
+ 'Enter': function () {
+ return false
+ },
+ 'Backspace': function () {
+ editor.doc.cm.execCommand('delCharBefore')
+ }
+ })
+ },
+ 'textComplete:hide': function (e) {
+ $(this).data('autocompleting', false)
+ editor.setOption('extraKeys', editorInstance.defaultExtraKeys)
+ }
+ })
diff --git a/public/js/lib/common/login.js b/public/js/lib/common/login.js
index 18cd377d..28e5b470 100644
--- a/public/js/lib/common/login.js
+++ b/public/js/lib/common/login.js
@@ -60,22 +60,22 @@ export function checkIfAuth (yesCallback, noCallback) {
if (checkLoginStateChanged()) checkAuth = false
if (!checkAuth || typeof cookieLoginState === 'undefined') {
$.get(`${serverurl}/me`)
- .done(data => {
- if (data && data.status === 'ok') {
- profile = data
- yesCallback(profile)
- setLoginState(true, data.id)
- } else {
- noCallback()
- setLoginState(false)
- }
- })
- .fail(() => {
- noCallback()
- })
- .always(() => {
- checkAuth = true
- })
+ .done(data => {
+ if (data && data.status === 'ok') {
+ profile = data
+ yesCallback(profile)
+ setLoginState(true, data.id)
+ } else {
+ noCallback()
+ setLoginState(false)
+ }
+ })
+ .fail(() => {
+ noCallback()
+ })
+ .always(() => {
+ checkAuth = true
+ })
} else if (cookieLoginState) {
yesCallback(profile)
} else {
diff --git a/public/js/lib/editor/index.js b/public/js/lib/editor/index.js
index f05d01b8..8553caa9 100644
--- a/public/js/lib/editor/index.js
+++ b/public/js/lib/editor/index.js
@@ -3,6 +3,8 @@ import config from './config'
import statusBarTemplate from './statusbar.html'
import toolBarTemplate from './toolbar.html'
+import '../../../css/ui/toolbar.css'
+
/* config section */
const isMac = CodeMirror.keyMap.default === CodeMirror.keyMap.macDefault
const defaultEditorMode = 'gfm'
@@ -138,6 +140,7 @@ export default class Editor {
}
addToolBar () {
+ var inlineAttach = inlineAttachment.editors.codemirror4.attach(this.editor)
this.toolBar = $(toolBarTemplate)
this.toolbarPanel = this.editor.addPanel(this.toolBar[0], {
position: 'top'
@@ -157,6 +160,7 @@ export default class Editor {
var makeTable = $('#makeTable')
var makeLine = $('#makeLine')
var makeComment = $('#makeComment')
+ var uploadImage = $('#uploadImage')
makeBold.click(() => {
utils.wrapTextWith(this.editor, this.editor, '**')
@@ -217,6 +221,13 @@ export default class Editor {
makeComment.click(() => {
utils.insertText(this.editor, '> []')
})
+
+ uploadImage.bind('change', function (e) {
+ var files = e.target.files || e.dataTransfer.files
+ e.dataTransfer = {}
+ e.dataTransfer.files = files
+ inlineAttach.onDrop(e)
+ })
}
addStatusBar () {
diff --git a/public/js/lib/editor/toolbar.html b/public/js/lib/editor/toolbar.html
index a2ac476f..dc5b8ad4 100644
--- a/public/js/lib/editor/toolbar.html
+++ b/public/js/lib/editor/toolbar.html
@@ -1,46 +1,49 @@
<div class="toolbar">
<div class="btn-toolbar" role="toolbar" aria-label="Editor toolbar">
<div class="btn-group" role="group">
- <a id="makeBold" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Bold">
+ <a id="makeBold" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Bold">
<i class="fa fa-bold fa-fw"></i>
</a>
- <a id="makeItalic" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Italic">
+ <a id="makeItalic" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Italic">
<i class="fa fa-italic fa-fw"></i>
</a>
- <a id="makeStrike" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Strikethrough">
+ <a id="makeStrike" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Strikethrough">
<i class="fa fa-strikethrough fa-fw"></i>
</a>
- <a id="makeHeader" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Heading">
+ <a id="makeHeader" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Heading">
<i class="fa fa-h1 fa-fw">H</i>
</a>
- <a id="makeCode" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Code">
+ <a id="makeCode" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Code">
<i class="fa fa-code fa-fw"></i>
</a>
- <a id="makeQuote" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Quote">
+ <a id="makeQuote" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Quote">
<i class="fa fa-quote-right fa-fw"></i>
</a>
- <a id="makeGenericList" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="List">
+ <a id="makeGenericList" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="List">
<i class="fa fa-list fa-fw"></i>
</a>
- <a id="makeOrderedList" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Numbered List">
+ <a id="makeOrderedList" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Numbered List">
<i class="fa fa-list-ol fa-fw"></i>
</a>
- <a id="makeCheckList" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Check List">
+ <a id="makeCheckList" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Check List">
<i class="fa fa-check-square fa-fw"></i>
</a>
- <a id="makeLink" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Link">
+ <a id="makeLink" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Link">
<i class="fa fa-link fa-fw"></i>
</a>
- <a id="makeImage" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Image">
+ <a id="makeImage" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Image">
<i class="fa fa-image fa-fw"></i>
</a>
- <a id="makeTable" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Table">
+ <a id="uploadImage" class="btn btn-sm btn-file ui-upload-image" title="Upload Image">
+ <i class="fa fa-upload fa-fw"></i><input type="file" accept="image/*" name="upload" multiple title="Upload Image">
+ </a>
+ <a id="makeTable" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Table">
<i class="fa fa-table fa-fw"></i>
</a>
- <a id="makeLine" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Line">
+ <a id="makeLine" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Line">
<i class="fa fa-minus fa-fw"></i>
</a>
- <a id="makeComment" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Comment">
+ <a id="makeComment" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Comment">
<i class="fa fa-comment fa-fw"></i>
</a>
</div>
diff --git a/public/js/lib/editor/ui-elements.js b/public/js/lib/editor/ui-elements.js
index 29a37782..ce19436b 100644
--- a/public/js/lib/editor/ui-elements.js
+++ b/public/js/lib/editor/ui-elements.js
@@ -35,8 +35,7 @@ export const getUIElements = () => ({
edit: $('.ui-edit'),
view: $('.ui-view'),
both: $('.ui-both'),
- night: $('.ui-night'),
- uploadImage: $('.ui-upload-image')
+ night: $('.ui-night')
},
infobar: {
lastchange: $('.ui-lastchange'),
diff --git a/public/js/lib/editor/utils.js b/public/js/lib/editor/utils.js
index 36e5c121..d87c7e41 100644
--- a/public/js/lib/editor/utils.js
+++ b/public/js/lib/editor/utils.js
@@ -51,7 +51,7 @@ export function insertText (cm, text, cursorEnd = 0) {
let cursor = cm.getCursor()
cm.replaceSelection(text, cursor, cursor)
cm.focus()
- cm.setCursor({line: cursor.line, ch: cursor.ch + cursorEnd})
+ cm.setCursor({ line: cursor.line, ch: cursor.ch + cursorEnd })
}
export function insertLink (cm, isImage) {
@@ -80,7 +80,7 @@ export function insertLink (cm, isImage) {
cm.setSelections(ranges)
} else {
cm.replaceRange(symbol + linkEnd, cursor, cursor)
- cm.setCursor({line: cursor.line, ch: cursor.ch + symbol.length + linkEnd.length})
+ cm.setCursor({ line: cursor.line, ch: cursor.ch + symbol.length + linkEnd.length })
}
}
cm.focus()
@@ -88,8 +88,8 @@ export function insertLink (cm, isImage) {
export function insertHeader (cm) {
let cursor = cm.getCursor()
- let startOfLine = {line: cursor.line, ch: 0}
- let startOfLineText = cm.getRange(startOfLine, {line: cursor.line, ch: 1})
+ let startOfLine = { line: cursor.line, ch: 0 }
+ let startOfLineText = cm.getRange(startOfLine, { line: cursor.line, ch: 1 })
// See if it is already a header
if (startOfLineText === '#') {
cm.replaceRange('#', startOfLine, startOfLine)
@@ -108,14 +108,14 @@ export function insertOnStartOfLines (cm, symbol) {
if (!range.empty()) {
const from = range.from()
const to = range.to()
- let selection = cm.getRange({line: from.line, ch: 0}, to)
+ let selection = cm.getRange({ line: from.line, ch: 0 }, to)
selection = selection.replace(/\n/g, '\n' + symbol)
selection = symbol + selection
cm.replaceRange(selection, from, to)
} else {
- cm.replaceRange(symbol, {line: cursor.line, ch: 0}, {line: cursor.line, ch: 0})
+ cm.replaceRange(symbol, { line: cursor.line, ch: 0 }, { line: cursor.line, ch: 0 })
}
}
- cm.setCursor({line: cursor.line, ch: cursor.ch + symbol.length})
+ cm.setCursor({ line: cursor.line, ch: cursor.ch + symbol.length })
cm.focus()
}
diff --git a/public/js/lib/syncscroll.js b/public/js/lib/syncscroll.js
index cee317ea..d492fbc9 100644
--- a/public/js/lib/syncscroll.js
+++ b/public/js/lib/syncscroll.js
@@ -188,7 +188,7 @@ function buildMapInner (callback) {
}
nonEmptyList.push(0)
- // make the first line go top
+ // make the first line go top
_scrollMap[0] = viewTop
const parts = markdownArea.find('.part').toArray()
@@ -336,7 +336,7 @@ export function syncScrollToView (event, preventAnimate) {
const scrollInfo = editor.getScrollInfo()
const textHeight = editor.defaultTextHeight()
lineNo = Math.floor(scrollInfo.top / textHeight)
- // if reach the last line, will start lerp to the bottom
+ // if reach the last line, will start lerp to the bottom
const diffToBottom = (scrollInfo.top + scrollInfo.clientHeight) - (scrollInfo.height - textHeight)
if (scrollInfo.height > scrollInfo.clientHeight && diffToBottom > 0) {
topDiffPercent = diffToBottom / textHeight
diff --git a/public/js/pretty.js b/public/js/pretty.js
index ff6f9dfd..a5df0a47 100644
--- a/public/js/pretty.js
+++ b/public/js/pretty.js
@@ -1,29 +1,29 @@
/* eslint-env browser, jquery */
/* global refreshView */
+import {
+ autoLinkify,
+ deduplicatedHeaderId,
+ removeDOMEvents,
+ finishView,
+ generateToc,
+ md,
+ parseMeta,
+ postProcess,
+ renderTOC,
+ scrollToHash,
+ smoothHashScroll,
+ updateLastChange
+} from './extra'
+
+import { preventXSS } from './render'
+
require('../css/extra.css')
require('../css/slide-preview.css')
require('../css/site.css')
require('highlight.js/styles/github-gist.css')
-import {
- autoLinkify,
- deduplicatedHeaderId,
- removeDOMEvents,
- finishView,
- generateToc,
- md,
- parseMeta,
- postProcess,
- renderTOC,
- scrollToHash,
- smoothHashScroll,
- updateLastChange
-} from './extra'
-
-import { preventXSS } from './render'
-
const markdown = $('#doc.markdown-body')
const text = markdown.text()
const lastMeta = md.meta
@@ -38,7 +38,7 @@ if (md.meta.type && md.meta.type === 'slide') {
const slides = window.RevealMarkdown.slidify(text, slideOptions)
markdown.html(slides)
window.RevealMarkdown.initialize()
- // prevent XSS
+ // prevent XSS
markdown.html(preventXSS(markdown.html()))
markdown.addClass('slides')
} else {
@@ -46,12 +46,12 @@ if (md.meta.type && md.meta.type === 'slide') {
refreshView()
markdown.removeClass('slides')
}
- // only render again when meta changed
+ // only render again when meta changed
if (JSON.stringify(md.meta) !== JSON.stringify(lastMeta)) {
parseMeta(md, null, markdown, $('#ui-toc'), $('#ui-toc-affix'))
rendered = md.render(text)
}
- // prevent XSS
+ // prevent XSS
rendered = preventXSS(rendered)
const result = postProcess(rendered)
markdown.html(result.html())
@@ -98,14 +98,14 @@ function generateScrollspy () {
}
function windowResize () {
- // toc right
+ // toc right
const paddingRight = parseFloat(markdown.css('padding-right'))
const right = ($(window).width() - (markdown.offset().left + markdown.outerWidth() - paddingRight))
toc.css('right', `${right}px`)
- // affix toc left
+ // affix toc left
let newbool
const rightMargin = (markdown.parent().outerWidth() - markdown.outerWidth()) / 2
- // for ipad or wider device
+ // for ipad or wider device
if (rightMargin >= 133) {
newbool = true
const affixLeftMargin = (tocAffix.outerWidth() - tocAffix.width()) / 2
@@ -126,7 +126,7 @@ $(document).ready(() => {
windowResize()
generateScrollspy()
setTimeout(scrollToHash, 0)
- // tooltip
+ // tooltip
$('[data-toggle="tooltip"]').tooltip()
})
diff --git a/public/js/render.js b/public/js/render.js
index 87e5cfdf..d37f38ef 100644
--- a/public/js/render.js
+++ b/public/js/render.js
@@ -44,7 +44,7 @@ var filterXSSOptions = {
onIgnoreTag: function (tag, html, options) {
// allow comment tag
if (tag === '!--') {
- // do not filter its attributes
+ // do not filter its attributes
return html.replace(/<(?!!--)/g, '&lt;').replace(/-->/g, '__HTML_COMMENT_END__').replace(/>/g, '&gt;').replace(/__HTML_COMMENT_END__/g, '-->')
}
},
diff --git a/public/js/slide.js b/public/js/slide.js
index 1eb8dfd4..3a47ac43 100644
--- a/public/js/slide.js
+++ b/public/js/slide.js
@@ -1,12 +1,12 @@
/* eslint-env browser, jquery */
/* global serverurl, Reveal, RevealMarkdown */
-require('../css/extra.css')
-require('../css/site.css')
-
import { preventXSS } from './render'
import { md, updateLastChange, removeDOMEvents, finishView } from './extra'
+require('../css/extra.css')
+require('../css/site.css')
+
const body = preventXSS($('.slides').text())
window.createtime = window.lastchangeui.time.attr('data-createtime')
@@ -17,7 +17,7 @@ $('.ui-edit').attr('href', `${url}/edit`)
$('.ui-print').attr('href', `${url}?print-pdf`)
$(document).ready(() => {
- // tooltip
+ // tooltip
$('[data-toggle="tooltip"]').tooltip()
})
@@ -127,7 +127,7 @@ function renderSlide (event) {
Reveal.addEventListener('ready', event => {
renderSlide(event)
const markdown = $(event.currentSlide)
- // force browser redraw
+ // force browser redraw
setTimeout(() => {
markdown.hide().show(0)
}, 0)
diff --git a/public/screenshot.png b/public/screenshot.png
index e1e77431..bff18d4b 100644
--- a/public/screenshot.png
+++ b/public/screenshot.png
Binary files differ
diff --git a/public/vendor/showup/showup.css b/public/vendor/showup/showup.css
index d92523fa..30d39ce0 100644
--- a/public/vendor/showup/showup.css
+++ b/public/vendor/showup/showup.css
@@ -87,26 +87,6 @@
margin-right: 10px;
}
-/* Light theme */
-.btn-light {
- color: #555;
- background-color: rgba(0, 0, 0,.1);
-}
-.btn-light:hover {
- color: #111;
- background-color: rgba(0, 0, 0,.25);
-}
-
-/* Dark theme */
-.btn-dark {
- color: #fff;
- background-color: rgba(0, 0, 0,.5);
-}
-.btn-dark:hover {
- color: #fff;
- background-color: rgba(0, 0, 0,.9);
-}
-
/* Buttons displayed throughout the content */
.btn-showup {
position: relative;
@@ -122,4 +102,4 @@
outline: none;
background-color: #39235A;
border-color: #39235A;
-} \ No newline at end of file
+}
diff --git a/public/views/codimd/foot.ejs b/public/views/codimd/foot.ejs
index 98cbcec2..a36b2cdb 100644
--- a/public/views/codimd/foot.ejs
+++ b/public/views/codimd/foot.ejs
@@ -1,13 +1,14 @@
<script src="<%= serverURL %>/js/mathjax-config-extra.js"></script>
<% if(useCDN) { %>
<script src="https://cdnjs.cloudflare.com/ajax/libs/spin.js/2.3.2/spin.min.js" integrity="sha256-PieqE0QdEDMppwXrTzSZQr6tWFX3W5KkyRVyF1zN3eg=" crossorigin="anonymous" defer></script>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/velocity/1.4.0/velocity.min.js" integrity="sha256-bhm0lgEt6ITaZCDzZpkr/VXVrLa5RP4u9v2AYsbzSUk=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.0/js/bootstrap.min.js" integrity="sha256-kJrlY+s09+QoWjpkOrXXwhxeaoDz9FW5SaxF8I0DibQ=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js" integrity="sha256-jnOjDTXIPqall8M0MyTSt98JetJuZ7Yu+1Jm7hLTF7U=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-yaml/3.7.0/js-yaml.min.js" integrity="sha256-8PanqYAVOGlOct+i65R+HqibK3KPsXINnrSfxN+Y/J0=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js" integrity="sha256-yYfngbEKv4RENfGDvNUqJTqGFcKf31NJEe9OTnnMH3Y=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-immzXfCGLhnx3Zfi9F/dUcqxEM8K3o3oTFy9Bh6HCwg=" crossorigin="anonymous" defer></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/config/Safe.js" integrity="sha256-0ygBUDksNDXZS4vm5HMNH1a33KUu6QT1cdNTN+ZLF+4=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js" integrity="sha256-vvT7Ok9u6GbfnBPXnbM6FVDEO8E1kTdgHOFZOAXrktA=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mermaid/7.1.0/mermaid.min.js" integrity="sha256-M3OC0Q6g4/+Q4j73OvnsnA+lMkdAE5KgupRHqTiPbnI=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/js/emojify.min.js" integrity="sha256-VAB5tAlKBvgaxw8oJ1crWMVbdmBVl4mP/2M8MNRl+4E=" crossorigin="anonymous" defer></script>
@@ -23,5 +24,6 @@
<% } else { %>
<script src="<%- serverURL %>/build/MathJax/MathJax.js" defer></script>
<script src="<%- serverURL %>/build/MathJax/config/TeX-AMS-MML_HTMLorMML.js" defer></script>
+<script src="<%- serverURL %>/build/MathJax/config/Safe.js" defer></script>
<%- include ../build/index-pack-scripts %>
<% } %>
diff --git a/public/views/codimd/header.ejs b/public/views/codimd/header.ejs
index b83838ea..6bf37804 100644
--- a/public/views/codimd/header.ejs
+++ b/public/views/codimd/header.ejs
@@ -15,9 +15,6 @@
</div>
<a class="navbar-brand pull-left" href="<%- serverURL %>/"><i class="fa fa-file-text"></i> CodiMD</a>
<div class="nav-mobile pull-right visible-xs">
- <span class="btn btn-link btn-file ui-upload-image" title="Upload Image" style="display:none;">
- <i class="fa fa-camera"></i><input type="file" accept="image/*" name="upload" multiple>
- </span>
<a data-toggle="dropdown" class="btn btn-link">
<i class="fa fa-caret-down"></i>
</a>
@@ -100,9 +97,6 @@
<span class="btn btn-link btn-file ui-help" title="<%= __('Help') %>" data-toggle="modal" data-target=".help-modal">
<i class="fa fa-question-circle"></i>
</span>
- <span class="btn btn-link btn-file ui-upload-image" title="<%= __('Upload Image') %>" style="display:none;">
- <i class="fa fa-camera"></i><input type="file" accept="image/*" name="upload" multiple>
- </span>
</ul>
<ul class="nav navbar-nav navbar-right">
<li id="online-user-list">
diff --git a/public/views/html.hbs b/public/views/html.hbs
index 42710d6e..8e91b7b2 100644
--- a/public/views/html.hbs
+++ b/public/views/html.hbs
@@ -48,7 +48,7 @@
<div id="ui-toc-affix" class="ui-affix-toc ui-toc-dropdown unselectable hidden-print" data-spy="affix" style="top:17px;display:none;" {{{lang}}} {{{dir}}}>
{{{ui-toc-affix}}}
</div>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.0/js/bootstrap.min.js" integrity="sha256-kJrlY+s09+QoWjpkOrXXwhxeaoDz9FW5SaxF8I0DibQ=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gist-embed/2.6.0/gist-embed.min.js" integrity="sha256-KyF2D6xPIJUW5sUDSs93vWyZm+1RzIpKCexxElmxl8g=" crossorigin="anonymous" defer></script>
<script>
diff --git a/public/views/index/body.ejs b/public/views/index/body.ejs
index a5e591ef..9234da2f 100644
--- a/public/views/index/body.ejs
+++ b/public/views/index/body.ejs
@@ -77,7 +77,7 @@
</a>
</div>
<div class="col-md-4 inner">
- <a href="<%- serverURL %>/features#Slide-Modee">
+ <a href="<%- serverURL %>/features#Slide-Mode">
<i class="fa fa-tv fa-3x"></i>
<h4><%= __('Support slide mode') %></h4>
</a>
@@ -135,25 +135,28 @@
<option value="ca">Català</option>
<option value="el">Ελληνικά</option>
<option value="pt">Português</option>
- <option value="it">italiano</option>
+ <option value="it">Italiano</option>
<option value="tr">Türkçe</option>
<option value="ru">Русский</option>
<option value="nl">Nederlands</option>
- <option value="hr">hrvatski jezik</option>
- <option value="pl">język polski</option>
+ <option value="hr">Hrvatski</option>
+ <option value="pl">Polski</option>
<option value="uk">Українська</option>
<option value="hi">हिन्दी</option>
- <option value="sv">svenska</option>
+ <option value="sv">Svenska</option>
<option value="eo">Esperanto</option>
- <option value="da">dansk</option>
+ <option value="da">Dansk</option>
<option value="ko">한국어</option>
<option value="id">Bahasa Indonesia</option>
+ <option value="sr">Cрпски</option>
+ <option value="vi">Tiếng Việt</option>
+ <option value="ar">العربية</option>
</select>
<p>
- Powered by <a href="https://codimd.org">CodiMD</a> | <a href="<%- serverURL %>/s/release-notes" target="_blank" rel="noopener"><%= __('Releases') %></a>| <a href="<%- sourceURL %>" target="_blank" rel="noopener"><%= __('Source Code') %></a><% if(privacyStatement) { %> | <a href="<%- serverURL %>/s/privacy" target="_blank" rel="noopener"><%= __('Privacy') %></a><% } %><% if(termsOfUse) { %> | <a href="<%- serverURL %>/s/terms-of-use" target="_blank" rel="noopener"><%= __('Terms of Use') %></a><% } %>
+ <%- __('Powered by %s', '<a href="https://codimd.org">CodiMD</a>') %> | <a href="<%- serverURL %>/s/release-notes" target="_blank" rel="noopener"><%= __('Releases') %></a> | <a href="<%- sourceURL %>" target="_blank" rel="noopener"><%= __('Source Code') %></a><% if(imprint) { %> | <a href="<%- serverURL %>/s/imprint" target="_blank" rel="noopener"><%= __('Imprint') %></a><% } %><% if(privacyStatement) { %> | <a href="<%- serverURL %>/s/privacy" target="_blank" rel="noopener"><%= __('Privacy') %></a><% } %><% if(termsOfUse) { %> | <a href="<%- serverURL %>/s/terms-of-use" target="_blank" rel="noopener"><%= __('Terms of Use') %></a><% } %>
</p>
<h6 class="social-foot">
- <%- __('Follow us on %s and %s.', '<a href="https://github.com/hackmdio/CodiMD" target="_blank" rel="noopener"><i class="fa fa-github"></i> GitHub</a>, <a href="https://riot.im/app/#/room/#codimd:matrix.org" target="_blank" rel="noopener"><i class="fa fa-comments"></i> Riot</a>', '<a href="https://translate.codimd.org" target="_blank" rel="noopener"><i class="fa fa-globe"></i> POEditor</a>') %>
+ <%- __('Follow us on %s and %s.', '<a href="https://github.com/codimd/server" target="_blank" rel="noopener"><i class="fa fa-github"></i> GitHub</a>, <a href="https://community.codimd.org" target="_blank" rel="noopener"><i class="fa fa-users" aria-hidden="true"></i> Discourse</a>, <a href="https://riot.im/app/#/room/#codimd:matrix.org" target="_blank" rel="noopener"><i class="fa fa-comments"></i> Riot</a>, <a href="https://social.codimd.org/mastodon" target="_blank" rel="noopener"><i class="fa fa-mastodon"></i> Mastodon</a>', '<a href="https://translate.codimd.org" target="_blank" rel="noopener"><i class="fa fa-globe"></i> POEditor</a>') %>
</h6>
</div>
</div>
diff --git a/public/views/index/foot.ejs b/public/views/index/foot.ejs
index 54e39e1b..638f4930 100644
--- a/public/views/index/foot.ejs
+++ b/public/views/index/foot.ejs
@@ -1,11 +1,10 @@
<% if(useCDN) { %>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/velocity/1.4.0/velocity.min.js" integrity="sha256-bhm0lgEt6ITaZCDzZpkr/VXVrLa5RP4u9v2AYsbzSUk=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.0/js/bootstrap.min.js" integrity="sha256-kJrlY+s09+QoWjpkOrXXwhxeaoDz9FW5SaxF8I0DibQ=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/list.pagination.js/0.1.1/list.pagination.min.js" integrity="sha256-WwTza96H3BgcQTfEfxX7MFaFc/dZA0QrPRKDRLdFHJo=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/3.5.2/select2.min.js" integrity="sha256-HzzZFiY4t0PIv02Tm8/R3CVvLpcjHhO1z/YAUCp4oQ4=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js" integrity="sha256-vvT7Ok9u6GbfnBPXnbM6FVDEO8E1kTdgHOFZOAXrktA=" crossorigin="anonymous" defer></script>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/js-url/2.3.0/url.min.js" integrity="sha256-HOZJz4x+1mn1Si84WT5XKXPtOlTytmZLnMb6n1v4+5Q=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/1000hz-bootstrap-validator/0.11.8/validator.min.js" integrity="sha256-LHeY7YoYJ0SSXbCx7sR14Pqna+52moaH3bhv0Mjzd/M=" crossorigin="anonymous" defer></script>
<%- include ../build/cover-scripts %>
<% } else { %>
diff --git a/public/views/pretty.ejs b/public/views/pretty.ejs
index 17516f96..1970ab2f 100644
--- a/public/views/pretty.ejs
+++ b/public/views/pretty.ejs
@@ -63,7 +63,7 @@
</div>
</div>
<div id="ui-toc-affix" class="ui-affix-toc ui-toc-dropdown unselectable hidden-print" data-spy="affix" style="display:none;"></div>
- <% if(typeof disqus !== 'undefined' && disqus) { %>
+ <% if(typeof disqus !== 'undefined' && disqus && !dnt) { %>
<div class="container-fluid" style="max-width: 758px; margin-bottom: 40px;">
<%- include shared/disqus %>
</div>
@@ -73,13 +73,14 @@
</html>
<script src="<%= serverURL %>/js/mathjax-config-extra.js"></script>
<% if(useCDN) { %>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/velocity/1.4.0/velocity.min.js" integrity="sha256-bhm0lgEt6ITaZCDzZpkr/VXVrLa5RP4u9v2AYsbzSUk=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.0/js/bootstrap.min.js" integrity="sha256-kJrlY+s09+QoWjpkOrXXwhxeaoDz9FW5SaxF8I0DibQ=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js" integrity="sha256-jnOjDTXIPqall8M0MyTSt98JetJuZ7Yu+1Jm7hLTF7U=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-yaml/3.7.0/js-yaml.min.js" integrity="sha256-8PanqYAVOGlOct+i65R+HqibK3KPsXINnrSfxN+Y/J0=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js" integrity="sha256-yYfngbEKv4RENfGDvNUqJTqGFcKf31NJEe9OTnnMH3Y=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-immzXfCGLhnx3Zfi9F/dUcqxEM8K3o3oTFy9Bh6HCwg=" crossorigin="anonymous" defer></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/config/Safe.js" integrity="sha256-0ygBUDksNDXZS4vm5HMNH1a33KUu6QT1cdNTN+ZLF+4=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js" integrity="sha256-vvT7Ok9u6GbfnBPXnbM6FVDEO8E1kTdgHOFZOAXrktA=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mermaid/7.1.0/mermaid.min.js" integrity="sha256-M3OC0Q6g4/+Q4j73OvnsnA+lMkdAE5KgupRHqTiPbnI=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/js/emojify.min.js" integrity="sha256-VAB5tAlKBvgaxw8oJ1crWMVbdmBVl4mP/2M8MNRl+4E=" crossorigin="anonymous" defer></script>
@@ -92,6 +93,7 @@
<% } else { %>
<script src="<%- serverURL %>/build/MathJax/MathJax.js" defer></script>
<script src="<%- serverURL %>/build/MathJax/config/TeX-AMS-MML_HTMLorMML.js" defer></script>
+<script src="<%- serverURL %>/build/MathJax/config/Safe.js" defer></script>
<%- include build/pretty-pack-scripts %>
<% } %>
<%- include shared/ga %>
diff --git a/public/views/shared/ga.ejs b/public/views/shared/ga.ejs
index 27abb742..f6b807fb 100644
--- a/public/views/shared/ga.ejs
+++ b/public/views/shared/ga.ejs
@@ -1,4 +1,4 @@
-<% if(typeof GA !== 'undefined' && GA) { %>
+<% if(typeof GA !== 'undefined' && GA && !dnt) { %>
<script nonce="<%= cspNonce %>">
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
diff --git a/public/views/shared/help-modal.ejs b/public/views/shared/help-modal.ejs
index ec35b0e9..eb5566a8 100644
--- a/public/views/shared/help-modal.ejs
+++ b/public/views/shared/help-modal.ejs
@@ -15,11 +15,13 @@
<h3 class="panel-title"><%= __('Contacts') %></h3>
</div>
<div class="panel-body">
- <a href="https://github.com/hackmdio/codimd/issues" target="_blank"><i class="fa fa-tag fa-fw"></i> <%= __('Report an issue') %></a>
+ <a href="https://community.codimd.org" target="_blank"><i class="fa fa-users fa-fw"></i> <%= __('Join the community') %></a>
<br>
<a href="https://riot.im/app/#/room/#codimd:matrix.org" target="_blank"><i class="fa fa-hashtag fa-fw"></i> <%= __('Meet us on %s', 'Matrix') %></a>
<br>
- <a href="https://translate.codimd.org" target="_blank"><i class="fa fa-language fa-fw"></i> <%= __('Help us translating on %s', 'POEditor') %></a>
+ <a href="https://github.com/codimd/server/issues" target="_blank"><i class="fa fa-tag fa-fw"></i> <%= __('Report an issue') %></a>
+ <br>
+ <a href="https://translate.codimd.org" target="_blank"><i class="fa fa-language fa-fw"></i> <%= __('Help us translating') %></a>
</div>
</div>
<div class="panel panel-default">
diff --git a/public/views/shared/signin-modal.ejs b/public/views/shared/signin-modal.ejs
index d46b8d54..40f01b57 100644
--- a/public/views/shared/signin-modal.ejs
+++ b/public/views/shared/signin-modal.ejs
@@ -57,7 +57,7 @@
<hr>
<% }%>
<% if (authProviders.ldap) { %>
- <h4>Via <% if (authProviders.ldapProviderName) { %> <%= authProviders.ldapProviderName %> (LDAP) <% } else { %> LDAP <% } %></h4>
+ <h4><%= __('Sign in via %s', authProviders.ldapProviderName ? authProviders.ldapProviderName + ' (LDAP)' : 'LDAP') %></h4>
<form data-toggle="validator" role="form" class="form-horizontal" method="post" enctype="application/x-www-form-urlencoded">
<div class="form-group">
<div class="col-sm-12">
@@ -73,7 +73,7 @@
</div>
<div class="form-group">
<div class="col-sm-12">
- <button type="submit" class="btn btn-primary" formaction="<%- serverURL %>/auth/ldap">Sign in</button>
+ <button type="submit" class="btn btn-primary" formaction="<%- serverURL %>/auth/ldap"><%= __('Sign In') %></button>
</div>
</div>
</form>
@@ -82,7 +82,7 @@
<hr>
<% }%>
<% if (authProviders.openID) { %>
- <h4>OpenID</h4>
+ <h4><%= __('Sign in via %s', 'OpenID') %></h4>
<form data-toggle="validator" role="form" class="form-horizontal" method="post" enctype="application/x-www-form-urlencoded">
<div class="form-group">
<div class="col-sm-12">
@@ -92,7 +92,7 @@
</div>
<div class="form-group">
<div class="col-sm-12">
- <button type="submit" class="btn btn-primary" formaction="<%- serverURL %>/auth/openid">Sign in</button>
+ <button type="submit" class="btn btn-primary" formaction="<%- serverURL %>/auth/openid"><%= __('Sign In') %></button>
</div>
</div>
</form>
@@ -101,11 +101,11 @@
<hr>
<% }%>
<% if (authProviders.email) { %>
- <h4>Via Email</h4>
+ <h4><%= __('Sign in via %s', 'E-Mail') %></h4>
<form data-toggle="validator" role="form" class="form-horizontal" method="post" enctype="application/x-www-form-urlencoded">
<div class="form-group">
<div class="col-sm-12">
- <input type="email" class="form-control" name="email" placeholder="Email" required>
+ <input type="email" class="form-control" name="email" placeholder="E-Mail" required>
<span class="help-block control-label with-errors" style="display: inline;"></span>
</div>
</div>
@@ -117,8 +117,8 @@
</div>
<div class="form-group">
<div class="col-sm-12">
- <button type="submit" class="btn btn-primary" formaction="<%- serverURL %>/login">Sign in</button>
- <% if (authProviders.allowEmailRegister) { %><button type="submit" class="btn btn-default" formaction="<%- serverURL %>/register">Register</button><% }%>
+ <button type="submit" class="btn btn-primary" formaction="<%- serverURL %>/login"><%= __('Sign In') %></button>
+ <% if (authProviders.allowEmailRegister) { %><button type="submit" class="btn btn-default" formaction="<%- serverURL %>/register"><%= __('Register') %></button><% }%>
</div>
</div>
</form>
diff --git a/public/views/slide.ejs b/public/views/slide.ejs
index bbdf5899..3331b85d 100644
--- a/public/views/slide.ejs
+++ b/public/views/slide.ejs
@@ -78,7 +78,7 @@
<% } %>
</small>
</div>
- <% if(typeof disqus !== 'undefined' && disqus) { %>
+ <% if(typeof disqus !== 'undefined' && disqus && !dnt) { %>
<div class="slides-disqus">
<%- include shared/disqus %>
</div>
@@ -90,12 +90,13 @@
<% if(useCDN) { %>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.7.0/lib/js/head.min.js" integrity="sha256-CTcwyen1cxIrm4hlqdxe0y7Hq6B0rpxAKLiXMD3dJv0=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.7.0/js/reveal.min.js" integrity="sha256-Xr6ZH+/kc7hDVReZLO5khBknteLqu5oen/xnSraXrVk=" crossorigin="anonymous"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/velocity/1.4.0/velocity.min.js" integrity="sha256-bhm0lgEt6ITaZCDzZpkr/VXVrLa5RP4u9v2AYsbzSUk=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js" integrity="sha256-jnOjDTXIPqall8M0MyTSt98JetJuZ7Yu+1Jm7hLTF7U=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-yaml/3.7.0/js-yaml.min.js" integrity="sha256-8PanqYAVOGlOct+i65R+HqibK3KPsXINnrSfxN+Y/J0=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js" integrity="sha256-yYfngbEKv4RENfGDvNUqJTqGFcKf31NJEe9OTnnMH3Y=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-immzXfCGLhnx3Zfi9F/dUcqxEM8K3o3oTFy9Bh6HCwg=" crossorigin="anonymous" defer></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/config/Safe.js" integrity="sha256-0ygBUDksNDXZS4vm5HMNH1a33KUu6QT1cdNTN+ZLF+4=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js" integrity="sha256-vvT7Ok9u6GbfnBPXnbM6FVDEO8E1kTdgHOFZOAXrktA=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mermaid/7.1.0/mermaid.min.js" integrity="sha256-M3OC0Q6g4/+Q4j73OvnsnA+lMkdAE5KgupRHqTiPbnI=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/js/emojify.min.js" integrity="sha256-VAB5tAlKBvgaxw8oJ1crWMVbdmBVl4mP/2M8MNRl+4E=" crossorigin="anonymous" defer></script>
@@ -108,6 +109,7 @@
<% } else { %>
<script src="<%- serverURL %>/build/MathJax/MathJax.js" defer></script>
<script src="<%- serverURL %>/build/MathJax/config/TeX-AMS-MML_HTMLorMML.js" defer></script>
+ <script src="<%- serverURL %>/build/MathJax/config/Safe.js" defer></script>
<%- include build/slide-pack-scripts %>
<% } %>
</body>
diff --git a/test/letter-avatars.js b/test/letter-avatars.js
index 16197f52..8cc32d8b 100644
--- a/test/letter-avatars.js
+++ b/test/letter-avatars.js
@@ -3,11 +3,50 @@
'use strict'
const assert = require('assert')
-const avatars = require('../lib/letter-avatars')
+const mock = require('mock-require')
+
+describe('generateAvatarURL() gravatar enabled', function () {
+ let avatars
+ beforeEach(function () {
+ // Reset config to make sure we don't influence other tests
+ let testconfig = {
+ allowGravatar: true,
+ serverURL: 'http://localhost:3000',
+ port: 3000
+ }
+ mock('../lib/config', testconfig)
+ avatars = mock.reRequire('../lib/letter-avatars')
+ })
+
+ it('should return correct urls', function () {
+ assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels', 'hello@dsprenkels.com', true), 'https://cdn.libravatar.org/avatar/d41b5f3508cc3f31865566a47dd0336b?s=400')
+ assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels', 'hello@dsprenkels.com', false), 'https://cdn.libravatar.org/avatar/d41b5f3508cc3f31865566a47dd0336b?s=96')
+ })
+
+ it('should return correct urls for names with spaces', function () {
+ assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels'), 'http://localhost:3000/user/Daan%20Sprenkels/avatar.svg')
+ })
+})
+
+describe('generateAvatarURL() gravatar disabled', function () {
+ let avatars
+ beforeEach(function () {
+ // Reset config to make sure we don't influence other tests
+ let testconfig = {
+ allowGravatar: false,
+ serverURL: 'http://localhost:3000',
+ port: 3000
+ }
+ mock('../lib/config', testconfig)
+ avatars = mock.reRequire('../lib/letter-avatars')
+ })
-describe('generateAvatarURL()', function () {
it('should return correct urls', function () {
- assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels', 'hello@dsprenkels.com', true), 'https://www.gravatar.com/avatar/d41b5f3508cc3f31865566a47dd0336b?s=400')
- assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels', 'hello@dsprenkels.com', false), 'https://www.gravatar.com/avatar/d41b5f3508cc3f31865566a47dd0336b?s=96')
+ assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels', 'hello@dsprenkels.com', true), 'http://localhost:3000/user/Daan%20Sprenkels/avatar.svg')
+ assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels', 'hello@dsprenkels.com', false), 'http://localhost:3000/user/Daan%20Sprenkels/avatar.svg')
+ })
+
+ it('should return correct urls for names with spaces', function () {
+ assert.strictEqual(avatars.generateAvatarURL('Daan Sprenkels'), 'http://localhost:3000/user/Daan%20Sprenkels/avatar.svg')
})
})
diff --git a/test/user.js b/test/user.js
new file mode 100644
index 00000000..38776a8f
--- /dev/null
+++ b/test/user.js
@@ -0,0 +1,64 @@
+/* eslint-env node, mocha */
+
+'use strict'
+
+const assert = require('assert')
+
+const models = require('../lib/models')
+const User = models.User
+
+describe('User Sequelize model', function () {
+ beforeEach(() => {
+ return models.sequelize.sync({ force: true })
+ })
+
+ it('stores a password hash on creation and verifies that password', function () {
+ const userData = {
+ password: 'test123'
+ }
+ const intentionallyInvalidPassword = 'stuff'
+
+ return User.create(userData).then(u => {
+ return Promise.all([
+ u.verifyPassword(userData.password).then(result => assert.strictEqual(result, true)),
+ u.verifyPassword(intentionallyInvalidPassword).then(result => assert.strictEqual(result, false))
+ ]).catch(e => assert.fail(e))
+ })
+ })
+
+ it('can cope with password stored in standard scrypt header format', function () {
+ const testKey = '736372797074000e00000008000000018c7b8c1ac273fd339badde759b3efc418bc61b776debd02dfe95989383cf9980ad21d2403dce33f4b551f5e98ce84edb792aee62600b1303ab8d4e6f0a53b0746e73193dbf557b888efc83a2d6a055a9'
+ const validPassword = 'test'
+ const intentionallyInvalidPassword = 'stuff'
+
+ const u = User.build()
+ u.setDataValue('password', testKey) // this circumvents the setter - which we don't need in this case!
+ return Promise.all([
+ u.verifyPassword(validPassword).then(result => assert.strictEqual(result, true)),
+ u.verifyPassword(intentionallyInvalidPassword).then(result => assert.strictEqual(result, false))
+ ]).catch(e => assert.fail(e))
+ })
+
+ it('deals with various characters correctly', function () {
+ const combinations = [
+ // ['correct password', 'scrypt syle hash']
+ ['test', '736372797074000e00000008000000018c7b8c1ac273fd339badde759b3efc418bc61b776debd02dfe95989383cf9980ad21d2403dce33f4b551f5e98ce84edb792aee62600b1303ab8d4e6f0a53b0746e73193dbf557b888efc83a2d6a055a9'],
+ ['ohai', '736372797074000e00000008000000010efec4e5ce6a5294491f1b1cccc38d3562f84844b9271aef635f8bc338cf4e0e0bac62ebb11379e85894c1f694e038fc39b087b4fdacd1280b50a7382d7ffbfc82f2190bef70d47708d2a94b75126294'],
+ ['my secret pw', '736372797074000f0000000800000001ffb4cd10a1dfe9e64c1e5416fd6d55b390b6822e78b46fd1f963fe9f317a1e05f9c5fee15e1f618286f4e38b55364ae1e7dc295c9dc33ee0f5712e86afe37e5784ff9c7cf84cf0e631dd11f84f3621e7'],
+ ['my secret pw', /* different hash! */ '736372797074000f0000000800000001f6083e9593365acd07550f7c72f19973fb7d52c3ef0a78026ff66c48ab14493843c642167b5e6b7f31927e8eeb912bc2639e41955fae15da5099998948cfeacd022f705624931c3b30104e6bb296b805'],
+ ['i am so extremely long, it\'s not even funny. Wait, you\'re still reading?', '736372797074000f00000008000000012d205f7bb529bb3a8b8bb25f5ab46197c7e9baf1aad64cf5e7b2584c84748cacf5e60631d58d21cb51fa34ea93b517e2fe2eb722931db5a70ff5a1330d821288ee7380c4136369f064b71b191a785a5b']
+ ]
+ const intentionallyInvalidPassword = 'stuff'
+
+ return Promise.all(combinations.map((combination, index) => {
+ const u = User.build()
+ u.setDataValue('password', combination[1])
+ return Promise.all([
+ u.verifyPassword(combination[0])
+ .then(result => assert.strictEqual(result, true, `password #${index} "${combination[0]}" should have been verified`)),
+ u.verifyPassword(intentionallyInvalidPassword)
+ .then(result => assert.strictEqual(result, false, `password #${index} "${combination[0]}" should NOT have been verified`))
+ ])
+ })).catch(e => assert.fail(e))
+ })
+})
diff --git a/webpack.common.js b/webpack.common.js
index 1e9c0707..ee8e9e80 100644
--- a/webpack.common.js
+++ b/webpack.common.js
@@ -195,13 +195,11 @@ module.exports = {
'bootstrap-validator',
'expose-loader?select2!select2',
'expose-loader?moment!moment',
- 'script-loader!js-url',
path.join(__dirname, 'public/js/cover.js')
],
index: [
'babel-polyfill',
'script-loader!jquery-ui-resizable',
- 'script-loader!js-url',
'script-loader!Idle.Js',
'expose-loader?LZString!lz-string',
'script-loader!codemirror',
@@ -248,7 +246,6 @@ module.exports = {
'expose-loader?jsyaml!js-yaml',
'script-loader!mermaid',
'expose-loader?moment!moment',
- 'script-loader!js-url',
'script-loader!handlebars',
'expose-loader?hljs!highlight.js',
'expose-loader?emojify!emojify.js',
@@ -395,18 +392,6 @@ module.exports = {
'css-loader'
]
}, {
- test: /\.scss$/,
- use: [
- MiniCssExtractPlugin.loader,
- {
- loader: 'css-loader',
- options: {
- importLoaders: 1
- }
- },
- 'sass-loader'
- ]
- }, {
test: /\.less$/,
use: [
MiniCssExtractPlugin.loader,
diff --git a/yarn.lock b/yarn.lock
index 53233c22..781d08e2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9,6 +9,228 @@
dependencies:
"@babel/highlight" "^7.0.0"
+"@babel/code-frame@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d"
+ integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==
+ dependencies:
+ "@babel/highlight" "^7.0.0"
+
+"@babel/core@^7.1.2":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.5.5.tgz#17b2686ef0d6bc58f963dddd68ab669755582c30"
+ integrity sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==
+ dependencies:
+ "@babel/code-frame" "^7.5.5"
+ "@babel/generator" "^7.5.5"
+ "@babel/helpers" "^7.5.5"
+ "@babel/parser" "^7.5.5"
+ "@babel/template" "^7.4.4"
+ "@babel/traverse" "^7.5.5"
+ "@babel/types" "^7.5.5"
+ convert-source-map "^1.1.0"
+ debug "^4.1.0"
+ json5 "^2.1.0"
+ lodash "^4.17.13"
+ resolve "^1.3.2"
+ semver "^5.4.1"
+ source-map "^0.5.0"
+
+"@babel/generator@^7.1.3", "@babel/generator@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.5.5.tgz#873a7f936a3c89491b43536d12245b626664e3cf"
+ integrity sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==
+ dependencies:
+ "@babel/types" "^7.5.5"
+ jsesc "^2.5.1"
+ lodash "^4.17.13"
+ source-map "^0.5.0"
+ trim-right "^1.0.1"
+
+"@babel/helper-annotate-as-pure@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32"
+ integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f"
+ integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==
+ dependencies:
+ "@babel/helper-explode-assignable-expression" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-builder-react-jsx@^7.3.0":
+ version "7.3.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4"
+ integrity sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==
+ dependencies:
+ "@babel/types" "^7.3.0"
+ esutils "^2.0.0"
+
+"@babel/helper-call-delegate@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43"
+ integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.4.4"
+ "@babel/traverse" "^7.4.4"
+ "@babel/types" "^7.4.4"
+
+"@babel/helper-create-class-features-plugin@^7.4.4", "@babel/helper-create-class-features-plugin@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.5.5.tgz#401f302c8ddbc0edd36f7c6b2887d8fa1122e5a4"
+ integrity sha512-ZsxkyYiRA7Bg+ZTRpPvB6AbOFKTFFK4LrvTet8lInm0V468MWCaSYJE+I7v2z2r8KNLtYiV+K5kTCnR7dvyZjg==
+ dependencies:
+ "@babel/helper-function-name" "^7.1.0"
+ "@babel/helper-member-expression-to-functions" "^7.5.5"
+ "@babel/helper-optimise-call-expression" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-replace-supers" "^7.5.5"
+ "@babel/helper-split-export-declaration" "^7.4.4"
+
+"@babel/helper-define-map@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz#3dec32c2046f37e09b28c93eb0b103fd2a25d369"
+ integrity sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==
+ dependencies:
+ "@babel/helper-function-name" "^7.1.0"
+ "@babel/types" "^7.5.5"
+ lodash "^4.17.13"
+
+"@babel/helper-explode-assignable-expression@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6"
+ integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==
+ dependencies:
+ "@babel/traverse" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-function-name@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53"
+ integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.0.0"
+ "@babel/template" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-get-function-arity@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3"
+ integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-hoist-variables@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a"
+ integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==
+ dependencies:
+ "@babel/types" "^7.4.4"
+
+"@babel/helper-member-expression-to-functions@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz#1fb5b8ec4453a93c439ee9fe3aeea4a84b76b590"
+ integrity sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==
+ dependencies:
+ "@babel/types" "^7.5.5"
+
+"@babel/helper-module-imports@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d"
+ integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz#f84ff8a09038dcbca1fd4355661a500937165b4a"
+ integrity sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/helper-simple-access" "^7.1.0"
+ "@babel/helper-split-export-declaration" "^7.4.4"
+ "@babel/template" "^7.4.4"
+ "@babel/types" "^7.5.5"
+ lodash "^4.17.13"
+
+"@babel/helper-optimise-call-expression@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5"
+ integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-plugin-utils@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250"
+ integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==
+
+"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351"
+ integrity sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==
+ dependencies:
+ lodash "^4.17.13"
+
+"@babel/helper-remap-async-to-generator@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f"
+ integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.0.0"
+ "@babel/helper-wrap-function" "^7.1.0"
+ "@babel/template" "^7.1.0"
+ "@babel/traverse" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-replace-supers@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz#f84ce43df031222d2bad068d2626cb5799c34bc2"
+ integrity sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==
+ dependencies:
+ "@babel/helper-member-expression-to-functions" "^7.5.5"
+ "@babel/helper-optimise-call-expression" "^7.0.0"
+ "@babel/traverse" "^7.5.5"
+ "@babel/types" "^7.5.5"
+
+"@babel/helper-simple-access@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c"
+ integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==
+ dependencies:
+ "@babel/template" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-split-export-declaration@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677"
+ integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==
+ dependencies:
+ "@babel/types" "^7.4.4"
+
+"@babel/helper-wrap-function@^7.1.0", "@babel/helper-wrap-function@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa"
+ integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==
+ dependencies:
+ "@babel/helper-function-name" "^7.1.0"
+ "@babel/template" "^7.1.0"
+ "@babel/traverse" "^7.1.0"
+ "@babel/types" "^7.2.0"
+
+"@babel/helpers@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.5.5.tgz#63908d2a73942229d1e6685bc2a0e730dde3b75e"
+ integrity sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==
+ dependencies:
+ "@babel/template" "^7.4.4"
+ "@babel/traverse" "^7.5.5"
+ "@babel/types" "^7.5.5"
+
"@babel/highlight@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4"
@@ -18,13 +240,715 @@
esutils "^2.0.2"
js-tokens "^4.0.0"
-"@mlink/scrypt@^6.1.2":
- version "6.1.2"
- resolved "https://registry.yarnpkg.com/@mlink/scrypt/-/scrypt-6.1.2.tgz#74fa1d91f27d5e916d88773fda59a422ddab7cf4"
- integrity sha512-7w1QoOih2eW0d0Lj5SK9mFV/8OhtZqYnT0IQiY/iCEcjdGAAt145YAAiq21iVV+H0Xe62fnF6VbZPMO3+qrSAQ==
+"@babel/parser@7.1.3":
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.3.tgz#2c92469bac2b7fbff810b67fca07bd138b48af77"
+ integrity sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w==
+
+"@babel/parser@^7.4.4", "@babel/parser@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b"
+ integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==
+
+"@babel/plugin-proposal-async-generator-functions@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e"
+ integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-remap-async-to-generator" "^7.1.0"
+ "@babel/plugin-syntax-async-generators" "^7.2.0"
+
+"@babel/plugin-proposal-class-properties@^7.1.0":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.5.tgz#a974cfae1e37c3110e71f3c6a2e48b8e71958cd4"
+ integrity sha512-AF79FsnWFxjlaosgdi421vmYG6/jg79bVD0dpD44QdgobzHKuLZ6S3vl8la9qIeSwGi8i1fS0O1mfuDAAdo1/A==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.5.5"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-proposal-decorators@^7.1.2":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz#de9b2a1a8ab0196f378e2a82f10b6e2a36f21cc0"
+ integrity sha512-z7MpQz3XC/iQJWXH9y+MaWcLPNSMY9RQSthrLzak8R8hCj0fuyNk+Dzi9kfNe/JxxlWQ2g7wkABbgWjW36MTcw==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.4.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-decorators" "^7.2.0"
+
+"@babel/plugin-proposal-do-expressions@^7.0.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.5.0.tgz#ceb594d4a618545b00aa0b5cd61cad4aaaeb7a5a"
+ integrity sha512-xe0QQrhm+DGj6H23a6XtwkJNimy1fo71O/YVBfrfvfSl0fsq9T9dfoQBIY4QceEIdUo7u9s7OPEdsWEuizfGeg==
dependencies:
- bindings "^1.3.0"
- nan "^2.10.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-do-expressions" "^7.2.0"
+
+"@babel/plugin-proposal-dynamic-import@^7.5.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz#e532202db4838723691b10a67b8ce509e397c506"
+ integrity sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-dynamic-import" "^7.2.0"
+
+"@babel/plugin-proposal-export-default-from@^7.0.0":
+ version "7.5.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.5.2.tgz#2c0ac2dcc36e3b2443fead2c3c5fc796fb1b5145"
+ integrity sha512-wr9Itk05L1/wyyZKVEmXWCdcsp/e185WUNl6AfYZeEKYaUPPvHXRDqO5K1VH7/UamYqGJowFRuCv30aDYZawsg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-export-default-from" "^7.2.0"
+
+"@babel/plugin-proposal-export-namespace-from@^7.0.0":
+ version "7.5.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.5.2.tgz#ccd5ed05b06d700688ff1db01a9dd27155e0d2a0"
+ integrity sha512-TKUdOL07anjZEbR1iSxb5WFh810KyObdd29XLFLGo1IDsSuGrjH3ouWSbAxHNmrVKzr9X71UYl2dQ7oGGcRp0g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-export-namespace-from" "^7.2.0"
+
+"@babel/plugin-proposal-function-bind@^7.0.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-function-bind/-/plugin-proposal-function-bind-7.2.0.tgz#94dc2cdc505cafc4e225c0014335a01648056bf7"
+ integrity sha512-qOFJ/eX1Is78sywwTxDcsntLOdb5ZlHVVqUz5xznq8ldAfOVIyZzp1JE2rzHnaksZIhrqMrwIpQL/qcEprnVbw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-function-bind" "^7.2.0"
+
+"@babel/plugin-proposal-function-sent@^7.1.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.5.0.tgz#39233aa801145e7d8072077cdb2d25f781c1ffd7"
+ integrity sha512-JXdfiQpKoC6UgQliZkp3NX7K3MVec1o1nfTWiCCIORE5ag/QZXhL0aSD8/Y2K+hIHonSTxuJF9rh9zsB6hBi2A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-wrap-function" "^7.2.0"
+ "@babel/plugin-syntax-function-sent" "^7.2.0"
+
+"@babel/plugin-proposal-json-strings@^7.0.0", "@babel/plugin-proposal-json-strings@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317"
+ integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-json-strings" "^7.2.0"
+
+"@babel/plugin-proposal-logical-assignment-operators@^7.0.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.2.0.tgz#8a5cea6c42a7c87446959e02fff5fad012c56f57"
+ integrity sha512-0w797xwdPXKk0m3Js74hDi0mCTZplIu93MOSfb1ZLd/XFe3abWypx1QknVk0J+ohnsjYpvjH4Gwfo2i3RicB6Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.2.0"
+
+"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.4.4.tgz#41c360d59481d88e0ce3a3f837df10121a769b39"
+ integrity sha512-Amph7Epui1Dh/xxUxS2+K22/MUi6+6JVTvy3P58tja3B6yKTSjwwx0/d83rF7551D6PVSSoplQb8GCwqec7HRw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.2.0"
+
+"@babel/plugin-proposal-numeric-separator@^7.0.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.2.0.tgz#646854daf4cd22fd6733f6076013a936310443ac"
+ integrity sha512-DohMOGDrZiMKS7LthjUZNNcWl8TAf5BZDwZAH4wpm55FuJTHgfqPGdibg7rZDmont/8Yg0zA03IgT6XLeP+4sg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-numeric-separator" "^7.2.0"
+
+"@babel/plugin-proposal-object-rest-spread@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz#61939744f71ba76a3ae46b5eea18a54c16d22e58"
+ integrity sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-object-rest-spread" "^7.2.0"
+
+"@babel/plugin-proposal-optional-catch-binding@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5"
+ integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
+
+"@babel/plugin-proposal-optional-chaining@^7.0.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.2.0.tgz#ae454f4c21c6c2ce8cb2397dc332ae8b420c5441"
+ integrity sha512-ea3Q6edZC/55wEBVZAEz42v528VulyO0eir+7uky/sT4XRcdkWJcFi1aPtitTlwUzGnECWJNExWww1SStt+yWw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-optional-chaining" "^7.2.0"
+
+"@babel/plugin-proposal-pipeline-operator@^7.0.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.5.0.tgz#4100ec55ef4f6a4c2490b5f5a4f2a22dfa272c06"
+ integrity sha512-HFYuu/yGnkn69ligXxU0ohOVvQDsMNOUJs/c4PYLUVS6ntCYOyGmRQQaSYJARJ9rvc7/ulZKIzxd4wk91hN63A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-pipeline-operator" "^7.5.0"
+
+"@babel/plugin-proposal-throw-expressions@^7.0.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.2.0.tgz#2d9e452d370f139000e51db65d0a85dc60c64739"
+ integrity sha512-adsydM8DQF4i5DLNO4ySAU5VtHTPewOtNBV3u7F4lNMPADFF9bWQ+iDtUUe8+033cYCUz+bFlQdXQJmJOwoLpw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-throw-expressions" "^7.2.0"
+
+"@babel/plugin-proposal-unicode-property-regex@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78"
+ integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-regex" "^7.4.4"
+ regexpu-core "^4.5.4"
+
+"@babel/plugin-syntax-async-generators@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f"
+ integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-decorators@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz#c50b1b957dcc69e4b1127b65e1c33eef61570c1b"
+ integrity sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-do-expressions@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.2.0.tgz#f3d4b01be05ecde2892086d7cfd5f1fa1ead5a2a"
+ integrity sha512-/u4rJ+XEmZkIhspVuKRS+7WLvm7Dky9j9TvGK5IgId8B3FKir9MG+nQxDZ9xLn10QMBvW58dZ6ABe2juSmARjg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612"
+ integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-export-default-from@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.2.0.tgz#edd83b7adc2e0d059e2467ca96c650ab6d2f3820"
+ integrity sha512-c7nqUnNST97BWPtoe+Ssi+fJukc9P9/JMZ71IOMNQWza2E+Psrd46N6AEvtw6pqK+gt7ChjXyrw4SPDO79f3Lw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-export-namespace-from@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.2.0.tgz#8d257838c6b3b779db52c0224443459bd27fb039"
+ integrity sha512-1zGA3UNch6A+A11nIzBVEaE3DDJbjfB+eLIcf0GGOh/BJr/8NxL3546MGhV/r0RhH4xADFIEso39TKCfEMlsGA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-flow@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c"
+ integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-function-bind@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-function-bind/-/plugin-syntax-function-bind-7.2.0.tgz#68fe85b0c0da67125f87bf239c68051b06c66309"
+ integrity sha512-/WzU1lLU2l0wDfB42Wkg6tahrmtBbiD8C4H6EGSX0M4GAjzN6JiOpq/Uh8G6GSoR6lPMvhjM0MNiV6znj6y/zg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-function-sent@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.2.0.tgz#91474d4d400604e4c6cbd4d77cd6cb3b8565576c"
+ integrity sha512-2MOVuJ6IMAifp2cf0RFkHQaOvHpbBYyWCvgtF/WVqXhTd7Bgtov8iXVCadLXp2FN1BrI2EFl+JXuwXy0qr3KoQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-import-meta@^7.0.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.2.0.tgz#2333ef4b875553a3bcd1e93f8ebc09f5b9213a40"
+ integrity sha512-Hq6kFSZD7+PHkmBN8bCpHR6J8QEoCuEV/B38AIQscYjgMZkGlXB7cHNFzP5jR4RCh5545yP1ujHdmO7hAgKtBA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-json-strings@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470"
+ integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-jsx@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7"
+ integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-logical-assignment-operators@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.2.0.tgz#fcab7388530e96c6f277ce494c55caa6c141fcfb"
+ integrity sha512-l/NKSlrnvd73/EL540t9hZhcSo4TULBrIPs9Palju8Oc/A8DXDO+xQf04whfeuZLpi8AuIvCAdpKmmubLN4EfQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-nullish-coalescing-operator@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.2.0.tgz#f75083dfd5ade73e783db729bbd87e7b9efb7624"
+ integrity sha512-lRCEaKE+LTxDQtgbYajI04ddt6WW0WJq57xqkAZ+s11h4YgfRHhVA/Y2VhfPzzFD4qeLHWg32DMp9HooY4Kqlg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-numeric-separator@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.2.0.tgz#7470fe070c2944469a756752a69a6963135018be"
+ integrity sha512-DroeVNkO/BnGpL2R7+ZNZqW+E24aR/4YWxP3Qb15d6lPU8KDzF8HlIUIRCOJRn4X77/oyW4mJY+7FHfY82NLtQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-object-rest-spread@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e"
+ integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-optional-catch-binding@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c"
+ integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-optional-chaining@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.2.0.tgz#a59d6ae8c167e7608eaa443fda9fa8fa6bf21dff"
+ integrity sha512-HtGCtvp5Uq/jH/WNUPkK6b7rufnCPLLlDAFN7cmACoIjaOOiXxUt3SswU5loHqrhtqTsa/WoLQ1OQ1AGuZqaWA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-pipeline-operator@^7.5.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-pipeline-operator/-/plugin-syntax-pipeline-operator-7.5.0.tgz#8ea7c2c22847c797748bf07752722a317079dc1e"
+ integrity sha512-5FVxPiMTMXWk4R7Kq9pt272nDu8VImJdaIzvXFSTcXFbgKWWaOdbic12TvUvl6cK+AE5EgnhwvxuWik4ZYYdzg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-throw-expressions@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.2.0.tgz#79001ee2afe1b174b1733cdc2fc69c9a46a0f1f8"
+ integrity sha512-ngwynuqu1Rx0JUS9zxSDuPgW1K8TyVZCi2hHehrL4vyjqE7RGoNHWlZsS7KQT2vw9Yjk4YLa0+KldBXTRdPLRg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-arrow-functions@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550"
+ integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-async-to-generator@^7.5.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e"
+ integrity sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-remap-async-to-generator" "^7.1.0"
+
+"@babel/plugin-transform-block-scoped-functions@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190"
+ integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-block-scoping@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.5.5.tgz#a35f395e5402822f10d2119f6f8e045e3639a2ce"
+ integrity sha512-82A3CLRRdYubkG85lKwhZB0WZoHxLGsJdux/cOVaJCJpvYFl1LVzAIFyRsa7CvXqW8rBM4Zf3Bfn8PHt5DP0Sg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ lodash "^4.17.13"
+
+"@babel/plugin-transform-classes@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz#d094299d9bd680a14a2a0edae38305ad60fb4de9"
+ integrity sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.0.0"
+ "@babel/helper-define-map" "^7.5.5"
+ "@babel/helper-function-name" "^7.1.0"
+ "@babel/helper-optimise-call-expression" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-replace-supers" "^7.5.5"
+ "@babel/helper-split-export-declaration" "^7.4.4"
+ globals "^11.1.0"
+
+"@babel/plugin-transform-computed-properties@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da"
+ integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-destructuring@^7.5.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz#f6c09fdfe3f94516ff074fe877db7bc9ef05855a"
+ integrity sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-dotall-regex@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3"
+ integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-regex" "^7.4.4"
+ regexpu-core "^4.5.4"
+
+"@babel/plugin-transform-duplicate-keys@^7.5.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853"
+ integrity sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-exponentiation-operator@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008"
+ integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==
+ dependencies:
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-flow-strip-types@^7.0.0":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz#d267a081f49a8705fc9146de0768c6b58dccd8f7"
+ integrity sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-flow" "^7.2.0"
+
+"@babel/plugin-transform-for-of@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556"
+ integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-function-name@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad"
+ integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==
+ dependencies:
+ "@babel/helper-function-name" "^7.1.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-literals@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1"
+ integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-member-expression-literals@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d"
+ integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-modules-amd@^7.5.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91"
+ integrity sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.1.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ babel-plugin-dynamic-import-node "^2.3.0"
+
+"@babel/plugin-transform-modules-commonjs@^7.5.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz#425127e6045231360858eeaa47a71d75eded7a74"
+ integrity sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.4.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-simple-access" "^7.1.0"
+ babel-plugin-dynamic-import-node "^2.3.0"
+
+"@babel/plugin-transform-modules-systemjs@^7.5.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249"
+ integrity sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.4.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ babel-plugin-dynamic-import-node "^2.3.0"
+
+"@babel/plugin-transform-modules-umd@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae"
+ integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.1.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-named-capturing-groups-regex@^7.4.5":
+ version "7.4.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106"
+ integrity sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==
+ dependencies:
+ regexp-tree "^0.1.6"
+
+"@babel/plugin-transform-new-target@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5"
+ integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-object-super@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz#c70021df834073c65eb613b8679cc4a381d1a9f9"
+ integrity sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-replace-supers" "^7.5.5"
+
+"@babel/plugin-transform-parameters@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16"
+ integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==
+ dependencies:
+ "@babel/helper-call-delegate" "^7.4.4"
+ "@babel/helper-get-function-arity" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-property-literals@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905"
+ integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-react-display-name@^7.0.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0"
+ integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-react-jsx-self@^7.0.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba"
+ integrity sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@babel/plugin-transform-react-jsx-source@^7.0.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz#583b10c49cf057e237085bcbd8cc960bd83bd96b"
+ integrity sha512-58Q+Jsy4IDCZx7kqEZuSDdam/1oW8OdDX8f+Loo6xyxdfg1yF0GE2XNJQSTZCaMol93+FBzpWiPEwtbMloAcPg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@babel/plugin-transform-react-jsx@^7.0.0":
+ version "7.3.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290"
+ integrity sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==
+ dependencies:
+ "@babel/helper-builder-react-jsx" "^7.3.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@babel/plugin-transform-regenerator@^7.4.5":
+ version "7.4.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f"
+ integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==
+ dependencies:
+ regenerator-transform "^0.14.0"
+
+"@babel/plugin-transform-reserved-words@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634"
+ integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-shorthand-properties@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0"
+ integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-spread@^7.2.0":
+ version "7.2.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406"
+ integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-sticky-regex@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1"
+ integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-regex" "^7.0.0"
+
+"@babel/plugin-transform-template-literals@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0"
+ integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-typeof-symbol@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2"
+ integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-unicode-regex@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f"
+ integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-regex" "^7.4.4"
+ regexpu-core "^4.5.4"
+
+"@babel/preset-env@^7.1.0":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.5.5.tgz#bc470b53acaa48df4b8db24a570d6da1fef53c9a"
+ integrity sha512-GMZQka/+INwsMz1A5UEql8tG015h5j/qjptpKY2gJ7giy8ohzU710YciJB5rcKsWGWHiW3RUnHib0E5/m3Tp3A==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-proposal-async-generator-functions" "^7.2.0"
+ "@babel/plugin-proposal-dynamic-import" "^7.5.0"
+ "@babel/plugin-proposal-json-strings" "^7.2.0"
+ "@babel/plugin-proposal-object-rest-spread" "^7.5.5"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.2.0"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
+ "@babel/plugin-syntax-async-generators" "^7.2.0"
+ "@babel/plugin-syntax-dynamic-import" "^7.2.0"
+ "@babel/plugin-syntax-json-strings" "^7.2.0"
+ "@babel/plugin-syntax-object-rest-spread" "^7.2.0"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
+ "@babel/plugin-transform-arrow-functions" "^7.2.0"
+ "@babel/plugin-transform-async-to-generator" "^7.5.0"
+ "@babel/plugin-transform-block-scoped-functions" "^7.2.0"
+ "@babel/plugin-transform-block-scoping" "^7.5.5"
+ "@babel/plugin-transform-classes" "^7.5.5"
+ "@babel/plugin-transform-computed-properties" "^7.2.0"
+ "@babel/plugin-transform-destructuring" "^7.5.0"
+ "@babel/plugin-transform-dotall-regex" "^7.4.4"
+ "@babel/plugin-transform-duplicate-keys" "^7.5.0"
+ "@babel/plugin-transform-exponentiation-operator" "^7.2.0"
+ "@babel/plugin-transform-for-of" "^7.4.4"
+ "@babel/plugin-transform-function-name" "^7.4.4"
+ "@babel/plugin-transform-literals" "^7.2.0"
+ "@babel/plugin-transform-member-expression-literals" "^7.2.0"
+ "@babel/plugin-transform-modules-amd" "^7.5.0"
+ "@babel/plugin-transform-modules-commonjs" "^7.5.0"
+ "@babel/plugin-transform-modules-systemjs" "^7.5.0"
+ "@babel/plugin-transform-modules-umd" "^7.2.0"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5"
+ "@babel/plugin-transform-new-target" "^7.4.4"
+ "@babel/plugin-transform-object-super" "^7.5.5"
+ "@babel/plugin-transform-parameters" "^7.4.4"
+ "@babel/plugin-transform-property-literals" "^7.2.0"
+ "@babel/plugin-transform-regenerator" "^7.4.5"
+ "@babel/plugin-transform-reserved-words" "^7.2.0"
+ "@babel/plugin-transform-shorthand-properties" "^7.2.0"
+ "@babel/plugin-transform-spread" "^7.2.0"
+ "@babel/plugin-transform-sticky-regex" "^7.2.0"
+ "@babel/plugin-transform-template-literals" "^7.4.4"
+ "@babel/plugin-transform-typeof-symbol" "^7.2.0"
+ "@babel/plugin-transform-unicode-regex" "^7.4.4"
+ "@babel/types" "^7.5.5"
+ browserslist "^4.6.0"
+ core-js-compat "^3.1.1"
+ invariant "^2.2.2"
+ js-levenshtein "^1.1.3"
+ semver "^5.5.0"
+
+"@babel/preset-flow@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.0.0.tgz#afd764835d9535ec63d8c7d4caf1c06457263da2"
+ integrity sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-transform-flow-strip-types" "^7.0.0"
+
+"@babel/preset-react@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0"
+ integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-transform-react-display-name" "^7.0.0"
+ "@babel/plugin-transform-react-jsx" "^7.0.0"
+ "@babel/plugin-transform-react-jsx-self" "^7.0.0"
+ "@babel/plugin-transform-react-jsx-source" "^7.0.0"
+
+"@babel/preset-stage-0@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/preset-stage-0/-/preset-stage-0-7.0.0.tgz#999aaec79ee8f0a763042c68c06539c97c6e0646"
+ integrity sha512-FBMd0IiARPtH5aaOFUVki6evHiJQiY0pFy7fizyRF7dtwc+el3nwpzvhb9qBNzceG1OIJModG1xpE0DDFjPXwA==
+
+"@babel/template@^7.1.0", "@babel/template@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237"
+ integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/parser" "^7.4.4"
+ "@babel/types" "^7.4.4"
+
+"@babel/traverse@^7.1.0", "@babel/traverse@^7.1.4", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb"
+ integrity sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==
+ dependencies:
+ "@babel/code-frame" "^7.5.5"
+ "@babel/generator" "^7.5.5"
+ "@babel/helper-function-name" "^7.1.0"
+ "@babel/helper-split-export-declaration" "^7.4.4"
+ "@babel/parser" "^7.5.5"
+ "@babel/types" "^7.5.5"
+ debug "^4.1.0"
+ globals "^11.1.0"
+ lodash "^4.17.13"
+
+"@babel/types@^7.0.0", "@babel/types@^7.1.3", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.5.5.tgz#97b9f728e182785909aa4ab56264f090a028d18a"
+ integrity sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==
+ dependencies:
+ esutils "^2.0.2"
+ lodash "^4.17.13"
+ to-fast-properties "^2.0.0"
+
+"@braintree/sanitize-url@^3.1.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-3.1.0.tgz#8ff71d51053cd5ee4981e5a501d80a536244f7fd"
+ integrity sha512-GcIY79elgB+azP74j8vqkiXz8xLFfIzbQJdlwOPisgbKT00tviJQuEghOXSMVxJ00HoYJbGswr4kcllUc4xCcg==
"@passport-next/passport-openid@^1.0.0":
version "1.0.0"
@@ -39,24 +963,6 @@
resolved "https://registry.yarnpkg.com/@passport-next/passport-strategy/-/passport-strategy-1.1.0.tgz#4c0df069e2ec9262791b9ef1e23320c1d73bdb74"
integrity sha512-2KhFjtPueJG6xVj2HnqXt9BlANOfYCVLyu+pXYjPGBDT8yk+vQwc/6tsceIj+mayKcoxMau2JimggXRPHgoc8w==
-"@textlint/ast-node-types@^4.0.3":
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/@textlint/ast-node-types/-/ast-node-types-4.2.1.tgz#978fa10e23468114462fc08ef29f96980c12a8ef"
- integrity sha512-Pqg1LTJpF929Ovi/lCaPqlyz8yDwBFbQulC0jyQcbRAoTxYS4AZMc48Ug2yk0so5hISQXKrlAxyVBmBVl9EKGA==
-
-"@textlint/markdown-to-ast@~6.0.9":
- version "6.0.9"
- resolved "https://registry.yarnpkg.com/@textlint/markdown-to-ast/-/markdown-to-ast-6.0.9.tgz#e7c89e5ad15d17dcd8e5a62758358936827658fa"
- integrity sha512-hfAWBvTeUGh5t5kTn2U3uP3qOSM1BSrxzl1jF3nn0ywfZXpRBZr5yRjXnl4DzIYawCtZOshmRi/tI3/x4TE1jQ==
- dependencies:
- "@textlint/ast-node-types" "^4.0.3"
- debug "^2.1.3"
- remark-frontmatter "^1.2.0"
- remark-parse "^5.0.0"
- structured-source "^3.0.2"
- traverse "^0.6.6"
- unified "^6.1.6"
-
"@types/body-parser@*":
version "1.17.0"
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.17.0.tgz#9f5c9d9bd04bb54be32d5eb9fc0d8c974e6cf58c"
@@ -77,15 +983,10 @@
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
-"@types/events@*":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
- integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
-
"@types/express-serve-static-core@*":
- version "4.16.1"
- resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.16.1.tgz#35df7b302299a4ab138a643617bd44078e74d44e"
- integrity sha512-QgbIMRU1EVRry5cIu1ORCQP4flSYqLM1lS5LYyGWfKnFT3E58f0gKto7BR13clBFVrVZ0G0rbLZ1hUpSkgQQOA==
+ version "4.16.6"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.16.6.tgz#66d4b29ece3e2fb6e5aac2232723002426e651bd"
+ integrity sha512-8wr3CA/EMybyb6/V8qvTRKiNkPmgUA26uA9XWD6hlA0yFDuqi4r2L0C2B0U2HAYltJamoYJszlkaWM31vrKsHg==
dependencies:
"@types/node" "*"
"@types/range-parser" "*"
@@ -99,51 +1000,45 @@
"@types/express-serve-static-core" "*"
"@types/serve-static" "*"
-"@types/geojson@^1.0.0":
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-1.0.6.tgz#3e02972728c69248c2af08d60a48cbb8680fffdf"
- integrity sha512-Xqg/lIZMrUd0VRmSRbCAewtwGZiAk3mEUDvV4op1tGl+LvyPcb/MIOSxTl9z+9+J+R4/vpjiCAT4xeKzH9ji1w==
-
"@types/ldapjs@^1.0.0":
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/@types/ldapjs/-/ldapjs-1.0.3.tgz#eb2acbe603845136196dd25fba77e476d6d7db56"
- integrity sha512-FSj24s1WsFEfOy8taIKp2DokSZfFkjWYZb88AS5eDj3WTocZ+4DnHjhzrXEs048WQ5mfOLJXMOAnc0kSnHh5Lw==
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@types/ldapjs/-/ldapjs-1.0.4.tgz#06774665035fbb277133d8cde800d18c7993707f"
+ integrity sha512-TXOYipuauiZV+nRslqgm02+wP007GNN7ZFHZtXe8GhnRJw2zxCOtVDi3ZnKTBxbZhFz3xPFSwJ5bCIRmXDMqTg==
dependencies:
- "@types/events" "*"
"@types/node" "*"
"@types/mime@*":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.0.tgz#5a7306e367c539b9f6543499de8dd519fac37a8b"
- integrity sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d"
+ integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==
-"@types/node@*", "@types/node@^10.11.7", "@types/node@^10.12.12":
- version "10.12.18"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67"
- integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==
+"@types/node@*":
+ version "12.0.3"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.3.tgz#5d8d24e0033fc6393efadc85cb59c1f638095c9a"
+ integrity sha512-zkOxCS/fA+3SsdA+9Yun0iANxzhQRiNwTvJSr6N95JhuJ/x27z9G2URx1Jpt3zYFfCGUXZGL5UDxt5eyLE7wgw==
-"@types/passport@^0.4.7":
- version "0.4.7"
- resolved "https://registry.yarnpkg.com/@types/passport/-/passport-0.4.7.tgz#2b7f29bf61df91cf77023b3777e940b613d4b4d8"
- integrity sha512-EePlxNYx5tf3n0yjdPXX0/zDOv0UCwjMyQo4UkWGlhHteNDItAj7TfDdLttSThVMKQz3uCW7lsGzMuml0f8g9Q==
+"@types/node@^10.12.12", "@types/node@^10.12.26":
+ version "10.14.7"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.7.tgz#1854f0a9aa8d2cd6818d607b3d091346c6730362"
+ integrity sha512-on4MmIDgHXiuJDELPk1NFaKVUxxCFr37tm8E9yN6rAiF5Pzp/9bBfBHkoexqRiY+hk/Z04EJU9kKEb59YqJ82A==
+
+"@types/passport@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/passport/-/passport-1.0.0.tgz#747fa127a747a145ff279f3df3e07c425e5ff297"
+ integrity sha512-R2FXqM+AgsMIym0PuKj08Ybx+GR6d2rU3b1/8OcHolJ+4ga2pRPX105wboV6hq1AJvMo2frQzYKdqXS5+4cyMw==
dependencies:
"@types/express" "*"
"@types/q@^1.5.1":
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.1.tgz#48fd98c1561fe718b61733daed46ff115b496e18"
- integrity sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA==
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
+ integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==
"@types/range-parser@*":
version "1.2.3"
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c"
integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==
-"@types/semver@^5.5.0":
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.5.0.tgz#146c2a29ee7d3bae4bf2fcb274636e264c813c45"
- integrity sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==
-
"@types/serve-static@*":
version "1.13.2"
resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.2.tgz#f5ac4d7a6420a99a6a45af4719f4dcd8cd907a48"
@@ -152,163 +1047,179 @@
"@types/express-serve-static-core" "*"
"@types/mime" "*"
-"@webassemblyjs/ast@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace"
- integrity sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==
- dependencies:
- "@webassemblyjs/helper-module-context" "1.7.11"
- "@webassemblyjs/helper-wasm-bytecode" "1.7.11"
- "@webassemblyjs/wast-parser" "1.7.11"
-
-"@webassemblyjs/floating-point-hex-parser@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz#a69f0af6502eb9a3c045555b1a6129d3d3f2e313"
- integrity sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==
-
-"@webassemblyjs/helper-api-error@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz#c7b6bb8105f84039511a2b39ce494f193818a32a"
- integrity sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==
-
-"@webassemblyjs/helper-buffer@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz#3122d48dcc6c9456ed982debe16c8f37101df39b"
- integrity sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==
-
-"@webassemblyjs/helper-code-frame@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz#cf8f106e746662a0da29bdef635fcd3d1248364b"
- integrity sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==
- dependencies:
- "@webassemblyjs/wast-printer" "1.7.11"
-
-"@webassemblyjs/helper-fsm@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz#df38882a624080d03f7503f93e3f17ac5ac01181"
- integrity sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==
-
-"@webassemblyjs/helper-module-context@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz#d874d722e51e62ac202476935d649c802fa0e209"
- integrity sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==
-
-"@webassemblyjs/helper-wasm-bytecode@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz#dd9a1e817f1c2eb105b4cf1013093cb9f3c9cb06"
- integrity sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==
-
-"@webassemblyjs/helper-wasm-section@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz#9c9ac41ecf9fbcfffc96f6d2675e2de33811e68a"
- integrity sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==
- dependencies:
- "@webassemblyjs/ast" "1.7.11"
- "@webassemblyjs/helper-buffer" "1.7.11"
- "@webassemblyjs/helper-wasm-bytecode" "1.7.11"
- "@webassemblyjs/wasm-gen" "1.7.11"
-
-"@webassemblyjs/ieee754@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz#c95839eb63757a31880aaec7b6512d4191ac640b"
- integrity sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==
+"@types/unist@^2.0.0", "@types/unist@^2.0.2":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e"
+ integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==
+
+"@webassemblyjs/ast@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359"
+ integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==
+ dependencies:
+ "@webassemblyjs/helper-module-context" "1.8.5"
+ "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
+ "@webassemblyjs/wast-parser" "1.8.5"
+
+"@webassemblyjs/floating-point-hex-parser@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721"
+ integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==
+
+"@webassemblyjs/helper-api-error@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7"
+ integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==
+
+"@webassemblyjs/helper-buffer@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204"
+ integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==
+
+"@webassemblyjs/helper-code-frame@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e"
+ integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==
+ dependencies:
+ "@webassemblyjs/wast-printer" "1.8.5"
+
+"@webassemblyjs/helper-fsm@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452"
+ integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==
+
+"@webassemblyjs/helper-module-context@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245"
+ integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ mamacro "^0.0.3"
+
+"@webassemblyjs/helper-wasm-bytecode@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61"
+ integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==
+
+"@webassemblyjs/helper-wasm-section@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf"
+ integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-buffer" "1.8.5"
+ "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
+ "@webassemblyjs/wasm-gen" "1.8.5"
+
+"@webassemblyjs/ieee754@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e"
+ integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==
dependencies:
"@xtuc/ieee754" "^1.2.0"
-"@webassemblyjs/leb128@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.11.tgz#d7267a1ee9c4594fd3f7e37298818ec65687db63"
- integrity sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==
- dependencies:
- "@xtuc/long" "4.2.1"
-
-"@webassemblyjs/utf8@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.11.tgz#06d7218ea9fdc94a6793aa92208160db3d26ee82"
- integrity sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==
-
-"@webassemblyjs/wasm-edit@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz#8c74ca474d4f951d01dbae9bd70814ee22a82005"
- integrity sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==
- dependencies:
- "@webassemblyjs/ast" "1.7.11"
- "@webassemblyjs/helper-buffer" "1.7.11"
- "@webassemblyjs/helper-wasm-bytecode" "1.7.11"
- "@webassemblyjs/helper-wasm-section" "1.7.11"
- "@webassemblyjs/wasm-gen" "1.7.11"
- "@webassemblyjs/wasm-opt" "1.7.11"
- "@webassemblyjs/wasm-parser" "1.7.11"
- "@webassemblyjs/wast-printer" "1.7.11"
-
-"@webassemblyjs/wasm-gen@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz#9bbba942f22375686a6fb759afcd7ac9c45da1a8"
- integrity sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==
- dependencies:
- "@webassemblyjs/ast" "1.7.11"
- "@webassemblyjs/helper-wasm-bytecode" "1.7.11"
- "@webassemblyjs/ieee754" "1.7.11"
- "@webassemblyjs/leb128" "1.7.11"
- "@webassemblyjs/utf8" "1.7.11"
-
-"@webassemblyjs/wasm-opt@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz#b331e8e7cef8f8e2f007d42c3a36a0580a7d6ca7"
- integrity sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==
- dependencies:
- "@webassemblyjs/ast" "1.7.11"
- "@webassemblyjs/helper-buffer" "1.7.11"
- "@webassemblyjs/wasm-gen" "1.7.11"
- "@webassemblyjs/wasm-parser" "1.7.11"
-
-"@webassemblyjs/wasm-parser@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz#6e3d20fa6a3519f6b084ef9391ad58211efb0a1a"
- integrity sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==
- dependencies:
- "@webassemblyjs/ast" "1.7.11"
- "@webassemblyjs/helper-api-error" "1.7.11"
- "@webassemblyjs/helper-wasm-bytecode" "1.7.11"
- "@webassemblyjs/ieee754" "1.7.11"
- "@webassemblyjs/leb128" "1.7.11"
- "@webassemblyjs/utf8" "1.7.11"
-
-"@webassemblyjs/wast-parser@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz#25bd117562ca8c002720ff8116ef9072d9ca869c"
- integrity sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==
- dependencies:
- "@webassemblyjs/ast" "1.7.11"
- "@webassemblyjs/floating-point-hex-parser" "1.7.11"
- "@webassemblyjs/helper-api-error" "1.7.11"
- "@webassemblyjs/helper-code-frame" "1.7.11"
- "@webassemblyjs/helper-fsm" "1.7.11"
- "@xtuc/long" "4.2.1"
-
-"@webassemblyjs/wast-printer@1.7.11":
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz#c4245b6de242cb50a2cc950174fdbf65c78d7813"
- integrity sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==
- dependencies:
- "@webassemblyjs/ast" "1.7.11"
- "@webassemblyjs/wast-parser" "1.7.11"
- "@xtuc/long" "4.2.1"
+"@webassemblyjs/leb128@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10"
+ integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==
+ dependencies:
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/utf8@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc"
+ integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==
+
+"@webassemblyjs/wasm-edit@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a"
+ integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-buffer" "1.8.5"
+ "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
+ "@webassemblyjs/helper-wasm-section" "1.8.5"
+ "@webassemblyjs/wasm-gen" "1.8.5"
+ "@webassemblyjs/wasm-opt" "1.8.5"
+ "@webassemblyjs/wasm-parser" "1.8.5"
+ "@webassemblyjs/wast-printer" "1.8.5"
+
+"@webassemblyjs/wasm-gen@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc"
+ integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
+ "@webassemblyjs/ieee754" "1.8.5"
+ "@webassemblyjs/leb128" "1.8.5"
+ "@webassemblyjs/utf8" "1.8.5"
+
+"@webassemblyjs/wasm-opt@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264"
+ integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-buffer" "1.8.5"
+ "@webassemblyjs/wasm-gen" "1.8.5"
+ "@webassemblyjs/wasm-parser" "1.8.5"
+
+"@webassemblyjs/wasm-parser@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d"
+ integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-api-error" "1.8.5"
+ "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
+ "@webassemblyjs/ieee754" "1.8.5"
+ "@webassemblyjs/leb128" "1.8.5"
+ "@webassemblyjs/utf8" "1.8.5"
+
+"@webassemblyjs/wast-parser@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c"
+ integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/floating-point-hex-parser" "1.8.5"
+ "@webassemblyjs/helper-api-error" "1.8.5"
+ "@webassemblyjs/helper-code-frame" "1.8.5"
+ "@webassemblyjs/helper-fsm" "1.8.5"
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/wast-printer@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc"
+ integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/wast-parser" "1.8.5"
+ "@xtuc/long" "4.2.2"
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
-"@xtuc/long@4.2.1":
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8"
- integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==
+"@xtuc/long@4.2.2":
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
"Idle.Js@git+https://github.com/shawnmclean/Idle.js":
version "0.0.1"
resolved "git+https://github.com/shawnmclean/Idle.js#db9beb3483a460ad638ec947867720f0ed066a62"
+JSONStream@^1.0.3:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
+ integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
+ dependencies:
+ jsonparse "^1.2.0"
+ through ">=2.2.7 <3"
+
JSV@^4.0.x:
version "4.0.2"
resolved "https://registry.yarnpkg.com/JSV/-/JSV-4.0.2.tgz#d077f6825571f82132f9dffaed587b4029feff57"
@@ -324,13 +1235,13 @@ abbrev@1:
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-accepts@~1.3.4, accepts@~1.3.5:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
- integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I=
+accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
+ integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
dependencies:
- mime-types "~2.1.18"
- negotiator "0.6.1"
+ mime-types "~2.1.24"
+ negotiator "0.6.2"
acorn-dynamic-import@^4.0.0:
version "4.0.0"
@@ -338,14 +1249,14 @@ acorn-dynamic-import@^4.0.0:
integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==
acorn-globals@^4.1.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103"
- integrity sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.2.tgz#4e2c2313a597fd589720395f6354b41cd5ec8006"
+ integrity sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==
dependencies:
acorn "^6.0.1"
acorn-walk "^6.0.1"
-acorn-jsx@^5.0.0:
+acorn-jsx@^5.0.0, acorn-jsx@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==
@@ -355,50 +1266,35 @@ acorn-walk@^6.0.1:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913"
integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==
-acorn@^5.1.0, acorn@^5.5.3:
+acorn@^5.1.0, acorn@^5.2.1, acorn@^5.5.3:
version "5.7.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
-acorn@^6.0.1, acorn@^6.0.2, acorn@^6.0.5:
- version "6.0.5"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.5.tgz#81730c0815f3f3b34d8efa95cb7430965f4d887a"
- integrity sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg==
+acorn@^6.0.1, acorn@^6.0.5, acorn@^6.0.7, acorn@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f"
+ integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==
after@0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=
-agent-base@^4.1.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9"
- integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==
- dependencies:
- es6-promisify "^5.0.0"
-
ajv-errors@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
ajv-keywords@^3.1.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
- integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d"
+ integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==
-ajv@^4.9.1:
- version "4.11.8"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
- integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=
- dependencies:
- co "^4.6.0"
- json-stable-stringify "^1.0.1"
-
-ajv@^6.1.0, ajv@^6.5.3, ajv@^6.5.5, ajv@^6.6.1:
- version "6.7.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.7.0.tgz#e3ce7bb372d6577bb1839f1dfdfcbf5ad2948d96"
- integrity sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==
+ajv@^6.1.0, ajv@^6.5.5, ajv@^6.9.1:
+ version "6.10.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1"
+ integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==
dependencies:
fast-deep-equal "^2.0.1"
fast-json-stable-stringify "^2.0.0"
@@ -427,17 +1323,15 @@ ambi@^2.2.0:
editions "^1.1.1"
typechecker "^4.3.0"
-anchor-markdown-header@^0.5.5:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz#045063d76e6a1f9cd327a57a0126aa0fdec371a7"
- integrity sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=
- dependencies:
- emoji-regex "~6.1.0"
+ansi-colors@^3.2.4:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
+ integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
-ansi-escapes@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
- integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==
+ansi-escapes@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
+ integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
ansi-gray@^0.1.1:
version "0.1.1"
@@ -446,6 +1340,11 @@ ansi-gray@^0.1.1:
dependencies:
ansi-wrap "0.1.0"
+ansi-html@^0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
+ integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4=
+
ansi-regex@^2.0.0, ansi-regex@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
@@ -456,10 +1355,10 @@ ansi-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
-ansi-regex@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9"
- integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==
+ansi-regex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+ integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
ansi-styles@^2.2.1:
version "2.2.1"
@@ -483,6 +1382,11 @@ ansi-wrap@0.1.0:
resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=
+any-promise@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
+ integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
+
anymatch@^1.3.0:
version "1.3.2"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
@@ -499,6 +1403,13 @@ anymatch@^2.0.0:
micromatch "^3.1.4"
normalize-path "^2.1.1"
+append-buffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1"
+ integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=
+ dependencies:
+ buffer-equal "^1.0.0"
+
aproba@^1.0.3, aproba@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
@@ -530,11 +1441,6 @@ archiver@^2.1.1:
tar-stream "^1.5.0"
zip-stream "^1.2.0"
-archy@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
- integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=
-
are-we-there-yet@~1.1.2:
version "1.1.5"
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
@@ -543,7 +1449,7 @@ are-we-there-yet@~1.1.2:
delegates "^1.0.0"
readable-stream "^2.0.6"
-argparse@^1.0.2, argparse@^1.0.7:
+argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
@@ -580,16 +1486,6 @@ arr-union@^3.1.0:
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-array-differ@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
- integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=
-
-array-each@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f"
- integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8=
-
array-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
@@ -600,10 +1496,13 @@ array-flatten@1.1.1:
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
-array-slice@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4"
- integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==
+array-includes@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
+ integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.7.0"
array-union@^1.0.1:
version "1.0.2"
@@ -612,7 +1511,7 @@ array-union@^1.0.1:
dependencies:
array-uniq "^1.0.1"
-array-uniq@^1.0.1, array-uniq@^1.0.2:
+array-uniq@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
@@ -668,16 +1567,12 @@ assert-plus@1.0.0, assert-plus@^1.0.0:
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
-assert-plus@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
- integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ=
-
assert@^1.1.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
- integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
+ integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
dependencies:
+ object-assign "^4.1.1"
util "0.10.3"
assign-symbols@^1.0.0:
@@ -690,10 +1585,10 @@ astral-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
-async-each@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
- integrity sha1-GdOGodntxufByF04iu28xW0zYC0=
+async-each@^1.0.0, async-each@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
+ integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
async-limiter@~1.0.0:
version "1.0.0"
@@ -705,12 +1600,12 @@ async@^1.4.0, async@^1.5.2, async@~1.5.2:
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
-async@^2.0.0, async@^2.1.4, async@^2.1.5, async@^2.5.0, async@^2.6.0:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610"
- integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==
+async@^2.0.0, async@^2.1.4, async@^2.1.5, async@^2.6.1:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381"
+ integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==
dependencies:
- lodash "^4.17.10"
+ lodash "^4.17.11"
asynckit@^0.4.0:
version "0.4.0"
@@ -728,9 +1623,9 @@ autolinker@~0.15.0:
integrity sha1-NCQX2PLzRhsUzwkIjV7fh5HcmDI=
aws-sdk@^2.345.0:
- version "2.393.0"
- resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.393.0.tgz#18e968760ff1d541665de090fcb46a9643165a08"
- integrity sha512-PSsIoLusMl8yygd8CohBFVnzSiDZy6EPKnGs5MWT7U/kjwablAXN23voyi6K8vOaEC8J9lgbWW9P62wcijuhdQ==
+ version "2.465.0"
+ resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.465.0.tgz#60948a0930473f50bac23311bc48426118e79f12"
+ integrity sha512-eS3g80QUbhOo0Rd/WTudtlc4cuNpLget6Re1KyDod6319QvW2il1q28VyvZK0/Yiu8GyVh5xGbThaLEQem+fLQ==
dependencies:
buffer "4.9.1"
events "1.1.1"
@@ -742,25 +1637,20 @@ aws-sdk@^2.345.0:
uuid "3.3.2"
xml2js "0.4.19"
-aws-sign2@~0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
- integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8=
-
aws-sign2@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
-aws4@^1.2.1, aws4@^1.8.0:
+aws4@^1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
azure-storage@^2.7.0:
- version "2.10.2"
- resolved "https://registry.yarnpkg.com/azure-storage/-/azure-storage-2.10.2.tgz#3bcabdbf10e72fd0990db81116e49023c4a675b6"
- integrity sha512-pOyGPya9+NDpAfm5YcFfklo57HfjDbYLXxs4lomPwvRxmb0Di/A+a+RkUmEFzaQ8S13CqxK40bRRB0sjj2ZQxA==
+ version "2.10.3"
+ resolved "https://registry.yarnpkg.com/azure-storage/-/azure-storage-2.10.3.tgz#c5966bf929d87587d78f6847040ea9a4b1d4a50a"
+ integrity sha512-IGLs5Xj6kO8Ii90KerQrrwuJKexLgSwYC4oLWmc11mzKe7Jt2E5IVg+ZQ8K53YWZACtVTMBNO3iGuA+4ipjJxQ==
dependencies:
browserify-mime "~1.2.9"
extend "^3.0.2"
@@ -980,6 +1870,13 @@ babel-plugin-check-es2015-constants@^6.22.0:
dependencies:
babel-runtime "^6.22.0"
+babel-plugin-dynamic-import-node@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f"
+ integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==
+ dependencies:
+ object.assign "^4.1.0"
+
babel-plugin-syntax-async-functions@^6.8.0:
version "6.13.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
@@ -1283,7 +2180,7 @@ babel-register@^6.26.0:
mkdirp "^0.5.1"
source-map-support "^0.4.15"
-babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2:
+babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
@@ -1327,6 +2224,11 @@ babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
lodash "^4.17.4"
to-fast-properties "^1.0.3"
+babelify@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/babelify/-/babelify-10.0.0.tgz#fe73b1a22583f06680d8d072e25a1e0d1d1d7fb5"
+ integrity sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==
+
babylon@^6.18.0:
version "6.18.0"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
@@ -1345,9 +2247,9 @@ backoff@^2.5.0:
precond "0.2"
bail@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.3.tgz#63cfb9ddbac829b02a3128cd53224be78e6c21a3"
- integrity sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.4.tgz#7181b66d508aa3055d3f6c13f0a0c720641dde9b"
+ integrity sha512-S8vuDB4w6YpRhICUDET3guPlQpaJl7od94tpZ0Fvnyp+MKW/HyDTcRDck+29C9g+d/qQHnddRH3+94kZdrW0Ww==
balanced-match@^1.0.0:
version "1.0.0"
@@ -1369,7 +2271,7 @@ base64id@1.0.0:
resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6"
integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=
-base64url@^3.0.0:
+base64url@3.x.x, base64url@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d"
integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==
@@ -1406,11 +2308,6 @@ bcryptjs@^2.4.0:
resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb"
integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=
-beeper@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809"
- integrity sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=
-
better-assert@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
@@ -1433,22 +2330,10 @@ big.js@^5.2.2:
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
-bignumber.js@4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-4.1.0.tgz#db6f14067c140bd46624815a7916c92d9b6c24b1"
- integrity sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==
-
binary-extensions@^1.0.0:
- version "1.12.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14"
- integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==
-
-bindings@^1.3.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.4.0.tgz#909efa49f2ebe07ecd3cb136778f665052040127"
- integrity sha512-7znEVX22Djn+nYjxCWKDne0RRloa9XfYa84yk3s+HkE3LpDYZmhArYr9O9huBoHY3/oXispx5LorIX7Sl2CgSQ==
- dependencies:
- file-uri-to-path "1.0.0"
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
+ integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
bl@^1.0.0:
version "1.2.2"
@@ -1480,60 +2365,58 @@ block-stream2@^1.0.0:
inherits "^2.0.1"
readable-stream "^2.0.4"
-bluebird@^3.3.4, bluebird@^3.4.1, bluebird@^3.4.6, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3:
- version "3.5.3"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7"
- integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==
+bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3:
+ version "3.5.5"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f"
+ integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
version "4.11.8"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
-body-parser@1.18.3, body-parser@^1.15.2:
- version "1.18.3"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
- integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=
+body-parser@1.19.0, body-parser@^1.15.2:
+ version "1.19.0"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
+ integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
dependencies:
- bytes "3.0.0"
+ bytes "3.1.0"
content-type "~1.0.4"
debug "2.6.9"
depd "~1.1.2"
- http-errors "~1.6.3"
- iconv-lite "0.4.23"
+ http-errors "1.7.2"
+ iconv-lite "0.4.24"
on-finished "~2.3.0"
- qs "6.5.2"
- raw-body "2.3.3"
- type-is "~1.6.16"
+ qs "6.7.0"
+ raw-body "2.4.0"
+ type-is "~1.6.17"
+
+body@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/body/-/body-5.1.0.tgz#e4ba0ce410a46936323367609ecb4e6553125069"
+ integrity sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=
+ dependencies:
+ continuable-cache "^0.3.1"
+ error "^7.0.0"
+ raw-body "~1.1.0"
+ safe-json-parse "~1.0.1"
boolbase@^1.0.0, boolbase@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
-boom@2.x.x:
- version "2.10.1"
- resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
- integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=
- dependencies:
- hoek "2.x.x"
-
bootstrap-validator@^0.11.8:
version "0.11.9"
resolved "https://registry.yarnpkg.com/bootstrap-validator/-/bootstrap-validator-0.11.9.tgz#fb7058eef53623e78f5aa7967026f98f875a9404"
integrity sha1-+3BY7vU2I+ePWqeWcCb5j4dalAQ=
bootstrap@^3.4.0:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-3.4.0.tgz#f8d77540dd3062283d2ae7687e21c1e691961640"
- integrity sha512-F1yTDO9OHKH0xjl03DsOe8Nu1OWBIeAugGMhy3UTIYDdbbIPesQIhCEbj+HEr6wqlwweGAlP8F3OBC6kEuhFuw==
-
-boundary@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/boundary/-/boundary-1.0.1.tgz#4d67dc2602c0cc16dd9bce7ebf87e948290f5812"
- integrity sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-3.4.1.tgz#c3a347d419e289ad11f4033e3c4132b87c081d72"
+ integrity sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==
-brace-expansion@^1.0.0, brace-expansion@^1.1.7:
+brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
@@ -1550,7 +2433,7 @@ braces@^1.8.2:
preserve "^0.2.0"
repeat-element "^1.1.2"
-braces@^2.3.0, braces@^2.3.1:
+braces@^2.3.1, braces@^2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
@@ -1576,6 +2459,13 @@ browser-process-hrtime@^0.1.2:
resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4"
integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==
+browser-resolve@^1.7.0:
+ version "1.11.3"
+ resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
+ integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==
+ dependencies:
+ resolve "1.1.7"
+
browser-stdout@1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
@@ -1654,25 +2544,36 @@ browserslist@^3.2.6:
electron-to-chromium "^1.3.47"
browserslist@^4.0.0:
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.4.1.tgz#42e828954b6b29a7a53e352277be429478a69062"
- integrity sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A==
+ version "4.6.1"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.1.tgz#ee5059b1aec18cbec9d055d6cb5e24ae50343a9b"
+ integrity sha512-1MC18ooMPRG2UuVFJTHFIAkk6mpByJfxCrnUyvSlu/hyQSFHMrlhM02SzNuCV+quTP4CKmqtOMAIjrifrpBJXQ==
dependencies:
- caniuse-lite "^1.0.30000929"
- electron-to-chromium "^1.3.103"
- node-releases "^1.1.3"
+ caniuse-lite "^1.0.30000971"
+ electron-to-chromium "^1.3.137"
+ node-releases "^1.1.21"
+
+browserslist@^4.6.0, browserslist@^4.6.2:
+ version "4.6.6"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.6.tgz#6e4bf467cde520bc9dbdf3747dafa03531cec453"
+ integrity sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==
+ dependencies:
+ caniuse-lite "^1.0.30000984"
+ electron-to-chromium "^1.3.191"
+ node-releases "^1.1.25"
buble@^0.19.6:
- version "0.19.6"
- resolved "https://registry.yarnpkg.com/buble/-/buble-0.19.6.tgz#915909b6bd5b11ee03b1c885ec914a8b974d34d3"
- integrity sha512-9kViM6nJA1Q548Jrd06x0geh+BG2ru2+RMDkIHHgJY/8AcyCs34lTHwra9BX7YdPrZXd5aarkpr/SY8bmPgPdg==
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/buble/-/buble-0.19.7.tgz#1dfd080ab688101aad5388d3304bc82601a244fd"
+ integrity sha512-YLgWxX/l+NnfotydBlxqCMPR4FREE4ubuHphALz0FxQ7u2hp3BzxTKQ4nKpapOaRJfEm1gukC68KnT2OymRK0g==
dependencies:
- chalk "^2.4.1"
- magic-string "^0.25.1"
+ acorn "^6.1.1"
+ acorn-dynamic-import "^4.0.0"
+ acorn-jsx "^5.0.1"
+ chalk "^2.4.2"
+ magic-string "^0.25.2"
minimist "^1.2.0"
os-homedir "^1.0.1"
- regexpu-core "^4.2.0"
- vlq "^1.0.0"
+ regexpu-core "^4.5.4"
buffer-alloc-unsafe@^1.1.0:
version "1.1.0"
@@ -1692,6 +2593,11 @@ buffer-crc32@^0.2.1:
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
+buffer-equal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe"
+ integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74=
+
buffer-fill@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
@@ -1702,6 +2608,11 @@ buffer-from@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+buffer-shims@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
+ integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=
+
buffer-writer@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-1.0.1.tgz#22a936901e3029afcd7547eb4487ceb697a3bf08"
@@ -1736,11 +2647,6 @@ bufferutil@^4.0.0:
dependencies:
node-gyp-build "~3.7.0"
-builtin-modules@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
- integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
-
builtin-status-codes@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
@@ -1756,11 +2662,21 @@ bunyan@^1.8.3:
mv "~2"
safe-json-stringify "~1"
+bytes@1:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8"
+ integrity sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=
+
bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
+bytes@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
+ integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
+
cacache@^10.0.4:
version "10.0.4"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460"
@@ -1780,7 +2696,7 @@ cacache@^10.0.4:
unique-filename "^1.1.0"
y18n "^4.0.0"
-cacache@^11.0.2:
+cacache@^11.3.2:
version "11.3.2"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa"
integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==
@@ -1815,6 +2731,11 @@ cache-base@^1.0.1:
union-value "^1.0.0"
unset-value "^1.0.0"
+cached-path-relative@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db"
+ integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==
+
caller-callsite@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
@@ -1840,11 +2761,11 @@ callsites@^2.0.0:
integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
callsites@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3"
- integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
-camel-case@3.0.x:
+camel-case@3.0.x, camel-case@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=
@@ -1857,15 +2778,10 @@ camelcase@^1.0.2:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=
-camelcase@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
- integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
-
camelcase@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42"
- integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
camelize@1.0.0:
version "1.0.0"
@@ -1882,16 +2798,26 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000929:
- version "1.0.30000930"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000930.tgz#c238bab82bedb462bcbdc61d0334932dcc084d8a"
- integrity sha512-KD+pw9DderBLB8CGqBzYyFWpnrPVOEjsjargU/CvkNyg60od3cxSPTcTeMPhxJhDbkQPWvOz5BAyBzNl/St9vg==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000971:
+ version "1.0.30000971"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000971.tgz#d1000e4546486a6977756547352bc96a4cfd2b13"
+ integrity sha512-TQFYFhRS0O5rdsmSbF1Wn+16latXYsQJat66f7S7lizXW1PVpWJeZw9wqqVLIjuxDRz7s7xRUj13QCfd8hKn6g==
+
+caniuse-lite@^1.0.30000984:
+ version "1.0.30000988"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000988.tgz#742f35ec1b8b75b9628d705d7652eea1fef983db"
+ integrity sha512-lPj3T8poYrRc/bniW5SQPND3GRtSrQdUM/R4mCYTbZxyi3jQiggLvZH4+BYUuX0t4TXjU+vMM7KFDQg+rSzZUQ==
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
+ccount@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.4.tgz#9cf2de494ca84060a2a8d2854edd6dfb0445f386"
+ integrity sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w==
+
center-align@^0.1.1:
version "0.1.3"
resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
@@ -1900,7 +2826,7 @@ center-align@^0.1.1:
align-text "^0.1.3"
lazy-cache "^1.0.3"
-chalk@^1.0.0, chalk@^1.1.3:
+chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
@@ -1911,7 +2837,7 @@ chalk@^1.0.0, chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
-chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2:
+chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -1934,20 +2860,25 @@ chance@^1.0.4:
resolved "https://registry.yarnpkg.com/chance/-/chance-1.0.18.tgz#79788fe6fca4c338bf404321c347eecc80f969ee"
integrity sha512-g9YLQVHVZS/3F+zIicfB58vjcxopvYQRp7xHzvyDFDhXH1aRZI/JhwSAO0X5qYiQluoGnaNAU6wByD2KTxJN1A==
+character-entities-html4@^1.0.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.3.tgz#5ce6e01618e47048ac22f34f7f39db5c6fd679ef"
+ integrity sha512-SwnyZ7jQBCRHELk9zf2CN5AnGEc2nA+uKMZLHvcqhpPprjkYhiLn0DywMHgN5ttFZuITMATbh68M6VIVKwJbcg==
+
character-entities-legacy@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz#7c6defb81648498222c9855309953d05f4d63a9c"
- integrity sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz#3c729991d9293da0ede6dddcaf1f2ce1009ee8b4"
+ integrity sha512-YAxUpPoPwxYFsslbdKkhrGnXAtXoHNgYjlBM3WMXkWGTl5RsY3QmOyhwAgL8Nxm9l5LBThXGawxKPn68y6/fww==
character-entities@^1.0.0:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.2.tgz#58c8f371c0774ef0ba9b2aca5f00d8f100e6e363"
- integrity sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.3.tgz#bbed4a52fe7ef98cc713c6d80d9faa26916d54e6"
+ integrity sha512-yB4oYSAa9yLcGyTbB4ItFwHw43QHdH129IJ5R+WvxOkWlyFnR5FAaBNnUq4mcxsTVZGh28bHoeTHMKXH1wZf3w==
character-reference-invalid@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz#21e421ad3d84055952dab4a43a04e73cd425d3ed"
- integrity sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.3.tgz#1647f4f726638d3ea4a750cf5d1975c1c7919a85"
+ integrity sha512-VOq6PRzQBam/8Jm6XBGk2fNEnHXAdGd6go0rtd4weAGECBamHDwwCQSOT12TACIYUZegUXnV6xBXqUssijtxIg==
chardet@^0.7.0:
version "0.7.0"
@@ -1992,25 +2923,24 @@ chokidar@^1.6.1, chokidar@^1.7.0:
optionalDependencies:
fsevents "^1.0.0"
-chokidar@^2.0.2:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
- integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==
+chokidar@^2.0.2, chokidar@^2.0.4:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5"
+ integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==
dependencies:
anymatch "^2.0.0"
- async-each "^1.0.0"
- braces "^2.3.0"
+ async-each "^1.0.1"
+ braces "^2.3.2"
glob-parent "^3.1.0"
- inherits "^2.0.1"
+ inherits "^2.0.3"
is-binary-path "^1.0.0"
is-glob "^4.0.0"
- lodash.debounce "^4.0.8"
- normalize-path "^2.1.1"
+ normalize-path "^3.0.0"
path-is-absolute "^1.0.0"
- readdirp "^2.0.0"
- upath "^1.0.5"
+ readdirp "^2.2.1"
+ upath "^1.1.1"
optionalDependencies:
- fsevents "^1.2.2"
+ fsevents "^1.2.7"
chownr@^1.0.1, chownr@^1.1.1:
version "1.1.1"
@@ -2018,9 +2948,9 @@ chownr@^1.0.1, chownr@^1.1.1:
integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==
chrome-trace-event@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48"
- integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
+ integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==
dependencies:
tslib "^1.9.0"
@@ -2032,11 +2962,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
inherits "^2.0.1"
safe-buffer "^5.0.1"
-circular-json@^0.3.1:
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
- integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==
-
class-utils@^0.3.5:
version "0.3.6"
resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
@@ -2047,24 +2972,24 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
-clean-css@4.2.x:
+clean-css@4.2.x, clean-css@^4.1.6, clean-css@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17"
integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==
dependencies:
source-map "~0.6.0"
-cli-color@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-1.2.0.tgz#3a5ae74fd76b6267af666e69e2afbbd01def34d1"
- integrity sha1-OlrnT9drYmevZm5p4q+70B3vNNE=
+cli-color@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-1.4.0.tgz#7d10738f48526824f8fe7da51857cb0f572fe01f"
+ integrity sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==
dependencies:
ansi-regex "^2.1.1"
d "1"
- es5-ext "^0.10.12"
- es6-iterator "2"
- memoizee "^0.4.3"
- timers-ext "0.1"
+ es5-ext "^0.10.46"
+ es6-iterator "^2.0.3"
+ memoizee "^0.4.14"
+ timers-ext "^0.1.5"
cli-cursor@^2.1.0:
version "2.1.0"
@@ -2078,14 +3003,6 @@ cli-width@^2.0.0:
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
-cli@~1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/cli/-/cli-1.0.1.tgz#22817534f24bfa4950c34d532d48ecbc621b8c14"
- integrity sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=
- dependencies:
- exit "0.1.2"
- glob "^7.1.1"
-
clipboard@^2.0.0:
version "2.0.4"
resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.4.tgz#836dafd66cf0fea5d71ce5d5b0bf6e958009112d"
@@ -2104,15 +3021,6 @@ cliui@^2.1.0:
right-align "^0.1.1"
wordwrap "0.0.2"
-cliui@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
- integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
- dependencies:
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
- wrap-ansi "^2.0.0"
-
cliui@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
@@ -2122,32 +3030,48 @@ cliui@^4.0.0:
strip-ansi "^4.0.0"
wrap-ansi "^2.0.0"
-clone-stats@^0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1"
- integrity sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=
+cliui@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
+ integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+ dependencies:
+ string-width "^3.1.0"
+ strip-ansi "^5.2.0"
+ wrap-ansi "^5.1.0"
-clone@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f"
- integrity sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=
+clone-buffer@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
+ integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg=
-clone@^1.0.0, clone@^1.0.2:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
- integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
+clone-stats@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680"
+ integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=
clone@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
-co@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
- integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
+cloneable-readable@^1.0.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec"
+ integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==
+ dependencies:
+ inherits "^2.0.1"
+ process-nextick-args "^2.0.0"
+ readable-stream "^2.3.5"
-coa@~2.0.1:
+cls-bluebird@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cls-bluebird/-/cls-bluebird-2.1.0.tgz#37ef1e080a8ffb55c2f4164f536f1919e7968aee"
+ integrity sha1-N+8eCAqP+1XC9BZPU28ZGeeWiu4=
+ dependencies:
+ is-bluebird "^1.0.2"
+ shimmer "^1.1.0"
+
+coa@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
@@ -2162,8 +3086,8 @@ code-point-at@^1.0.0:
integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
"codemirror@git+https://github.com/hackmdio/CodeMirror.git":
- version "5.41.1"
- resolved "git+https://github.com/hackmdio/CodeMirror.git#490cdc903e06895354691e7a06b84203b3be4a6e"
+ version "5.46.1"
+ resolved "git+https://github.com/hackmdio/CodeMirror.git#8ce8e8820da8f51d852bda1e0b9a5394eb8ea8d3"
dependencies:
blint "^1"
node-static "0.7.11"
@@ -2173,10 +3097,10 @@ code-point-at@^1.0.0:
rollup-watch "^4.3.1"
uglify-js "^2.8.15"
-collapse-white-space@^1.0.2:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.4.tgz#ce05cf49e54c3277ae573036a26851ba430a0091"
- integrity sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==
+collapse-white-space@^1.0.0, collapse-white-space@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.5.tgz#c2495b699ab1ed380d29a1091e01063e75dbbe3a"
+ integrity sha512-703bOOmytCYAX9cXYqoikYIx6twmFCXsnzRQheBcTG3nzKYBR4P/+wkYeH+Mvj7qUz8zZDtdyzbxfnEi/kYzRQ==
collection-visit@^1.0.0:
version "1.0.0"
@@ -2225,9 +3149,9 @@ color@3.0.x:
color-string "^1.5.2"
color@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz#d8e9fb096732875774c84bf922815df0308d0ffc"
- integrity sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/color/-/color-3.1.1.tgz#7abf5c0d38e89378284e873c207ae2172dcc8a61"
+ integrity sha512-PvUltIXRjehRKPSy89VnDWFKY58xyhTLyxIg21vwQBI6qLwZNPmC8k3C1uytIgFKEpOIzN4y32iPm8231zFHIg==
dependencies:
color-convert "^1.9.1"
color-string "^1.5.2"
@@ -2242,46 +3166,51 @@ colors@>=0.6.0, colors@^1.2.1:
resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d"
integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==
-colors@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
- integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM=
-
colorspace@1.1.x:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.1.tgz#9ac2491e1bc6f8fb690e2176814f8d091636d972"
- integrity sha512-pI3btWyiuz7Ken0BWh9Elzsmv2bM9AhA7psXib4anUXy/orfZ/E0MbQwhSOG/9L8hLlalqrU0UhOuqxW1YjmVw==
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5"
+ integrity sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==
dependencies:
color "3.0.x"
text-hex "1.0.x"
-combined-stream@^1.0.5, combined-stream@^1.0.6, combined-stream@~1.0.5, combined-stream@~1.0.6:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828"
- integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==
+combined-stream@^1.0.5, combined-stream@^1.0.6, combined-stream@~1.0.6:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
dependencies:
delayed-stream "~1.0.0"
+comma-separated-tokens@^1.0.1:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.7.tgz#419cd7fb3258b1ed838dc0953167a25e152f5b59"
+ integrity sha512-Jrx3xsP4pPv4AwJUDWY9wOXGtwPXARej6Xd99h4TUGotmf8APuquKMpK+dnD3UgyxK7OEWaisjZz+3b5jtL6xQ==
+
+commander@2, commander@^2.11.0, commander@^2.13.0, commander@^2.19.0, commander@^2.2.0, commander@^2.9.0, commander@~2.20.0:
+ version "2.20.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
+ integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
+
commander@2.15.1:
version "2.15.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==
-commander@2.17.x, commander@~2.17.1:
+commander@2.17.x:
version "2.17.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
-commander@^2.11.0, commander@^2.13.0, commander@^2.19.0, commander@^2.2.0, commander@^2.9.0:
- version "2.19.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
- integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
-
commander@~2.13.0:
version "2.13.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==
+commander@~2.19.0:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
+ integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
+
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -2292,11 +3221,16 @@ component-bind@1.0.0:
resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=
-component-emitter@1.2.1, component-emitter@^1.2.1, component-emitter@~1.2.0:
+component-emitter@1.2.1, component-emitter@~1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
+component-emitter@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+
component-inherit@0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
@@ -2312,23 +3246,23 @@ compress-commons@^1.2.0:
normalize-path "^2.0.0"
readable-stream "^2.0.0"
-compressible@~2.0.14:
- version "2.0.15"
- resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.15.tgz#857a9ab0a7e5a07d8d837ed43fe2defff64fe212"
- integrity sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==
+compressible@~2.0.16:
+ version "2.0.17"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1"
+ integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==
dependencies:
- mime-db ">= 1.36.0 < 2"
+ mime-db ">= 1.40.0 < 2"
compression@^1.6.2:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db"
- integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==
+ version "1.7.4"
+ resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
+ integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
dependencies:
accepts "~1.3.5"
bytes "3.0.0"
- compressible "~2.0.14"
+ compressible "~2.0.16"
debug "2.6.9"
- on-headers "~1.0.1"
+ on-headers "~1.0.2"
safe-buffer "5.1.2"
vary "~1.1.2"
@@ -2337,7 +3271,7 @@ concat-map@0.0.1:
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
-concat-stream@1.6.2, concat-stream@^1.4.7, concat-stream@^1.4.8, concat-stream@^1.5.0:
+concat-stream@1.6.2, concat-stream@^1.4.7, concat-stream@^1.4.8, concat-stream@^1.5.0, concat-stream@^1.6.0:
version "1.6.2"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
@@ -2347,6 +3281,15 @@ concat-stream@1.6.2, concat-stream@^1.4.7, concat-stream@^1.4.8, concat-stream@^
readable-stream "^2.2.2"
typedarray "^0.0.6"
+concat-stream@~1.5.0:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266"
+ integrity sha1-cIl4Yk2FavQaWnQd790mHadSwmY=
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "~2.0.0"
+ typedarray "~0.0.5"
+
config-chain@^1.1.12:
version "1.1.12"
resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
@@ -2360,15 +3303,15 @@ connect-flash@^0.1.1:
resolved "https://registry.yarnpkg.com/connect-flash/-/connect-flash-0.1.1.tgz#d8630f26d95a7f851f9956b1e8cc6732f3b6aa30"
integrity sha1-2GMPJtlaf4UfmVax6MxnMvO2qjA=
-connect-session-sequelize@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/connect-session-sequelize/-/connect-session-sequelize-4.1.0.tgz#d402749c3bebd79209192c164c090742b3fe2011"
- integrity sha1-1AJ0nDvr15IJGSwWTAkHQrP+IBE=
+connect-session-sequelize@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/connect-session-sequelize/-/connect-session-sequelize-6.0.0.tgz#afd4456c65d92c9b6b955fdff00afff795e8a420"
+ integrity sha512-XC71xJd5rqObdL7700S/qFD+gSRA4o6WVJAyFY0Vjah73id5bBElM0SHQR1ME5Bxrt4JL8alvggseNDVTlKyxA==
dependencies:
- debug "^2.1.1"
+ debug "^3.1.0"
deep-equal "^1.0.1"
-console-browserify@1.1.x, console-browserify@^1.1.0:
+console-browserify@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
@@ -2390,10 +3333,12 @@ contains-path@^0.1.0:
resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
-content-disposition@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
- integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ=
+content-disposition@0.5.3:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
+ integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
+ dependencies:
+ safe-buffer "5.1.2"
content-security-policy-builder@2.0.0:
version "2.0.0"
@@ -2405,7 +3350,12 @@ content-type@~1.0.4:
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
-convert-source-map@^1.5.0, convert-source-map@^1.5.1:
+continuable-cache@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f"
+ integrity sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=
+
+convert-source-map@^1.1.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1:
version "1.6.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==
@@ -2430,6 +3380,11 @@ cookie@0.3.1:
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
+cookie@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
+ integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
+
cookiejar@2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.0.6.tgz#0abf356ad00d1c5a219d88d44518046dd026acfe"
@@ -2466,10 +3421,24 @@ copy-webpack-plugin@^4.5.2:
p-limit "^1.0.0"
serialize-javascript "^1.4.0"
+core-js-compat@^3.1.1:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.4.tgz#e4d0c40fbd01e65b1d457980fe4112d4358a7408"
+ integrity sha512-Z5zbO9f1d0YrJdoaQhphVAnKPimX92D6z8lCGphH89MNRxlL1prI9ExJPqVwP0/kgkQCv8c4GJGT8X16yUncOg==
+ dependencies:
+ browserslist "^4.6.2"
+ core-js-pure "3.1.4"
+ semver "^6.1.1"
+
+core-js-pure@3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.4.tgz#5fa17dc77002a169a3566cc48dc774d2e13e3769"
+ integrity sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA==
+
core-js@^2.4.0, core-js@^2.5.0:
- version "2.6.3"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.3.tgz#4b70938bdffdaf64931e66e2db158f0892289c49"
- integrity sha512-l00tmFFZOBHtYhN4Cz7k32VM7vTn3rE2ANjQDxdEN6zmXZ/xq1jQuutnmHvMG1ZJ7xd72+TA5YpUK8wz3rWsfQ==
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2"
+ integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
@@ -2477,13 +3446,13 @@ core-util-is@1.0.2, core-util-is@~1.0.0:
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
cosmiconfig@^5.0.0:
- version "5.0.7"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04"
- integrity sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
+ integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
dependencies:
import-fresh "^2.0.0"
is-directory "^0.3.1"
- js-yaml "^3.9.0"
+ js-yaml "^3.13.1"
parse-json "^4.0.0"
crc32-stream@^2.0.0:
@@ -2494,11 +3463,6 @@ crc32-stream@^2.0.0:
crc "^3.4.4"
readable-stream "^2.0.0"
-crc@3.4.4:
- version "3.4.4"
- resolved "https://registry.yarnpkg.com/crc/-/crc-3.4.4.tgz#9da1e980e3bd44fc5c93bf5ab3da3378d85e466b"
- integrity sha1-naHpgOO9RPxck79as9ozeNheRms=
-
crc@^3.4.4:
version "3.8.0"
resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6"
@@ -2537,15 +3501,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
-cross-spawn@^5.0.1:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
- integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
- dependencies:
- lru-cache "^4.0.1"
- shebang-command "^1.2.0"
- which "^1.2.9"
-
cross-spawn@^6.0.0, cross-spawn@^6.0.5:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
@@ -2557,13 +3512,6 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5:
shebang-command "^1.2.0"
which "^1.2.9"
-cryptiles@2.x.x:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
- integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=
- dependencies:
- boom "2.x.x"
-
crypto-browserify@^3.11.0:
version "3.12.0"
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
@@ -2586,6 +3534,11 @@ csextends@^1.0.3:
resolved "https://registry.yarnpkg.com/csextends/-/csextends-1.2.0.tgz#6374b210984b54d4495f29c99d3dd069b80543e5"
integrity sha512-S/8k1bDTJIwuGgQYmsRoE+8P+ohV32WhQ0l4zqrc0XDdxOhjQQD7/wTZwCzoZX53jSX3V/qwjT+OkPTxWQcmjg==
+css-b64-images@~0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/css-b64-images/-/css-b64-images-0.2.5.tgz#42005d83204b2b4a5d93b6b1a5644133b5927a02"
+ integrity sha1-QgBdgyBLK0pdk7axpWRBM7WSegI=
+
css-color-names@0.0.4, css-color-names@^0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
@@ -2617,7 +3570,7 @@ css-loader@^1.0.0:
postcss-value-parser "^3.3.0"
source-list-map "^2.0.0"
-css-select-base-adapter@~0.1.0:
+css-select-base-adapter@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
@@ -2678,9 +3631,9 @@ css-url-regex@^1.1.0:
integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=
css-what@2.1, css-what@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d"
- integrity sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
+ integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
cssesc@^0.1.0:
version "0.1.0"
@@ -2697,40 +3650,40 @@ cssfilter@0.0.10:
resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae"
integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=
-cssnano-preset-default@^4.0.6:
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.6.tgz#92379e2a6db4a91c0ea727f5f556eeac693eab6a"
- integrity sha512-UPboYbFaJFtDUhJ4fqctThWbbyF4q01/7UhsZbLzp35l+nUxtzh1SifoVlEfyLM3n3Z0htd8B1YlCxy9i+bQvg==
+cssnano-preset-default@^4.0.7:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76"
+ integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==
dependencies:
css-declaration-sorter "^4.0.1"
cssnano-util-raw-cache "^4.0.1"
postcss "^7.0.0"
- postcss-calc "^7.0.0"
- postcss-colormin "^4.0.2"
+ postcss-calc "^7.0.1"
+ postcss-colormin "^4.0.3"
postcss-convert-values "^4.0.1"
- postcss-discard-comments "^4.0.1"
+ postcss-discard-comments "^4.0.2"
postcss-discard-duplicates "^4.0.2"
postcss-discard-empty "^4.0.1"
postcss-discard-overridden "^4.0.1"
- postcss-merge-longhand "^4.0.10"
- postcss-merge-rules "^4.0.2"
+ postcss-merge-longhand "^4.0.11"
+ postcss-merge-rules "^4.0.3"
postcss-minify-font-values "^4.0.2"
- postcss-minify-gradients "^4.0.1"
- postcss-minify-params "^4.0.1"
- postcss-minify-selectors "^4.0.1"
+ postcss-minify-gradients "^4.0.2"
+ postcss-minify-params "^4.0.2"
+ postcss-minify-selectors "^4.0.2"
postcss-normalize-charset "^4.0.1"
- postcss-normalize-display-values "^4.0.1"
- postcss-normalize-positions "^4.0.1"
- postcss-normalize-repeat-style "^4.0.1"
- postcss-normalize-string "^4.0.1"
- postcss-normalize-timing-functions "^4.0.1"
+ postcss-normalize-display-values "^4.0.2"
+ postcss-normalize-positions "^4.0.2"
+ postcss-normalize-repeat-style "^4.0.2"
+ postcss-normalize-string "^4.0.2"
+ postcss-normalize-timing-functions "^4.0.2"
postcss-normalize-unicode "^4.0.1"
postcss-normalize-url "^4.0.1"
- postcss-normalize-whitespace "^4.0.1"
- postcss-ordered-values "^4.1.1"
- postcss-reduce-initial "^4.0.2"
- postcss-reduce-transforms "^4.0.1"
- postcss-svgo "^4.0.1"
+ postcss-normalize-whitespace "^4.0.2"
+ postcss-ordered-values "^4.1.2"
+ postcss-reduce-initial "^4.0.3"
+ postcss-reduce-transforms "^4.0.2"
+ postcss-svgo "^4.0.2"
postcss-unique-selectors "^4.0.1"
cssnano-util-get-arguments@^4.0.0:
@@ -2756,16 +3709,16 @@ cssnano-util-same-parent@^4.0.0:
integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
cssnano@^4.1.0:
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.8.tgz#8014989679d5fd42491e4499a521dbfb85c95fd1"
- integrity sha512-5GIY0VzAHORpbKiL3rMXp4w4M1Ki+XlXgEXyuWXVd3h6hlASb+9Vo76dNP56/elLMVBBsUfusCo1q56uW0UWig==
+ version "4.1.10"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2"
+ integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==
dependencies:
cosmiconfig "^5.0.0"
- cssnano-preset-default "^4.0.6"
+ cssnano-preset-default "^4.0.7"
is-resolvable "^1.0.0"
postcss "^7.0.0"
-csso@^3.5.0:
+csso@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b"
integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==
@@ -2773,9 +3726,9 @@ csso@^3.5.0:
css-tree "1.0.0-alpha.29"
cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
- version "0.3.4"
- resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797"
- integrity sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad"
+ integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==
cssom@~0.2.5:
version "0.2.5"
@@ -2783,9 +3736,9 @@ cssom@~0.2.5:
integrity sha1-JoJwm1kC5yEt9SkRb/eIzVslSJQ=
cssstyle@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb"
- integrity sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.2.2.tgz#427ea4d585b18624f6fdbf9de7a2a1a3ba713077"
+ integrity sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==
dependencies:
cssom "0.3.x"
@@ -2801,10 +3754,253 @@ cyclist@~0.2.2:
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
-d3@3.5.17:
- version "3.5.17"
- resolved "https://registry.yarnpkg.com/d3/-/d3-3.5.17.tgz#bc46748004378b21a360c9fc7cf5231790762fb8"
- integrity sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g=
+d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f"
+ integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==
+
+d3-axis@1:
+ version "1.0.12"
+ resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.12.tgz#cdf20ba210cfbb43795af33756886fb3638daac9"
+ integrity sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==
+
+d3-brush@1:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.0.6.tgz#33691f2032d9db6c5d8cb684ff255a9883629e21"
+ integrity sha512-lGSiF5SoSqO5/mYGD5FAeGKKS62JdA1EV7HPrU2b5rTX4qEJJtpjaGLJngjnkewQy7UnGstnFd3168wpf5z76w==
+ dependencies:
+ d3-dispatch "1"
+ d3-drag "1"
+ d3-interpolate "1"
+ d3-selection "1"
+ d3-transition "1"
+
+d3-chord@1:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-1.0.6.tgz#309157e3f2db2c752f0280fedd35f2067ccbb15f"
+ integrity sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==
+ dependencies:
+ d3-array "1"
+ d3-path "1"
+
+d3-collection@1:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e"
+ integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==
+
+d3-color@1:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.2.8.tgz#4eaf9b60ef188c893fcf8b28f3546aafebfbd9f4"
+ integrity sha512-yeANXzP37PHk0DbSTMNPhnJD+Nn4G//O5E825bR6fAfHH43hobSBpgB9G9oWVl9+XgUaQ4yCnsX1H+l8DoaL9A==
+
+d3-contour@1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-1.3.2.tgz#652aacd500d2264cb3423cee10db69f6f59bead3"
+ integrity sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==
+ dependencies:
+ d3-array "^1.1.1"
+
+d3-dispatch@1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.5.tgz#e25c10a186517cd6c82dd19ea018f07e01e39015"
+ integrity sha512-vwKx+lAqB1UuCeklr6Jh1bvC4SZgbSqbkGBLClItFBIYH4vqDJCA7qfoy14lXmJdnBOdxndAMxjCbImJYW7e6g==
+
+d3-drag@1:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.3.tgz#46e206ad863ec465d88c588098a1df444cd33c64"
+ integrity sha512-8S3HWCAg+ilzjJsNtWW1Mutl74Nmzhb9yU6igspilaJzeZVFktmY6oO9xOh5TDk+BM2KrNFjttZNoJJmDnkjkg==
+ dependencies:
+ d3-dispatch "1"
+ d3-selection "1"
+
+d3-dsv@1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.1.1.tgz#aaa830ecb76c4b5015572c647cc6441e3c7bb701"
+ integrity sha512-1EH1oRGSkeDUlDRbhsFytAXU6cAmXFzc52YUe6MRlPClmWb85MP1J5x+YJRzya4ynZWnbELdSAvATFW/MbxaXw==
+ dependencies:
+ commander "2"
+ iconv-lite "0.4"
+ rw "1"
+
+d3-ease@1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.5.tgz#8ce59276d81241b1b72042d6af2d40e76d936ffb"
+ integrity sha512-Ct1O//ly5y5lFM9YTdu+ygq7LleSgSE4oj7vUt9tPLHUi8VCV7QoizGpdWRWAwCO9LdYzIrQDg97+hGVdsSGPQ==
+
+d3-fetch@1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-1.1.2.tgz#957c8fbc6d4480599ba191b1b2518bf86b3e1be2"
+ integrity sha512-S2loaQCV/ZeyTyIF2oP8D1K9Z4QizUzW7cWeAOAS4U88qOt3Ucf6GsmgthuYSdyB2HyEm4CeGvkQxWsmInsIVA==
+ dependencies:
+ d3-dsv "1"
+
+d3-force@1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.2.1.tgz#fd29a5d1ff181c9e7f0669e4bd72bdb0e914ec0b"
+ integrity sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==
+ dependencies:
+ d3-collection "1"
+ d3-dispatch "1"
+ d3-quadtree "1"
+ d3-timer "1"
+
+d3-format@1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.3.2.tgz#6a96b5e31bcb98122a30863f7d92365c00603562"
+ integrity sha512-Z18Dprj96ExragQ0DeGi+SYPQ7pPfRMtUXtsg/ChVIKNBCzjO8XYJvRTC1usblx52lqge56V5ect+frYTQc8WQ==
+
+d3-geo@1:
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.11.6.tgz#134f2ef035ff75a448075fafdea92702a2e0e0cf"
+ integrity sha512-z0J8InXR9e9wcgNtmVnPTj0TU8nhYT6lD/ak9may2PdKqXIeHUr8UbFLoCtrPYNsjv6YaLvSDQVl578k6nm7GA==
+ dependencies:
+ d3-array "1"
+
+d3-hierarchy@1:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.8.tgz#7a6317bd3ed24e324641b6f1e76e978836b008cc"
+ integrity sha512-L+GHMSZNwTpiq4rt9GEsNcpLa4M96lXMR8M/nMG9p5hBE0jy6C+3hWtyZMenPQdwla249iJy7Nx0uKt3n+u9+w==
+
+d3-interpolate@1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.3.2.tgz#417d3ebdeb4bc4efcc8fd4361c55e4040211fd68"
+ integrity sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w==
+ dependencies:
+ d3-color "1"
+
+d3-path@1:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.8.tgz#4a0606a794d104513ec4a8af43525f374b278719"
+ integrity sha512-J6EfUNwcMQ+aM5YPOB8ZbgAZu6wc82f/0WFxrxwV6Ll8wBwLaHLKCqQ5Imub02JriCVVdPjgI+6P3a4EWJCxAg==
+
+d3-polygon@1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.5.tgz#9a645a0a64ff6cbf9efda96ee0b4a6909184c363"
+ integrity sha512-RHhh1ZUJZfhgoqzWWuRhzQJvO7LavchhitSTHGu9oj6uuLFzYZVeBzaWTQ2qSO6bz2w55RMoOCf0MsLCDB6e0w==
+
+d3-quadtree@1:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.6.tgz#d1ab2a95a7f27bbde88582c94166f6ae35f32056"
+ integrity sha512-NUgeo9G+ENQCQ1LsRr2qJg3MQ4DJvxcDNCiohdJGHt5gRhBW6orIB5m5FJ9kK3HNL8g9F4ERVoBzcEwQBfXWVA==
+
+d3-random@1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.2.tgz#2833be7c124360bf9e2d3fd4f33847cfe6cab291"
+ integrity sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==
+
+d3-scale-chromatic@1:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.3.3.tgz#dad4366f0edcb288f490128979c3c793583ed3c0"
+ integrity sha512-BWTipif1CimXcYfT02LKjAyItX5gKiwxuPRgr4xM58JwlLocWbjPLI7aMEjkcoOQXMkYsmNsvv3d2yl/OKuHHw==
+ dependencies:
+ d3-color "1"
+ d3-interpolate "1"
+
+d3-scale@2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.2.2.tgz#4e880e0b2745acaaddd3ede26a9e908a9e17b81f"
+ integrity sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==
+ dependencies:
+ d3-array "^1.2.0"
+ d3-collection "1"
+ d3-format "1"
+ d3-interpolate "1"
+ d3-time "1"
+ d3-time-format "2"
+
+d3-selection@1, d3-selection@^1.1.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.0.tgz#ab9ac1e664cf967ebf1b479cc07e28ce9908c474"
+ integrity sha512-EYVwBxQGEjLCKF2pJ4+yrErskDnz5v403qvAid96cNdCMr8rmCYfY5RGzWz24mdIbxmDf6/4EAH+K9xperD5jg==
+
+d3-shape@1:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.5.tgz#e81aea5940f59f0a79cfccac012232a8987c6033"
+ integrity sha512-VKazVR3phgD+MUCldapHD7P9kcrvPcexeX/PkMJmkUov4JM8IxsSg1DvbYoYich9AtdTsa5nNk2++ImPiDiSxg==
+ dependencies:
+ d3-path "1"
+
+d3-time-format@2:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.1.3.tgz#ae06f8e0126a9d60d6364eac5b1533ae1bac826b"
+ integrity sha512-6k0a2rZryzGm5Ihx+aFMuO1GgelgIz+7HhB4PH4OEndD5q2zGn1mDfRdNrulspOfR6JXkb2sThhDK41CSK85QA==
+ dependencies:
+ d3-time "1"
+
+d3-time@1:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.11.tgz#1d831a3e25cd189eb256c17770a666368762bbce"
+ integrity sha512-Z3wpvhPLW4vEScGeIMUckDW7+3hWKOQfAWg/U7PlWBnQmeKQ00gCUsTtWSYulrKNA7ta8hJ+xXc6MHrMuITwEw==
+
+d3-timer@1:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.9.tgz#f7bb8c0d597d792ff7131e1c24a36dd471a471ba"
+ integrity sha512-rT34J5HnQUHhcLvhSB9GjCkN0Ddd5Y8nCwDBG2u6wQEeYxT/Lf51fTFFkldeib/sE/J0clIe0pnCfs6g/lRbyg==
+
+d3-transition@1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.2.0.tgz#f538c0e21b2aa1f05f3e965f8567e81284b3b2b8"
+ integrity sha512-VJ7cmX/FPIPJYuaL2r1o1EMHLttvoIuZhhuAlRoOxDzogV8iQS6jYulDm3xEU3TqL80IZIhI551/ebmCMrkvhw==
+ dependencies:
+ d3-color "1"
+ d3-dispatch "1"
+ d3-ease "1"
+ d3-interpolate "1"
+ d3-selection "^1.1.0"
+ d3-timer "1"
+
+d3-voronoi@1:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.4.tgz#dd3c78d7653d2bb359284ae478645d95944c8297"
+ integrity sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==
+
+d3-zoom@1:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.7.3.tgz#f444effdc9055c38077c4299b4df999eb1d47ccb"
+ integrity sha512-xEBSwFx5Z9T3/VrwDkMt+mr0HCzv7XjpGURJ8lWmIC8wxe32L39eWHIasEe/e7Ox8MPU4p1hvH8PKN2olLzIBg==
+ dependencies:
+ d3-dispatch "1"
+ d3-drag "1"
+ d3-interpolate "1"
+ d3-selection "1"
+ d3-transition "1"
+
+d3@^5.7.0:
+ version "5.9.7"
+ resolved "https://registry.yarnpkg.com/d3/-/d3-5.9.7.tgz#f3835648a172b438e89ed57eb6c525bdabdcd7dc"
+ integrity sha512-jENytrmdXtGPw7HuSK2S4gxRM1eUGjKvWQkQ6ct4yK+DB8SG3VcnVrwesfnsv8rIcxMUg18TafT4Q8mOZUMP4Q==
+ dependencies:
+ d3-array "1"
+ d3-axis "1"
+ d3-brush "1"
+ d3-chord "1"
+ d3-collection "1"
+ d3-color "1"
+ d3-contour "1"
+ d3-dispatch "1"
+ d3-drag "1"
+ d3-dsv "1"
+ d3-ease "1"
+ d3-fetch "1"
+ d3-force "1"
+ d3-format "1"
+ d3-geo "1"
+ d3-hierarchy "1"
+ d3-interpolate "1"
+ d3-path "1"
+ d3-polygon "1"
+ d3-quadtree "1"
+ d3-random "1"
+ d3-scale "2"
+ d3-scale-chromatic "1"
+ d3-selection "1"
+ d3-shape "1"
+ d3-time "1"
+ d3-time-format "2"
+ d3-timer "1"
+ d3-transition "1"
+ d3-voronoi "1"
+ d3-zoom "1"
d@1:
version "1.0.0"
@@ -2813,17 +4009,15 @@ d@1:
dependencies:
es5-ext "^0.10.9"
-dagre-d3-renderer@^0.4.25:
- version "0.4.26"
- resolved "https://registry.yarnpkg.com/dagre-d3-renderer/-/dagre-d3-renderer-0.4.26.tgz#648a491209b853ae96ddf3fea41a1f104479a5a1"
- integrity sha512-vOWj1uA4/APTrfDyfHaH/xpfXhPh9rszW+HOaEwPCeA6Afl06Lobfh7OpESuVMQW2QGuY4UQ7pte/p0WhdDs7w==
+dagre-d3-renderer@^0.5.8:
+ version "0.5.8"
+ resolved "https://registry.yarnpkg.com/dagre-d3-renderer/-/dagre-d3-renderer-0.5.8.tgz#aa071bb71d3c4d67426925906f3f6ddead49c1a3"
+ integrity sha512-XH2a86isUHRxzIYbjQVEuZtJnWEufb64H5DuXIUmn8esuB40jgLEbUUclulWOW62/ZoXlj2ZDyL8SJ+YRxs+jQ==
dependencies:
- d3 "3.5.17"
- dagre-layout "^0.8.0"
- graphlib "^2.1.1"
- lodash "^4.17.4"
+ dagre-layout "^0.8.8"
+ lodash "^4.17.5"
-dagre-layout@^0.8.0:
+dagre-layout@^0.8.8:
version "0.8.8"
resolved "https://registry.yarnpkg.com/dagre-layout/-/dagre-layout-0.8.8.tgz#9b6792f24229f402441c14162c1049e3f261f6d9"
integrity sha512-ZNV15T9za7X+fV8Z07IZquUKugCxm5owoiPPxfEx6OJRD331nkiIaF3vSt0JEY5FkrY0KfRQxcpQ3SpXB7pLPQ==
@@ -2857,19 +4051,19 @@ date-now@^0.1.4:
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
-dateformat@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062"
- integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=
+de-indent@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
+ integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=
-debug@*, debug@^4.0.1, debug@^4.1.0:
+debug@*, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
dependencies:
ms "^2.1.1"
-debug@2, debug@2.6.9, debug@^2.1.1, debug@^2.1.2, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
+debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
@@ -2883,14 +4077,14 @@ debug@3.1.0, debug@~3.1.0:
dependencies:
ms "2.0.0"
-debug@^3.1.0:
+debug@^3.1.0, debug@^3.2.6:
version "3.2.6"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
dependencies:
ms "^2.1.1"
-decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.2.0:
+decamelize@^1.0.0, decamelize@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
@@ -2920,13 +4114,6 @@ deep-is@~0.1.3:
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
-defaults@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
- integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
- dependencies:
- clone "^1.0.2"
-
define-properties@^1.1.2, define-properties@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
@@ -2976,16 +4163,21 @@ delegates@^1.0.0:
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
-depd@^1.1.0, depd@~1.1.1, depd@~1.1.2:
+denque@^1.4.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/denque/-/denque-1.4.1.tgz#6744ff7641c148c3f8a69c307e51235c1f4a37cf"
+ integrity sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==
+
+depd@2.0.0, depd@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
+ integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
+
+depd@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
-deprecated@^0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19"
- integrity sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=
-
des.js@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
@@ -2999,12 +4191,12 @@ destroy@~1.0.4:
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
-detect-file@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63"
- integrity sha1-STXe39lIhkjgBrASlWbpOGcR6mM=
+detab@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.2.tgz#074970d1a807b045d0258a4235df5928dd683561"
+ integrity sha512-Q57yPrxScy816TTE1P/uLRXLDKjXhvYTbfxS/e6lPD+YrqghbsMlGB9nQzj/zVtSPaF0DFPSdO916EWO4sQUyQ==
dependencies:
- fs-exists-sync "^0.1.0"
+ repeat-string "^1.5.4"
detect-file@^1.0.0:
version "1.0.0"
@@ -3023,6 +4215,14 @@ detect-libc@^1.0.2:
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
+detective@^4.0.0:
+ version "4.7.1"
+ resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e"
+ integrity sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==
+ dependencies:
+ acorn "^5.2.1"
+ defined "^1.0.0"
+
diagnostics@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/diagnostics/-/diagnostics-1.1.1.tgz#cab6ac33df70c9d9a727490ae43ac995a769b22a"
@@ -3033,14 +4233,19 @@ diagnostics@^1.1.1:
kuler "1.0.x"
"diff-match-patch@git+https://github.com/hackmdio/diff-match-patch.git":
- version "1.1.0"
- resolved "git+https://github.com/hackmdio/diff-match-patch.git#73e56e779a2a8503b05458e607077d0fd1d80419"
+ version "1.1.1"
+ resolved "git+https://github.com/hackmdio/diff-match-patch.git#dd6e43a1df8f46ac17ba33217c00d4018ef5637f"
diff@3.5.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
+diff@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff"
+ integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==
+
diffie-hellman@^5.0.0:
version "5.0.3"
resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
@@ -3069,17 +4274,12 @@ dns-prefetch-control@0.1.0:
resolved "https://registry.yarnpkg.com/dns-prefetch-control/-/dns-prefetch-control-0.1.0.tgz#60ddb457774e178f1f9415f0cabb0e85b0b300b2"
integrity sha1-YN20V3dOF48flBXwyrsOhbCzALI=
-doctoc@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/doctoc/-/doctoc-1.4.0.tgz#3115aa61d0a92f0abb0672036918ea904f5b9e02"
- integrity sha512-8IAq3KdMkxhXCUF+xdZxdJxwuz8N2j25sMgqiu4U4JWluN9tRKMlAalxGASszQjlZaBprdD2YfXpL3VPWUD4eg==
+doctrine-temporary-fork@2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/doctrine-temporary-fork/-/doctrine-temporary-fork-2.1.0.tgz#36f2154f556ee4f1e60311d391cd23de5187ed57"
+ integrity sha512-nliqOv5NkE4zMON4UA6AMJE6As35afs8aYXATpU4pTUdIKiARZwrJVEP1boA3Rx1ZXHVkwxkhcq4VkqvsuRLsA==
dependencies:
- "@textlint/markdown-to-ast" "~6.0.9"
- anchor-markdown-header "^0.5.5"
- htmlparser2 "~3.9.2"
- minimist "~1.2.0"
- underscore "~1.8.3"
- update-section "^0.3.0"
+ esutils "^2.0.2"
doctrine@1.5.0:
version "1.5.0"
@@ -3089,14 +4289,85 @@ doctrine@1.5.0:
esutils "^2.0.2"
isarray "^1.0.0"
-doctrine@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
- integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
dependencies:
esutils "^2.0.2"
-dom-converter@~0.2:
+documentation@^12.0.1:
+ version "12.1.0"
+ resolved "https://registry.yarnpkg.com/documentation/-/documentation-12.1.0.tgz#0cabc4e88507872fd847129c00ae7d0e2482049c"
+ integrity sha512-iAllbFhy1P5DvKAcrPw0h5R5rNMnaXAjExj3XKUzW/eBvQ6JhTbDELQnN8k3SrBvQAnm70+6NLsmxA+csp4f/Q==
+ dependencies:
+ "@babel/core" "^7.1.2"
+ "@babel/generator" "^7.1.3"
+ "@babel/parser" "7.1.3"
+ "@babel/plugin-proposal-class-properties" "^7.1.0"
+ "@babel/plugin-proposal-decorators" "^7.1.2"
+ "@babel/plugin-proposal-do-expressions" "^7.0.0"
+ "@babel/plugin-proposal-export-default-from" "^7.0.0"
+ "@babel/plugin-proposal-export-namespace-from" "^7.0.0"
+ "@babel/plugin-proposal-function-bind" "^7.0.0"
+ "@babel/plugin-proposal-function-sent" "^7.1.0"
+ "@babel/plugin-proposal-json-strings" "^7.0.0"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.0.0"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0"
+ "@babel/plugin-proposal-numeric-separator" "^7.0.0"
+ "@babel/plugin-proposal-optional-chaining" "^7.0.0"
+ "@babel/plugin-proposal-pipeline-operator" "^7.0.0"
+ "@babel/plugin-proposal-throw-expressions" "^7.0.0"
+ "@babel/plugin-syntax-dynamic-import" "^7.0.0"
+ "@babel/plugin-syntax-import-meta" "^7.0.0"
+ "@babel/preset-env" "^7.1.0"
+ "@babel/preset-flow" "^7.0.0"
+ "@babel/preset-react" "^7.0.0"
+ "@babel/preset-stage-0" "^7.0.0"
+ "@babel/traverse" "^7.1.4"
+ "@babel/types" "^7.1.3"
+ ansi-html "^0.0.7"
+ babelify "^10.0.0"
+ chalk "^2.3.0"
+ chokidar "^2.0.4"
+ concat-stream "^1.6.0"
+ diff "^4.0.1"
+ doctrine-temporary-fork "2.1.0"
+ get-port "^4.0.0"
+ git-url-parse "^10.0.1"
+ github-slugger "1.2.0"
+ glob "^7.1.2"
+ globals-docs "^2.4.0"
+ highlight.js "^9.15.5"
+ ini "^1.3.5"
+ js-yaml "^3.10.0"
+ lodash "^4.17.10"
+ mdast-util-inject "^1.1.0"
+ micromatch "^3.1.5"
+ mime "^2.2.0"
+ module-deps-sortable "5.0.0"
+ parse-filepath "^1.0.2"
+ pify "^4.0.0"
+ read-pkg-up "^4.0.0"
+ remark "^9.0.0"
+ remark-html "^8.0.0"
+ remark-reference-links "^4.0.1"
+ remark-toc "^5.0.0"
+ resolve "^1.8.1"
+ stream-array "^1.1.2"
+ strip-json-comments "^2.0.1"
+ tiny-lr "^1.1.0"
+ unist-builder "^1.0.2"
+ unist-util-visit "^1.3.0"
+ vfile "^4.0.0"
+ vfile-reporter "^6.0.0"
+ vfile-sort "^2.1.0"
+ vinyl "^2.1.0"
+ vinyl-fs "^3.0.2"
+ vue-template-compiler "^2.5.16"
+ yargs "^12.0.2"
+
+dom-converter@^0.2:
version "0.2.0"
resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==
@@ -3104,28 +4375,23 @@ dom-converter@~0.2:
utila "~0.4"
dom-serializer@0, dom-serializer@~0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
- integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
+ integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
dependencies:
- domelementtype "~1.1.1"
- entities "~1.1.1"
+ domelementtype "^1.3.0"
+ entities "^1.1.1"
domain-browser@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
-domelementtype@1, domelementtype@^1.3.0:
+domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
-domelementtype@~1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
- integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=
-
domexception@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
@@ -3133,20 +4399,6 @@ domexception@^1.0.1:
dependencies:
webidl-conversions "^4.0.2"
-domhandler@2.1:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594"
- integrity sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=
- dependencies:
- domelementtype "1"
-
-domhandler@2.3:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738"
- integrity sha1-LeWaCCLVAn+r/28DLCsloqir5zg=
- dependencies:
- domelementtype "1"
-
domhandler@^2.3.0:
version "2.4.2"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
@@ -3154,14 +4406,7 @@ domhandler@^2.3.0:
dependencies:
domelementtype "1"
-domutils@1.1:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485"
- integrity sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=
- dependencies:
- domelementtype "1"
-
-domutils@1.5, domutils@1.5.1:
+domutils@1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=
@@ -3189,10 +4434,10 @@ dot-prop@^4.1.1:
dependencies:
is-obj "^1.0.0"
-dottie@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/dottie/-/dottie-1.1.1.tgz#45c2a3f48bd6528eeed267a69a848eaaca6faa6a"
- integrity sha1-RcKj9IvWUo7u0memmoSOqspvqmo=
+dottie@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/dottie/-/dottie-2.0.1.tgz#697ad9d72004db7574d21f892466a3c285893659"
+ integrity sha512-ch5OQgvGDK2u8pSZeSYAQaV/lczImd7pMJ7BcEPXmnFVjy4yJIzP6CsODJUTH8mg1tyH1Z2abOiuJO3DjZ/GBw==
dtrace-provider@~0.8:
version "0.8.7"
@@ -3201,12 +4446,12 @@ dtrace-provider@~0.8:
dependencies:
nan "^2.10.0"
-duplexer2@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db"
- integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=
+duplexer2@^0.1.2, duplexer2@~0.1.0:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
+ integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=
dependencies:
- readable-stream "~1.1.9"
+ readable-stream "^2.0.2"
duplexer@^0.1.1:
version "0.1.1"
@@ -3214,9 +4459,9 @@ duplexer@^0.1.1:
integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
duplexify@^3.4.2, duplexify@^3.6.0:
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125"
- integrity sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
dependencies:
end-of-stream "^1.0.0"
inherits "^2.0.1"
@@ -3251,15 +4496,13 @@ editions@^2.1.0, editions@^2.1.2:
errlop "^1.1.1"
semver "^5.6.0"
-editorconfig@^0.15.2:
- version "0.15.2"
- resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.2.tgz#047be983abb9ab3c2eefe5199cb2b7c5689f0702"
- integrity sha512-GWjSI19PVJAM9IZRGOS+YKI8LN+/sjkSjNyvxL5ucqP9/IqtYNXBaQ/6c/hkPNYQHyOHra2KoXZI/JVpuqwmcQ==
+editorconfig@^0.15.3:
+ version "0.15.3"
+ resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5"
+ integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==
dependencies:
- "@types/node" "^10.11.7"
- "@types/semver" "^5.5.0"
commander "^2.19.0"
- lru-cache "^4.1.3"
+ lru-cache "^4.1.5"
semver "^5.6.0"
sigmund "^1.0.1"
@@ -3269,22 +4512,27 @@ ee-first@1.1.1:
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
ejs-loader@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/ejs-loader/-/ejs-loader-0.3.1.tgz#280c8e030bd32428c29826f6bbf6b6d0c14f7ca4"
- integrity sha512-bdJHTxBY3uqZ6L5V1WRohf1gr7ousgESpArPVseEQCWCATs+M8BRqxyJWqnFo+h815gTA++g5LyAyqS5OTIfdQ==
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/ejs-loader/-/ejs-loader-0.3.3.tgz#021aa196b8858f05b6f095576c4afe61012ccc2e"
+ integrity sha512-1pQNFYu+4VIeLLNrSZ8QaiyFk9oXv8koUyQ2Pz5k0dw89HHjeiliTPQ46GfqAzCqJ8cEq8QFNj/HsVjyIuzKEA==
dependencies:
loader-utils "^0.2.7"
- lodash "^3.6.0"
+ lodash "^4.17.11"
ejs@^2.5.5, ejs@^2.5.6:
version "2.6.1"
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0"
integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==
-electron-to-chromium@^1.3.103, electron-to-chromium@^1.3.47:
- version "1.3.106"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.106.tgz#672183160e783cb546cff83d9a98d5f69cd91874"
- integrity sha512-eXX45p4q9CRxG0G8D3ZBZYSdN3DnrcZfrFvt6VUr1u7aKITEtRY/xwWzJ/UZcWXa7DMqPu/pYwuZ6Nm+bl0GmA==
+electron-to-chromium@^1.3.137, electron-to-chromium@^1.3.47:
+ version "1.3.138"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.138.tgz#3c27814d48040d3988eaee56ab839d032987aff4"
+ integrity sha512-V6gvA2zuVp2l8gT8tvaFp3z2IOnx0UeCPuG6Fyw4x/eZEbt9xD9npSgia6emmDFHAz3TU0bElnpKZ3xZ0CUNDw==
+
+electron-to-chromium@^1.3.191:
+ version "1.3.210"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.210.tgz#0ce6247366c5771d4f5663a5879388fd1adefb7e"
+ integrity sha512-m1i/F+gw9jkauxDx0mOr7Sj6vp6se1mfkQNYqZb1yL5VGTp0AC1NZH5CGI6YMSO7WaScILmkKDZFG9/hlR9axQ==
elliptic@^6.0.0:
version "6.4.1"
@@ -3299,10 +4547,20 @@ elliptic@^6.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.0"
-emoji-regex@~6.1.0:
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.3.tgz#ec79a3969b02d2ecf2b72254279bf99bc7a83932"
- integrity sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI=
+"emoji-regex@>=6.0.0 <=6.1.1":
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e"
+ integrity sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=
+
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
emojify.js@~1.1.0:
version "1.1.0"
@@ -3333,13 +4591,6 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0:
dependencies:
once "^1.4.0"
-end-of-stream@~0.1.5:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf"
- integrity sha1-jhdyBsPICDfYVjLouTWd/osvbq8=
- dependencies:
- once "~1.3.0"
-
engine.io-client@~3.2.0:
version "3.2.1"
resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36"
@@ -3389,11 +4640,6 @@ enhanced-resolve@^4.1.0:
memory-fs "^0.4.0"
tapable "^1.0.0"
-entities@1.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26"
- integrity sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=
-
entities@^1.1.1, entities@~1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
@@ -3425,7 +4671,15 @@ error-ex@^1.2.0, error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.12.0, es-abstract@^1.5.1:
+error@^7.0.0:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02"
+ integrity sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=
+ dependencies:
+ string-template "~0.2.1"
+ xtend "~4.0.0"
+
+es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0:
version "1.13.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
@@ -3446,21 +4700,21 @@ es-to-primitive@^1.2.0:
is-date-object "^1.0.1"
is-symbol "^1.0.2"
-es5-ext@^0.10.12, es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46:
- version "0.10.47"
- resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.47.tgz#d24232e1380daad5449a817be19bde9729024a11"
- integrity sha512-/1TItLfj+TTfWoeRcDn/0FbGV6SNo4R+On2GGVucPU/j3BWnXE2Co8h8CTo4Tu34gFJtnmwS9xiScKs4EjZhdw==
+es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46:
+ version "0.10.50"
+ resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778"
+ integrity sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==
dependencies:
es6-iterator "~2.0.3"
es6-symbol "~3.1.1"
- next-tick "1"
+ next-tick "^1.0.0"
es6-error@^2.0.2:
version "2.1.1"
resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-2.1.1.tgz#91384301ec5ed1c9a7247d1128247216f03547cd"
integrity sha1-kThDAexe0cmnJH0RKCRyFvA1R80=
-es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.3:
+es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c=
@@ -3470,16 +4724,9 @@ es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.3:
es6-symbol "^3.1.1"
es6-promise@^4.0.3:
- version "4.2.5"
- resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054"
- integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==
-
-es6-promisify@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
- integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=
- dependencies:
- es6-promise "^4.0.3"
+ version "4.2.6"
+ resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.6.tgz#b685edd8258886365ea62b57d30de28fadcd974f"
+ integrity sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==
es6-symbol@^3.1.1, es6-symbol@~3.1.1:
version "3.1.1"
@@ -3499,7 +4746,7 @@ es6-weak-map@^2.0.2:
es6-iterator "^2.0.1"
es6-symbol "^3.1.1"
-escape-html@~1.0.3:
+escape-html@^1.0.3, escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
@@ -3509,10 +4756,15 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+escaper@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/escaper/-/escaper-2.5.3.tgz#8b8fe90ba364054151ab7eff18b4ce43b1e13ab5"
+ integrity sha512-QGb9sFxBVpbzMggrKTX0ry1oiI4CSDAl9vIL702hzl1jGW8VZs7qfqTRX7WDOjoNDoEVGcEtu1ZOQgReSfT2kQ==
+
escodegen@^1.9.1:
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589"
- integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510"
+ integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==
dependencies:
esprima "^3.1.3"
estraverse "^4.2.0"
@@ -3534,10 +4786,10 @@ eslint-import-resolver-node@^0.3.2:
debug "^2.6.9"
resolve "^1.5.0"
-eslint-module-utils@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz#546178dab5e046c8b562bbb50705e2456d7bda49"
- integrity sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w==
+eslint-module-utils@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a"
+ integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==
dependencies:
debug "^2.6.8"
pkg-dir "^2.0.0"
@@ -3551,20 +4803,21 @@ eslint-plugin-es@^1.3.1:
regexpp "^2.0.1"
eslint-plugin-import@^2.14.0:
- version "2.15.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.15.0.tgz#d8f3c28b8988ccde5df964706faa7c1e52f0602a"
- integrity sha512-LEHqgR+RcnpGqYW7h9WMkPb/tP+ekKxWdQDztfTtZeV43IHF+X8lXU+1HOCcR4oXD24qRgEwNSxIweD5uNKGVg==
+ version "2.17.3"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz#00548b4434c18faebaba04b24ae6198f280de189"
+ integrity sha512-qeVf/UwXFJbeyLbxuY8RgqDyEKCkqV7YC+E5S5uOjAp4tOc8zj01JP3ucoBM8JcEqd1qRasJSg6LLlisirfy0Q==
dependencies:
+ array-includes "^3.0.3"
contains-path "^0.1.0"
debug "^2.6.9"
doctrine "1.5.0"
eslint-import-resolver-node "^0.3.2"
- eslint-module-utils "^2.3.0"
+ eslint-module-utils "^2.4.0"
has "^1.0.3"
lodash "^4.17.11"
minimatch "^3.0.4"
read-pkg-up "^2.0.0"
- resolve "^1.9.0"
+ resolve "^1.11.0"
eslint-plugin-node@^8.0.0:
version "8.0.1"
@@ -3579,19 +4832,19 @@ eslint-plugin-node@^8.0.0:
semver "^5.5.0"
eslint-plugin-promise@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2"
- integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.1.1.tgz#1e08cb68b5b2cd8839f8d5864c796f56d82746db"
+ integrity sha512-faAHw7uzlNPy7b45J1guyjazw28M+7gJokKUjC5JSFoYfUEyy6Gw/i7YQvmv2Yk00sUjWcmzXQLpU1Ki/C2IZQ==
eslint-plugin-standard@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz#f845b45109c99cd90e77796940a344546c8f6b5c"
integrity sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA==
-eslint-scope@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172"
- integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==
+eslint-scope@^4.0.0, eslint-scope@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
+ integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
dependencies:
esrecurse "^4.1.0"
estraverse "^4.1.1"
@@ -3607,62 +4860,56 @@ eslint-visitor-keys@^1.0.0:
integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==
eslint@^5.9.0:
- version "5.12.1"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.12.1.tgz#5ca9931fb9029d04e7be92b03ce3b58edfac7e3b"
- integrity sha512-54NV+JkTpTu0d8+UYSA8mMKAG4XAsaOrozA9rCW7tgneg1mevcL7wIotPC+fZ0SkWwdhNqoXoxnQCTBp7UvTsg==
+ version "5.16.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea"
+ integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==
dependencies:
"@babel/code-frame" "^7.0.0"
- ajv "^6.5.3"
+ ajv "^6.9.1"
chalk "^2.1.0"
cross-spawn "^6.0.5"
debug "^4.0.1"
- doctrine "^2.1.0"
- eslint-scope "^4.0.0"
+ doctrine "^3.0.0"
+ eslint-scope "^4.0.3"
eslint-utils "^1.3.1"
eslint-visitor-keys "^1.0.0"
- espree "^5.0.0"
+ espree "^5.0.1"
esquery "^1.0.1"
esutils "^2.0.2"
- file-entry-cache "^2.0.0"
+ file-entry-cache "^5.0.1"
functional-red-black-tree "^1.0.1"
glob "^7.1.2"
globals "^11.7.0"
ignore "^4.0.6"
import-fresh "^3.0.0"
imurmurhash "^0.1.4"
- inquirer "^6.1.0"
- js-yaml "^3.12.0"
+ inquirer "^6.2.2"
+ js-yaml "^3.13.0"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.3.0"
- lodash "^4.17.5"
+ lodash "^4.17.11"
minimatch "^3.0.4"
mkdirp "^0.5.1"
natural-compare "^1.4.0"
optionator "^0.8.2"
path-is-inside "^1.0.2"
- pluralize "^7.0.0"
progress "^2.0.0"
regexpp "^2.0.1"
semver "^5.5.1"
strip-ansi "^4.0.0"
strip-json-comments "^2.0.1"
- table "^5.0.2"
+ table "^5.2.3"
text-table "^0.2.0"
-espree@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz#fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c"
- integrity sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA==
+espree@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a"
+ integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==
dependencies:
- acorn "^6.0.2"
+ acorn "^6.0.7"
acorn-jsx "^5.0.0"
eslint-visitor-keys "^1.0.0"
-esprima@^2.6.0:
- version "2.7.3"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
- integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
-
esprima@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
@@ -3692,10 +4939,15 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
-estree-walker@^0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39"
- integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==
+estree-walker@^0.6.0:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
+ integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
+
+esutils@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
esutils@^2.0.2:
version "2.0.2"
@@ -3712,9 +4964,10 @@ eve-raphael@0.5.0:
resolved "https://registry.yarnpkg.com/eve-raphael/-/eve-raphael-0.5.0.tgz#17c754b792beef3fa6684d79cf5a47c63c4cda30"
integrity sha1-F8dUt5K+7z+maE15z1pHxjxM2jA=
-"eve@git://github.com/adobe-webplatform/eve.git#eef80ed":
- version "0.4.1"
- resolved "git://github.com/adobe-webplatform/eve.git#eef80ed8d188423c2272746fb8ae5cc8dad84cb1"
+eve@~0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/eve/-/eve-0.4.2.tgz#7eea0afc0e4efb7c9365615315a3576833ead2ae"
+ integrity sha1-fuoK/A5O+3yTZWFTFaNXaDPq0q4=
event-emitter@^0.3.5:
version "0.3.5"
@@ -3724,11 +4977,6 @@ event-emitter@^0.3.5:
d "1"
es5-ext "~0.10.14"
-eventemitter2@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-5.0.1.tgz#6197a095d5fb6b57e8942f6fd7eaad63a09c9452"
- integrity sha1-YZegldX7a1folC9v1+qtY6CclFI=
-
events@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
@@ -3747,19 +4995,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
md5.js "^1.3.4"
safe-buffer "^5.1.1"
-execa@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
- integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=
- dependencies:
- cross-spawn "^5.0.1"
- get-stream "^3.0.0"
- is-stream "^1.1.0"
- npm-run-path "^2.0.0"
- p-finally "^1.0.0"
- signal-exit "^3.0.0"
- strip-eof "^1.0.0"
-
execa@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
@@ -3773,11 +5008,6 @@ execa@^1.0.0:
signal-exit "^3.0.0"
strip-eof "^1.0.0"
-exit@0.1.2, exit@0.1.x:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
- integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
-
expand-brackets@^0.1.4:
version "0.1.5"
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
@@ -3805,13 +5035,6 @@ expand-range@^1.8.1:
dependencies:
fill-range "^2.1.0"
-expand-tilde@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449"
- integrity sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=
- dependencies:
- os-homedir "^1.0.1"
-
expand-tilde@^2.0.0, expand-tilde@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
@@ -3819,10 +5042,10 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2:
dependencies:
homedir-polyfill "^1.0.1"
-expect-ct@0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/expect-ct/-/expect-ct-0.1.1.tgz#de84476a2dbcb85000d5903737e9bc8a5ba7b897"
- integrity sha512-ngXzTfoRGG7fYens3/RMb6yYoVLvLMfmsSllP/mZPxNHgFq41TmPSLF/nLY7fwoclI2vElvAmILFWGUYqdjfCg==
+expect-ct@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/expect-ct/-/expect-ct-0.2.0.tgz#3a54741b6ed34cc7a93305c605f63cd268a54a62"
+ integrity sha512-6SK3MG/Bbhm8MsgyJAylg+ucIOU71/FzyFalcfu5nY19dH8y/z0tBJU0wrNBXD4B27EoQtqPF/9wqH0iYAd04g==
exports-loader@^0.7.0:
version "0.7.0"
@@ -3838,53 +5061,52 @@ expose-loader@^0.7.5:
integrity sha512-iPowgKUZkTPX5PznYsmifVj9Bob0w2wTHVkt/eYNPSzyebkUgIedmskf/kcfEIWpiWjg3JRjnW+a17XypySMuw==
express-session@^1.14.2:
- version "1.15.6"
- resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.15.6.tgz#47b4160c88f42ab70fe8a508e31cbff76757ab0a"
- integrity sha512-r0nrHTCYtAMrFwZ0kBzZEXa1vtPVrw0dKvGSrKP4dahwBQ1BJpF2/y1Pp4sCD/0kvxV4zZeclyvfmw0B4RMJQA==
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.16.1.tgz#251ff9776c59382301de6c8c33411af357ed439c"
+ integrity sha512-pWvUL8Tl5jUy1MLH7DhgUlpoKeVPUTe+y6WQD9YhcN0C5qAhsh4a8feVjiUXo3TFhIy191YGZ4tewW9edbl2xQ==
dependencies:
cookie "0.3.1"
cookie-signature "1.0.6"
- crc "3.4.4"
debug "2.6.9"
- depd "~1.1.1"
- on-headers "~1.0.1"
+ depd "~2.0.0"
+ on-headers "~1.0.2"
parseurl "~1.3.2"
+ safe-buffer "5.1.2"
uid-safe "~2.1.5"
- utils-merge "1.0.1"
express@>=4.14:
- version "4.16.4"
- resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e"
- integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==
+ version "4.17.1"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
+ integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
dependencies:
- accepts "~1.3.5"
+ accepts "~1.3.7"
array-flatten "1.1.1"
- body-parser "1.18.3"
- content-disposition "0.5.2"
+ body-parser "1.19.0"
+ content-disposition "0.5.3"
content-type "~1.0.4"
- cookie "0.3.1"
+ cookie "0.4.0"
cookie-signature "1.0.6"
debug "2.6.9"
depd "~1.1.2"
encodeurl "~1.0.2"
escape-html "~1.0.3"
etag "~1.8.1"
- finalhandler "1.1.1"
+ finalhandler "~1.1.2"
fresh "0.5.2"
merge-descriptors "1.0.1"
methods "~1.1.2"
on-finished "~2.3.0"
- parseurl "~1.3.2"
+ parseurl "~1.3.3"
path-to-regexp "0.1.7"
- proxy-addr "~2.0.4"
- qs "6.5.2"
- range-parser "~1.2.0"
+ proxy-addr "~2.0.5"
+ qs "6.7.0"
+ range-parser "~1.2.1"
safe-buffer "5.1.2"
- send "0.16.2"
- serve-static "1.13.2"
- setprototypeof "1.1.0"
- statuses "~1.4.0"
- type-is "~1.6.16"
+ send "0.17.1"
+ serve-static "1.14.1"
+ setprototypeof "1.1.1"
+ statuses "~1.5.0"
+ type-is "~1.6.18"
utils-merge "1.0.1"
vary "~1.1.2"
@@ -3908,7 +5130,7 @@ extend@3.0.0:
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
integrity sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=
-extend@^3.0.0, extend@^3.0.2, extend@~3.0.0, extend@~3.0.2:
+extend@^3.0.0, extend@^3.0.2, extend@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
@@ -3920,7 +5142,7 @@ extendr@^2.1.0:
dependencies:
typechecker "~2.0.1"
-external-editor@^3.0.0:
+external-editor@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27"
integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==
@@ -3957,7 +5179,7 @@ extract-opts@^2.2.0:
dependencies:
typechecker "~2.0.1"
-extract-zip@^1.6.5, extract-zip@^1.6.6:
+extract-zip@^1.6.5:
version "1.6.7"
resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9"
integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=
@@ -3982,7 +5204,7 @@ extsprintf@^1.2.0:
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
-fancy-log@^1.1.0:
+fancy-log@^1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7"
integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==
@@ -4017,12 +5239,12 @@ fastparse@^1.1.1:
resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9"
integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==
-fault@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.2.tgz#c3d0fec202f172a3a4d414042ad2bb5e2a3ffbaa"
- integrity sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw==
+faye-websocket@~0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
+ integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=
dependencies:
- format "^0.2.2"
+ websocket-driver ">=0.5.1"
fd-slicer@~1.0.1:
version "1.0.1"
@@ -4031,10 +5253,10 @@ fd-slicer@~1.0.1:
dependencies:
pend "~1.2.0"
-feature-policy@0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/feature-policy/-/feature-policy-0.2.0.tgz#22096de49ab240176878ffe2bde2f6ff04d48c43"
- integrity sha512-2hGrlv6efG4hscYVZeaYjpzpT6I2OZgYqE2yDUzeAcKj2D1SH0AsEzqJNXzdoglEddcIXQQYop3lD97XpG75Jw==
+feature-policy@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/feature-policy/-/feature-policy-0.3.0.tgz#7430e8e54a40da01156ca30aaec1a381ce536069"
+ integrity sha512-ZtijOTFN7TzCujt1fnNhfWPFPSHeZkesff9AXZj+UEjYBynWNUIYpC87Ve4wHzyexQsImicLu7WsC2LHq7/xrQ==
fecha@^2.3.3:
version "2.3.3"
@@ -4046,14 +5268,6 @@ figgy-pudding@^3.5.1:
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==
-figures@^1.0.1:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
- integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=
- dependencies:
- escape-string-regexp "^1.0.5"
- object-assign "^4.1.0"
-
figures@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
@@ -4061,13 +5275,12 @@ figures@^2.0.0:
dependencies:
escape-string-regexp "^1.0.5"
-file-entry-cache@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
- integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=
+file-entry-cache@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
+ integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
dependencies:
- flat-cache "^1.2.1"
- object-assign "^4.0.1"
+ flat-cache "^2.0.1"
file-loader@^2.0.0:
version "2.0.0"
@@ -4082,11 +5295,6 @@ file-saver@^1.3.3:
resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-1.3.8.tgz#e68a30c7cb044e2fb362b428469feb291c2e09d8"
integrity sha512-spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg==
-file-uri-to-path@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
- integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
-
filename-regex@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
@@ -4113,17 +5321,17 @@ fill-range@^4.0.0:
repeat-string "^1.6.1"
to-regex-range "^2.1.0"
-finalhandler@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
- integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==
+finalhandler@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
+ integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
dependencies:
debug "2.6.9"
encodeurl "~1.0.2"
escape-html "~1.0.3"
on-finished "~2.3.0"
- parseurl "~1.3.2"
- statuses "~1.4.0"
+ parseurl "~1.3.3"
+ statuses "~1.5.0"
unpipe "~1.0.0"
find-cache-dir@^1.0.0:
@@ -4136,19 +5344,14 @@ find-cache-dir@^1.0.0:
pkg-dir "^2.0.0"
find-cache-dir@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d"
- integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
+ integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
dependencies:
commondir "^1.0.1"
- make-dir "^1.0.0"
+ make-dir "^2.0.0"
pkg-dir "^3.0.0"
-find-index@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4"
- integrity sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=
-
find-up@^2.0.0, find-up@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
@@ -4163,16 +5366,6 @@ find-up@^3.0.0:
dependencies:
locate-path "^3.0.0"
-findup-sync@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-1.0.0.tgz#6f7e4b57b6ee3a4037b4414eaedea3f58f71e0ec"
- integrity sha1-b35LV7buOkA3tEFOrt6j9Y9x4Ow=
- dependencies:
- detect-file "^0.1.0"
- is-glob "^2.0.1"
- micromatch "^2.3.7"
- resolve-dir "^0.1.0"
-
findup-sync@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc"
@@ -4183,51 +5376,34 @@ findup-sync@^2.0.0:
micromatch "^3.0.4"
resolve-dir "^1.0.1"
-fined@^1.0.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.1.tgz#95d88ff329123dd1a6950fdfcd321f746271e01f"
- integrity sha512-jQp949ZmEbiYHk3gkbdtpJ0G1+kgtLQBNdP5edFP7Fh+WAYceLQz6yO1SBj72Xkg8GVyTB3bBzAYrHJVh5Xd5g==
+flat-cache@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
+ integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
dependencies:
- expand-tilde "^2.0.2"
- is-plain-object "^2.0.3"
- object.defaults "^1.1.0"
- object.pick "^1.2.0"
- parse-filepath "^1.0.1"
-
-first-chunk-stream@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e"
- integrity sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=
-
-flagged-respawn@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41"
- integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==
+ flatted "^2.0.0"
+ rimraf "2.6.3"
+ write "1.0.3"
-flat-cache@^1.2.1:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f"
- integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==
- dependencies:
- circular-json "^0.3.1"
- graceful-fs "^4.1.2"
- rimraf "~2.6.2"
- write "^0.2.1"
+flatted@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916"
+ integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==
flowchart.js@^1.6.4:
- version "1.11.3"
- resolved "https://registry.yarnpkg.com/flowchart.js/-/flowchart.js-1.11.3.tgz#e27e2c2bb5ed0e78bea403f1370a0ea3dfe274dd"
- integrity sha512-Hk5vKKsEjYp/Vt4gSRBx39z+6OLwkg3top/EQ4antpZXCVrHLajVGWEqhCPeEBixhzDxAtHdRn4aFEtRhlTzHA==
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/flowchart.js/-/flowchart.js-1.12.0.tgz#ff5b4cf350b4e067a4232dc1b4dfdd87524acf5a"
+ integrity sha512-82mj9315e3+U87D147dbPu/MKBqAtngQu3JY1GFG0+3HmsT6yN/PbpI/tmjdchWEU3gAAKuVXxSGT9u3dNvYow==
dependencies:
raphael "2.2.7"
-flush-write-stream@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd"
- integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==
+flush-write-stream@^1.0.0, flush-write-stream@^1.0.2:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
+ integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
dependencies:
- inherits "^2.0.1"
- readable-stream "^2.0.4"
+ inherits "^2.0.3"
+ readable-stream "^2.3.6"
for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
@@ -4241,22 +5417,15 @@ for-own@^0.1.4:
dependencies:
for-in "^1.0.1"
-for-own@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
- integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=
- dependencies:
- for-in "^1.0.1"
-
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
fork-awesome@^1.1.3:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/fork-awesome/-/fork-awesome-1.1.5.tgz#09370221ad752a5396beb62bcb7bd11dab09a132"
- integrity sha512-AcyPBje/cBkNjLAqxs301XjWSTLcXyktXjo0zhyrXDiEbTFi48HqBYbcPL0QBdtRHXrEdj+1rR5KublMQDwPwQ==
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/fork-awesome/-/fork-awesome-1.1.7.tgz#1427da1cac3d1713046ee88427e5fcecb9501d21"
+ integrity sha512-IHI7XCSXrKfUIWslse8c/PaaVDT1oBaYge+ju40ihL2ooiQeBpTr4wvIXhgTd2NuhntlvX+M5jYHAPTzNlmv0g==
form-data@1.0.0-rc3:
version "1.0.0-rc3"
@@ -4267,15 +5436,6 @@ form-data@1.0.0-rc3:
combined-stream "^1.0.5"
mime-types "^2.1.3"
-form-data@~2.1.1:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
- integrity sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.5"
- mime-types "^2.1.12"
-
form-data@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
@@ -4285,11 +5445,6 @@ form-data@~2.3.2:
combined-stream "^1.0.6"
mime-types "^2.1.12"
-format@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
- integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=
-
formidable@^1.0.17:
version "1.2.1"
resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659"
@@ -4312,10 +5467,10 @@ fragment-cache@^0.2.1:
dependencies:
map-cache "^0.2.2"
-frameguard@3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/frameguard/-/frameguard-3.0.0.tgz#7bcad469ee7b96e91d12ceb3959c78235a9272e9"
- integrity sha1-e8rUae57lukdEs6zlZx4I1qScuk=
+frameguard@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/frameguard/-/frameguard-3.1.0.tgz#bd1442cca1d67dc346a6751559b6d04502103a22"
+ integrity sha512-TxgSKM+7LTA6sidjOiSZK9wxY0ffMPY3Wta//MqwmX0nZuEHc8QrkV8Fh3ZhMJeiH+Uyh/tcaarImRy8u77O7g==
fresh@0.5.2:
version "0.5.2"
@@ -4335,11 +5490,6 @@ fs-constants@^1.0.0:
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
-fs-exists-sync@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
- integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=
-
fs-extra@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950"
@@ -4349,22 +5499,30 @@ fs-extra@^1.0.0:
jsonfile "^2.1.0"
klaw "^1.0.0"
-fs-extra@^4.0.1:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
- integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==
+fs-extra@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
+ integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
dependencies:
graceful-fs "^4.1.2"
jsonfile "^4.0.0"
universalify "^0.1.0"
fs-minipass@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
- integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07"
+ integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==
dependencies:
minipass "^2.2.1"
+fs-mkdirp-stream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb"
+ integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=
+ dependencies:
+ graceful-fs "^4.1.11"
+ through2 "^2.0.3"
+
fs-readdir-recursive@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27"
@@ -4385,13 +5543,13 @@ fs.realpath@^1.0.0:
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-fsevents@^1.0.0, fsevents@^1.2.2:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4"
- integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==
+fsevents@^1.0.0, fsevents@^1.2.7:
+ version "1.2.9"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
+ integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
dependencies:
- nan "^2.9.2"
- node-pre-gyp "^0.10.0"
+ nan "^2.12.1"
+ node-pre-gyp "^0.12.0"
function-bind@^1.1.1:
version "1.1.1"
@@ -4417,17 +5575,12 @@ gauge@~2.7.3:
strip-ansi "^3.0.1"
wide-align "^1.1.0"
-gaze@^0.5.1:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f"
- integrity sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=
+generate-function@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f"
+ integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==
dependencies:
- globule "~0.1.0"
-
-generic-pool@2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-2.4.2.tgz#886bc5bf0beb7db96e81bcbba078818de5a62683"
- integrity sha1-iGvFvwvrfblugby7oHiBjeWmJoM=
+ is-property "^1.0.2"
generic-pool@2.4.3:
version "2.4.3"
@@ -4439,10 +5592,15 @@ get-caller-file@^1.0.1, get-caller-file@^1.0.2:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
-get-stream@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
- integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
+get-caller-file@^2.0.1:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-port@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119"
+ integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==
get-stream@^4.0.0:
version "4.1.0"
@@ -4468,6 +5626,35 @@ gist-embed@~2.6.0:
resolved "https://registry.yarnpkg.com/gist-embed/-/gist-embed-2.6.0.tgz#1ea95703fa1fc2a1255419f6f06c67e9920649ab"
integrity sha1-HqlXA/ofwqElVBn28Gxn6ZIGSas=
+git-up@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/git-up/-/git-up-2.1.0.tgz#2f14cfe78327e7c4a2b92fcac7bfc674fdfad40c"
+ integrity sha512-MJgwfcSd9qxgDyEYpRU/CDxNpUadrK80JHuEQDG4Urn0m7tpSOgCBrtiSIa9S9KH8Tbuo/TN8SSQmJBvsw1HkA==
+ dependencies:
+ is-ssh "^1.3.0"
+ parse-url "^3.0.2"
+
+git-url-parse@^10.0.1:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-10.1.0.tgz#a27813218f8777e91d15f1c121b83bf14721b67e"
+ integrity sha512-goZOORAtFjU1iG+4zZgWq+N7It09PqS3Xsy43ZwhP5unDD0tTSmXTpqULHodMdJXGejm3COwXIhIRT6Z8DYVZQ==
+ dependencies:
+ git-up "^2.0.0"
+
+github-slugger@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.2.0.tgz#8ada3286fd046d8951c3c952a8d7854cfd90fd9a"
+ integrity sha512-wIaa75k1vZhyPm9yWrD08A5Xnx/V+RmzGrpjQuLemGKSb77Qukiaei58Bogrl/LZSADDfPzKJX8jhLs4CRTl7Q==
+ dependencies:
+ emoji-regex ">=6.0.0 <=6.1.1"
+
+github-slugger@^1.0.0, github-slugger@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.2.1.tgz#47e904e70bf2dccd0014748142d31126cfd49508"
+ integrity sha512-SsZUjg/P03KPzQBt7OxJPasGw6NRO5uOgiZ5RGXVud5iSIZ0eNZeNp5rTwCxtavrRUa/A77j8mePVc5lEvk0KQ==
+ dependencies:
+ emoji-regex ">=6.0.0 <=6.1.1"
+
glob-base@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
@@ -4491,31 +5678,21 @@ glob-parent@^3.1.0:
is-glob "^3.1.0"
path-dirname "^1.0.0"
-glob-stream@^3.1.5:
- version "3.1.18"
- resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b"
- integrity sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=
- dependencies:
- glob "^4.3.1"
- glob2base "^0.0.12"
- minimatch "^2.0.1"
- ordered-read-streams "^0.1.0"
- through2 "^0.6.1"
- unique-stream "^1.0.0"
-
-glob-watcher@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b"
- integrity sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=
- dependencies:
- gaze "^0.5.1"
-
-glob2base@^0.0.12:
- version "0.0.12"
- resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56"
- integrity sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=
+glob-stream@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4"
+ integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=
dependencies:
- find-index "^0.1.1"
+ extend "^3.0.0"
+ glob "^7.1.1"
+ glob-parent "^3.1.0"
+ is-negated-glob "^1.0.0"
+ ordered-read-streams "^1.0.0"
+ pumpify "^1.3.5"
+ readable-stream "^2.1.5"
+ remove-trailing-separator "^1.0.1"
+ to-absolute-glob "^2.0.0"
+ unique-stream "^2.0.2"
glob@7.1.2:
version "7.1.2"
@@ -4529,16 +5706,6 @@ glob@7.1.2:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^4.3.1:
- version "4.5.3"
- resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f"
- integrity sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=
- dependencies:
- inflight "^1.0.4"
- inherits "2"
- minimatch "^2.0.1"
- once "^1.3.0"
-
glob@^6.0.1, glob@~6.0.4:
version "6.0.4"
resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
@@ -4551,9 +5718,9 @@ glob@^6.0.1, glob@~6.0.4:
path-is-absolute "^1.0.0"
glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
- version "7.1.3"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
- integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
+ version "7.1.4"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
+ integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
@@ -4562,28 +5729,6 @@ glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@~3.1.21:
- version "3.1.21"
- resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd"
- integrity sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=
- dependencies:
- graceful-fs "~1.2.0"
- inherits "1"
- minimatch "~0.2.11"
-
-global-modules-path@^2.3.0:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.1.tgz#e541f4c800a1a8514a990477b267ac67525b9931"
- integrity sha512-y+shkf4InI7mPRHSo2b/k6ix6+NLDtyccYv86whhxrSGX9wjPX1VMITmrDbE1eh7zkzhiWtW2sHklJYoQ62Cxg==
-
-global-modules@^0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d"
- integrity sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=
- dependencies:
- global-prefix "^0.1.4"
- is-windows "^0.2.0"
-
global-modules@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
@@ -4593,16 +5738,6 @@ global-modules@^1.0.0:
is-windows "^1.0.1"
resolve-dir "^1.0.0"
-global-prefix@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f"
- integrity sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=
- dependencies:
- homedir-polyfill "^1.0.0"
- ini "^1.3.4"
- is-windows "^0.2.0"
- which "^1.2.12"
-
global-prefix@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
@@ -4614,10 +5749,15 @@ global-prefix@^1.0.1:
is-windows "^1.0.1"
which "^1.2.14"
-globals@^11.7.0:
- version "11.10.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.10.0.tgz#1e09776dffda5e01816b3bb4077c8b59c24eaa50"
- integrity sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==
+globals-docs@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/globals-docs/-/globals-docs-2.4.0.tgz#f2c647544eb6161c7c38452808e16e693c2dafbb"
+ integrity sha512-B69mWcqCmT3jNYmSxRxxOXWfzu3Go8NQXPfl2o0qPd1EEFhwW0dFUg9ztTu915zPQzqwIhWAlw6hmfIcCK4kkQ==
+
+globals@^11.1.0, globals@^11.7.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
globals@^9.18.0:
version "9.18.0"
@@ -4636,22 +5776,6 @@ globby@^7.1.1:
pify "^3.0.0"
slash "^1.0.0"
-globule@~0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5"
- integrity sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=
- dependencies:
- glob "~3.1.21"
- lodash "~1.0.1"
- minimatch "~0.2.11"
-
-glogg@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f"
- integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==
- dependencies:
- sparkles "^1.0.0"
-
good-listener@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50"
@@ -4664,24 +5788,10 @@ graceful-fs@*, graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, gra
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
-graceful-fs@^3.0.0:
- version "3.0.11"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818"
- integrity sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=
- dependencies:
- natives "^1.1.0"
-
-graceful-fs@~1.2.0:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364"
- integrity sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=
-
-graphlib@^2.1.1:
- version "2.1.7"
- resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.7.tgz#b6a69f9f44bd9de3963ce6804a2fc9e73d86aecc"
- integrity sha512-TyI9jIy2J4j0qgPmOOrHTCtpPqJGN/aurBwc6ZT+bRii+di1I+Wv3obRhVrmBEXet+qkMaEX67dXrwsd3QQM6w==
- dependencies:
- lodash "^4.17.5"
+graceful-fs@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b"
+ integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==
graphlibrary@^2.2.0:
version "2.2.0"
@@ -4695,128 +5805,32 @@ growl@1.10.5:
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
-grunt-contrib-jshint@:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/grunt-contrib-jshint/-/grunt-contrib-jshint-2.0.0.tgz#a2be576cdd2a21d87fa3b9e770de407a29563fd2"
- integrity sha512-4qR411I1bhvVrPkKBzCUcrWkTEtBuWioXi9ABWRXHoplRScg03jiMqLDpzS4pDhVsLOTx5F9l+0cnMc+Gd2MWg==
- dependencies:
- chalk "^2.4.1"
- hooker "^0.2.3"
- jshint "~2.9.6"
-
-grunt-contrib-qunit@:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/grunt-contrib-qunit/-/grunt-contrib-qunit-3.1.0.tgz#91582a2d55ddb93a8c4d9fed26c9b2367bb13451"
- integrity sha512-mdk8UltH6mxCD63E0hTXMAts42DOi4z4bBBrY7qnuHiShflMF7IueSMYe0zWaZ2dO8mgujh57Zfny2EbigJhRg==
- dependencies:
- eventemitter2 "^5.0.1"
- p-each-series "^1.0.0"
- puppeteer "^1.11.0"
-
-grunt-contrib-uglify@:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/grunt-contrib-uglify/-/grunt-contrib-uglify-4.0.0.tgz#50aa36568cbf5f9532b35fe8b3dacf99210c909c"
- integrity sha512-vy3Vop2KDqdiwcGOGAjyKvjHFrRD/YK4KPQWR3Yt6OdYlgFw1z7HCuk66+IJ9s7oJmp9uRQXuuSHyawKRAgiMw==
- dependencies:
- chalk "^2.4.1"
- maxmin "^2.1.0"
- uglify-js "~3.4.8"
- uri-path "^1.0.0"
-
-gulp-help@~1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/gulp-help/-/gulp-help-1.6.1.tgz#261db186e18397fef3f6a2c22e9c315bfa88ae0c"
- integrity sha1-Jh2xhuGDl/7z9qLCLpwxW/qIrgw=
- dependencies:
- chalk "^1.0.0"
- object-assign "^3.0.0"
-
-gulp-util@^3.0.0:
- version "3.0.8"
- resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f"
- integrity sha1-AFTh50RQLifATBh8PsxQXdVLu08=
- dependencies:
- array-differ "^1.0.0"
- array-uniq "^1.0.2"
- beeper "^1.0.0"
- chalk "^1.0.0"
- dateformat "^2.0.0"
- fancy-log "^1.1.0"
- gulplog "^1.0.0"
- has-gulplog "^0.1.0"
- lodash._reescape "^3.0.0"
- lodash._reevaluate "^3.0.0"
- lodash._reinterpolate "^3.0.0"
- lodash.template "^3.0.0"
- minimist "^1.1.0"
- multipipe "^0.1.2"
- object-assign "^3.0.0"
- replace-ext "0.0.1"
- through2 "^2.0.0"
- vinyl "^0.5.0"
-
-gulp@^3.9.1:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4"
- integrity sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=
- dependencies:
- archy "^1.0.0"
- chalk "^1.0.0"
- deprecated "^0.0.1"
- gulp-util "^3.0.0"
- interpret "^1.0.0"
- liftoff "^2.1.0"
- minimist "^1.1.0"
- orchestrator "^0.3.0"
- pretty-hrtime "^1.0.0"
- semver "^4.1.0"
- tildify "^1.0.0"
- v8flags "^2.0.2"
- vinyl-fs "^0.3.0"
-
-gulplog@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5"
- integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U=
- dependencies:
- glogg "^1.0.0"
-
-gzip-size@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
- integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=
+gulp-print@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/gulp-print/-/gulp-print-5.0.2.tgz#8f379148218d2e168461baa74352e11d1bf7aa75"
+ integrity sha512-iIpHMzC/b3gFvVXOfP9Jk94SWGIsDLVNUrxULRleQev+08ug07mh84b1AOlW6QDQdmInQiqDFqJN1UvhU2nXdg==
dependencies:
- duplexer "^0.1.1"
+ ansi-colors "^3.2.4"
+ fancy-log "^1.3.3"
+ map-stream "0.0.7"
+ vinyl "^2.2.0"
-handlebars@^4.0.6:
- version "4.0.12"
- resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5"
- integrity sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==
+handlebars@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67"
+ integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==
dependencies:
- async "^2.5.0"
+ neo-async "^2.6.0"
optimist "^0.6.1"
source-map "^0.6.1"
optionalDependencies:
uglify-js "^3.1.4"
-har-schema@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
- integrity sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=
-
har-schema@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
-har-validator@~4.2.1:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
- integrity sha1-M0gdDxu/9gDdID11gSpqX7oALio=
- dependencies:
- ajv "^4.9.1"
- har-schema "^1.0.5"
-
har-validator@~5.1.0:
version "5.1.3"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
@@ -4854,13 +5868,6 @@ has-flag@^3.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-has-gulplog@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce"
- integrity sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=
- dependencies:
- sparkles "^1.0.0"
-
has-symbols@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
@@ -4933,22 +5940,45 @@ hasha@^2.2.0:
is-stream "^1.0.1"
pinkie-promise "^2.0.0"
-hawk@~3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
- integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=
+hast-util-is-element@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-1.0.3.tgz#423b4b26fe8bf1f25950fe052e9ce8f83fd5f6a4"
+ integrity sha512-C62CVn7jbjp89yOhhy7vrkSaB7Vk906Gtcw/Ihd+Iufnq+2pwOZjdPmpzpKLWJXPJBMDX3wXg4FqmdOayPcewA==
+
+hast-util-sanitize@^1.0.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/hast-util-sanitize/-/hast-util-sanitize-1.3.1.tgz#4e60d66336bd67e52354d581967467029a933f2e"
+ integrity sha512-AIeKHuHx0Wk45nSkGVa2/ujQYTksnDl8gmmKo/mwQi7ag7IBZ8cM3nJ2G86SajbjGP/HRpud6kMkPtcM2i0Tlw==
dependencies:
- boom "2.x.x"
- cryptiles "2.x.x"
- hoek "2.x.x"
- sntp "1.x.x"
+ xtend "^4.0.1"
+
+hast-util-to-html@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-4.0.1.tgz#3666b05afb62bd69f8f5e6c94db04dea19438e2a"
+ integrity sha512-2emzwyf0xEsc4TBIPmDJmBttIw8R4SXAJiJZoiRR/s47ODYWgOqNoDbf2SJAbMbfNdFWMiCSOrI3OVnX6Qq2Mg==
+ dependencies:
+ ccount "^1.0.0"
+ comma-separated-tokens "^1.0.1"
+ hast-util-is-element "^1.0.0"
+ hast-util-whitespace "^1.0.0"
+ html-void-elements "^1.0.0"
+ property-information "^4.0.0"
+ space-separated-tokens "^1.0.0"
+ stringify-entities "^1.0.1"
+ unist-util-is "^2.0.0"
+ xtend "^4.0.1"
+
+hast-util-whitespace@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.3.tgz#6d161b307bd0693b5ec000c7c7e8b5445109ee34"
+ integrity sha512-AlkYiLTTwPOyxZ8axq2/bCwRUPjIPBfrHkXuCR92B38b3lSdU22R5F/Z4DL6a2kxWpekWq1w6Nj48tWat6GeRA==
he@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0=
-he@1.2.x, he@^1.1.1:
+he@1.2.x, he@^1.1.0, he@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
@@ -4969,23 +5999,24 @@ helmet-csp@2.7.1:
platform "1.3.5"
helmet@^3.13.0:
- version "3.15.0"
- resolved "https://registry.yarnpkg.com/helmet/-/helmet-3.15.0.tgz#fe0bb80e05d9eec589e3cbecaf5384409a3a64c9"
- integrity sha512-j9JjtAnWJj09lqe/PEICrhuDaX30TeokXJ9tW6ZPhVH0+LMoihDeJ58CdWeTGzM66p6EiIODmgAaWfdeIWI4Gg==
+ version "3.18.0"
+ resolved "https://registry.yarnpkg.com/helmet/-/helmet-3.18.0.tgz#37666f7c861bd1ff3015e0cdb903a43501e3da3e"
+ integrity sha512-TsKlGE5UVkV0NiQ4PllV9EVfZklPjyzcMEMjWlyI/8S6epqgRT+4s4GHVgc25x0TixsKvp3L7c91HQQt5l0+QA==
dependencies:
+ depd "2.0.0"
dns-prefetch-control "0.1.0"
dont-sniff-mimetype "1.0.0"
- expect-ct "0.1.1"
- feature-policy "0.2.0"
- frameguard "3.0.0"
+ expect-ct "0.2.0"
+ feature-policy "0.3.0"
+ frameguard "3.1.0"
helmet-crossdomain "0.3.0"
helmet-csp "2.7.1"
hide-powered-by "1.0.0"
hpkp "2.0.0"
- hsts "2.1.0"
- ienoopen "1.0.0"
- nocache "2.0.0"
- referrer-policy "1.1.0"
+ hsts "2.2.0"
+ ienoopen "1.1.0"
+ nocache "2.1.0"
+ referrer-policy "1.2.0"
x-xss-protection "1.1.0"
hex-color-regex@^1.1.0:
@@ -4999,9 +6030,14 @@ hide-powered-by@1.0.0:
integrity sha1-SoWtZYgfYoV/xwr3F0oRhNzM4ys=
highlight.js@^9.1.0:
- version "9.13.1"
- resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.13.1.tgz#054586d53a6863311168488a0f58d6c505ce641e"
- integrity sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A==
+ version "9.15.8"
+ resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.15.8.tgz#f344fda123f36f1a65490e932cf90569e4999971"
+ integrity sha512-RrapkKQWwE+wKdF73VsOa2RQdIoO3mxwJ4P8mhbI6KYJUraUHRKM5w5zQQKXNk0xNL4UVRdulV9SBJcmzJNzVA==
+
+highlight.js@^9.15.5:
+ version "9.15.9"
+ resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.15.9.tgz#865257da1dbb4a58c4552d46c4b3854f77f0e6d5"
+ integrity sha512-M0zZvfLr5p0keDMCAhNBp03XJbKBxUx5AfyfufMdFMEP4N/Xj6dh0IqC75ys7BAzceR34NgcvXjupRVaHBPPVQ==
highlight.js@~9.12.0:
version "9.12.0"
@@ -5017,11 +6053,6 @@ hmac-drbg@^1.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
-hoek@2.x.x:
- version "2.16.3"
- resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
- integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=
-
home-or-tmp@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
@@ -5030,18 +6061,13 @@ home-or-tmp@^2.0.0:
os-homedir "^1.0.0"
os-tmpdir "^1.0.1"
-homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
- integrity sha1-TCu8inWJmP7r9e1oWA921GdotLw=
+homedir-polyfill@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
+ integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
dependencies:
parse-passwd "^1.0.0"
-hooker@^0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959"
- integrity sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=
-
hosted-git-info@^2.1.4:
version "2.7.1"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
@@ -5062,10 +6088,12 @@ hsla-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
-hsts@2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/hsts/-/hsts-2.1.0.tgz#cbd6c918a2385fee1dd5680bfb2b3a194c0121cc"
- integrity sha512-zXhh/DqgrTXJ7erTN6Fh5k/xjMhDGXCqdYN3wvxUvGUQvnxcFfUd8E+6vLg/nk3ss1TYMb+DhRl25fYABioTvA==
+hsts@2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/hsts/-/hsts-2.2.0.tgz#09119d42f7a8587035d027dda4522366fe75d964"
+ integrity sha512-ToaTnQ2TbJkochoVcdXYm4HOCliNozlviNsg+X2XQLQvZNI/kCHR9rZxVYpJB3UPcHz80PgxRyWQ7PdU1r+VBQ==
+ dependencies:
+ depd "2.0.0"
html-comment-regex@^1.1.0:
version "1.1.2"
@@ -5092,6 +6120,24 @@ html-minifier@^3.5.20:
relateurl "0.2.x"
uglify-js "3.4.x"
+html-minifier@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56"
+ integrity sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==
+ dependencies:
+ camel-case "^3.0.0"
+ clean-css "^4.2.1"
+ commander "^2.19.0"
+ he "^1.2.0"
+ param-case "^2.1.1"
+ relateurl "^0.2.7"
+ uglify-js "^3.5.1"
+
+html-void-elements@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.4.tgz#95e8bb5ecd6b88766569c2645f2b5f1591db9ba5"
+ integrity sha512-yMk3naGPLrfvUV9TdDbuYXngh/TpHbA6TrOw3HL9kS8yhwx7i309BReNg7CbAJXGE+UMJ6je5OqJ7lC63o6YuQ==
+
html-webpack-plugin@4.0.0-beta.2:
version "4.0.0-beta.2"
resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.2.tgz#c3a212448ee198a17dacd06525678ee12f917420"
@@ -5104,69 +6150,33 @@ html-webpack-plugin@4.0.0-beta.2:
tapable "^1.1.0"
util.promisify "1.0.0"
-htmlparser2@3.8.x:
- version "3.8.3"
- resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068"
- integrity sha1-mWwosZFRaovoZQGn15dX5ccMEGg=
- dependencies:
- domelementtype "1"
- domhandler "2.3"
- domutils "1.5"
- entities "1.0"
- readable-stream "1.1"
-
-"htmlparser2@>= 3.1.5 <4", htmlparser2@^3.9.1:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464"
- integrity sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ==
- dependencies:
- domelementtype "^1.3.0"
- domhandler "^2.3.0"
- domutils "^1.5.1"
- entities "^1.1.1"
- inherits "^2.0.1"
- readable-stream "^3.0.6"
-
-htmlparser2@~3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe"
- integrity sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=
- dependencies:
- domelementtype "1"
- domhandler "2.1"
- domutils "1.1"
- readable-stream "1.0"
-
-htmlparser2@~3.9.2:
- version "3.9.2"
- resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338"
- integrity sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=
+"htmlparser2@>= 3.1.5 <4", htmlparser2@^3.3.0, htmlparser2@^3.9.1:
+ version "3.10.1"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
+ integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
dependencies:
- domelementtype "^1.3.0"
+ domelementtype "^1.3.1"
domhandler "^2.3.0"
domutils "^1.5.1"
entities "^1.1.1"
inherits "^2.0.1"
- readable-stream "^2.0.2"
+ readable-stream "^3.1.1"
-http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
- version "1.6.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
- integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
+http-errors@1.7.2, http-errors@~1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
+ integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
dependencies:
depd "~1.1.2"
inherits "2.0.3"
- setprototypeof "1.1.0"
- statuses ">= 1.4.0 < 2"
+ setprototypeof "1.1.1"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.0"
-http-signature@~1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
- integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=
- dependencies:
- assert-plus "^0.2.0"
- jsprim "^1.2.2"
- sshpk "^1.7.0"
+"http-parser-js@>=0.4.0 <0.4.11":
+ version "0.4.10"
+ resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4"
+ integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=
http-signature@~1.2.0:
version "1.2.0"
@@ -5182,14 +6192,6 @@ https-browserify@^1.0.0:
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
-https-proxy-agent@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0"
- integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==
- dependencies:
- agent-base "^4.1.0"
- debug "^3.1.0"
-
i18n@^0.8.3:
version "0.8.3"
resolved "https://registry.yarnpkg.com/i18n/-/i18n-0.8.3.tgz#2d8cf1c24722602c2041d01ba6ae5eaa51388f0e"
@@ -5202,14 +6204,7 @@ i18n@^0.8.3:
mustache "*"
sprintf-js ">=1.0.3"
-iconv-lite@0.4.23:
- version "0.4.23"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
- integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==
- dependencies:
- safer-buffer ">= 2.1.2 < 3"
-
-iconv-lite@0.4.24, iconv-lite@^0.4.11, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
+iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.11, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@@ -5234,14 +6229,14 @@ ieee754@1.1.8:
integrity sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=
ieee754@^1.1.4:
- version "1.1.12"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
- integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
+ integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
-ienoopen@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/ienoopen/-/ienoopen-1.0.0.tgz#346a428f474aac8f50cf3784ea2d0f16f62bda6b"
- integrity sha1-NGpCj0dKrI9QzzeE6i0PFvYr2ms=
+ienoopen@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/ienoopen/-/ienoopen-1.1.0.tgz#411e5d530c982287dbdc3bb31e7a9c9e32630974"
+ integrity sha512-MFs36e/ca6ohEKtinTJ5VvAJ6oDRAYFdYXweUnGY9L9vcoqFOU4n2ZhmJ0C4z/cwGZ3YIQRSB3XZ1+ghZkY5NQ==
iferr@^0.1.5:
version "0.1.5"
@@ -5266,9 +6261,9 @@ ignore@^4.0.6:
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
ignore@^5.0.2:
- version "5.0.4"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.0.4.tgz#33168af4a21e99b00c5d41cbadb6a6cb49903a45"
- integrity sha512-WLsTMEhsQuXpCiG173+f3aymI43SXa+fB1rSfbzyP4GkPP+ZFVuO0/3sFUGNBtifisPeDcl/uD/Y2NxZ7xFq4g==
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz#e28e584d43ad7e92f96995019cc43b9e1ac49558"
+ integrity sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ==
ignorefs@^1.0.0:
version "1.2.0"
@@ -5344,7 +6339,7 @@ indexof@0.0.1:
resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
-inflection@^1.6.0:
+inflection@1.12.0:
version "1.12.0"
resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416"
integrity sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=
@@ -5357,11 +6352,6 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b"
- integrity sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=
-
inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
@@ -5372,31 +6362,31 @@ inherits@2.0.1:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
-ini@^1.3.4, ini@~1.3.0:
+ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
version "1.3.5"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
-inquirer@^6.1.0:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.1.tgz#9943fc4882161bdb0b0c9276769c75b32dbfcd52"
- integrity sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==
+inquirer@^6.2.2:
+ version "6.3.1"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7"
+ integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==
dependencies:
- ansi-escapes "^3.0.0"
- chalk "^2.0.0"
+ ansi-escapes "^3.2.0"
+ chalk "^2.4.2"
cli-cursor "^2.1.0"
cli-width "^2.0.0"
- external-editor "^3.0.0"
+ external-editor "^3.0.3"
figures "^2.0.0"
- lodash "^4.17.10"
+ lodash "^4.17.11"
mute-stream "0.0.7"
run-async "^2.2.0"
- rxjs "^6.1.0"
+ rxjs "^6.4.0"
string-width "^2.1.0"
- strip-ansi "^5.0.0"
+ strip-ansi "^5.1.0"
through "^2.3.6"
-interpret@^1.0.0, interpret@^1.1.0:
+interpret@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
@@ -5408,11 +6398,6 @@ invariant@^2.2.2:
dependencies:
loose-envify "^1.0.0"
-invert-kv@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
- integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
-
invert-kv@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
@@ -5423,10 +6408,10 @@ ionicons@~2.0.1:
resolved "https://registry.yarnpkg.com/ionicons/-/ionicons-2.0.1.tgz#ca398113293ea870244f538f0aabbd4b5b209a3e"
integrity sha1-yjmBEyk+qHAkT1OPCqu9S1sgmj4=
-ipaddr.js@1.8.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e"
- integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4=
+ipaddr.js@1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65"
+ integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==
is-absolute-url@^2.0.0:
version "2.1.0"
@@ -5456,14 +6441,19 @@ is-accessor-descriptor@^1.0.0:
kind-of "^6.0.0"
is-alphabetical@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.2.tgz#1fa6e49213cb7885b75d15862fb3f3d96c884f41"
- integrity sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.3.tgz#eb04cc47219a8895d8450ace4715abff2258a1f8"
+ integrity sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA==
+
+is-alphanumeric@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4"
+ integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=
is-alphanumerical@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz#1138e9ae5040158dc6ff76b820acd6b7a181fd40"
- integrity sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz#57ae21c374277b3defe0274c640a5704b8f6657c"
+ integrity sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA==
dependencies:
is-alphabetical "^1.0.0"
is-decimal "^1.0.0"
@@ -5485,17 +6475,20 @@ is-binary-path@^1.0.0:
dependencies:
binary-extensions "^1.0.0"
+is-bluebird@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-bluebird/-/is-bluebird-1.0.2.tgz#096439060f4aa411abee19143a84d6a55346d6e2"
+ integrity sha1-CWQ5Bg9KpBGr7hkUOoTWpVNG1uI=
+
is-buffer@^1.1.4, is-buffer@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-is-builtin-module@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
- integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
- dependencies:
- builtin-modules "^1.0.0"
+is-buffer@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725"
+ integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==
is-callable@^1.1.4:
version "1.1.4"
@@ -5534,9 +6527,9 @@ is-date-object@^1.0.1:
integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
is-decimal@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.2.tgz#894662d6a8709d307f3a276ca4339c8fa5dff0ff"
- integrity sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.3.tgz#381068759b9dc807d8c0dc0bfbae2b68e1da48b7"
+ integrity sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ==
is-descriptor@^0.1.0:
version "0.1.6"
@@ -5614,6 +6607,11 @@ is-fullwidth-code-point@^2.0.0:
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
is-glob@^2.0.0, is-glob@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
@@ -5629,16 +6627,21 @@ is-glob@^3.1.0:
is-extglob "^2.1.0"
is-glob@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
- integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
dependencies:
is-extglob "^2.1.1"
is-hexadecimal@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz#b6e710d7d07bb66b98cb8cece5c9b4921deeb835"
- integrity sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz#e8a426a69b6d31470d3a33a47bb825cda02506ee"
+ integrity sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA==
+
+is-negated-glob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2"
+ integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=
is-number@^2.1.0:
version "2.1.0"
@@ -5664,7 +6667,7 @@ is-obj@^1.0.0:
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
-is-plain-obj@^1.1.0:
+is-plain-obj@^1.0.0, is-plain-obj@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
@@ -5691,6 +6694,11 @@ is-promise@^2.1, is-promise@^2.1.0:
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
+is-property@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+ integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=
+
is-regex@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
@@ -5698,6 +6706,11 @@ is-regex@^1.0.4:
dependencies:
has "^1.0.1"
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+ integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
+
is-relative@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"
@@ -5710,6 +6723,13 @@ is-resolvable@^1.0.0:
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
+is-ssh@^1.3.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3"
+ integrity sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg==
+ dependencies:
+ protocols "^1.1.0"
+
is-stream@^1.0.1, is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
@@ -5741,20 +6761,20 @@ is-unc-path@^1.0.0:
dependencies:
unc-path-regex "^0.1.2"
-is-utf8@^0.2.0:
+is-utf8@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
-is-whitespace-character@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz#ede53b4c6f6fb3874533751ec9280d01928d03ed"
- integrity sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==
+is-valid-glob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa"
+ integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=
-is-windows@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c"
- integrity sha1-3hqm1j6indJIc3tp8f+LgALSEIw=
+is-whitespace-character@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz#b3ad9546d916d7d3ffa78204bca0c26b56257fac"
+ integrity sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ==
is-windows@^1.0.1, is-windows@^1.0.2:
version "1.0.2"
@@ -5762,9 +6782,14 @@ is-windows@^1.0.1, is-windows@^1.0.2:
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
is-word-character@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.2.tgz#46a5dac3f2a1840898b91e576cd40d493f3ae553"
- integrity sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.3.tgz#264d15541cbad0ba833d3992c34e6b40873b08aa"
+ integrity sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A==
+
+is-wsl@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
+ integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
isarray@0.0.1:
version "0.0.1"
@@ -5818,20 +6843,20 @@ jquery-ui@^1.12.1:
resolved "https://registry.yarnpkg.com/jquery-ui/-/jquery-ui-1.12.1.tgz#bcb4045c8dd0539c134bc1488cdd3e768a7a9e51"
integrity sha1-vLQEXI3QU5wTS8FIjN0+dop6nlE=
-jquery@^3.1.1:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca"
- integrity sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==
+jquery@^3.4.1:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2"
+ integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==
-js-beautify@^1.6.11:
- version "1.8.9"
- resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.8.9.tgz#08e3c05ead3ecfbd4f512c3895b1cda76c87d523"
- integrity sha512-MwPmLywK9RSX0SPsUJjN7i+RQY9w/yC17Lbrq9ViEefpLRgqAR2BgrMN2AbifkUuhDV8tRauLhLda/9+bE0YQA==
+js-beautify@^1.8.8:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.10.0.tgz#9753a13c858d96828658cd18ae3ca0e5783ea672"
+ integrity sha512-OMwf/tPDpE/BLlYKqZOhqWsd3/z2N3KOlyn1wsCRGFwViE8LOQTcDtathQvHvZc+q+zWmcNAbwKSC+iJoMaH2Q==
dependencies:
config-chain "^1.1.12"
- editorconfig "^0.15.2"
+ editorconfig "^0.15.3"
glob "^7.1.3"
- mkdirp "~0.5.0"
+ mkdirp "~0.5.1"
nopt "~4.0.1"
js-cookie@^2.1.3:
@@ -5839,13 +6864,20 @@ js-cookie@^2.1.3:
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.0.tgz#1b2c279a6eece380a12168b92485265b35b1effb"
integrity sha1-Gywnmm7s44ChIWi5JIUmWzWx7/s=
-js-sequence-diagrams@^1000000.0.6:
- version "1000000.0.6"
- resolved "https://registry.yarnpkg.com/js-sequence-diagrams/-/js-sequence-diagrams-1000000.0.6.tgz#e95db01420479c5ccbc12046af1da42fde649e5c"
- integrity sha1-6V2wFCBHnFzLwSBGrx2kL95knlw=
+js-levenshtein@^1.1.3:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
+ integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==
+
+"js-sequence-diagrams@git+https://github.com/codimd/js-sequence-diagrams.git":
+ version "2.0.1"
+ resolved "git+https://github.com/codimd/js-sequence-diagrams.git#b9afa038521e5dadf9b97624a3c7db21890be669"
dependencies:
- raphael "~2.1.x"
- underscore "~1.4.x"
+ lodash "4.17.x"
+ raphael "2.2.x"
+ snapsvg "0.4.x"
+ underscore "1.8.x"
+ webfontloader "~1.6.x"
js-string-escape@1.0.1:
version "1.0.1"
@@ -5862,31 +6894,14 @@ js-tokens@^3.0.2:
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
-js-url@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/js-url/-/js-url-2.3.0.tgz#e0c02b622e89710749399f440d49056e72f70078"
- integrity sha1-4MArYi6JcQdJOZ9EDUkFbnL3AHg=
- dependencies:
- grunt-contrib-jshint ""
- grunt-contrib-qunit ""
- grunt-contrib-uglify ""
-
-js-yaml@^3.12.0, js-yaml@^3.7.0, js-yaml@^3.9.0:
- version "3.12.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600"
- integrity sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==
+js-yaml@^3.10.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@~3.13.1:
+ version "3.13.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
+ integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
-js-yaml@~3.5.5:
- version "3.5.5"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.5.5.tgz#0377c38017cabc7322b0d1fbcd25a491641f2fbe"
- integrity sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=
- dependencies:
- argparse "^1.0.2"
- esprima "^2.6.0"
-
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
@@ -5941,25 +6956,16 @@ jsesc@^1.3.0:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
jsesc@~0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
-jshint@~2.9.6:
- version "2.9.7"
- resolved "https://registry.yarnpkg.com/jshint/-/jshint-2.9.7.tgz#038a3fa5c328fa3ab03ddfd85df88d3d87bedcbd"
- integrity sha512-Q8XN38hGsVQhdlM+4gd1Xl7OB1VieSuCJf+fEJjpo59JH99bVJhXRXAh26qQ15wfdd1VPMuDWNeSWoNl53T4YA==
- dependencies:
- cli "~1.0.0"
- console-browserify "1.1.x"
- exit "0.1.x"
- htmlparser2 "3.8.x"
- lodash "~4.17.10"
- minimatch "~3.0.2"
- shelljs "0.3.x"
- strip-json-comments "1.0.x"
-
json-edm-parser@0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/json-edm-parser/-/json-edm-parser-0.1.2.tgz#1e60b0fef1bc0af67bc0d146dfdde5486cd615b4"
@@ -5987,13 +6993,6 @@ json-stable-stringify-without-jsonify@^1.0.1:
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
-json-stable-stringify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
- integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=
- dependencies:
- jsonify "~0.0.0"
-
json-stream@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/json-stream/-/json-stream-1.0.0.tgz#1a3854e28d2bbeeab31cc7ddf683d2ddc5652708"
@@ -6016,6 +7015,13 @@ json5@^1.0.1:
dependencies:
minimist "^1.2.0"
+json5@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850"
+ integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==
+ dependencies:
+ minimist "^1.2.0"
+
jsonfile@^2.1.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
@@ -6030,11 +7036,6 @@ jsonfile@^4.0.0:
optionalDependencies:
graceful-fs "^4.1.6"
-jsonify@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
- integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
-
jsonlint@^1.6.2:
version "1.6.3"
resolved "https://registry.yarnpkg.com/jsonlint/-/jsonlint-1.6.3.tgz#cb5e31efc0b78291d0d862fbef05900adf212988"
@@ -6043,6 +7044,11 @@ jsonlint@^1.6.2:
JSV "^4.0.x"
nomnom "^1.5.x"
+jsonparse@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
+ integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=
+
jsonparse@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.2.0.tgz#5c0c5685107160e72fe7489bddea0b44c2bc67bd"
@@ -6126,13 +7132,6 @@ lazystream@^1.0.0:
dependencies:
readable-stream "^2.0.5"
-lcid@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
- integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
- dependencies:
- invert-kv "^1.0.0"
-
lcid@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
@@ -6147,7 +7146,7 @@ ldap-filter@0.2.2:
dependencies:
assert-plus "0.1.5"
-ldapauth-fork@^4.1.0:
+ldapauth-fork@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/ldapauth-fork/-/ldapauth-fork-4.2.0.tgz#3d2f809f973deb127a35eb523135661b7013e9d9"
integrity sha512-DFYhOO9UPX/fIUnwAjJ4zCq2osR3pyS9TK24oBRLHj7+iw9OAbckHLcdDkgI//IajUEsF6Ngz0uXod6A88L2HA==
@@ -6175,6 +7174,13 @@ ldapjs@^1.0.2:
optionalDependencies:
dtrace-provider "~0.8"
+lead@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42"
+ integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=
+ dependencies:
+ flush-write-stream "^1.0.2"
+
left-pad@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e"
@@ -6211,25 +7217,6 @@ levn@^0.3.0, levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
-liftoff@^2.1.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec"
- integrity sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=
- dependencies:
- extend "^3.0.0"
- findup-sync "^2.0.0"
- fined "^1.0.1"
- flagged-respawn "^1.0.0"
- is-plain-object "^2.0.4"
- object.map "^1.0.0"
- rechoir "^0.6.2"
- resolve "^1.1.7"
-
-lightercollective@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/lightercollective/-/lightercollective-0.1.0.tgz#70df102c530dcb8d0ccabfe6175a8d00d5f61300"
- integrity sha512-J9tg5uraYoQKaWbmrzDDexbG6hHnMcWS1qLYgJSWE+mpA3U5OCSeMUhb+K55otgZJ34oFdR0ECvdIb3xuO5JOQ==
-
linkify-it@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.1.0.tgz#c4caf38a6cd7ac2212ef3c7d2bde30a91561f9db"
@@ -6244,6 +7231,11 @@ list.js@^1.5.0:
dependencies:
string-natural-compare "^2.0.2"
+livereload-js@^2.3.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz#447c31cf1ea9ab52fc20db615c5ddf678f78009c"
+ integrity sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==
+
load-json-file@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
@@ -6254,6 +7246,16 @@ load-json-file@^2.0.0:
pify "^2.0.0"
strip-bom "^3.0.0"
+load-json-file@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
+ integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^4.0.0"
+ pify "^3.0.0"
+ strip-bom "^3.0.0"
+
loader-runner@^2.3.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
@@ -6269,7 +7271,7 @@ loader-utils@^0.2.7:
json5 "^0.5.0"
object-assign "^4.0.1"
-loader-utils@^1.0.2, loader-utils@^1.1.0:
+loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
@@ -6294,51 +7296,6 @@ locate-path@^3.0.0:
p-locate "^3.0.0"
path-exists "^3.0.0"
-lodash._basecopy@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
- integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=
-
-lodash._basetostring@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5"
- integrity sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=
-
-lodash._basevalues@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7"
- integrity sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=
-
-lodash._getnative@^3.0.0:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
- integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=
-
-lodash._isiterateecall@^3.0.0:
- version "3.0.9"
- resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
- integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=
-
-lodash._reescape@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a"
- integrity sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=
-
-lodash._reevaluate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed"
- integrity sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=
-
-lodash._reinterpolate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
- integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
-
-lodash._root@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
- integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=
-
lodash.assignin@^4.0.9:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2"
@@ -6349,23 +7306,11 @@ lodash.bind@^4.1.4:
resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35"
integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=
-lodash.debounce@^4.0.8:
- version "4.0.8"
- resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
- integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
-
lodash.defaults@^4.0.1:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=
-lodash.escape@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698"
- integrity sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=
- dependencies:
- lodash._root "^3.0.0"
-
lodash.filter@^4.4.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace"
@@ -6381,25 +7326,6 @@ lodash.foreach@^4.3.0:
resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53"
integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=
-lodash.isarguments@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
- integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=
-
-lodash.isarray@^3.0.0:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
- integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=
-
-lodash.keys@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
- integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=
- dependencies:
- lodash._getnative "^3.0.0"
- lodash.isarguments "^3.0.0"
- lodash.isarray "^3.0.0"
-
lodash.map@^4.4.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3"
@@ -6430,11 +7356,6 @@ lodash.reject@^4.4.0:
resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415"
integrity sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=
-lodash.restparam@^3.0.0:
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
- integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=
-
lodash.some@^4.4.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
@@ -6445,59 +7366,41 @@ lodash.sortby@^4.7.0:
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
-lodash.template@^3.0.0:
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f"
- integrity sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=
- dependencies:
- lodash._basecopy "^3.0.0"
- lodash._basetostring "^3.0.0"
- lodash._basevalues "^3.0.0"
- lodash._isiterateecall "^3.0.0"
- lodash._reinterpolate "^3.0.0"
- lodash.escape "^3.0.0"
- lodash.keys "^3.0.0"
- lodash.restparam "^3.0.0"
- lodash.templatesettings "^3.0.0"
-
-lodash.templatesettings@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5"
- integrity sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=
- dependencies:
- lodash._reinterpolate "^3.0.0"
- lodash.escape "^3.0.0"
-
lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
-lodash@^3.6.0:
- version "3.10.1"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
- integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=
-
-lodash@^4.13.1, lodash@^4.14.2, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.8.0, lodash@~4.17.10:
+lodash@4.17.x, lodash@^4.14.2, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.8.0:
version "4.17.11"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
-lodash@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551"
- integrity sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=
+lodash@^4.17.10, lodash@^4.17.13:
+ version "4.17.15"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
+ integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
-logform@^1.9.1:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/logform/-/logform-1.10.0.tgz#c9d5598714c92b546e23f4e78147c40f1e02012e"
- integrity sha512-em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg==
+logform@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/logform/-/logform-2.1.2.tgz#957155ebeb67a13164069825ce67ddb5bb2dd360"
+ integrity sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==
dependencies:
colors "^1.2.1"
fast-safe-stringify "^2.0.4"
fecha "^2.3.3"
ms "^2.1.1"
- triple-beam "^1.2.0"
+ triple-beam "^1.3.0"
+
+long@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
+ integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
+
+longest-streak@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.3.tgz#3de7a3f47ee18e9074ded8575b5c091f5d0a4105"
+ integrity sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw==
longest@^1.0.1:
version "1.0.1"
@@ -6516,12 +7419,7 @@ lower-case@^1.1.1:
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
-lru-cache@2:
- version "2.7.3"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952"
- integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=
-
-lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.3:
+lru-cache@^4.1.1, lru-cache@^4.1.3, lru-cache@^4.1.5:
version "4.1.5"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
@@ -6543,16 +7441,24 @@ lru-queue@0.1:
dependencies:
es5-ext "~0.10.2"
+lutim@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/lutim/-/lutim-1.0.2.tgz#0b1e5a83c0c8d45900beb4eaf551e34f34f8a3e8"
+ integrity sha512-eIeHBtFIxyef4mW+zgxoUyW59NN/lCRGoK7pDfnmY97asflEwA04met3SqFPEgPgeWgm4iRAMAJWZ3MDQ39ucw==
+ dependencies:
+ q "^1.5.1"
+ request "^2.88.0"
+
"lz-string@git+https://github.com/hackmdio/lz-string.git":
version "1.4.4"
- resolved "git+https://github.com/hackmdio/lz-string.git#6edfccb79cd8c210f03fd3bf18e41ca144fbeefb"
+ resolved "git+https://github.com/hackmdio/lz-string.git#efd1f64676264d6d8871b01f4f375fc6ef4f9022"
-magic-string@^0.25.1:
- version "0.25.1"
- resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.1.tgz#b1c248b399cd7485da0fe7385c2fc7011843266e"
- integrity sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==
+magic-string@^0.25.2:
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.2.tgz#139c3a729515ec55e96e69e82a11fe890a293ad9"
+ integrity sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==
dependencies:
- sourcemap-codec "^1.4.1"
+ sourcemap-codec "^1.4.4"
make-dir@^1.0.0:
version "1.3.0"
@@ -6561,12 +7467,13 @@ make-dir@^1.0.0:
dependencies:
pify "^3.0.0"
-make-iterator@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6"
- integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==
+make-dir@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
dependencies:
- kind-of "^6.0.2"
+ pify "^4.0.1"
+ semver "^5.6.0"
make-plural@^3.0.3, make-plural@~3.0.3:
version "3.0.6"
@@ -6575,6 +7482,11 @@ make-plural@^3.0.3, make-plural@~3.0.3:
optionalDependencies:
minimist "^1.2.0"
+mamacro@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4"
+ integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==
+
map-age-cleaner@^0.1.1:
version "0.1.3"
resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
@@ -6587,6 +7499,11 @@ map-cache@^0.2.0, map-cache@^0.2.2:
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
+map-stream@0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz#8a1f07896d82b10926bd3744a2420009f88974a8"
+ integrity sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=
+
map-visit@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
@@ -6595,9 +7512,9 @@ map-visit@^1.0.0:
object-visit "^1.0.0"
markdown-escapes@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.2.tgz#e639cbde7b99c841c0bacc8a07982873b46d2122"
- integrity sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.3.tgz#6155e10416efaafab665d466ce598216375195f5"
+ integrity sha512-XUi5HJhhV5R74k8/0H2oCbCiYf/u4cO/rX8tnGkRvrqhsr5BRNU6Mg0yt/8UIx1iIS8220BNJsDb7XnILhLepw==
markdown-it-abbr@^1.0.4:
version "1.0.4"
@@ -6685,10 +7602,15 @@ markdown-pdf@^9.0.0:
through2 "^2.0.0"
tmp "0.0.33"
-marked@~0.3.6:
- version "0.3.19"
- resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790"
- integrity sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==
+markdown-table@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60"
+ integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==
+
+marked@~0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e"
+ integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==
math-interval-parser@^1.1.0:
version "1.1.0"
@@ -6714,16 +7636,6 @@ mattermost@^3.4.0:
dependencies:
superagent "1.8.3"
-maxmin@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-2.1.0.tgz#4d3b220903d95eee7eb7ac7fa864e72dc09a3166"
- integrity sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=
- dependencies:
- chalk "^1.0.0"
- figures "^1.0.1"
- gzip-size "^3.0.0"
- pretty-bytes "^3.0.0"
-
md5.js@1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d"
@@ -6741,6 +7653,59 @@ md5.js@^1.3.4:
inherits "^2.0.1"
safe-buffer "^5.1.2"
+mdast-util-compact@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.3.tgz#98a25cc8a7865761a41477b3a87d1dcef0b1e79d"
+ integrity sha512-nRiU5GpNy62rZppDKbLwhhtw5DXoFMqw9UNZFmlPsNaQCZ//WLjGKUwWMdJrUH+Se7UvtO2gXtAMe0g/N+eI5w==
+ dependencies:
+ unist-util-visit "^1.1.0"
+
+mdast-util-definitions@^1.2.0:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-1.2.4.tgz#2b54ad4eecaff9d9fcb6bf6f9f6b68b232d77ca7"
+ integrity sha512-HfUArPog1j4Z78Xlzy9Q4aHLnrF/7fb57cooTHypyGoe2XFNbcx/kWZDoOz+ra8CkUzvg3+VHV434yqEd1DRmA==
+ dependencies:
+ unist-util-visit "^1.0.0"
+
+mdast-util-inject@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-inject/-/mdast-util-inject-1.1.0.tgz#db06b8b585be959a2dcd2f87f472ba9b756f3675"
+ integrity sha1-2wa4tYW+lZotzS+H9HK6m3VvNnU=
+ dependencies:
+ mdast-util-to-string "^1.0.0"
+
+mdast-util-to-hast@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-3.0.4.tgz#132001b266031192348d3366a6b011f28e54dc40"
+ integrity sha512-/eIbly2YmyVgpJNo+bFLLMCI1XgolO/Ffowhf+pHDq3X4/V6FntC9sGQCDLM147eTS+uSXv5dRzJyFn+o0tazA==
+ dependencies:
+ collapse-white-space "^1.0.0"
+ detab "^2.0.0"
+ mdast-util-definitions "^1.2.0"
+ mdurl "^1.0.1"
+ trim "0.0.1"
+ trim-lines "^1.0.0"
+ unist-builder "^1.0.1"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.0"
+ xtend "^4.0.1"
+
+mdast-util-to-string@^1.0.0, mdast-util-to-string@^1.0.5:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.0.6.tgz#7d85421021343b33de1552fc71cb8e5b4ae7536d"
+ integrity sha512-868pp48gUPmZIhfKrLbaDneuzGiw3OTDjHc5M1kAepR2CWBJ+HpEsm252K4aXdiP5coVZaJPOqGtVU6Po8xnXg==
+
+mdast-util-toc@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-toc/-/mdast-util-toc-3.1.0.tgz#395eeb877f067f9d2165d990d77c7eea6f740934"
+ integrity sha512-Za0hqL1PqWrvxGtA/3NH9D5nhGAUS9grMM4obEAz5+zsk1RIw/vWUchkaoDLNdrwk05A0CSC5eEXng36/1qE5w==
+ dependencies:
+ github-slugger "^1.2.1"
+ mdast-util-to-string "^1.0.5"
+ unist-util-is "^2.1.2"
+ unist-util-visit "^1.1.0"
+
mdn-data@~1.1.0:
version "1.1.4"
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01"
@@ -6756,23 +7721,16 @@ media-typer@0.3.0:
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
-mem@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
- integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=
- dependencies:
- mimic-fn "^1.0.0"
-
mem@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf"
- integrity sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
+ integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==
dependencies:
map-age-cleaner "^0.1.1"
- mimic-fn "^1.0.0"
- p-is-promise "^1.1.0"
+ mimic-fn "^2.0.0"
+ p-is-promise "^2.0.0"
-memoizee@^0.4.3:
+memoizee@^0.4.14:
version "0.4.14"
resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57"
integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==
@@ -6799,17 +7757,23 @@ merge-descriptors@1.0.1:
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
-mermaid@~7.1.0:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-7.1.2.tgz#6265728156c2e0891e004cba60a44022174487ad"
- integrity sha512-bDLu3fQuf3/R0fNkNzB0GTaF7+6SxnZpfTs9DVQF1ougsuP23MBzvEIGfL0ML8zeyg7+J2D+0AaoLVhskW5ulw==
+mermaid@~8.2.3:
+ version "8.2.3"
+ resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-8.2.3.tgz#609bad45bedc3ee1a935161c11c3c22689cfecd9"
+ integrity sha512-G2p9BAAEeTtogPs4YXM8KyX+TsZULlgk0tGvmBPfBZ5j3YCPxgAxG9ZzleiYNItF7M1hGkE485BDLN8DbfR+/Q==
dependencies:
- d3 "3.5.17"
- dagre-d3-renderer "^0.4.25"
- dagre-layout "^0.8.0"
- he "^1.1.1"
- lodash "^4.17.4"
- moment "^2.20.1"
+ "@braintree/sanitize-url" "^3.1.0"
+ d3 "^5.7.0"
+ dagre-d3-renderer "^0.5.8"
+ dagre-layout "^0.8.8"
+ documentation "^12.0.1"
+ graphlibrary "^2.2.0"
+ gulp-print "^5.0.2"
+ he "^1.2.0"
+ lodash "^4.17.11"
+ minify "^4.1.1"
+ moment-mini "^2.22.1"
+ scope-css "^1.2.1"
messageformat@^0.3.1:
version "0.3.1"
@@ -6822,13 +7786,12 @@ messageformat@^0.3.1:
nopt "~3.0.6"
watchr "~2.4.13"
-meta-marked@^0.4.2:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/meta-marked/-/meta-marked-0.4.2.tgz#4a1fae344f53d7040aacabb723e2f432a37455f8"
- integrity sha1-Sh+uNE9T1wQKrKu3I+L0MqN0Vfg=
+"meta-marked@git+https://github.com/codimd/meta-marked#semver:^0.4.5":
+ version "0.4.5"
+ resolved "git+https://github.com/codimd/meta-marked#30852d0efa633418865df179f5956cd3df0fd0b3"
dependencies:
- js-yaml "~3.5.5"
- marked "~0.3.6"
+ js-yaml "~3.13.1"
+ marked "~0.7.0"
method-override@^2.3.7:
version "2.3.10"
@@ -6845,7 +7808,7 @@ methods@~1.1.1, methods@~1.1.2:
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
-micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7:
+micromatch@^2.1.5:
version "2.3.11"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=
@@ -6864,7 +7827,7 @@ micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7:
parse-glob "^3.0.4"
regex-cache "^0.4.2"
-micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8:
+micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.5, micromatch@^3.1.8:
version "3.1.10"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
@@ -6891,43 +7854,48 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0"
brorand "^1.0.1"
-"mime-db@>= 1.36.0 < 2", mime-db@~1.37.0:
- version "1.37.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8"
- integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==
+mime-db@1.40.0, "mime-db@>= 1.40.0 < 2":
+ version "1.40.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
+ integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
-mime-types@^2.1.12, mime-types@^2.1.14, mime-types@^2.1.3, mime-types@~2.1.18, mime-types@~2.1.19, mime-types@~2.1.7:
- version "2.1.21"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96"
- integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==
+mime-types@^2.1.12, mime-types@^2.1.14, mime-types@^2.1.3, mime-types@~2.1.19, mime-types@~2.1.24:
+ version "2.1.24"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
+ integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
dependencies:
- mime-db "~1.37.0"
+ mime-db "1.40.0"
mime@1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
integrity sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=
-mime@1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
- integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==
-
-mime@^1.2.11, mime@^1.2.9:
+mime@1.6.0, mime@^1.2.11, mime@^1.2.9:
version "1.6.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
mime@^2.0.3:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6"
- integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.3.tgz#229687331e86f68924e6cb59e1cdd937f18275fe"
+ integrity sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==
+
+mime@^2.2.0:
+ version "2.4.4"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5"
+ integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==
mimic-fn@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
+mimic-fn@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
mini-css-extract-plugin@^0.4.1:
version "0.4.5"
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.5.tgz#c99e9e78d54f3fa775633aee5933aeaa4e80719a"
@@ -6937,6 +7905,19 @@ mini-css-extract-plugin@^0.4.1:
schema-utils "^1.0.0"
webpack-sources "^1.1.0"
+minify@^4.1.1:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/minify/-/minify-4.1.3.tgz#58467922d14303f55a3a28fa79641371955b8fbd"
+ integrity sha512-ykuscavxivSmVpcCzsXmsVTukWYLUUtPhHj0w2ILvHDGqC+hsuTCihBn9+PJBd58JNvWTNg9132J9nrrI2anzA==
+ dependencies:
+ clean-css "^4.1.6"
+ css-b64-images "~0.2.5"
+ debug "^4.1.0"
+ html-minifier "^4.0.0"
+ terser "^4.0.0"
+ try-catch "^2.0.0"
+ try-to-catch "^1.0.2"
+
minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
@@ -6947,34 +7928,19 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4, minimatch@~3.0.2:
+"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
dependencies:
brace-expansion "^1.1.7"
-minimatch@^2.0.1:
- version "2.0.10"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7"
- integrity sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=
- dependencies:
- brace-expansion "^1.0.0"
-
-minimatch@~0.2.11:
- version "0.2.14"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a"
- integrity sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=
- dependencies:
- lru-cache "2"
- sigmund "~1.0.0"
-
minimist@0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
-minimist@^1.1.0, minimist@^1.2.0, minimist@~1.2.0:
+minimist@^1.1.0, minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
@@ -7091,14 +8057,39 @@ mock-require@^3.0.3:
get-caller-file "^1.0.2"
normalize-path "^2.1.1"
-moment-timezone@^0.5.4:
- version "0.5.23"
- resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.23.tgz#7cbb00db2c14c71b19303cb47b0fb0a6d8651463"
- integrity sha512-WHFH85DkCfiNMDX5D3X7hpNH3/PUhjTGcD0U1SgfBGZxJ3qUmJh5FdvaFjcClxOvB3rzdfj4oRffbI38jEnC1w==
+module-deps-sortable@5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/module-deps-sortable/-/module-deps-sortable-5.0.0.tgz#99db5bb08f7eab55e4c31f6b7c722c6a2144ba74"
+ integrity sha512-bnGGeghQmz/t/6771/KC4FmxpVm126iR6AAzzq4N6hVZQVl4+ZZBv+VF3PJmDyxXtVtgcgTSSP7NL+jq1QAHrg==
+ dependencies:
+ JSONStream "^1.0.3"
+ browser-resolve "^1.7.0"
+ cached-path-relative "^1.0.0"
+ concat-stream "~1.5.0"
+ defined "^1.0.0"
+ detective "^4.0.0"
+ duplexer2 "^0.1.2"
+ inherits "^2.0.1"
+ readable-stream "^2.0.2"
+ resolve "^1.1.3"
+ stream-combiner2 "^1.1.1"
+ subarg "^1.0.0"
+ through2 "^2.0.0"
+ xtend "^4.0.0"
+
+moment-mini@^2.22.1:
+ version "2.22.1"
+ resolved "https://registry.yarnpkg.com/moment-mini/-/moment-mini-2.22.1.tgz#bc32d73e43a4505070be6b53494b17623183420d"
+ integrity sha512-OUCkHOz7ehtNMYuZjNciXUfwTuz8vmF1MTbAy59ebf+ZBYZO5/tZKuChVWCX+uDo+4idJBpGltNfV8st+HwsGw==
+
+moment-timezone@^0.5.21:
+ version "0.5.25"
+ resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.25.tgz#a11bfa2f74e088327f2cd4c08b3e7bdf55957810"
+ integrity sha512-DgEaTyN/z0HFaVcVbSyVCUU6HeFdnNC3vE4c9cgu2dgMTvjBUBdBzWfasTBmAW45u5OIMeCJtU8yNjM22DHucw==
dependencies:
moment ">= 2.9.0"
-"moment@>= 2.9.0", moment@^2.10.6, moment@^2.13.0, moment@^2.16.0, moment@^2.17.1, moment@^2.20.1:
+"moment@>= 2.9.0", moment@^2.10.6, moment@^2.17.1, moment@^2.24.0:
version "2.24.0"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b"
integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==
@@ -7131,18 +8122,11 @@ ms@2.0.0:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-ms@^2.1.1:
+ms@2.1.1, ms@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
-multipipe@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b"
- integrity sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=
- dependencies:
- duplexer2 "0.0.2"
-
mustache@*:
version "3.0.1"
resolved "https://registry.yarnpkg.com/mustache/-/mustache-3.0.1.tgz#873855f23aa8a95b150fb96d9836edbc5a1d248a"
@@ -7162,25 +8146,31 @@ mv@~2:
ncp "~2.0.0"
rimraf "~2.4.0"
-mysql@^2.12.0:
- version "2.16.0"
- resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.16.0.tgz#b23b22ab5de44fc2d5d32bd4f5af6653fc45e2ba"
- integrity sha512-dPbN2LHonQp7D5ja5DJXNbCLe/HRdu+f3v61aguzNRQIrmZLOeRoymBYyeThrR6ug+FqzDL95Gc9maqZUJS+Gw==
+mysql2@^1.6.5:
+ version "1.6.5"
+ resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-1.6.5.tgz#6695304fa2ce793dda5c98e8bbec65cbd2e6cb9d"
+ integrity sha512-zedaOOyb3msuuZcJJnxIX/EGOpmljDG7B+UevRH5lqcv+yhy9eCwkArBz8/AO+/rlY3/oCsOdG8R5oD6k0hNfg==
dependencies:
- bignumber.js "4.1.0"
- readable-stream "2.3.6"
- safe-buffer "5.1.2"
- sqlstring "2.3.1"
+ denque "^1.4.0"
+ generate-function "^2.3.1"
+ iconv-lite "^0.4.24"
+ long "^4.0.0"
+ lru-cache "^4.1.3"
+ named-placeholders "^1.1.2"
+ seq-queue "^0.0.5"
+ sqlstring "^2.3.1"
-nan@^2.10.0, nan@^2.9.2:
- version "2.12.1"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552"
- integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==
+named-placeholders@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.2.tgz#ceb1fbff50b6b33492b5cf214ccf5e39cef3d0e8"
+ integrity sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==
+ dependencies:
+ lru-cache "^4.1.3"
-nan@~2.10.0:
- version "2.10.0"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
- integrity sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==
+nan@^2.10.0, nan@^2.12.1:
+ version "2.14.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
+ integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
nanomatch@^1.2.9:
version "1.2.13"
@@ -7199,11 +8189,6 @@ nanomatch@^1.2.9:
snapdragon "^0.8.1"
to-regex "^3.0.1"
-natives@^1.1.0:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.6.tgz#a603b4a498ab77173612b9ea1acdec4d980f00bb"
- integrity sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==
-
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -7215,25 +8200,25 @@ ncp@~2.0.0:
integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=
needle@^2.2.1:
- version "2.2.4"
- resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e"
- integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
+ integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
dependencies:
- debug "^2.1.2"
+ debug "^3.2.6"
iconv-lite "^0.4.4"
sax "^1.2.4"
-negotiator@0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
- integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=
+negotiator@0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
+ integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
-neo-async@^2.5.0:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835"
- integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==
+neo-async@^2.5.0, neo-async@^2.6.0:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
+ integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
-next-tick@1:
+next-tick@1, next-tick@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
@@ -7250,10 +8235,10 @@ no-case@^2.2.0:
dependencies:
lower-case "^1.1.1"
-nocache@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/nocache/-/nocache-2.0.0.tgz#202b48021a0c4cbde2df80de15a17443c8b43980"
- integrity sha1-ICtIAhoMTL3i34DeFaF0Q8i0OYA=
+nocache@2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/nocache/-/nocache-2.1.0.tgz#120c9ffec43b5729b1d5de88cd71aa75a0ba491f"
+ integrity sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==
node-forge@^0.7.0:
version "0.7.6"
@@ -7294,10 +8279,10 @@ node-libs-browser@^2.0.0:
util "^0.11.0"
vm-browserify "0.0.4"
-node-pre-gyp@^0.10.0:
- version "0.10.3"
- resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
- integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==
+node-pre-gyp@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054"
+ integrity sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==
dependencies:
detect-libc "^1.0.2"
mkdirp "^0.5.1"
@@ -7310,10 +8295,10 @@ node-pre-gyp@^0.10.0:
semver "^5.3.0"
tar "^4"
-node-pre-gyp@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054"
- integrity sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==
+node-pre-gyp@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
+ integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
dependencies:
detect-libc "^1.0.2"
mkdirp "^0.5.1"
@@ -7326,10 +8311,17 @@ node-pre-gyp@^0.11.0:
semver "^5.3.0"
tar "^4"
-node-releases@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.3.tgz#aad9ce0dcb98129c753f772c0aa01360fb90fbd2"
- integrity sha512-6VrvH7z6jqqNFY200kdB6HdzkgM96Oaj9v3dqGfgp6mF+cHmU4wyQKZ2/WPDRVoR0Jz9KqbamaBN0ZhdUaysUQ==
+node-releases@^1.1.21:
+ version "1.1.21"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.21.tgz#46c86f9adaceae4d63c75d3c2f2e6eee618e55f3"
+ integrity sha512-TwnURTCjc8a+ElJUjmDqU6+12jhli1Q61xOQmdZ7ECZVBZuQpN/1UnembiIHDM1wCcfLvh5wrWXUF5H6ufX64Q==
+ dependencies:
+ semver "^5.3.0"
+
+node-releases@^1.1.25:
+ version "1.1.26"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.26.tgz#f30563edc5c7dc20cf524cc8652ffa7be0762937"
+ integrity sha512-fZPsuhhUHMTlfkhDLGtfY80DSJTjOcx+qD1j5pqPkuhUHVS7xHZIg9EE4DHK8O3f0zTxXHX5VIkDG8pu98/wfQ==
dependencies:
semver "^5.3.0"
@@ -7366,12 +8358,12 @@ nopt@~3.0.6:
abbrev "1"
normalize-package-data@^2.3.2:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
- integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
dependencies:
hosted-git-info "^2.1.4"
- is-builtin-module "^1.0.0"
+ resolve "^1.10.0"
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
@@ -7382,20 +8374,42 @@ normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1:
dependencies:
remove-trailing-separator "^1.0.1"
+normalize-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-url@^1.9.1:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
+ integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=
+ dependencies:
+ object-assign "^4.0.1"
+ prepend-http "^1.0.0"
+ query-string "^4.1.0"
+ sort-keys "^1.0.0"
+
normalize-url@^3.0.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
+now-and-later@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c"
+ integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==
+ dependencies:
+ once "^1.3.2"
+
npm-bundled@^1.0.1:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979"
- integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
+ integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==
npm-packlist@^1.1.6:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.2.0.tgz#55a60e793e272f00862c7089274439a4cc31fc7f"
- integrity sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc"
+ integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==
dependencies:
ignore-walk "^3.0.1"
npm-bundled "^1.0.1"
@@ -7435,14 +8449,9 @@ nwmatcher@~1.3.1:
integrity sha1-i6tIb/f6Pf0IZla76LFxFtNpLSo=
nwsapi@^2.0.7:
- version "2.0.9"
- resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016"
- integrity sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==
-
-oauth-sign@~0.8.1:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
- integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f"
+ integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==
oauth-sign@~0.9.0:
version "0.9.0"
@@ -7459,12 +8468,7 @@ object-assign@4.1.0:
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A=
-object-assign@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
- integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=
-
-object-assign@^4.0.1, object-assign@^4.1.0:
+object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
@@ -7483,10 +8487,10 @@ object-copy@^0.1.0:
define-property "^0.2.5"
kind-of "^3.0.3"
-object-keys@^1.0.12:
- version "1.0.12"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2"
- integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==
+object-keys@^1.0.11, object-keys@^1.0.12:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
object-visit@^1.0.0:
version "1.0.1"
@@ -7495,15 +8499,15 @@ object-visit@^1.0.0:
dependencies:
isobject "^3.0.0"
-object.defaults@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf"
- integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=
+object.assign@^4.0.4, object.assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
+ integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
dependencies:
- array-each "^1.0.1"
- array-slice "^1.0.0"
- for-own "^1.0.0"
- isobject "^3.0.0"
+ define-properties "^1.1.2"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ object-keys "^1.0.11"
object.getownpropertydescriptors@^2.0.3:
version "2.0.3"
@@ -7513,14 +8517,6 @@ object.getownpropertydescriptors@^2.0.3:
define-properties "^1.1.2"
es-abstract "^1.5.1"
-object.map@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37"
- integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=
- dependencies:
- for-own "^1.0.0"
- make-iterator "^1.0.0"
-
object.omit@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
@@ -7529,14 +8525,14 @@ object.omit@^2.0.0:
for-own "^0.1.4"
is-extendable "^0.1.1"
-object.pick@^1.2.0, object.pick@^1.3.0:
+object.pick@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
dependencies:
isobject "^3.0.1"
-object.values@^1.0.4:
+object.values@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
@@ -7553,25 +8549,18 @@ on-finished@~2.3.0:
dependencies:
ee-first "1.1.1"
-on-headers@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
- integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=
+on-headers@~1.0.1, on-headers@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
+ integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
-once@^1.3.0, once@^1.3.1, once@^1.4.0:
+once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
dependencies:
wrappy "1"
-once@~1.3.0:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
- integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=
- dependencies:
- wrappy "1"
-
one-time@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/one-time/-/one-time-0.0.4.tgz#f8cdf77884826fe4dff93e3a9cc37b1e4480742e"
@@ -7619,19 +8608,12 @@ optionator@^0.8.1, optionator@^0.8.2:
type-check "~0.3.2"
wordwrap "~1.0.0"
-orchestrator@^0.3.0:
- version "0.3.8"
- resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e"
- integrity sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=
+ordered-read-streams@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e"
+ integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=
dependencies:
- end-of-stream "~0.1.5"
- sequencify "~0.0.7"
- stream-consume "~0.1.0"
-
-ordered-read-streams@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126"
- integrity sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=
+ readable-stream "^2.0.1"
os-browserify@^0.3.0:
version "0.3.0"
@@ -7643,16 +8625,7 @@ os-homedir@^1.0.0, os-homedir@^1.0.1:
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
-os-locale@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
- integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==
- dependencies:
- execa "^0.7.0"
- lcid "^1.0.0"
- mem "^1.1.0"
-
-os-locale@^3.0.0:
+os-locale@^3.0.0, os-locale@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
@@ -7688,22 +8661,15 @@ p-defer@^1.0.0:
resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
-p-each-series@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71"
- integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=
- dependencies:
- p-reduce "^1.0.0"
-
p-finally@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
-p-is-promise@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e"
- integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=
+p-is-promise@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e"
+ integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
p-limit@^1.0.0, p-limit@^1.1.0:
version "1.3.0"
@@ -7713,9 +8679,9 @@ p-limit@^1.0.0, p-limit@^1.1.0:
p-try "^1.0.0"
p-limit@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.1.0.tgz#1d5a0d20fb12707c758a655f6bbc4386b5930d68"
- integrity sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2"
+ integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==
dependencies:
p-try "^2.0.0"
@@ -7733,20 +8699,15 @@ p-locate@^3.0.0:
dependencies:
p-limit "^2.0.0"
-p-reduce@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa"
- integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=
-
p-try@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
p-try@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1"
- integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
packet-reader@0.3.1:
version "0.3.1"
@@ -7754,9 +8715,9 @@ packet-reader@0.3.1:
integrity sha1-zWLmCvjX/qinBexP+ZCHHEaHHyc=
pako@~1.0.5:
- version "1.0.8"
- resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4"
- integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA==
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732"
+ integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==
parallel-transform@^1.1.0:
version "1.1.0"
@@ -7767,7 +8728,7 @@ parallel-transform@^1.1.0:
inherits "^2.0.3"
readable-stream "^2.1.5"
-param-case@2.1.x:
+param-case@2.1.x, param-case@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc=
@@ -7775,16 +8736,16 @@ param-case@2.1.x:
no-case "^2.2.0"
parent-module@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.0.tgz#df250bdc5391f4a085fb589dad761f5ad6b865b5"
- integrity sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
dependencies:
callsites "^3.0.0"
parse-asn1@^5.0.0:
- version "5.1.3"
- resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.3.tgz#1600c6cc0727365d68b97f3aa78939e735a75204"
- integrity sha512-VrPoetlz7B/FqjBLD2f5wBVZvsZVLnRUrxVLfRYhGXCODa/NWE4p3Wp+6+aV3ZPL3KM7/OZmxDIwwijD7yuucg==
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc"
+ integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==
dependencies:
asn1.js "^4.0.0"
browserify-aes "^1.0.0"
@@ -7793,10 +8754,10 @@ parse-asn1@^5.0.0:
pbkdf2 "^3.0.3"
safe-buffer "^5.1.1"
-parse-entities@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.0.tgz#9deac087661b2e36814153cb78d7e54a4c5fd6f4"
- integrity sha512-XXtDdOPLSB0sHecbEapQi6/58U/ODj/KWfIXmmMCJF/eRn8laX6LZbOyioMoETOOJoWRW8/qTSl5VQkUIfKM5g==
+parse-entities@^1.0.2, parse-entities@^1.1.0:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50"
+ integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==
dependencies:
character-entities "^1.0.0"
character-entities-legacy "^1.0.0"
@@ -7805,7 +8766,7 @@ parse-entities@^1.1.0:
is-decimal "^1.0.0"
is-hexadecimal "^1.0.0"
-parse-filepath@^1.0.1:
+parse-filepath@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891"
integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=
@@ -7840,15 +8801,33 @@ parse-json@^4.0.0:
json-parse-better-errors "^1.0.1"
parse-node-version@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.0.tgz#33d9aa8920dcc3c0d33658ec18ce237009a56d53"
- integrity sha512-02GTVHD1u0nWc20n2G7WX/PgdhNFG04j5fi1OkaJzPWLTcf6vh6229Lta1wTmXG/7Dg42tCssgkccVt7qvd8Kg==
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
+ integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
parse-passwd@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
+parse-path@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-3.0.4.tgz#a48b7b529da41f34d9d1428602a39b29fc7180e4"
+ integrity sha512-wP70vtwv2DyrM2YoA7ZHVv4zIXa4P7dGgHlj+VwyXNDduLLVJ7NMY1zsFxjUUJ3DAwJLupGb1H5gMDDiNlJaxw==
+ dependencies:
+ is-ssh "^1.3.0"
+ protocols "^1.4.0"
+
+parse-url@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-3.0.2.tgz#602787a7063a795d72b8673197505e72f60610be"
+ integrity sha1-YCeHpwY6eV1yuGcxl1BecvYGEL4=
+ dependencies:
+ is-ssh "^1.3.0"
+ normalize-url "^1.9.1"
+ parse-path "^3.0.1"
+ protocols "^1.4.0"
+
parse5@4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
@@ -7868,10 +8847,10 @@ parseuri@0.0.5:
dependencies:
better-assert "~1.0.0"
-parseurl@~1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
- integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=
+parseurl@~1.3.2, parseurl@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
pascalcase@^0.1.1:
version "0.1.1"
@@ -7915,13 +8894,13 @@ passport-google-oauth20@^1.0.0:
passport-oauth2 "1.x.x"
passport-ldapauth@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/passport-ldapauth/-/passport-ldapauth-2.1.1.tgz#4b4478cd283c82de896069a3e427ef8cfa295fe1"
- integrity sha512-DiK9nwZthdCeZE+TRx2AzRk9mg8OeAz4+tZdXC8EPVAVmeW7YSWyK4XCJ8/B7ySWpEZtrN1OcrKtWjpLXFy0/A==
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/passport-ldapauth/-/passport-ldapauth-2.1.3.tgz#833530c31c1e2f8d2ab7a1ff97339291074dc6f6"
+ integrity sha512-23n425UTasN6XhcXG0qQ0h0YrS/zfo8kNIEhSLfPsNpglhYhhQFfB1pmDc5RrH+Kiz5fKLkki5BpvkKHCwkixg==
dependencies:
- "@types/node" "^10.12.12"
- "@types/passport" "^0.4.7"
- ldapauth-fork "^4.1.0"
+ "@types/node" "^10.12.26"
+ "@types/passport" "^1.0.0"
+ ldapauth-fork "^4.2.0"
passport-strategy "^1.0.0"
passport-local@^1.0.0:
@@ -7941,10 +8920,11 @@ passport-oauth1@1.x.x:
utils-merge "1.x.x"
passport-oauth2@1.x.x, passport-oauth2@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/passport-oauth2/-/passport-oauth2-1.4.0.tgz#f62f81583cbe12609be7ce6f160b9395a27b86ad"
- integrity sha1-9i+BWDy+EmCb585vFguTlaJ7hq0=
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/passport-oauth2/-/passport-oauth2-1.5.0.tgz#64babbb54ac46a4dcab35e7f266ed5294e3c4108"
+ integrity sha512-kqBt6vR/5VlCK8iCx1/KpY42kQ+NEHZwsSyt4Y6STiNjU+wWICG1i8ucc1FapXDGO15C5O5VZz7+7vRzrDPXXQ==
dependencies:
+ base64url "3.x.x"
oauth "0.9.x"
passport-strategy "1.x.x"
uid2 "0.0.x"
@@ -7959,17 +8939,17 @@ passport-oauth@^1.0.0:
passport-oauth2 "1.x.x"
passport-saml@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/passport-saml/-/passport-saml-1.0.0.tgz#3931bfb7046e85840e3b04691c619411082bf2f5"
- integrity sha512-6c9TXx1pvOzrRM3A9D7ydsRCoiD1vfGEUfDMv9fY96GqpwbAEAuheGX5rAbFZaJA522GA9E9wdWsAvBNf1Is9A==
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/passport-saml/-/passport-saml-1.1.0.tgz#0fdd639b905b8f5db172bc07f2e73819a043c321"
+ integrity sha512-T2dKp++HQDg9dyJvb+5dyhIVVdIb5FX6DKMex0RALU16D65fiIbZ01vKZ2qtD+nW5nSOkbkfKJUolr9U689EdQ==
dependencies:
debug "^3.1.0"
passport-strategy "*"
q "^1.5.0"
- xml-crypto "^1.0.2"
+ xml-crypto "^1.1.4"
xml-encryption "^0.11.0"
xml2js "0.4.x"
- xmlbuilder "^9.0.4"
+ xmlbuilder "^11.0.0"
xmldom "0.1.x"
passport-strategy@*, passport-strategy@1.x.x, passport-strategy@^1.0.0:
@@ -8092,11 +9072,6 @@ pend@~1.2.0:
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
-performance-now@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
- integrity sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=
-
performance-now@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
@@ -8184,6 +9159,11 @@ pify@^3.0.0:
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+pify@^4.0.0, pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
pinkie-promise@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
@@ -8220,11 +9200,6 @@ platform@1.3.5:
resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.5.tgz#fb6958c696e07e2918d2eeda0f0bc9448d733444"
integrity sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q==
-pluralize@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
- integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==
-
pn@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
@@ -8240,7 +9215,7 @@ posix-character-classes@^0.1.0:
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
-postcss-calc@^7.0.0:
+postcss-calc@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436"
integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==
@@ -8250,10 +9225,10 @@ postcss-calc@^7.0.0:
postcss-selector-parser "^5.0.0-rc.4"
postcss-value-parser "^3.3.1"
-postcss-colormin@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.2.tgz#93cd1fa11280008696887db1a528048b18e7ed99"
- integrity sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw==
+postcss-colormin@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381"
+ integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==
dependencies:
browserslist "^4.0.0"
color "^3.0.0"
@@ -8269,10 +9244,10 @@ postcss-convert-values@^4.0.1:
postcss "^7.0.0"
postcss-value-parser "^3.0.0"
-postcss-discard-comments@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz#30697735b0c476852a7a11050eb84387a67ef55d"
- integrity sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ==
+postcss-discard-comments@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033"
+ integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==
dependencies:
postcss "^7.0.0"
@@ -8297,20 +9272,20 @@ postcss-discard-overridden@^4.0.1:
dependencies:
postcss "^7.0.0"
-postcss-merge-longhand@^4.0.10:
- version "4.0.10"
- resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.10.tgz#c4d63ab57bdc054ab4067ab075d488c8c2978380"
- integrity sha512-hME10s6CSjm9nlVIcO1ukR7Jr5RisTaaC1y83jWCivpuBtPohA3pZE7cGTIVSYjXvLnXozHTiVOkG4dnnl756g==
+postcss-merge-longhand@^4.0.11:
+ version "4.0.11"
+ resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24"
+ integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==
dependencies:
css-color-names "0.0.4"
postcss "^7.0.0"
postcss-value-parser "^3.0.0"
stylehacks "^4.0.0"
-postcss-merge-rules@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz#2be44401bf19856f27f32b8b12c0df5af1b88e74"
- integrity sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag==
+postcss-merge-rules@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650"
+ integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==
dependencies:
browserslist "^4.0.0"
caniuse-api "^3.0.0"
@@ -8327,20 +9302,20 @@ postcss-minify-font-values@^4.0.2:
postcss "^7.0.0"
postcss-value-parser "^3.0.0"
-postcss-minify-gradients@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz#6da95c6e92a809f956bb76bf0c04494953e1a7dd"
- integrity sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA==
+postcss-minify-gradients@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471"
+ integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==
dependencies:
cssnano-util-get-arguments "^4.0.0"
is-color-stop "^1.0.0"
postcss "^7.0.0"
postcss-value-parser "^3.0.0"
-postcss-minify-params@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz#5b2e2d0264dd645ef5d68f8fec0d4c38c1cf93d2"
- integrity sha512-h4W0FEMEzBLxpxIVelRtMheskOKKp52ND6rJv+nBS33G1twu2tCyurYj/YtgU76+UDCvWeNs0hs8HFAWE2OUFg==
+postcss-minify-params@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874"
+ integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==
dependencies:
alphanum-sort "^1.0.0"
browserslist "^4.0.0"
@@ -8349,10 +9324,10 @@ postcss-minify-params@^4.0.1:
postcss-value-parser "^3.0.0"
uniqs "^2.0.0"
-postcss-minify-selectors@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz#a891c197977cc37abf60b3ea06b84248b1c1e9cd"
- integrity sha512-8+plQkomve3G+CodLCgbhAKrb5lekAnLYuL1d7Nz+/7RANpBEVdgBkPNwljfSKvZ9xkkZTZITd04KP+zeJTJqg==
+postcss-minify-selectors@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8"
+ integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==
dependencies:
alphanum-sort "^1.0.0"
has "^1.0.0"
@@ -8397,48 +9372,48 @@ postcss-normalize-charset@^4.0.1:
dependencies:
postcss "^7.0.0"
-postcss-normalize-display-values@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz#d9a83d47c716e8a980f22f632c8b0458cfb48a4c"
- integrity sha512-R5mC4vaDdvsrku96yXP7zak+O3Mm9Y8IslUobk7IMP+u/g+lXvcN4jngmHY5zeJnrQvE13dfAg5ViU05ZFDwdg==
+postcss-normalize-display-values@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a"
+ integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==
dependencies:
cssnano-util-get-match "^4.0.0"
postcss "^7.0.0"
postcss-value-parser "^3.0.0"
-postcss-normalize-positions@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz#ee2d4b67818c961964c6be09d179894b94fd6ba1"
- integrity sha512-GNoOaLRBM0gvH+ZRb2vKCIujzz4aclli64MBwDuYGU2EY53LwiP7MxOZGE46UGtotrSnmarPPZ69l2S/uxdaWA==
+postcss-normalize-positions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f"
+ integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==
dependencies:
cssnano-util-get-arguments "^4.0.0"
has "^1.0.0"
postcss "^7.0.0"
postcss-value-parser "^3.0.0"
-postcss-normalize-repeat-style@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz#5293f234b94d7669a9f805495d35b82a581c50e5"
- integrity sha512-fFHPGIjBUyUiswY2rd9rsFcC0t3oRta4wxE1h3lpwfQZwFeFjXFSiDtdJ7APCmHQOnUZnqYBADNRPKPwFAONgA==
+postcss-normalize-repeat-style@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c"
+ integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==
dependencies:
cssnano-util-get-arguments "^4.0.0"
cssnano-util-get-match "^4.0.0"
postcss "^7.0.0"
postcss-value-parser "^3.0.0"
-postcss-normalize-string@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz#23c5030c2cc24175f66c914fa5199e2e3c10fef3"
- integrity sha512-IJoexFTkAvAq5UZVxWXAGE0yLoNN/012v7TQh5nDo6imZJl2Fwgbhy3J2qnIoaDBrtUP0H7JrXlX1jjn2YcvCQ==
+postcss-normalize-string@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c"
+ integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==
dependencies:
has "^1.0.0"
postcss "^7.0.0"
postcss-value-parser "^3.0.0"
-postcss-normalize-timing-functions@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz#8be83e0b9cb3ff2d1abddee032a49108f05f95d7"
- integrity sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w==
+postcss-normalize-timing-functions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9"
+ integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==
dependencies:
cssnano-util-get-match "^4.0.0"
postcss "^7.0.0"
@@ -8463,37 +9438,37 @@ postcss-normalize-url@^4.0.1:
postcss "^7.0.0"
postcss-value-parser "^3.0.0"
-postcss-normalize-whitespace@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz#d14cb639b61238418ac8bc8d3b7bdd65fc86575e"
- integrity sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw==
+postcss-normalize-whitespace@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82"
+ integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==
dependencies:
postcss "^7.0.0"
postcss-value-parser "^3.0.0"
-postcss-ordered-values@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz#2e3b432ef3e489b18333aeca1f1295eb89be9fc2"
- integrity sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q==
+postcss-ordered-values@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee"
+ integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==
dependencies:
cssnano-util-get-arguments "^4.0.0"
postcss "^7.0.0"
postcss-value-parser "^3.0.0"
-postcss-reduce-initial@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz#bac8e325d67510ee01fa460676dc8ea9e3b40f15"
- integrity sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug==
+postcss-reduce-initial@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df"
+ integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==
dependencies:
browserslist "^4.0.0"
caniuse-api "^3.0.0"
has "^1.0.0"
postcss "^7.0.0"
-postcss-reduce-transforms@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz#8600d5553bdd3ad640f43bff81eb52f8760d4561"
- integrity sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA==
+postcss-reduce-transforms@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29"
+ integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==
dependencies:
cssnano-util-get-match "^4.0.0"
has "^1.0.0"
@@ -8518,10 +9493,10 @@ postcss-selector-parser@^5.0.0-rc.4:
indexes-of "^1.0.1"
uniq "^1.0.1"
-postcss-svgo@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.1.tgz#5628cdb38f015de6b588ce6d0bf0724b492b581d"
- integrity sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw==
+postcss-svgo@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258"
+ integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==
dependencies:
is-svg "^3.0.0"
postcss "^7.0.0"
@@ -8552,9 +9527,9 @@ postcss@^6.0.1, postcss@^6.0.23:
supports-color "^5.4.0"
postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.5:
- version "7.0.14"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5"
- integrity sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==
+ version "7.0.16"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.16.tgz#48f64f1b4b558cb8b52c88987724359acb010da2"
+ integrity sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA==
dependencies:
chalk "^2.4.2"
source-map "^0.6.1"
@@ -8571,14 +9546,14 @@ postgres-bytea@~1.0.0:
integrity sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=
postgres-date@~1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.3.tgz#e2d89702efdb258ff9d9cee0fe91bd06975257a8"
- integrity sha1-4tiXAu/bJY/52c7g/pG9BpdSV6g=
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.4.tgz#1c2728d62ef1bff49abdd35c1f86d4bdf118a728"
+ integrity sha512-bESRvKVuTrjoBluEcpv2346+6kgB7UlnqWZsnbnCccTNq/pqfj1j6oBaN5+b/NrDXepYUT/HKadqv3iS9lJuVA==
postgres-interval@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.1.2.tgz#bf71ff902635f21cb241a013fc421d81d1db15a9"
- integrity sha512-fC3xNHeTskCxL1dC8KOtxXt7YeFmlbTYtn7ul8MkVERuTmf7pI4DrkAxcw3kh1fQ9uz4wQmd03a1mRiXUZChfQ==
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695"
+ integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==
dependencies:
xtend "^4.0.0"
@@ -8592,18 +9567,16 @@ prelude-ls@~1.1.2:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
+prepend-http@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+ integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
+
preserve@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
-pretty-bytes@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf"
- integrity sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=
- dependencies:
- number-is-nan "^1.0.0"
-
pretty-error@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
@@ -8612,15 +9585,10 @@ pretty-error@^2.1.1:
renderkid "^2.0.1"
utila "~0.4"
-pretty-hrtime@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
- integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=
-
prismjs@^1.6.0:
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.15.0.tgz#8801d332e472091ba8def94976c8877ad60398d9"
- integrity sha512-Lf2JrFYx8FanHrjoV5oL8YHCclLQgbJcVZR+gikGGMqz6ub5QVWDTM6YIwm3BuPxM/LOV+rKns3LssXNLIf+DA==
+ version "1.16.0"
+ resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.16.0.tgz#406eb2c8aacb0f5f0f1167930cb83835d10a4308"
+ integrity sha512-OA4MKxjFZHSvZcisLGe14THYsug/nF6O1f0pAJc0KN0wTyAcLqmsbE+lTGKSpyh+9pEW57+k6pg2AfYR+coyHA==
optionalDependencies:
clipboard "^2.0.0"
@@ -8629,6 +9597,11 @@ private@^0.1.6, private@^0.1.8:
resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==
+process-nextick-args@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
process-nextick-args@~1.0.6:
version "1.0.7"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
@@ -8649,7 +9622,7 @@ progress@^1.1.8:
resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=
-progress@^2.0.0, progress@^2.0.1:
+progress@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
@@ -8666,23 +9639,30 @@ promise@^7.1.1:
dependencies:
asap "~2.0.3"
+property-information@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/property-information/-/property-information-4.2.0.tgz#f0e66e07cbd6fed31d96844d958d153ad3eb486e"
+ integrity sha512-TlgDPagHh+eBKOnH2VYvk8qbwsCG/TAJdmTL7f1PROUcSO8qt/KSmShEQ/OKvock8X9tFjtqjCScyOkkkvIKVQ==
+ dependencies:
+ xtend "^4.0.1"
+
proto-list@~1.2.1:
version "1.2.4"
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
-proxy-addr@~2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93"
- integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==
+protocols@^1.1.0, protocols@^1.4.0:
+ version "1.4.7"
+ resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32"
+ integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg==
+
+proxy-addr@~2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34"
+ integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==
dependencies:
forwarded "~0.1.2"
- ipaddr.js "1.8.0"
-
-proxy-from-env@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee"
- integrity sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=
+ ipaddr.js "1.9.0"
prr@~1.0.1:
version "1.0.1"
@@ -8695,9 +9675,9 @@ pseudomap@^1.0.2:
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
psl@^1.1.24:
- version "1.1.31"
- resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184"
- integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==
+ version "1.1.32"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.32.tgz#3f132717cf2f9c169724b2b6caf373cf694198db"
+ integrity sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g==
public-encrypt@^4.0.0:
version "4.0.3"
@@ -8727,7 +9707,7 @@ pump@^3.0.0:
end-of-stream "^1.1.0"
once "^1.3.1"
-pumpify@^1.3.3:
+pumpify@^1.3.3, pumpify@^1.3.5:
version "1.5.1"
resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
@@ -8751,21 +9731,7 @@ punycode@^2.1.0:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-puppeteer@^1.11.0:
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.11.0.tgz#63cdbe12b07275cd6e0b94bce41f3fcb20305770"
- integrity sha512-iG4iMOHixc2EpzqRV+pv7o3GgmU2dNYEMkvKwSaQO/vMZURakwSOn/EYJ6OIRFYOque1qorzIBvrytPIQB3YzQ==
- dependencies:
- debug "^4.1.0"
- extract-zip "^1.6.6"
- https-proxy-agent "^2.2.1"
- mime "^2.0.3"
- progress "^2.0.1"
- proxy-from-env "^1.0.0"
- rimraf "^2.6.1"
- ws "^6.1.0"
-
-q@^1.1.2, q@^1.5.0:
+q@^1.1.2, q@^1.5.0, q@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
@@ -8784,15 +9750,23 @@ qs@2.3.3:
resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404"
integrity sha1-6eha2+ddoLvkyOBHaghikPhjtAQ=
-qs@6.5.2, qs@~6.5.2:
+qs@6.7.0, qs@^6.4.0:
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
+ integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
+
+qs@~6.5.2:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
-qs@~6.4.0:
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
- integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=
+query-string@^4.1.0:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
+ integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s=
+ dependencies:
+ object-assign "^4.1.0"
+ strict-uri-encode "^1.0.0"
querystring-es3@^0.2.0:
version "0.2.1"
@@ -8819,16 +9793,16 @@ randomatic@^3.0.0:
math-random "^1.0.1"
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80"
- integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
dependencies:
safe-buffer "^5.1.0"
randomcolor@^0.5.3:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/randomcolor/-/randomcolor-0.5.3.tgz#7f90f2f2a7f6d5a52232161eeaeeaea9ac3b5815"
- integrity sha1-f5Dy8qf21aUiMhYe6u6uqaw7WBU=
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/randomcolor/-/randomcolor-0.5.4.tgz#df615b13f25b89ea58c5f8f72647f0a6f07adcc3"
+ integrity sha512-nYd4nmTuuwMFzHL6W+UWR5fNERGZeVauho8mrJDUSXdNDbao4rbrUwhuLgKC/j8VCS5+34Ria8CsTDuBjrIrQA==
randomfill@^1.0.3:
version "1.0.4"
@@ -8838,10 +9812,10 @@ randomfill@^1.0.3:
randombytes "^2.0.5"
safe-buffer "^5.1.0"
-range-parser@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
- integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=
+range-parser@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
raphael@2.2.7:
version "2.2.7"
@@ -8850,29 +9824,37 @@ raphael@2.2.7:
dependencies:
eve-raphael "0.5.0"
-"raphael@git+https://github.com/dmitrybaranovskiy/raphael":
- version "2.2.7"
- resolved "git+https://github.com/dmitrybaranovskiy/raphael#527c51b7b12f846f9ab0d5ddf14767912b569c7d"
+raphael@2.2.x:
+ version "2.2.8"
+ resolved "https://registry.yarnpkg.com/raphael/-/raphael-2.2.8.tgz#4b18443c2c6030c3b492d8d11fbbca14ebe4d3f3"
+ integrity sha512-0kWKcGn4lXTw4eUiOhjspYiG+v0m6zSmTmlO62E0hl2CYKUvCuHER9YKqXYvOn2nj24mYp8jzHOLeBuj/Gn28Q==
dependencies:
eve-raphael "0.5.0"
-raphael@~2.1.x:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/raphael/-/raphael-2.1.4.tgz#b09ca664ad048b814bb2ff5d4d1e75838cab9c97"
- integrity sha1-sJymZK0Ei4FLsv9dTR51g4yrnJc=
+"raphael@git+https://github.com/dmitrybaranovskiy/raphael":
+ version "2.2.8"
+ resolved "git+https://github.com/dmitrybaranovskiy/raphael#bf3dcd35317f76f915bcd04ed9db36a1b3775c4d"
dependencies:
- eve "git://github.com/adobe-webplatform/eve.git#eef80ed"
+ eve-raphael "0.5.0"
-raw-body@2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3"
- integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==
+raw-body@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
+ integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
dependencies:
- bytes "3.0.0"
- http-errors "1.6.3"
- iconv-lite "0.4.23"
+ bytes "3.1.0"
+ http-errors "1.7.2"
+ iconv-lite "0.4.24"
unpipe "1.0.0"
+raw-body@~1.1.0:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-1.1.7.tgz#1d027c2bfa116acc6623bca8f00016572a87d425"
+ integrity sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=
+ dependencies:
+ bytes "1"
+ string_decoder "0.10"
+
raw-loader@~0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa"
@@ -8896,6 +9878,14 @@ read-pkg-up@^2.0.0:
find-up "^2.0.0"
read-pkg "^2.0.0"
+read-pkg-up@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978"
+ integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==
+ dependencies:
+ find-up "^3.0.0"
+ read-pkg "^3.0.0"
+
read-pkg@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
@@ -8905,7 +9895,16 @@ read-pkg@^2.0.0:
normalize-package-data "^2.3.2"
path-type "^2.0.0"
-"readable-stream@1 || 2", readable-stream@2.3.6, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
+read-pkg@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
+ integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
+ dependencies:
+ load-json-file "^4.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^3.0.0"
+
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
version "2.3.6"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
@@ -8918,16 +9917,6 @@ read-pkg@^2.0.0:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-readable-stream@1.0, "readable-stream@>=1.0.33-1 <1.1.0-0":
- version "1.0.34"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
- integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.1"
- isarray "0.0.1"
- string_decoder "~0.10.x"
-
readable-stream@1.0.27-1:
version "1.0.27-1"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.27-1.tgz#6b67983c20357cefd07f0165001a16d710d91078"
@@ -8938,40 +9927,43 @@ readable-stream@1.0.27-1:
isarray "0.0.1"
string_decoder "~0.10.x"
-readable-stream@1.1:
- version "1.1.13"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e"
- integrity sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4=
+"readable-stream@>=1.0.33-1 <1.1.0-0":
+ version "1.0.34"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
+ integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.1"
isarray "0.0.1"
string_decoder "~0.10.x"
-readable-stream@^3.0.6:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz#ed6bbc6c5ba58b090039ff18ce670515795aeb06"
- integrity sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==
+readable-stream@^3.1.1:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc"
+ integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==
dependencies:
inherits "^2.0.3"
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
-readable-stream@~1.1.9:
- version "1.1.14"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
- integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk=
+readable-stream@~2.0.0:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
+ integrity sha1-j5A0HmilPMySh4jaz80Rs265t44=
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.1"
- isarray "0.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
-readable-stream@~2.0.0:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
- integrity sha1-j5A0HmilPMySh4jaz80Rs265t44=
+readable-stream@~2.1.0:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
+ integrity sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=
dependencies:
+ buffer-shims "^1.0.0"
core-util-is "~1.0.0"
inherits "~2.0.1"
isarray "~1.0.0"
@@ -8979,7 +9971,7 @@ readable-stream@~2.0.0:
string_decoder "~0.10.x"
util-deprecate "~1.0.1"
-readdirp@^2.0.0:
+readdirp@^2.0.0, readdirp@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
@@ -8993,32 +9985,20 @@ readline-sync@^1.4.7:
resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.9.tgz#3eda8e65f23cd2a17e61301b1f0003396af5ecda"
integrity sha1-PtqOZfI80qF+YTAbHwADOWr17No=
-rechoir@^0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
- integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=
- dependencies:
- resolve "^1.1.6"
-
-redefine@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/redefine/-/redefine-0.2.1.tgz#e89ee7a6f24d19fff62590569332dc60380a89a3"
- integrity sha1-6J7npvJNGf/2JZBWkzLcYDgKiaM=
-
reduce-component@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/reduce-component/-/reduce-component-1.0.1.tgz#e0c93542c574521bea13df0f9488ed82ab77c5da"
integrity sha1-4Mk1QsV0UhvqE98PlIjtgqt3xdo=
-referrer-policy@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/referrer-policy/-/referrer-policy-1.1.0.tgz#35774eb735bf50fb6c078e83334b472350207d79"
- integrity sha1-NXdOtzW/UPtsB46DM0tHI1AgfXk=
+referrer-policy@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/referrer-policy/-/referrer-policy-1.2.0.tgz#b99cfb8b57090dc454895ef897a4cc35ef67a98e"
+ integrity sha512-LgQJIuS6nAy1Jd88DCQRemyE3mS+ispwlqMk3b0yjZ257fI1v9c+/p6SD5gP5FGyXUIgrNOAfmyioHwZtYv2VA==
-regenerate-unicode-properties@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c"
- integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==
+regenerate-unicode-properties@^8.0.2:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e"
+ integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==
dependencies:
regenerate "^1.4.0"
@@ -9046,6 +10026,13 @@ regenerator-transform@^0.10.0:
babel-types "^6.19.0"
private "^0.1.6"
+regenerator-transform@^0.14.0:
+ version "0.14.1"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb"
+ integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==
+ dependencies:
+ private "^0.1.6"
+
regex-cache@^0.4.2:
version "0.4.4"
resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
@@ -9061,6 +10048,11 @@ regex-not@^1.0.0, regex-not@^1.0.2:
extend-shallow "^3.0.2"
safe-regex "^1.1.0"
+regexp-tree@^0.1.6:
+ version "0.1.11"
+ resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.11.tgz#c9c7f00fcf722e0a56c7390983a7a63dd6c272f3"
+ integrity sha512-7/l/DgapVVDzZobwMCCgMlqiqyLFJ0cduo/j+3BcDJIB+yJdsYCfKuI3l/04NV+H/rfNRdPIDbXNZHM9XvQatg==
+
regexpp@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
@@ -9084,17 +10076,17 @@ regexpu-core@^2.0.0:
regjsgen "^0.2.0"
regjsparser "^0.1.4"
-regexpu-core@^4.2.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32"
- integrity sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==
+regexpu-core@^4.5.4:
+ version "4.5.4"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae"
+ integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==
dependencies:
regenerate "^1.4.0"
- regenerate-unicode-properties "^7.0.0"
+ regenerate-unicode-properties "^8.0.2"
regjsgen "^0.5.0"
regjsparser "^0.6.0"
unicode-match-property-ecmascript "^1.0.4"
- unicode-match-property-value-ecmascript "^1.0.2"
+ unicode-match-property-value-ecmascript "^1.1.0"
regjsgen@^0.2.0:
version "0.2.0"
@@ -9120,17 +10112,19 @@ regjsparser@^0.6.0:
dependencies:
jsesc "~0.5.0"
-relateurl@0.2.x:
+relateurl@0.2.x, relateurl@^0.2.7:
version "0.2.7"
resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
-remark-frontmatter@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/remark-frontmatter/-/remark-frontmatter-1.3.1.tgz#bc28c0c913fa0b9dd26f17304bc47b856b2ea2de"
- integrity sha512-Zj/fDMYnSVgMCeKp8fXIhtMoZq4G6E1dnwfMoO8fVXrm/+oVSiN8YMREtwN2cctgK9EsnYSeS1ExX2hcX/fE1A==
+remark-html@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/remark-html/-/remark-html-8.0.0.tgz#9fcb859a6f3cb40f3ef15402950f1a62ec301b3a"
+ integrity sha512-3V2391GL3hxKhrkzYOyfPpxJ6taIKLCfuLVqumeWQOk3H9nTtSQ8St8kMYkBVIEAquXN1chT83qJ/2lAW+dpEg==
dependencies:
- fault "^1.0.1"
+ hast-util-sanitize "^1.0.0"
+ hast-util-to-html "^4.0.0"
+ mdast-util-to-hast "^3.0.0"
xtend "^4.0.1"
remark-parse@^5.0.0:
@@ -9154,6 +10148,59 @@ remark-parse@^5.0.0:
vfile-location "^2.0.0"
xtend "^4.0.1"
+remark-reference-links@^4.0.1:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/remark-reference-links/-/remark-reference-links-4.0.4.tgz#190579a0d6b002859d6cdbdc5aeb8bbdae4e06ab"
+ integrity sha512-+2X8hwSQqxG4tvjYZNrTcEC+bXp8shQvwRGG6J/rnFTvBoU4G0BBviZoqKGZizLh/DG+0gSYhiDDWCqyxXW1iQ==
+ dependencies:
+ unist-util-visit "^1.0.0"
+
+remark-slug@^5.0.0:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-5.1.2.tgz#715ecdef8df1226786204b1887d31ab16aa24609"
+ integrity sha512-DWX+Kd9iKycqyD+/B+gEFO3jjnt7Yg1O05lygYSNTe5i5PIxxxPjp5qPBDxPIzp5wreF7+1ROCwRgjEcqmzr3A==
+ dependencies:
+ github-slugger "^1.0.0"
+ mdast-util-to-string "^1.0.0"
+ unist-util-visit "^1.0.0"
+
+remark-stringify@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-5.0.0.tgz#336d3a4d4a6a3390d933eeba62e8de4bd280afba"
+ integrity sha512-Ws5MdA69ftqQ/yhRF9XhVV29mhxbfGhbz0Rx5bQH+oJcNhhSM6nCu1EpLod+DjrFGrU0BMPs+czVmJZU7xiS7w==
+ dependencies:
+ ccount "^1.0.0"
+ is-alphanumeric "^1.0.0"
+ is-decimal "^1.0.0"
+ is-whitespace-character "^1.0.0"
+ longest-streak "^2.0.1"
+ markdown-escapes "^1.0.0"
+ markdown-table "^1.1.0"
+ mdast-util-compact "^1.0.0"
+ parse-entities "^1.0.2"
+ repeat-string "^1.5.4"
+ state-toggle "^1.0.0"
+ stringify-entities "^1.0.1"
+ unherit "^1.0.4"
+ xtend "^4.0.1"
+
+remark-toc@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/remark-toc/-/remark-toc-5.1.1.tgz#8c229d6f834cdb43fde6685e2d43248d3fc82d78"
+ integrity sha512-vCPW4YOsm2CfyuScdktM9KDnJXVHJsd/ZeRtst+dnBU3B3KKvt8bc+bs5syJjyptAHfqo7H+5Uhz+2blWBfwow==
+ dependencies:
+ mdast-util-toc "^3.0.0"
+ remark-slug "^5.0.0"
+
+remark@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/remark/-/remark-9.0.0.tgz#c5cfa8ec535c73a67c4b0f12bfdbd3a67d8b2f60"
+ integrity sha512-amw8rGdD5lHbMEakiEsllmkdBP+/KpjW/PRK6NSGPZKCQowh0BT4IWXDAkRMyG3SB9dKPXWMviFjNusXzXNn3A==
+ dependencies:
+ remark-parse "^5.0.0"
+ remark-stringify "^5.0.0"
+ unified "^6.0.0"
+
remarkable@^1.7.1:
version "1.7.1"
resolved "https://registry.yarnpkg.com/remarkable/-/remarkable-1.7.1.tgz#aaca4972100b66a642a63a1021ca4bac1be3bff6"
@@ -9162,19 +10209,36 @@ remarkable@^1.7.1:
argparse "~0.1.15"
autolinker "~0.15.0"
+remove-bom-buffer@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53"
+ integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==
+ dependencies:
+ is-buffer "^1.1.5"
+ is-utf8 "^0.2.1"
+
+remove-bom-stream@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523"
+ integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=
+ dependencies:
+ remove-bom-buffer "^3.0.0"
+ safe-buffer "^5.1.0"
+ through2 "^2.0.3"
+
remove-trailing-separator@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
renderkid@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.2.tgz#12d310f255360c07ad8fde253f6c9e9de372d2aa"
- integrity sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg==
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149"
+ integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==
dependencies:
css-select "^1.1.0"
- dom-converter "~0.2"
- htmlparser2 "~3.3.0"
+ dom-converter "^0.2"
+ htmlparser2 "^3.3.0"
strip-ansi "^3.0.0"
utila "^0.4.0"
@@ -9183,7 +10247,7 @@ repeat-element@^1.1.2:
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
-repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1:
+repeat-string@^1.5.0, repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
@@ -9195,12 +10259,7 @@ repeating@^2.0.0:
dependencies:
is-finite "^1.0.0"
-replace-ext@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924"
- integrity sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=
-
-replace-ext@1.0.0:
+replace-ext@1.0.0, replace-ext@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=
@@ -9212,51 +10271,23 @@ request-progress@^2.0.1:
dependencies:
throttleit "^1.0.0"
-request-promise-core@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6"
- integrity sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=
+request-promise-core@1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346"
+ integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==
dependencies:
- lodash "^4.13.1"
+ lodash "^4.17.11"
request-promise-native@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5"
- integrity sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=
- dependencies:
- request-promise-core "1.1.1"
- stealthy-require "^1.1.0"
- tough-cookie ">=2.3.3"
-
-request@2.81.0:
- version "2.81.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
- integrity sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59"
+ integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==
dependencies:
- aws-sign2 "~0.6.0"
- aws4 "^1.2.1"
- caseless "~0.12.0"
- combined-stream "~1.0.5"
- extend "~3.0.0"
- forever-agent "~0.6.1"
- form-data "~2.1.1"
- har-validator "~4.2.1"
- hawk "~3.1.3"
- http-signature "~1.1.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.7"
- oauth-sign "~0.8.1"
- performance-now "^0.2.0"
- qs "~6.4.0"
- safe-buffer "^5.0.1"
- stringstream "~0.0.4"
- tough-cookie "~2.3.0"
- tunnel-agent "^0.6.0"
- uuid "^3.0.0"
+ request-promise-core "1.1.2"
+ stealthy-require "^1.1.1"
+ tough-cookie "^2.3.3"
-request@2.x, request@^2.61.0, request@^2.81.0, request@^2.83.0, request@^2.86.0, request@^2.87.0, request@^2.88.0:
+request@2.81.0, request@2.x, request@^2.61.0, request@^2.81.0, request@^2.83.0, request@^2.86.0, request@^2.87.0, request@^2.88.0:
version "2.88.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
@@ -9292,6 +10323,11 @@ require-main-filename@^1.0.1:
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
require-relative@0.8.7:
version "0.8.7"
resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de"
@@ -9304,14 +10340,6 @@ resolve-cwd@^2.0.0:
dependencies:
resolve-from "^3.0.0"
-resolve-dir@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e"
- integrity sha1-shklmlYC+sXFxJatiUpujMQwJh4=
- dependencies:
- expand-tilde "^1.2.2"
- global-modules "^0.2.3"
-
resolve-dir@^1.0.0, resolve-dir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
@@ -9330,15 +10358,34 @@ resolve-from@^4.0.0:
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+resolve-options@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131"
+ integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=
+ dependencies:
+ value-or-function "^3.0.0"
+
resolve-url@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
-resolve@^1.0.0, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.3, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba"
- integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==
+resolve@1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
+ integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
+
+resolve@^1.1.3, resolve@^1.3.2:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
+ integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
+ dependencies:
+ path-parse "^1.0.6"
+
+resolve@^1.10.0, resolve@^1.11.0, resolve@^1.5.0, resolve@^1.8.1:
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232"
+ integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==
dependencies:
path-parse "^1.0.6"
@@ -9355,13 +10402,12 @@ ret@~0.1.10:
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-retry-as-promised@^2.0.0:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/retry-as-promised/-/retry-as-promised-2.3.2.tgz#cd974ee4fd9b5fe03cbf31871ee48221c07737b7"
- integrity sha1-zZdO5P2bX+A8vzGHHuSCIcB3N7c=
+retry-as-promised@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/retry-as-promised/-/retry-as-promised-3.2.0.tgz#769f63d536bec4783549db0777cb56dadd9d8543"
+ integrity sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==
dependencies:
- bluebird "^3.4.6"
- debug "^2.6.9"
+ any-promise "^1.3.0"
reveal.js@~3.7.0:
version "3.7.0"
@@ -9385,7 +10431,7 @@ right-align@^0.1.1:
dependencies:
align-text "^0.1.1"
-rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2:
+rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
version "2.6.3"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
@@ -9416,12 +10462,12 @@ rollup-plugin-buble@^0.19.2:
rollup-pluginutils "^2.3.3"
rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz#3aad9b1eb3e7fe8262820818840bf091e5ae6794"
- integrity sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA==
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.7.1.tgz#a7915ce8b12c177364784bf38a1590cc6c2c8250"
+ integrity sha512-3nRf3buQGR9qz/IsSzhZAJyoK663kzseps8itkYHr+Z7ESuaffEPfgRinxbCRA0pf0gzLqkNKkSb8aNVTq75NA==
dependencies:
- estree-walker "^0.5.2"
- micromatch "^2.3.11"
+ estree-walker "^0.6.0"
+ micromatch "^3.1.10"
rollup-watch@^4.3.1:
version "4.3.1"
@@ -9454,10 +10500,15 @@ run-queue@^1.0.0, run-queue@^1.0.3:
dependencies:
aproba "^1.1.1"
-rxjs@^6.1.0:
- version "6.3.3"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55"
- integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==
+rw@1:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4"
+ integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=
+
+rxjs@^6.4.0:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7"
+ integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==
dependencies:
tslib "^1.9.0"
@@ -9466,6 +10517,16 @@ safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, s
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+safe-buffer@>=5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
+ integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
+
+safe-json-parse@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57"
+ integrity sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=
+
safe-json-stringify@~1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd"
@@ -9514,7 +10575,7 @@ scandirectory@^2.5.0:
safefs "^3.1.2"
taskgroup "^4.0.5"
-schema-utils@^0.4.4, schema-utils@^0.4.5:
+schema-utils@^0.4.5:
version "0.4.7"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==
@@ -9531,6 +10592,15 @@ schema-utils@^1.0.0:
ajv-errors "^1.0.0"
ajv-keywords "^3.1.0"
+scope-css@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/scope-css/-/scope-css-1.2.1.tgz#c35768bc900cad030a3e0d663a818c0f6a57f40e"
+ integrity sha512-UjLRmyEYaDNiOS673xlVkZFlVCtckJR/dKgr434VMm7Lb+AOOqXKdAcY7PpGlJYErjXXJzKN7HWo4uRPiZZG0Q==
+ dependencies:
+ escaper "^2.5.3"
+ slugify "^1.3.1"
+ strip-css-comments "^3.0.0"
+
script-loader@^0.7.2:
version "0.7.2"
resolved "https://registry.yarnpkg.com/script-loader/-/script-loader-0.7.2.tgz#2016db6f86f25f5cf56da38915d83378bb166ba7"
@@ -9538,6 +10608,16 @@ script-loader@^0.7.2:
dependencies:
raw-loader "~0.5.1"
+scrypt-async@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/scrypt-async/-/scrypt-async-2.0.1.tgz#4318dae48a8b7cc3b8fe05f75f4164a7d973d25d"
+ integrity sha512-wHR032jldwZNy7Tzrfu7RccOgGf8r5hyDMSP2uV6DpLiBUsR8JsDcx/in73o2UGVVrH5ivRFdNsFPcjtl3LErQ==
+
+scrypt-kdf@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/scrypt-kdf/-/scrypt-kdf-2.0.1.tgz#3355224c52d398331b2cbf2b70a7be26b52c53e6"
+ integrity sha512-dMhpgBVJPDWZP5erOCwTjI6oAO9hKhFAjZsdSQ0spaWJYHuA/wFNF2weQQfsyCIk8eNKoLfEDxr3zAtM+gZo0Q==
+
select2@^3.5.2-browserify:
version "3.5.2-browserify"
resolved "https://registry.yarnpkg.com/select2/-/select2-3.5.2-browserify.tgz#dc4dafda38d67a734e8a97a46f0d3529ae05391d"
@@ -9548,25 +10628,25 @@ select@^1.1.2:
resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d"
integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=
-"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
- version "5.6.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
- integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
+"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
+ integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
semver@4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7"
integrity sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c=
-semver@^4.1.0:
- version "4.3.6"
- resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da"
- integrity sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=
+semver@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b"
+ integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==
-send@0.16.2:
- version "0.16.2"
- resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
- integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==
+send@0.17.1:
+ version "0.17.1"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
+ integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
dependencies:
debug "2.6.9"
depd "~1.1.2"
@@ -9575,77 +10655,77 @@ send@0.16.2:
escape-html "~1.0.3"
etag "~1.8.1"
fresh "0.5.2"
- http-errors "~1.6.2"
- mime "1.4.1"
- ms "2.0.0"
+ http-errors "~1.7.2"
+ mime "1.6.0"
+ ms "2.1.1"
on-finished "~2.3.0"
- range-parser "~1.2.0"
- statuses "~1.4.0"
+ range-parser "~1.2.1"
+ statuses "~1.5.0"
+
+seq-queue@^0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e"
+ integrity sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4=
+
+sequelize-cli@^5.4.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/sequelize-cli/-/sequelize-cli-5.5.0.tgz#b0570352f70eaa489a25dccf55cf316675d6ff06"
+ integrity sha512-twVQ02alCpr2XvxNmpi32C48WZs6xHTH1OFTfTS5Meg3BVqOM8ghiZoml4FITFjlD8sAJSQjlAHTwqTbuolA6Q==
+ dependencies:
+ bluebird "^3.5.3"
+ cli-color "^1.4.0"
+ fs-extra "^7.0.1"
+ js-beautify "^1.8.8"
+ lodash "^4.17.5"
+ resolve "^1.5.0"
+ umzug "^2.1.0"
+ yargs "^13.1.0"
-sequelize-cli@^2.5.1:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/sequelize-cli/-/sequelize-cli-2.8.0.tgz#4304cce60e499169603f838dedbab421c9849e74"
- integrity sha1-QwTM5g5JkWlgP4ON7bq0IcmEnnQ=
+sequelize-pool@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/sequelize-pool/-/sequelize-pool-2.2.0.tgz#fd4eb05ccefb5df5c23d2cc6fd934c20fd9c5dab"
+ integrity sha512-N/cYyxNHShfANGXAhHtMExjWNr+eYCS4/pF5fs5fvPYxn1VgUhEX8kDmVV5bNS0gZwt55fjU9Sgg48k3Dy/uMg==
+
+sequelize@^5.8.12:
+ version "5.8.12"
+ resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-5.8.12.tgz#91f46f16789307d40c68f8c039c10d1d0f230ad2"
+ integrity sha512-TtgGgQx/+Nub/IdkV7hqEoozUnOYv28waB/l44fMk37Rr+4G3Inrn9opDb/g81zSuRUKsYGOucdWq0qLH+7ujA==
dependencies:
bluebird "^3.5.0"
- cli-color "~1.2.0"
- findup-sync "^1.0.0"
- fs-extra "^4.0.1"
- gulp "^3.9.1"
- gulp-help "~1.6.1"
- js-beautify "^1.6.11"
- lodash "^4.17.4"
- moment "^2.17.1"
- resolve "^1.3.3"
- umzug "^1.12.0"
- yargs "^8.0.1"
-
-sequelize@^3.28.0:
- version "3.34.0"
- resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-3.34.0.tgz#edbceb53dd7c9e5a0fd6b35fb89565239e8f09e4"
- integrity sha512-smJMYZ+JniYZ2Ja4GPaEC0/mkvCNnRl7mM958hZQP9dpXNbSS/wPFUNrn0mnfpWRk8Ob/3zo0H1qxQbXKgcIzw==
- dependencies:
- bluebird "^3.3.4"
- depd "^1.1.0"
- dottie "^1.0.0"
- generic-pool "2.4.2"
- inflection "^1.6.0"
- lodash "^4.17.10"
- moment "^2.13.0"
- moment-timezone "^0.5.4"
- retry-as-promised "^2.0.0"
- semver "^5.0.1"
- shimmer "1.1.0"
- terraformer-wkt-parser "^1.1.0"
+ cls-bluebird "^2.1.0"
+ debug "^4.1.1"
+ dottie "^2.0.0"
+ inflection "1.12.0"
+ lodash "^4.17.11"
+ moment "^2.24.0"
+ moment-timezone "^0.5.21"
+ retry-as-promised "^3.1.0"
+ semver "^6.1.1"
+ sequelize-pool "^2.2.0"
toposort-class "^1.0.1"
- uuid "^3.0.0"
- validator "^5.2.0"
- wkx "0.2.0"
+ uuid "^3.2.1"
+ validator "^10.11.0"
+ wkx "^0.4.6"
-sequencify@~0.0.7:
- version "0.0.7"
- resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c"
- integrity sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=
-
-serialize-javascript@^1.4.0:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.6.1.tgz#4d1f697ec49429a847ca6f442a2a755126c4d879"
- integrity sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==
+serialize-javascript@^1.4.0, serialize-javascript@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65"
+ integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==
series-stream@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/series-stream/-/series-stream-1.0.1.tgz#311a09c5c1d5a091440832e1a480a47400f1005d"
integrity sha1-MRoJxcHVoJFECDLhpICkdADxAF0=
-serve-static@1.13.2:
- version "1.13.2"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
- integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==
+serve-static@1.14.1:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
+ integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
dependencies:
encodeurl "~1.0.2"
escape-html "~1.0.3"
- parseurl "~1.3.2"
- send "0.16.2"
+ parseurl "~1.3.3"
+ send "0.17.1"
set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
@@ -9677,10 +10757,10 @@ setimmediate@^1.0.4:
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
-setprototypeof@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
- integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
+setprototypeof@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
+ integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
sha.js@^2.4.0, sha.js@^2.4.8:
version "2.4.11"
@@ -9702,22 +10782,17 @@ shebang-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
-shelljs@0.3.x:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.3.0.tgz#3596e6307a781544f591f37da618360f31db57b1"
- integrity sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=
-
-shimmer@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.1.0.tgz#97d7377137ffbbab425522e429fe0aa89a488b35"
- integrity sha1-l9c3cTf/u6tCVSLkKf4KqJpIizU=
+shimmer@^1.1.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337"
+ integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==
shortid@2.2.8:
version "2.2.8"
resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.8.tgz#033b117d6a2e975804f6f0969dbe7d3d0b355131"
integrity sha1-AzsRfWoul1gE9vCWnb59PQs1UTE=
-sigmund@^1.0.1, sigmund@~1.0.0:
+sigmund@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=
@@ -9739,15 +10814,20 @@ slash@^1.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
-slice-ansi@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.0.0.tgz#5373bdb8559b45676e8541c66916cdd6251612e7"
- integrity sha512-4j2WTWjp3GsZ+AOagyzVbzp4vWGtZ0hEZ/gDY/uTvm6MTxUfTUIsnMIFb1bn8o0RuXiqUw15H1bue8f22Vw2oQ==
+slice-ansi@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
+ integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
dependencies:
ansi-styles "^3.2.0"
astral-regex "^1.0.0"
is-fullwidth-code-point "^2.0.0"
+slugify@^1.3.1:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.3.4.tgz#78d2792d7222b55cd9fc81fa018df99af779efeb"
+ integrity sha512-KP0ZYk5hJNBS8/eIjGkFDCzGQIoZ1mnfQRYS5WM3273z+fxGWXeN0fkwf2ebEweydv9tioZIHGZKoF21U07/nw==
+
snapdragon-node@^2.0.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
@@ -9778,12 +10858,12 @@ snapdragon@^0.8.1:
source-map-resolve "^0.5.0"
use "^3.1.0"
-sntp@1.x.x:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
- integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=
+snapsvg@0.4.x:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/snapsvg/-/snapsvg-0.4.0.tgz#e0767014167825957de7e125c29b0fa89796ea03"
+ integrity sha1-4HZwFBZ4JZV95+ElwpsPqJeW6gM=
dependencies:
- hoek "2.x.x"
+ eve "~0.4.2"
socket.io-adapter@~1.1.0:
version "1.1.1"
@@ -9831,6 +10911,13 @@ socket.io@~2.1.1:
socket.io-client "2.1.1"
socket.io-parser "~3.2.0"
+sort-keys@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
+ integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0=
+ dependencies:
+ is-plain-obj "^1.0.0"
+
source-list-map@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
@@ -9854,10 +10941,10 @@ source-map-support@^0.4.12, source-map-support@^0.4.15:
dependencies:
source-map "^0.5.6"
-source-map-support@~0.5.6:
- version "0.5.10"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c"
- integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==
+source-map-support@~0.5.10:
+ version "0.5.12"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599"
+ integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
@@ -9872,7 +10959,7 @@ source-map@0.5.0:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.0.tgz#0fe96503ac86a5adb5de63f4e412ae4872cdbe86"
integrity sha1-D+llA6yGpa213mP05BKuSHLNvoY=
-source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1:
+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
@@ -9882,15 +10969,15 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-sourcemap-codec@^1.4.1:
+sourcemap-codec@^1.4.4:
version "1.4.4"
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz#c63ea927c029dd6bd9a2b7fa03b3fec02ad56e9f"
integrity sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==
-sparkles@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c"
- integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==
+space-separated-tokens@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.4.tgz#27910835ae00d0adfcdbd0ad7e611fb9544351fa"
+ integrity sha512-UyhMSmeIqZrQn2UdjYpxEkwY9JUrn8pP+7L4f91zRzOQuI8MF1FGLfYU9DKCYeLdo7LXMxwrX5zKFy7eeeVHuA==
spdx-correct@^3.0.0:
version "3.1.0"
@@ -9914,9 +11001,9 @@ spdx-expression-parse@^3.0.0:
spdx-license-ids "^3.0.0"
spdx-license-ids@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e"
- integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1"
+ integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==
spin.js@^2.3.2:
version "2.3.2"
@@ -9952,16 +11039,16 @@ sprintf@0.1.5:
resolved "https://registry.yarnpkg.com/sprintf/-/sprintf-0.1.5.tgz#8f83e39a9317c1a502cb7db8050e51c679f6edcf"
integrity sha1-j4PjmpMXwaUCy324BQ5Rxnn27c8=
-sqlite3@^4.0.1:
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-4.0.6.tgz#e587b583b5acc6cb38d4437dedb2572359c080ad"
- integrity sha512-EqBXxHdKiwvNMRCgml86VTL5TK1i0IKiumnfxykX0gh6H6jaKijAXvE9O1N7+omfNSawR2fOmIyJZcfe8HYWpw==
+sqlite3@^4.0.7:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-4.0.8.tgz#81ee60d54befaa52f5421fe6337050bd43d4bb95"
+ integrity sha512-kgwHu4j10KhpCHtx//dejd/tVQot7jc3sw+Sn0vMuKOw0X00Ckyg9VceKgzPyGmmz+zEoYue9tOLriWTvYy0ww==
dependencies:
- nan "~2.10.0"
+ nan "^2.12.1"
node-pre-gyp "^0.11.0"
request "^2.87.0"
-sqlstring@2.3.1:
+sqlstring@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40"
integrity sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=
@@ -9995,7 +11082,7 @@ ssri@^6.0.1:
dependencies:
figgy-pudding "^3.5.1"
-stable@~0.1.6:
+stable@^0.1.8:
version "0.1.8"
resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
@@ -10006,9 +11093,9 @@ stack-trace@0.0.x:
integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=
state-toggle@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.1.tgz#c3cb0974f40a6a0f8e905b96789eb41afa1cde3a"
- integrity sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og==
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.2.tgz#75e93a61944116b4959d665c8db2d243631d6ddc"
+ integrity sha512-8LpelPGR0qQM4PnfLiplOQNJcIN1/r2Gy0xKB2zKnIW2YzPMt2sR4I/+gtPjhN7Svh9kw+zqEg2SFwpBO9iNiw==
static-extend@^0.1.1:
version "0.1.2"
@@ -10018,17 +11105,12 @@ static-extend@^0.1.1:
define-property "^0.2.5"
object-copy "^0.1.0"
-"statuses@>= 1.4.0 < 2":
+"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
-statuses@~1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
- integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==
-
-stealthy-require@^1.1.0:
+stealthy-require@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
@@ -10038,6 +11120,13 @@ store@^2.0.12:
resolved "https://registry.yarnpkg.com/store/-/store-2.0.12.tgz#8c534e2a0b831f72b75fc5f1119857c44ef5d593"
integrity sha1-jFNOKguDH3K3X8XxEZhXxE711ZM=
+stream-array@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/stream-array/-/stream-array-1.1.2.tgz#9e5f7345f2137c30ee3b498b9114e80b52bb7eb5"
+ integrity sha1-nl9zRfITfDDuO0mLkRToC1K7frU=
+ dependencies:
+ readable-stream "~2.1.0"
+
stream-browserify@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
@@ -10046,10 +11135,13 @@ stream-browserify@^2.0.1:
inherits "~2.0.1"
readable-stream "^2.0.2"
-stream-consume@~0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.1.tgz#d3bdb598c2bd0ae82b8cac7ac50b1107a7996c48"
- integrity sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==
+stream-combiner2@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe"
+ integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4=
+ dependencies:
+ duplexer2 "~0.1.0"
+ readable-stream "^2.0.2"
stream-each@^1.1.0:
version "1.2.3"
@@ -10085,6 +11177,11 @@ stream-shift@^1.0.0:
resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
+strict-uri-encode@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
+ integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
+
string-loader@^0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/string-loader/-/string-loader-0.0.1.tgz#496f3cccc990213e0dd5411499f9ac6a6a6f2ff8"
@@ -10095,6 +11192,11 @@ string-natural-compare@^2.0.2:
resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-2.0.3.tgz#9dbe1dd65490a5fe14f7a5c9bc686fc67cb9c6e4"
integrity sha512-4Kcl12rNjc+6EKhY8QyDVuQTAlMWwRiNbsxnVwBUKFr7dYPQuXVrtNU4sEkjF9LHY0AY6uVbB3ktbkIH4LC+BQ==
+string-template@~0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add"
+ integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=
+
string-width@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@@ -10112,11 +11214,34 @@ string-width@^1.0.1:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0"
+string-width@^3.0.0, string-width@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
+string-width@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.1.0.tgz#ba846d1daa97c3c596155308063e075ed1c99aff"
+ integrity sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^5.2.0"
+
string@^3.3.3:
version "3.3.3"
resolved "https://registry.yarnpkg.com/string/-/string-3.3.3.tgz#5ea211cd92d228e184294990a6cc97b366a77cb0"
integrity sha1-XqIRzZLSKOGEKUmQpsyXs2anfLA=
+string_decoder@0.10, string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
string_decoder@^1.0.0, string_decoder@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d"
@@ -10124,11 +11249,6 @@ string_decoder@^1.0.0, string_decoder@^1.1.1:
dependencies:
safe-buffer "~5.1.0"
-string_decoder@~0.10.x:
- version "0.10.31"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
- integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
-
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
@@ -10136,10 +11256,15 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
-stringstream@~0.0.4:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72"
- integrity sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==
+stringify-entities@^1.0.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7"
+ integrity sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==
+ dependencies:
+ character-entities-html4 "^1.0.0"
+ character-entities-legacy "^1.0.0"
+ is-alphanumerical "^1.0.0"
+ is-hexadecimal "^1.0.0"
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
@@ -10155,53 +11280,40 @@ strip-ansi@^4.0.0:
dependencies:
ansi-regex "^3.0.0"
-strip-ansi@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f"
- integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
dependencies:
- ansi-regex "^4.0.0"
+ ansi-regex "^4.1.0"
strip-ansi@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991"
integrity sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=
-strip-bom@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794"
- integrity sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=
- dependencies:
- first-chunk-stream "^1.0.0"
- is-utf8 "^0.2.0"
-
strip-bom@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+strip-css-comments@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-css-comments/-/strip-css-comments-3.0.0.tgz#7a5625eff8a2b226cf8947a11254da96e13dae89"
+ integrity sha1-elYl7/iisibPiUehElTaluE9rok=
+ dependencies:
+ is-regexp "^1.0.0"
+
strip-eof@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
-strip-json-comments@1.0.x:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
- integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=
-
strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
-structured-source@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/structured-source/-/structured-source-3.0.2.tgz#dd802425e0f53dc4a6e7aca3752901a1ccda7af5"
- integrity sha1-3YAkJeD1PcSm56yjdSkBoczaevU=
- dependencies:
- boundary "^1.0.1"
-
style-loader@^0.21.0:
version "0.21.0"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.21.0.tgz#68c52e5eb2afc9ca92b6274be277ee59aea3a852"
@@ -10211,14 +11323,21 @@ style-loader@^0.21.0:
schema-utils "^0.4.5"
stylehacks@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz#3186595d047ab0df813d213e51c8b94e0b9010f2"
- integrity sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w==
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
+ integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==
dependencies:
browserslist "^4.0.0"
postcss "^7.0.0"
postcss-selector-parser "^3.0.0"
+subarg@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2"
+ integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI=
+ dependencies:
+ minimist "^1.1.0"
+
superagent@1.8.3:
version "1.8.3"
resolved "https://registry.yarnpkg.com/superagent/-/superagent-1.8.3.tgz#2b7d70fcc870eda4f2a61e619dd54009b86547c3"
@@ -10255,7 +11374,7 @@ supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0:
dependencies:
has-flag "^3.0.0"
-supports-color@^6.1.0:
+supports-color@^6.0.0, supports-color@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
@@ -10263,22 +11382,22 @@ supports-color@^6.1.0:
has-flag "^3.0.0"
svgo@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz#12384b03335bcecd85cfa5f4e3375fed671cb985"
- integrity sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g==
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.2.2.tgz#0253d34eccf2aed4ad4f283e11ee75198f9d7316"
+ integrity sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA==
dependencies:
- coa "~2.0.1"
- colors "~1.1.2"
+ chalk "^2.4.1"
+ coa "^2.0.2"
css-select "^2.0.0"
- css-select-base-adapter "~0.1.0"
+ css-select-base-adapter "^0.1.1"
css-tree "1.0.0-alpha.28"
css-url-regex "^1.1.0"
- csso "^3.5.0"
- js-yaml "^3.12.0"
+ csso "^3.5.1"
+ js-yaml "^3.13.1"
mkdirp "~0.5.1"
- object.values "^1.0.4"
+ object.values "^1.1.0"
sax "~1.2.4"
- stable "~0.1.6"
+ stable "^0.1.8"
unquote "~1.1.1"
util.promisify "~1.0.0"
@@ -10287,20 +11406,20 @@ symbol-tree@^3.2.2:
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=
-table@^5.0.2:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/table/-/table-5.2.1.tgz#e78463702b1be9f7131c39860bcfb1b81114c2a1"
- integrity sha512-qmhNs2GEHNqY5fd2Mo+8N1r2sw/rvTAAvBZTaTx+Y7PHLypqyrxr1MdIu0pLw6Xvl/Gi4ONu/sdceP8vvUjkyA==
+table@^5.2.3:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/table/-/table-5.4.0.tgz#d772a3216e68829920a41a32c18eda286c95d780"
+ integrity sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw==
dependencies:
- ajv "^6.6.1"
+ ajv "^6.9.1"
lodash "^4.17.11"
- slice-ansi "2.0.0"
- string-width "^2.1.1"
+ slice-ansi "^2.1.0"
+ string-width "^3.0.0"
tapable@^1.0.0, tapable@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e"
- integrity sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
+ integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
tar-stream@^1.5.0:
version "1.6.2"
@@ -10349,43 +11468,30 @@ tedious@^1.14.0:
readable-stream "^2.0.2"
sprintf "0.1.5"
-terraformer-wkt-parser@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/terraformer-wkt-parser/-/terraformer-wkt-parser-1.2.0.tgz#c9d6ac3dff25f4c0bd344e961f42694961834c34"
- integrity sha512-QU3iA54St5lF8Za1jg1oj4NYc8sn5tCZ08aNSWDeGzrsaV48eZk1iAVWasxhNspYBoCqdHuoot1pUTUrE1AJ4w==
- dependencies:
- "@types/geojson" "^1.0.0"
- terraformer "~1.0.5"
-
-terraformer@~1.0.5:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/terraformer/-/terraformer-1.0.9.tgz#77851fef4a49c90b345dc53cf26809fdf29dcda6"
- integrity sha512-YlmQ1fsMWTkKGDGibCRWgmLzrpDRUr63Q025LJ/taYQ6j1Yb8q9McKF7NBi6ACAyUXO6F/bl9w6v4MY307y5Ag==
- optionalDependencies:
- "@types/geojson" "^1.0.0"
-
terser-webpack-plugin@^1.1.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.1.tgz#7545da9ae5f4f9ae6a0ac961eb46f5e7c845cc26"
- integrity sha512-GGSt+gbT0oKcMDmPx4SRSfJPE1XaN3kQRWG4ghxKQw9cn5G9x6aCKSsgYdvyM0na9NJ4Drv0RG6jbBByZ5CMjw==
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz#69aa22426299f4b5b3775cbed8cb2c5d419aa1d4"
+ integrity sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg==
dependencies:
- cacache "^11.0.2"
+ cacache "^11.3.2"
find-cache-dir "^2.0.0"
+ is-wsl "^1.1.0"
+ loader-utils "^1.2.3"
schema-utils "^1.0.0"
- serialize-javascript "^1.4.0"
+ serialize-javascript "^1.7.0"
source-map "^0.6.1"
- terser "^3.8.1"
- webpack-sources "^1.1.0"
- worker-farm "^1.5.2"
+ terser "^4.0.0"
+ webpack-sources "^1.3.0"
+ worker-farm "^1.7.0"
-terser@^3.8.1:
- version "3.14.1"
- resolved "https://registry.yarnpkg.com/terser/-/terser-3.14.1.tgz#cc4764014af570bc79c79742358bd46926018a32"
- integrity sha512-NSo3E99QDbYSMeJaEk9YW2lTg3qS9V0aKGlb+PlOrei1X02r1wSBHCNX/O+yeTRFSWPKPIGj6MqvvdqV4rnVGw==
+terser@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-4.0.0.tgz#ef356f6f359a963e2cc675517f21c1c382877374"
+ integrity sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA==
dependencies:
- commander "~2.17.1"
+ commander "^2.19.0"
source-map "~0.6.1"
- source-map-support "~0.5.6"
+ source-map-support "~0.5.10"
text-hex@1.0.x:
version "1.0.0"
@@ -10402,7 +11508,15 @@ throttleit@^1.0.0:
resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"
integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=
-through2@^0.6.1, through2@^0.6.5:
+through2-filter@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254"
+ integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==
+ dependencies:
+ through2 "~2.0.0"
+ xtend "~4.0.0"
+
+through2@^0.6.5:
version "0.6.5"
resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48"
integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=
@@ -10410,7 +11524,7 @@ through2@^0.6.1, through2@^0.6.5:
readable-stream ">=1.0.33-1 <1.1.0-0"
xtend ">=4.0.0 <4.1.0-0"
-through2@^2.0.0:
+through2@^2.0.0, through2@^2.0.3, through2@~2.0.0:
version "2.0.5"
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
@@ -10418,18 +11532,11 @@ through2@^2.0.0:
readable-stream "~2.3.6"
xtend "~4.0.1"
-through@2, through@^2.3.6:
+through@2, "through@>=2.2.7 <3", through@^2.3.6:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
-tildify@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a"
- integrity sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=
- dependencies:
- os-homedir "^1.0.0"
-
time-stamp@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
@@ -10442,7 +11549,7 @@ timers-browserify@^2.0.4:
dependencies:
setimmediate "^1.0.4"
-timers-ext@0.1, timers-ext@^0.1.5:
+timers-ext@^0.1.5:
version "0.1.7"
resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6"
integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==
@@ -10456,9 +11563,21 @@ timsort@^0.3.0:
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
tiny-emitter@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.2.tgz#82d27468aca5ade8e5fd1e6d22b57dd43ebdfb7c"
- integrity sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
+ integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==
+
+tiny-lr@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-1.1.1.tgz#9fa547412f238fedb068ee295af8b682c98b2aab"
+ integrity sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==
+ dependencies:
+ body "^5.1.0"
+ debug "^3.1.0"
+ faye-websocket "~0.10.0"
+ livereload-js "^2.3.0"
+ object-assign "^4.1.0"
+ qs "^6.4.0"
tmp@0.0.29:
version "0.0.29"
@@ -10474,6 +11593,14 @@ tmp@0.0.33, tmp@^0.0.33:
dependencies:
os-tmpdir "~1.0.2"
+to-absolute-glob@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b"
+ integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=
+ dependencies:
+ is-absolute "^1.0.0"
+ is-negated-glob "^1.0.0"
+
to-array@0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
@@ -10494,6 +11621,11 @@ to-fast-properties@^1.0.3:
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+
to-object-path@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
@@ -10519,6 +11651,18 @@ to-regex@^3.0.1, to-regex@^3.0.2:
regex-not "^1.0.2"
safe-regex "^1.1.0"
+to-through@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6"
+ integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=
+ dependencies:
+ through2 "^2.0.3"
+
+toidentifier@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
+ integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
+
toobusy-js@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/toobusy-js/-/toobusy-js-0.5.1.tgz#5511f78f6a87a6a512d44fdb0efa13672217f659"
@@ -10529,7 +11673,7 @@ toposort-class@^1.0.1:
resolved "https://registry.yarnpkg.com/toposort-class/-/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988"
integrity sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=
-tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.3.0, tough-cookie@~2.4.0, tough-cookie@~2.4.3:
+tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.4.0, tough-cookie@~2.4.3:
version "2.4.3"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==
@@ -10544,10 +11688,10 @@ tr46@^1.0.1:
dependencies:
punycode "^2.1.0"
-traverse@^0.6.6:
- version "0.6.6"
- resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137"
- integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=
+trim-lines@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-1.1.2.tgz#c8adbdbdae21bb5c2766240a661f693afe23e59b"
+ integrity sha512-3GOuyNeTqk3FAqc3jOJtw7FTjYl94XBR5aD9QnDbK/T4CA9sW/J0l9RoaRPE9wyPP7NF331qnHnvJFBJ+IDkmQ==
trim-right@^1.0.1:
version "1.0.1"
@@ -10555,9 +11699,9 @@ trim-right@^1.0.1:
integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
trim-trailing-lines@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz#e0ec0810fd3c3f1730516b45f49083caaf2774d9"
- integrity sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg==
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz#d2f1e153161152e9f02fabc670fb40bec2ea2e3a"
+ integrity sha512-MUjYItdrqqj2zpcHFTkMa9WAv4JHTI6gnRQGPFLrt5L9a6tRMiDnIqYl8JBvu2d2Tc3lWJKQwlGCp0K8AvCM+Q==
trim@0.0.1:
version "0.0.1"
@@ -10570,9 +11714,19 @@ triple-beam@^1.2.0, triple-beam@^1.3.0:
integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==
trough@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.3.tgz#e29bd1614c6458d44869fc28b255ab7857ef7c24"
- integrity sha512-fwkLWH+DimvA4YCy+/nvJd61nWQQ2liO/nF/RjkTpiOGi+zxZzVkhb1mvbHIIW4b/8nDsYI8uTmAlc0nNkRMOw==
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.4.tgz#3b52b1f13924f460c3fbfd0df69b587dbcbc762e"
+ integrity sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==
+
+try-catch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/try-catch/-/try-catch-2.0.0.tgz#a491141d597f8b72b46757fe1c47059341a16aed"
+ integrity sha512-RPXpVjsbtWgymwGq5F/OWDFsjEzdvzwHFaMjWWW6f/p6+uk/N7YSKJHQfIfGqITfj8qH4cBqCLMnhKZBaKk7Kg==
+
+try-to-catch@^1.0.2:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/try-to-catch/-/try-to-catch-1.1.1.tgz#770162dd13b9a0e55da04db5b7f888956072038a"
+ integrity sha512-ikUlS+/BcImLhNYyIgZcEmq4byc31QpC+46/6Jm5ECWkVFhf8SM2Fp/0pMVXPX6vk45SMCwrP4Taxucne8I0VA==
tslib@^1.9.0:
version "1.9.3"
@@ -10592,9 +11746,9 @@ tunnel-agent@^0.6.0:
safe-buffer "^5.0.1"
turndown@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/turndown/-/turndown-5.0.1.tgz#ba92dec646a1db5ea4d8fba162d2f2b62a8d8536"
- integrity sha512-OuNongGmx5vo1TWuSFmVa4Rkm/HxFNPU3dyP9OpOMF2RFTtl0RU+QLIIROcDvXWauFJaLpZaZeVMAsL8vrt3Tw==
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/turndown/-/turndown-5.0.3.tgz#a1350b66155d7891f10e451432170b0f7cd7449a"
+ integrity sha512-popfGXEiedpq6F5saRIAThKxq/bbEPVFnsDnUdjaDGIre9f3/OL9Yi/yPbPcZ7RYUDpekghr666bBfZPrwNnhQ==
dependencies:
jsdom "^11.9.0"
@@ -10610,13 +11764,13 @@ type-check@~0.3.2:
dependencies:
prelude-ls "~1.1.2"
-type-is@~1.6.16:
- version "1.6.16"
- resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
- integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==
+type-is@~1.6.17, type-is@~1.6.18:
+ version "1.6.18"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
dependencies:
media-typer "0.3.0"
- mime-types "~2.1.18"
+ mime-types "~2.1.24"
typechecker@^2.0.8:
version "2.1.0"
@@ -10635,15 +11789,15 @@ typechecker@~2.0.1:
resolved "https://registry.yarnpkg.com/typechecker/-/typechecker-2.0.8.tgz#e83da84bb64c584ccb345838576c40b0337db82e"
integrity sha1-6D2oS7ZMWEzLNFg4V2xAsDN9uC4=
-typedarray@^0.0.6:
+typedarray@^0.0.6, typedarray@~0.0.5:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
uc.micro@^1.0.1, uc.micro@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376"
- integrity sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
+ integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
uglify-es@^3.0.26, uglify-es@^3.3.4:
version "3.3.9"
@@ -10653,12 +11807,12 @@ uglify-es@^3.0.26, uglify-es@^3.3.4:
commander "~2.13.0"
source-map "~0.6.1"
-uglify-js@3.4.x, uglify-js@^3.0.21, uglify-js@^3.1.4, uglify-js@~3.4.8:
- version "3.4.9"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3"
- integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==
+uglify-js@3.4.x:
+ version "3.4.10"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f"
+ integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==
dependencies:
- commander "~2.17.1"
+ commander "~2.19.0"
source-map "~0.6.1"
uglify-js@^2.8.15:
@@ -10671,6 +11825,22 @@ uglify-js@^2.8.15:
optionalDependencies:
uglify-to-browserify "~1.0.0"
+uglify-js@^3.0.21, uglify-js@^3.1.4:
+ version "3.5.15"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.5.15.tgz#fe2b5378fd0b09e116864041437bff889105ce24"
+ integrity sha512-fe7aYFotptIddkwcm6YuA0HmknBZ52ZzOsUxZEdhhkSsz7RfjHDX2QDxwKTiv4JQ5t5NhfmpgAK+J7LiDhKSqg==
+ dependencies:
+ commander "~2.20.0"
+ source-map "~0.6.1"
+
+uglify-js@^3.5.1:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5"
+ integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==
+ dependencies:
+ commander "~2.20.0"
+ source-map "~0.6.1"
+
uglify-to-browserify@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
@@ -10707,16 +11877,13 @@ ultron@~1.1.0:
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==
-umzug@^1.12.0:
- version "1.12.0"
- resolved "https://registry.yarnpkg.com/umzug/-/umzug-1.12.0.tgz#a79c91f2862eee3130c6c347f2b90ad68a66e8b8"
- integrity sha1-p5yR8oYu7jEwxsNH8rkK1opm6Lg=
+umzug@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/umzug/-/umzug-2.2.0.tgz#6160bdc1817e4a63a625946775063c638623e62e"
+ integrity sha512-xZLW76ax70pND9bx3wqwb8zqkFGzZIK8dIHD9WdNy/CrNfjWcwQgQkGCuUqcuwEBvUm+g07z+qWvY+pxDmMEEw==
dependencies:
- bluebird "^3.4.1"
- lodash "^4.17.0"
- moment "^2.16.0"
- redefine "^0.2.0"
- resolve "^1.0.0"
+ babel-runtime "^6.23.0"
+ bluebird "^3.5.3"
unc-path-regex@^0.1.2:
version "0.1.2"
@@ -10728,16 +11895,16 @@ underscore.string@~2.4.0:
resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz#8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b"
integrity sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=
+underscore@1.8.x, underscore@~1.8.3:
+ version "1.8.3"
+ resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022"
+ integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=
+
underscore@^1.7.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961"
integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==
-underscore@~1.4.x:
- version "1.4.4"
- resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604"
- integrity sha1-YaajIBBiKvoHljvzJSA88SI51gQ=
-
underscore@~1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8"
@@ -10748,15 +11915,10 @@ underscore@~1.7.0:
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209"
integrity sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=
-underscore@~1.8.3:
- version "1.8.3"
- resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022"
- integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=
-
unherit@^1.0.4:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.1.tgz#132748da3e88eab767e08fabfbb89c5e9d28628c"
- integrity sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g==
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.2.tgz#14f1f397253ee4ec95cec167762e77df83678449"
+ integrity sha512-W3tMnpaMG7ZY6xe/moK04U9fBhi6wEiCYHUW5Mop/wQHf12+79EQGwxYejNdhEz2mkqkBlGwm7pxmgBKMVUj0w==
dependencies:
inherits "^2.0.1"
xtend "^4.0.1"
@@ -10774,17 +11936,17 @@ unicode-match-property-ecmascript@^1.0.4:
unicode-canonical-property-names-ecmascript "^1.0.4"
unicode-property-aliases-ecmascript "^1.0.4"
-unicode-match-property-value-ecmascript@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4"
- integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==
+unicode-match-property-value-ecmascript@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277"
+ integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==
unicode-property-aliases-ecmascript@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0"
- integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57"
+ integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==
-unified@^6.1.6:
+unified@^6.0.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba"
integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==
@@ -10830,20 +11992,45 @@ unique-slug@^2.0.0:
dependencies:
imurmurhash "^0.1.4"
-unique-stream@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b"
- integrity sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=
+unique-stream@^2.0.2:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac"
+ integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==
+ dependencies:
+ json-stable-stringify-without-jsonify "^1.0.1"
+ through2-filter "^3.0.0"
-unist-util-is@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.2.tgz#1193fa8f2bfbbb82150633f3a8d2eb9a1c1d55db"
- integrity sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==
+unist-builder@^1.0.1, unist-builder@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-1.0.4.tgz#e1808aed30bd72adc3607f25afecebef4dd59e17"
+ integrity sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg==
+ dependencies:
+ object-assign "^4.1.0"
+
+unist-util-generated@^1.1.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.4.tgz#2261c033d9fc23fae41872cdb7663746e972c1a7"
+ integrity sha512-SA7Sys3h3X4AlVnxHdvN/qYdr4R38HzihoEVY2Q2BZu8NHWDnw5OGcC/tXWjQfd4iG+M6qRFNIRGqJmp2ez4Ww==
+
+unist-util-is@^2.0.0, unist-util-is@^2.1.2:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.3.tgz#459182db31f4742fceaea88d429693cbf0043d20"
+ integrity sha512-4WbQX2iwfr/+PfM4U3zd2VNXY+dWtZsN1fLnWEi2QQXA4qyDYAZcDMfXUX0Cu6XZUHHAO9q4nyxxLT4Awk1qUA==
+
+unist-util-is@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd"
+ integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==
+
+unist-util-position@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.0.3.tgz#fff942b879538b242096c148153826664b1ca373"
+ integrity sha512-28EpCBYFvnMeq9y/4w6pbnFmCUfzlsc41NJui5c51hOFjBA1fejcwc+5W4z2+0ECVbScG3dURS3JTVqwenzqZw==
unist-util-remove-position@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz#86b5dad104d0bbfbeb1db5f5c92f3570575c12cb"
- integrity sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.3.tgz#d91aa8b89b30cb38bad2924da11072faa64fd972"
+ integrity sha512-CtszTlOjP2sBGYc2zcKA/CvNdTdEs3ozbiJ63IPBxh8iZg42SCCb8m04f8z2+V1aSk5a7BxbZKEdoDjadmBkWA==
dependencies:
unist-util-visit "^1.1.0"
@@ -10852,17 +12039,24 @@ unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1:
resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6"
integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==
-unist-util-visit-parents@^2.0.0:
+unist-util-stringify-position@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.0.1.tgz#63fffc8929027bee04bfef7d2cce474f71cb6217"
- integrity sha512-6B0UTiMfdWql4cQ03gDTCSns+64Zkfo2OCbK31Ov0uMizEz+CJeAp0cgZVb5Fhmcd7Bct2iRNywejT0orpbqUA==
+ resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.1.tgz#de2a2bc8d3febfa606652673a91455b6a36fb9f3"
+ integrity sha512-Zqlf6+FRI39Bah8Q6ZnNGrEHUhwJOkHde2MHVk96lLyftfJJckaPslKgzhVcviXj8KcE9UJM9F+a4JEiBUTYgA==
dependencies:
- unist-util-is "^2.1.2"
+ "@types/unist" "^2.0.2"
-unist-util-visit@^1.1.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.0.tgz#1cb763647186dc26f5e1df5db6bd1e48b3cc2fb1"
- integrity sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw==
+unist-util-visit-parents@^2.0.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9"
+ integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==
+ dependencies:
+ unist-util-is "^3.0.0"
+
+unist-util-visit@^1.0.0, unist-util-visit@^1.1.0, unist-util-visit@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3"
+ integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==
dependencies:
unist-util-visit-parents "^2.0.0"
@@ -10889,15 +12083,10 @@ unset-value@^1.0.0:
has-value "^0.3.1"
isobject "^3.0.0"
-upath@^1.0.5:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
- integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==
-
-update-section@^0.3.0:
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/update-section/-/update-section-0.3.3.tgz#458f17820d37820dc60e20b86d94391b00123158"
- integrity sha1-RY8Xgg03gg3GDiC4bZQ5GwASMVg=
+upath@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
+ integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
upper-case@^1.1.1:
version "1.1.3"
@@ -10911,11 +12100,6 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
-uri-path@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/uri-path/-/uri-path-1.0.0.tgz#9747f018358933c31de0fccfd82d138e67262e32"
- integrity sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=
-
urix@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
@@ -11000,17 +12184,17 @@ utils-merge@1.0.1, utils-merge@1.x.x:
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
-uuid@3.3.2, uuid@^3.0.0, uuid@^3.1.0, uuid@^3.3.2:
+uuid@3.3.2, uuid@^3.0.0, uuid@^3.1.0, uuid@^3.2.1, uuid@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
v8-compile-cache@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c"
- integrity sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
+ integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==
-v8flags@^2.0.2, v8flags@^2.1.1:
+v8flags@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4"
integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=
@@ -11025,21 +12209,21 @@ validate-npm-package-license@^3.0.1:
spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0"
-validator@^10.4.0:
+validator@^10.11.0, validator@^10.4.0:
version "10.11.0"
resolved "https://registry.yarnpkg.com/validator/-/validator-10.11.0.tgz#003108ea6e9a9874d31ccc9e5006856ccd76b228"
integrity sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==
-validator@^5.2.0:
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/validator/-/validator-5.7.0.tgz#7a87a58146b695ac486071141c0c49d67da05e5c"
- integrity sha1-eoelgUa2laxIYHEUHAxJ1n2gXlw=
-
validator@~9.4.1:
version "9.4.1"
resolved "https://registry.yarnpkg.com/validator/-/validator-9.4.1.tgz#abf466d398b561cd243050112c6ff1de6cc12663"
integrity sha512-YV5KjzvRmSyJ1ee/Dm5UED0G+1L4GZnLN3w6/T+zZm8scVua4sOhYKWTUrKa0H/tMiJyO9QLHMPN+9mB/aMunA==
+value-or-function@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813"
+ integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=
+
vary@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
@@ -11058,9 +12242,9 @@ velocity-animate@^1.4.0:
integrity sha512-m6EXlCAMetKztO1ppBhGU1/1MR3IiEevO6ESq6rcrSQ3Q77xYSW13jkfXW88o4xMrkXJhy/U7j4wFR/twMB0Eg==
vendors@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801"
- integrity sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0"
+ integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==
verror@1.10.0, verror@^1.8.1:
version "1.10.0"
@@ -11079,9 +12263,9 @@ verror@1.6.0:
extsprintf "1.2.0"
vfile-location@^2.0.0:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.4.tgz#2a5e7297dd0d9e2da4381464d04acc6b834d3e55"
- integrity sha512-KRL5uXQPoUKu+NGvQVL4XLORw45W62v4U4gxJ3vRlDfI9QsT4ZN1PNXn/zQpKUulqGDpYuT0XDfp5q9O87/y/w==
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.5.tgz#c83eb02f8040228a8d2b3f10e485be3e3433e0a2"
+ integrity sha512-Pa1ey0OzYBkLPxPZI3d9E+S4BmvfVwNAAXrrqGbwTVXWaX2p9kM1zZ+n35UtVM06shmWKH4RPRN8KI80qE3wNQ==
vfile-message@^1.0.0:
version "1.1.1"
@@ -11090,6 +12274,36 @@ vfile-message@^1.0.0:
dependencies:
unist-util-stringify-position "^1.1.1"
+vfile-message@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.1.tgz#951881861c22fc1eb39f873c0b93e336a64e8f6d"
+ integrity sha512-KtasSV+uVU7RWhUn4Lw+wW1Zl/nW8JWx7JCPps10Y9JRRIDeDXf8wfBLoOSsJLyo27DqMyAi54C6Jf/d6Kr2Bw==
+ dependencies:
+ "@types/unist" "^2.0.2"
+ unist-util-stringify-position "^2.0.0"
+
+vfile-reporter@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/vfile-reporter/-/vfile-reporter-6.0.0.tgz#753119f51dec9289b7508b457afc0cddf5e07f2e"
+ integrity sha512-8Is0XxFxWJUhPJdOg3CyZTqd3ICCWg6r304PuBl818ZG91h4FMS3Q+lrOPS+cs5/DZK3H0+AkJdH0J8JEwKtDA==
+ dependencies:
+ repeat-string "^1.5.0"
+ string-width "^4.0.0"
+ supports-color "^6.0.0"
+ unist-util-stringify-position "^2.0.0"
+ vfile-sort "^2.1.2"
+ vfile-statistics "^1.1.0"
+
+vfile-sort@^2.1.0, vfile-sort@^2.1.2:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/vfile-sort/-/vfile-sort-2.2.1.tgz#74e714f9175618cdae96bcaedf1a3dc711d87567"
+ integrity sha512-5dt7xEhC44h0uRQKhbM2JAe0z/naHphIZlMOygtMBM9Nn0pZdaX5fshhwWit9wvsuP8t/wp43nTDRRErO1WK8g==
+
+vfile-statistics@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/vfile-statistics/-/vfile-statistics-1.1.3.tgz#e9c87071997fbcb4243764d2c3805e0bb0820c60"
+ integrity sha512-CstaK/ebTz1W3Qp41Bt9Lj/2DmumFsCwC2sKahDNSPh0mPh7/UyMLCoU8ZBX34CRU0d61B4W41yIFsV0NKMZeA==
+
vfile@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a"
@@ -11100,36 +12314,64 @@ vfile@^2.0.0:
unist-util-stringify-position "^1.0.0"
vfile-message "^1.0.0"
-vinyl-fs@^0.3.0:
- version "0.3.14"
- resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6"
- integrity sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=
+vfile@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.0.1.tgz#fc3d43a1c71916034216bf65926d5ee3c64ed60c"
+ integrity sha512-lRHFCuC4SQBFr7Uq91oJDJxlnftoTLQ7eKIpMdubhYcVMho4781a8MWXLy3qZrZ0/STD1kRiKc0cQOHm4OkPeA==
dependencies:
- defaults "^1.0.0"
- glob-stream "^3.1.5"
- glob-watcher "^0.0.6"
- graceful-fs "^3.0.0"
- mkdirp "^0.5.0"
- strip-bom "^1.0.0"
- through2 "^0.6.1"
- vinyl "^0.4.0"
+ "@types/unist" "^2.0.0"
+ is-buffer "^2.0.0"
+ replace-ext "1.0.0"
+ unist-util-stringify-position "^2.0.0"
+ vfile-message "^2.0.0"
-vinyl@^0.4.0:
- version "0.4.6"
- resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847"
- integrity sha1-LzVsh6VQolVGHza76ypbqL94SEc=
+vinyl-fs@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7"
+ integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==
dependencies:
- clone "^0.2.0"
- clone-stats "^0.0.1"
+ fs-mkdirp-stream "^1.0.0"
+ glob-stream "^6.1.0"
+ graceful-fs "^4.0.0"
+ is-valid-glob "^1.0.0"
+ lazystream "^1.0.0"
+ lead "^1.0.0"
+ object.assign "^4.0.4"
+ pumpify "^1.3.5"
+ readable-stream "^2.3.3"
+ remove-bom-buffer "^3.0.0"
+ remove-bom-stream "^1.2.0"
+ resolve-options "^1.1.0"
+ through2 "^2.0.0"
+ to-through "^2.0.0"
+ value-or-function "^3.0.0"
+ vinyl "^2.0.0"
+ vinyl-sourcemap "^1.1.0"
-vinyl@^0.5.0:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde"
- integrity sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=
+vinyl-sourcemap@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16"
+ integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=
dependencies:
- clone "^1.0.0"
- clone-stats "^0.0.1"
- replace-ext "0.0.1"
+ append-buffer "^1.0.2"
+ convert-source-map "^1.5.0"
+ graceful-fs "^4.1.6"
+ normalize-path "^2.1.1"
+ now-and-later "^2.0.0"
+ remove-bom-buffer "^3.0.0"
+ vinyl "^2.0.0"
+
+vinyl@^2.0.0, vinyl@^2.1.0, vinyl@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86"
+ integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==
+ dependencies:
+ clone "^2.1.1"
+ clone-buffer "^1.0.0"
+ clone-stats "^1.0.0"
+ cloneable-readable "^1.0.0"
+ remove-trailing-separator "^1.0.1"
+ replace-ext "^1.0.0"
visibilityjs@^1.2.4:
version "1.2.8"
@@ -11141,11 +12383,6 @@ viz.js@^1.7.0:
resolved "https://registry.yarnpkg.com/viz.js/-/viz.js-1.8.2.tgz#d9cc04cd99f98ec986bf9054db76a6cbcdc5d97a"
integrity sha512-W+1+N/hdzLpQZEcvz79n2IgUE9pfx6JLdHh3Kh8RGvLL8P1LdJVQmi2OsDcLdY4QVID4OUy+FPelyerX0nJxIQ==
-vlq@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.0.tgz#8101be90843422954c2b13eb27f2f3122bdcc806"
- integrity sha512-o3WmXySo+oI5thgqr7Qy8uBkT/v9Zr+sRyrh1lr8aWPUkgDWdWt4Nae2WKBrLsocgE8BuWWD0jLc+VW8LeU+2g==
-
vm-browserify@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
@@ -11153,6 +12390,14 @@ vm-browserify@0.0.4:
dependencies:
indexof "0.0.1"
+vue-template-compiler@^2.5.16:
+ version "2.6.10"
+ resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz#323b4f3495f04faa3503337a82f5d6507799c9cc"
+ integrity sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==
+ dependencies:
+ de-indent "^1.0.2"
+ he "^1.1.0"
+
w3c-hr-time@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045"
@@ -11188,29 +12433,32 @@ weak-map@^1.0.5:
resolved "https://registry.yarnpkg.com/weak-map/-/weak-map-1.0.5.tgz#79691584d98607f5070bd3b70a40e6bb22e401eb"
integrity sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes=
+webfontloader@~1.6.x:
+ version "1.6.28"
+ resolved "https://registry.yarnpkg.com/webfontloader/-/webfontloader-1.6.28.tgz#db786129253cb6e8eae54c2fb05f870af6675bae"
+ integrity sha1-23hhKSU8tujq5UwvsF+HCvZnW64=
+
webidl-conversions@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
webpack-cli@^3.1.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.2.1.tgz#779c696c82482491f0803907508db2e276ed3b61"
- integrity sha512-jeJveHwz/vwpJ3B8bxEL5a/rVKIpRNJDsKggfKnxuYeohNDW4Y/wB9N/XHJA093qZyS0r6mYL+/crLsIol4WKA==
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.2.tgz#aed2437b0db0a7faa2ad28484e166a5360014a91"
+ integrity sha512-FLkobnaJJ+03j5eplxlI0TUxhGCOdfewspIGuvDVtpOlrAuKMFC57K42Ukxqs1tn8947/PM6tP95gQc0DCzRYA==
dependencies:
chalk "^2.4.1"
cross-spawn "^6.0.5"
enhanced-resolve "^4.1.0"
findup-sync "^2.0.0"
global-modules "^1.0.0"
- global-modules-path "^2.3.0"
import-local "^2.0.0"
interpret "^1.1.0"
- lightercollective "^0.1.0"
loader-utils "^1.1.0"
supports-color "^5.5.0"
v8-compile-cache "^2.0.2"
- yargs "^12.0.4"
+ yargs "^12.0.5"
webpack-merge@^4.1.4:
version "4.2.1"
@@ -11243,14 +12491,14 @@ webpack-sources@^1.0.0, webpack-sources@^1.1.0, webpack-sources@^1.3.0:
source-map "~0.6.1"
webpack@^4.14.0:
- version "4.29.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.29.0.tgz#f2cfef83f7ae404ba889ff5d43efd285ca26e750"
- integrity sha512-pxdGG0keDBtamE1mNvT5zyBdx+7wkh6mh7uzMOo/uRQ/fhsdj5FXkh/j5mapzs060forql1oXqXN9HJGju+y7w==
- dependencies:
- "@webassemblyjs/ast" "1.7.11"
- "@webassemblyjs/helper-module-context" "1.7.11"
- "@webassemblyjs/wasm-edit" "1.7.11"
- "@webassemblyjs/wasm-parser" "1.7.11"
+ version "4.32.2"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.32.2.tgz#3639375364a617e84b914ddb2c770aed511e5bc8"
+ integrity sha512-F+H2Aa1TprTQrpodRAWUMJn7A8MgDx82yQiNvYMaj3d1nv3HetKU0oqEulL9huj8enirKi8KvEXQ3QtuHF89Zg==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-module-context" "1.8.5"
+ "@webassemblyjs/wasm-edit" "1.8.5"
+ "@webassemblyjs/wasm-parser" "1.8.5"
acorn "^6.0.5"
acorn-dynamic-import "^4.0.0"
ajv "^6.1.0"
@@ -11266,12 +12514,26 @@ webpack@^4.14.0:
mkdirp "~0.5.0"
neo-async "^2.5.0"
node-libs-browser "^2.0.0"
- schema-utils "^0.4.4"
+ schema-utils "^1.0.0"
tapable "^1.1.0"
terser-webpack-plugin "^1.1.0"
watchpack "^1.5.0"
webpack-sources "^1.3.0"
+websocket-driver@>=0.5.1:
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9"
+ integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==
+ dependencies:
+ http-parser-js ">=0.4.0 <0.4.11"
+ safe-buffer ">=5.1.0"
+ websocket-extensions ">=0.1.1"
+
+websocket-extensions@>=0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
+ integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==
+
whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3:
version "1.0.5"
resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
@@ -11307,7 +12569,7 @@ which-module@^2.0.0:
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-which@^1.2.10, which@^1.2.12, which@^1.2.14, which@^1.2.9:
+which@^1.2.10, which@^1.2.14, which@^1.2.9:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
@@ -11326,7 +12588,7 @@ window-size@0.1.0:
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=
-winston-transport@^4.2.0:
+winston-transport@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.3.0.tgz#df68c0c202482c448d9b47313c07304c2d7c2c66"
integrity sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==
@@ -11335,24 +12597,26 @@ winston-transport@^4.2.0:
triple-beam "^1.2.0"
winston@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/winston/-/winston-3.1.0.tgz#80724376aef164e024f316100d5b178d78ac5331"
- integrity sha512-FsQfEE+8YIEeuZEYhHDk5cILo1HOcWkGwvoidLrDgPog0r4bser1lEIOco2dN9zpDJ1M88hfDgZvxe5z4xNcwg==
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/winston/-/winston-3.2.1.tgz#63061377976c73584028be2490a1846055f77f07"
+ integrity sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==
dependencies:
- async "^2.6.0"
+ async "^2.6.1"
diagnostics "^1.1.1"
is-stream "^1.1.0"
- logform "^1.9.1"
+ logform "^2.1.1"
one-time "0.0.4"
- readable-stream "^2.3.6"
+ readable-stream "^3.1.1"
stack-trace "0.0.x"
triple-beam "^1.3.0"
- winston-transport "^4.2.0"
+ winston-transport "^4.3.0"
-wkx@0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/wkx/-/wkx-0.2.0.tgz#76c24f16acd0cd8f93cd34aa331e0f7961256e84"
- integrity sha1-dsJPFqzQzY+TzTSqMx4PeWElboQ=
+wkx@^0.4.6:
+ version "0.4.7"
+ resolved "https://registry.yarnpkg.com/wkx/-/wkx-0.4.7.tgz#ba0e4f9e785e95c9975856c1834f19a95c65cfb5"
+ integrity sha512-pHf546L96TK8RradLt1cWaIffstgv/zXZ14CGz5KnBs1AxBX0wm+IDphjJw0qrEqRv8P9W9CdTt8Z1unMRZ19A==
+ dependencies:
+ "@types/node" "*"
wordwrap@0.0.2:
version "0.0.2"
@@ -11369,10 +12633,10 @@ wordwrap@~1.0.0:
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
-worker-farm@^1.3.1, worker-farm@^1.5.2:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0"
- integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==
+worker-farm@^1.3.1, worker-farm@^1.5.2, worker-farm@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
+ integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
dependencies:
errno "~0.1.7"
@@ -11384,15 +12648,24 @@ wrap-ansi@^2.0.0:
string-width "^1.0.1"
strip-ansi "^3.0.1"
+wrap-ansi@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
+ integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
+ dependencies:
+ ansi-styles "^3.2.0"
+ string-width "^3.0.0"
+ strip-ansi "^5.0.0"
+
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-write@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
- integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=
+write@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
+ integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
dependencies:
mkdirp "^0.5.1"
@@ -11403,10 +12676,10 @@ ws@^5.2.0:
dependencies:
async-limiter "~1.0.0"
-ws@^6.0.0, ws@^6.1.0:
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.3.tgz#d2d2e5f0e3c700ef2de89080ebc0ac6e1bf3a72d"
- integrity sha512-tbSxiT+qJI223AP4iLfQbkbxkwdFcneYinM2+x46Gx2wgvbaOMO36czfdfVUBRTHvzAMRhDd98sA5d/BuWbQdg==
+ws@^6.0.0:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb"
+ integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==
dependencies:
async-limiter "~1.0.0"
@@ -11419,6 +12692,11 @@ ws@~3.3.1:
safe-buffer "~5.1.0"
ultron "~1.1.0"
+wurl@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/wurl/-/wurl-2.5.3.tgz#79ff7c4d8c6584cb46d239517ecac334380af7fd"
+ integrity sha512-LWqZh3ox8gfPwB/xFYFJPnlNOytLtnDtvIDj+iUvD5hxDVWhNa2uhGEQbjyrmolbNFMycqkEnYVXJ7Y72n6h3w==
+
x-is-string@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82"
@@ -11429,10 +12707,10 @@ x-xss-protection@1.1.0:
resolved "https://registry.yarnpkg.com/x-xss-protection/-/x-xss-protection-1.1.0.tgz#4f1898c332deb1e7f2be1280efb3e2c53d69c1a7"
integrity sha512-rx3GzJlgEeZ08MIcDsU2vY2B1QEriUKJTSiNHHUIem6eg9pzVOr2TL3Y4Pd6TMAM5D5azGjcxqI62piITBDHVg==
-xml-crypto@^1.0.2:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/xml-crypto/-/xml-crypto-1.1.1.tgz#fdb20266c2aee00ebfbe623da1132ef74ee1c4c7"
- integrity sha512-Yxw/2iZO5xLTnYkqp6H3pd+13GDSXNxtzmznTqAlqPgyULp7w46/BG8q+Tu6Yvct+kLZHv4KbRzUx9AJon7d0A==
+xml-crypto@^1.1.4:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/xml-crypto/-/xml-crypto-1.4.0.tgz#de1cec8cd31cbd689cd90d3d6e8a27d4ae807de7"
+ integrity sha512-K8FRdRxICVulK4WhiTUcJrRyAIJFPVOqxfurA3x/JlmXBTxy+SkEENF6GeRt7p/rB6WSOUS9g0gXNQw5n+407g==
dependencies:
xmldom "0.1.27"
xpath "0.0.27"
@@ -11473,7 +12751,12 @@ xml@^1.0.0:
resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5"
integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=
-xmlbuilder@^9.0.4, xmlbuilder@^9.0.7, xmlbuilder@~9.0.1:
+xmlbuilder@^11.0.0:
+ version "11.0.1"
+ resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
+ integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
+
+xmlbuilder@^9.0.7, xmlbuilder@~9.0.1:
version "9.0.7"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=
@@ -11504,18 +12787,23 @@ xregexp@^2.0.0:
integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=
xss@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.3.tgz#d04bd2558fd6c29c46113824d5e8b2a910054e23"
- integrity sha512-LTpz3jXPLUphMMmyufoZRSKnqMj41OVypZ8uYGzvjkMV9C1EdACrhQl/EM8Qfh5htSAuMIQFOejmKAZGkJfaCg==
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.6.tgz#eaf11e9fc476e3ae289944a1009efddd8a124b51"
+ integrity sha512-6Q9TPBeNyoTRxgZFk5Ggaepk/4vUOYdOsIUYvLehcsIZTFjaavbVnsuAkLA5lIFuug5hw8zxcB9tm01gsjph2A==
dependencies:
commander "^2.9.0"
cssfilter "0.0.10"
-"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
+"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
+xtend@^4.0.1, xtend@~4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
xtraverse@0.1.x:
version "0.1.0"
resolved "https://registry.yarnpkg.com/xtraverse/-/xtraverse-0.1.0.tgz#b741bad018ef78d8a9d2e83ade007b3f7959c732"
@@ -11523,11 +12811,6 @@ xtraverse@0.1.x:
dependencies:
xmldom "0.1.x"
-y18n@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
- integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
-
"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
@@ -11551,14 +12834,15 @@ yargs-parser@^11.1.1:
camelcase "^5.0.0"
decamelize "^1.2.0"
-yargs-parser@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9"
- integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k=
+yargs-parser@^13.1.0:
+ version "13.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0"
+ integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==
dependencies:
- camelcase "^4.1.0"
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
-yargs@^12.0.4:
+yargs@^12.0.2, yargs@^12.0.5:
version "12.0.5"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==
@@ -11576,24 +12860,22 @@ yargs@^12.0.4:
y18n "^3.2.1 || ^4.0.0"
yargs-parser "^11.1.1"
-yargs@^8.0.1:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
- integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A=
+yargs@^13.1.0:
+ version "13.2.4"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83"
+ integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==
dependencies:
- camelcase "^4.1.0"
- cliui "^3.2.0"
- decamelize "^1.1.1"
- get-caller-file "^1.0.1"
- os-locale "^2.0.0"
- read-pkg-up "^2.0.0"
+ cliui "^5.0.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ os-locale "^3.1.0"
require-directory "^2.1.1"
- require-main-filename "^1.0.1"
+ require-main-filename "^2.0.0"
set-blocking "^2.0.0"
- string-width "^2.0.0"
+ string-width "^3.0.0"
which-module "^2.0.0"
- y18n "^3.2.1"
- yargs-parser "^7.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^13.1.0"
yargs@~3.10.0:
version "3.10.0"