From aa0d72639ecae3b0649761e6ee881a59b2f3e94e Mon Sep 17 00:00:00 2001 From: hackerman <3372410+aeneasr@users.noreply.github.com> Date: Mon, 6 Apr 2020 14:46:02 +0200 Subject: [PATCH] refactor: move docs to this repository (#317) --- .circleci/config.yml | 14 +- {docs/images => .github}/banner_kratos.png | Bin {docs => .schema}/api.swagger.json | 18 +- {docs => .schema}/config.schema.json | 2 +- Makefile | 12 +- README.md | 2 +- cmd/serve.go | 2 +- docs/.editorconfig | 8 + docs/.gitignore | 20 + docs/.prettierignore | 6 + docs/.prettierrc | 5 + docs/.widdershins/config.json | 20 + docs/.widdershins/templates/README.md | 72 + .../.widdershins/templates/authentication.def | 5 + .../templates/authentication_none.def | 3 + docs/.widdershins/templates/callbacks.def | 38 + docs/.widdershins/templates/code_go.dot | 23 + docs/.widdershins/templates/code_http.dot | 7 + docs/.widdershins/templates/code_java.dot | 13 + .../templates/code_javascript.dot | 14 + docs/.widdershins/templates/code_nodejs.dot | 18 + docs/.widdershins/templates/code_python.dot | 10 + docs/.widdershins/templates/code_ruby.dot | 14 + docs/.widdershins/templates/code_shell.dot | 3 + docs/.widdershins/templates/debug.def | 1 + docs/.widdershins/templates/discovery.def | 11 + docs/.widdershins/templates/footer.def | 2 + docs/.widdershins/templates/links.def | 18 + docs/.widdershins/templates/main.dot | 109 + docs/.widdershins/templates/operation.dot | 194 + docs/.widdershins/templates/parameters.def | 39 + docs/.widdershins/templates/responses.def | 92 + docs/.widdershins/templates/security.def | 16 + docs/.widdershins/templates/translations.dot | 16 + docs/README.md | 75 + docs/config.js | 15 + docs/contrib/config.js | 25 + docs/contrib/docs/index.md | 5 + docs/contrib/sidebar.js | 55 + docs/contrib/theme.css | 3 + docs/docs/.gitkeep | 0 docs/docs/concepts/credentials.md | 487 + docs/docs/concepts/email-sms.md | 36 + docs/docs/concepts/federation.md | 14 + docs/docs/concepts/identity-user-model.md | 261 + docs/docs/concepts/index.md | 275 + docs/docs/concepts/securing-applications.md | 8 + docs/docs/concepts/security.md | 219 + docs/docs/concepts/ui-user-interface.md | 35 + docs/docs/further-reading/comparison.md | 7 + docs/docs/further-reading/contrib.md | 18 + docs/docs/index.md | 61 + docs/docs/install.md | 82 + docs/docs/quickstart.mdx | 342 + docs/docs/reference/api.md | 5719 +++++++ docs/docs/reference/configuration.md | 693 + docs/docs/reference/html-forms.md | 50 + docs/docs/reference/json-schema-json-paths.md | 34 + docs/docs/sdk/api.md | 5556 +++++++ docs/docs/sdk/index.md | 29 + docs/docs/self-service/flows/index.md | 31 + .../flows/password-reset-account-recovery.md | 16 + .../self-service/flows/user-facing-errors.md | 49 + .../flows/user-login-user-registration.md | 408 + docs/docs/self-service/flows/user-logout.md | 33 + .../flows/user-settings-profile-management.md | 205 + .../flows/verify-email-account-activation.mdx | 209 + docs/docs/self-service/strategies/index.md | 9 + .../openid-connect-social-sign-in-oauth2.md | 44 + .../strategies/username-email-password.md | 641 + .../docs/self-service/workflows/jobs/after.md | 172 + .../self-service/workflows/jobs/before.md | 9 + docs/docusaurus.config.js | 130 + docs/package-lock.json | 13649 ++++++++++++++++ docs/package.json | 41 + docs/scripts/config.js | 198 + docs/scripts/docker-tag.js | 58 + docs/scripts/fix-api.js | 48 + docs/scripts/rerelease.js | 13 + docs/sidebar.js | 42 + docs/src/css/.gitkeep | 0 docs/src/css/theme.css | 18 + docs/src/pages/index.js | 10 + docs/src/pages/versions.js | 95 + docs/static/img/docs/email-verify-known.png | Bin 0 -> 50120 bytes docs/static/img/docs/email-verify-unknown.png | Bin 0 -> 48487 bytes .../img/docs/mailslurper-quickstart.png | Bin 0 -> 827854 bytes docs/static/img/docs/secureapp-dashboard.png | Bin 0 -> 236267 bytes .../img/docs/secureapp-login-ntrace.png | Bin 0 -> 906068 bytes docs/static/img/docs/secureapp-login.png | Bin 0 -> 741627 bytes .../docs/secureapp-registration-ntrace.png | Bin 0 -> 920173 bytes .../docs/secureapp-registration-pwpolicy.png | Bin 0 -> 804453 bytes .../img/docs/secureapp-registration.png | Bin 0 -> 752972 bytes .../img/docs/secureapp-verified-dashboard.png | Bin 0 -> 976640 bytes docs/static/img/favico.png | Bin 0 -> 78488 bytes docs/static/img/logo-docusaurus-template.svg | 24 + docs/static/img/logo-hydra.svg | 9 + docs/static/img/logo-keto.svg | 23 + docs/static/img/logo-kratos.svg | 9 + docs/static/img/logo-oathkeeper.svg | 9 + docs/versioned_docs/version-v0.1/.gitkeep | 0 .../version-v0.1/concepts/credentials.md | 487 + .../version-v0.1/concepts/email-sms.md | 36 + .../version-v0.1/concepts/federation.md | 14 + .../concepts/identity-user-model.md | 261 + .../version-v0.1/concepts/index.md | 275 + .../concepts/securing-applications.md | 8 + .../version-v0.1/concepts/security.md | 219 + .../concepts/ui-user-interface.md | 35 + .../further-reading/comparison.md | 7 + .../version-v0.1/further-reading/contrib.md | 18 + docs/versioned_docs/version-v0.1/index.md | 61 + docs/versioned_docs/version-v0.1/install.md | 82 + .../version-v0.1/quickstart.mdx | 342 + .../version-v0.1/reference/api.md | 5719 +++++++ .../version-v0.1/reference/configuration.md | 719 + .../version-v0.1/reference/html-forms.md | 50 + .../reference/json-schema-json-paths.md | 34 + docs/versioned_docs/version-v0.1/sdk/api.md | 5556 +++++++ docs/versioned_docs/version-v0.1/sdk/index.md | 29 + .../version-v0.1/self-service/flows/index.md | 31 + .../flows/password-reset-account-recovery.md | 16 + .../self-service/flows/user-facing-errors.md | 49 + .../flows/user-login-user-registration.md | 408 + .../self-service/flows/user-logout.md | 33 + .../flows/user-profile-management.md | 199 + .../flows/verify-email-account-activation.mdx | 209 + .../self-service/strategies/index.md | 9 + .../openid-connect-social-sign-in-oauth2.md | 44 + .../strategies/username-email-password.md | 641 + .../self-service/workflows/jobs/after.md | 172 + .../self-service/workflows/jobs/before.md | 9 + .../version-v0.1-sidebars.json | 227 + docs/versions.json | 3 + driver/configuration/provider_viper_test.go | 4 +- {docs => internal}/.kratos.yaml | 0 internal/httpclient/models/form.go | 2 +- internal/httpclient/models/form_field.go | 12 +- .../models/login_request_method_config.go | 2 +- .../registration_request_method_config.go | 2 +- selfservice/form/fields.go | 12 +- selfservice/form/html_form.go | 2 +- tests/schema_test.go | 2 +- 143 files changed, 47134 insertions(+), 39 deletions(-) rename {docs/images => .github}/banner_kratos.png (100%) rename {docs => .schema}/api.swagger.json (98%) rename {docs => .schema}/config.schema.json (99%) create mode 100644 docs/.editorconfig create mode 100644 docs/.gitignore create mode 100644 docs/.prettierignore create mode 100644 docs/.prettierrc create mode 100644 docs/.widdershins/config.json create mode 100644 docs/.widdershins/templates/README.md create mode 100644 docs/.widdershins/templates/authentication.def create mode 100644 docs/.widdershins/templates/authentication_none.def create mode 100644 docs/.widdershins/templates/callbacks.def create mode 100644 docs/.widdershins/templates/code_go.dot create mode 100644 docs/.widdershins/templates/code_http.dot create mode 100644 docs/.widdershins/templates/code_java.dot create mode 100644 docs/.widdershins/templates/code_javascript.dot create mode 100644 docs/.widdershins/templates/code_nodejs.dot create mode 100644 docs/.widdershins/templates/code_python.dot create mode 100644 docs/.widdershins/templates/code_ruby.dot create mode 100644 docs/.widdershins/templates/code_shell.dot create mode 100644 docs/.widdershins/templates/debug.def create mode 100644 docs/.widdershins/templates/discovery.def create mode 100644 docs/.widdershins/templates/footer.def create mode 100644 docs/.widdershins/templates/links.def create mode 100644 docs/.widdershins/templates/main.dot create mode 100644 docs/.widdershins/templates/operation.dot create mode 100644 docs/.widdershins/templates/parameters.def create mode 100644 docs/.widdershins/templates/responses.def create mode 100644 docs/.widdershins/templates/security.def create mode 100644 docs/.widdershins/templates/translations.dot create mode 100644 docs/README.md create mode 100644 docs/config.js create mode 100644 docs/contrib/config.js create mode 100644 docs/contrib/docs/index.md create mode 100644 docs/contrib/sidebar.js create mode 100644 docs/contrib/theme.css create mode 100644 docs/docs/.gitkeep create mode 100644 docs/docs/concepts/credentials.md create mode 100644 docs/docs/concepts/email-sms.md create mode 100644 docs/docs/concepts/federation.md create mode 100644 docs/docs/concepts/identity-user-model.md create mode 100644 docs/docs/concepts/index.md create mode 100644 docs/docs/concepts/securing-applications.md create mode 100644 docs/docs/concepts/security.md create mode 100644 docs/docs/concepts/ui-user-interface.md create mode 100644 docs/docs/further-reading/comparison.md create mode 100644 docs/docs/further-reading/contrib.md create mode 100644 docs/docs/index.md create mode 100644 docs/docs/install.md create mode 100644 docs/docs/quickstart.mdx create mode 100644 docs/docs/reference/api.md create mode 100644 docs/docs/reference/configuration.md create mode 100644 docs/docs/reference/html-forms.md create mode 100644 docs/docs/reference/json-schema-json-paths.md create mode 100644 docs/docs/sdk/api.md create mode 100644 docs/docs/sdk/index.md create mode 100644 docs/docs/self-service/flows/index.md create mode 100644 docs/docs/self-service/flows/password-reset-account-recovery.md create mode 100644 docs/docs/self-service/flows/user-facing-errors.md create mode 100644 docs/docs/self-service/flows/user-login-user-registration.md create mode 100644 docs/docs/self-service/flows/user-logout.md create mode 100644 docs/docs/self-service/flows/user-settings-profile-management.md create mode 100644 docs/docs/self-service/flows/verify-email-account-activation.mdx create mode 100644 docs/docs/self-service/strategies/index.md create mode 100644 docs/docs/self-service/strategies/openid-connect-social-sign-in-oauth2.md create mode 100644 docs/docs/self-service/strategies/username-email-password.md create mode 100644 docs/docs/self-service/workflows/jobs/after.md create mode 100644 docs/docs/self-service/workflows/jobs/before.md create mode 100644 docs/docusaurus.config.js create mode 100644 docs/package-lock.json create mode 100644 docs/package.json create mode 100644 docs/scripts/config.js create mode 100644 docs/scripts/docker-tag.js create mode 100644 docs/scripts/fix-api.js create mode 100644 docs/scripts/rerelease.js create mode 100644 docs/sidebar.js create mode 100644 docs/src/css/.gitkeep create mode 100644 docs/src/css/theme.css create mode 100644 docs/src/pages/index.js create mode 100644 docs/src/pages/versions.js create mode 100644 docs/static/img/docs/email-verify-known.png create mode 100644 docs/static/img/docs/email-verify-unknown.png create mode 100644 docs/static/img/docs/mailslurper-quickstart.png create mode 100644 docs/static/img/docs/secureapp-dashboard.png create mode 100644 docs/static/img/docs/secureapp-login-ntrace.png create mode 100644 docs/static/img/docs/secureapp-login.png create mode 100644 docs/static/img/docs/secureapp-registration-ntrace.png create mode 100644 docs/static/img/docs/secureapp-registration-pwpolicy.png create mode 100644 docs/static/img/docs/secureapp-registration.png create mode 100644 docs/static/img/docs/secureapp-verified-dashboard.png create mode 100644 docs/static/img/favico.png create mode 100644 docs/static/img/logo-docusaurus-template.svg create mode 100644 docs/static/img/logo-hydra.svg create mode 100644 docs/static/img/logo-keto.svg create mode 100644 docs/static/img/logo-kratos.svg create mode 100644 docs/static/img/logo-oathkeeper.svg create mode 100644 docs/versioned_docs/version-v0.1/.gitkeep create mode 100644 docs/versioned_docs/version-v0.1/concepts/credentials.md create mode 100644 docs/versioned_docs/version-v0.1/concepts/email-sms.md create mode 100644 docs/versioned_docs/version-v0.1/concepts/federation.md create mode 100644 docs/versioned_docs/version-v0.1/concepts/identity-user-model.md create mode 100644 docs/versioned_docs/version-v0.1/concepts/index.md create mode 100644 docs/versioned_docs/version-v0.1/concepts/securing-applications.md create mode 100644 docs/versioned_docs/version-v0.1/concepts/security.md create mode 100644 docs/versioned_docs/version-v0.1/concepts/ui-user-interface.md create mode 100644 docs/versioned_docs/version-v0.1/further-reading/comparison.md create mode 100644 docs/versioned_docs/version-v0.1/further-reading/contrib.md create mode 100644 docs/versioned_docs/version-v0.1/index.md create mode 100644 docs/versioned_docs/version-v0.1/install.md create mode 100644 docs/versioned_docs/version-v0.1/quickstart.mdx create mode 100644 docs/versioned_docs/version-v0.1/reference/api.md create mode 100644 docs/versioned_docs/version-v0.1/reference/configuration.md create mode 100644 docs/versioned_docs/version-v0.1/reference/html-forms.md create mode 100644 docs/versioned_docs/version-v0.1/reference/json-schema-json-paths.md create mode 100644 docs/versioned_docs/version-v0.1/sdk/api.md create mode 100644 docs/versioned_docs/version-v0.1/sdk/index.md create mode 100644 docs/versioned_docs/version-v0.1/self-service/flows/index.md create mode 100644 docs/versioned_docs/version-v0.1/self-service/flows/password-reset-account-recovery.md create mode 100644 docs/versioned_docs/version-v0.1/self-service/flows/user-facing-errors.md create mode 100644 docs/versioned_docs/version-v0.1/self-service/flows/user-login-user-registration.md create mode 100644 docs/versioned_docs/version-v0.1/self-service/flows/user-logout.md create mode 100644 docs/versioned_docs/version-v0.1/self-service/flows/user-profile-management.md create mode 100644 docs/versioned_docs/version-v0.1/self-service/flows/verify-email-account-activation.mdx create mode 100644 docs/versioned_docs/version-v0.1/self-service/strategies/index.md create mode 100644 docs/versioned_docs/version-v0.1/self-service/strategies/openid-connect-social-sign-in-oauth2.md create mode 100644 docs/versioned_docs/version-v0.1/self-service/strategies/username-email-password.md create mode 100644 docs/versioned_docs/version-v0.1/self-service/workflows/jobs/after.md create mode 100644 docs/versioned_docs/version-v0.1/self-service/workflows/jobs/before.md create mode 100644 docs/versioned_sidebars/version-v0.1-sidebars.json create mode 100644 docs/versions.json rename {docs => internal}/.kratos.yaml (100%) diff --git a/.circleci/config.yml b/.circleci/config.yml index 926fe9fc5ba..35bec64673d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,10 +1,11 @@ version: 2.1 orbs: - sdk: ory/sdk@0.1.27 - changelog: ory/changelog@0.0.6 + sdk: ory/sdk@0.1.33 + changelog: ory/changelog@0.0.9 goreleaser: ory/goreleaser@0.0.29 nancy: ory/nancy@0.0.9 + docs: ory/docs@0.0.4 golangci: ory/golangci@0.0.4 jobs: @@ -94,6 +95,15 @@ workflows: only: /.*/ branches: ignore: /master/ + - docs/build: + requires: + - test + - golangci/lint + filters: + tags: + only: /.*/ + branches: + only: master - sdk/release: requires: - test diff --git a/docs/images/banner_kratos.png b/.github/banner_kratos.png similarity index 100% rename from docs/images/banner_kratos.png rename to .github/banner_kratos.png diff --git a/docs/api.swagger.json b/.schema/api.swagger.json similarity index 98% rename from docs/api.swagger.json rename to .schema/api.swagger.json index cd3f7e09932..06337db93d2 100755 --- a/docs/api.swagger.json +++ b/.schema/api.swagger.json @@ -1087,7 +1087,7 @@ ], "properties": { "action": { - "description": "Action should be used as the form action URL (\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e).", + "description": "Action should be used as the form action URL `\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e`.", "type": "string" }, "errors": { @@ -1116,7 +1116,7 @@ ], "properties": { "disabled": { - "description": "Disabled is the equivalent of \u003cinput disabled=\"{{.Disabled}}\"\u003e", + "description": "Disabled is the equivalent of `\u003cinput disabled=\"{{.Disabled}}\"\u003e`", "type": "boolean" }, "errors": { @@ -1127,23 +1127,23 @@ } }, "name": { - "description": "Name is the equivalent of \u003cinput name=\"{{.Name}}\"\u003e", + "description": "Name is the equivalent of `\u003cinput name=\"{{.Name}}\"\u003e`", "type": "string" }, "pattern": { - "description": "Pattern is the equivalent of \u003cinput pattern=\"{{.Pattern}}\"\u003e", + "description": "Pattern is the equivalent of `\u003cinput pattern=\"{{.Pattern}}\"\u003e`", "type": "string" }, "required": { - "description": "Required is the equivalent of \u003cinput required=\"{{.Required}}\"\u003e", + "description": "Required is the equivalent of `\u003cinput required=\"{{.Required}}\"\u003e`", "type": "boolean" }, "type": { - "description": "Type is the equivalent of \u003cinput type=\"{{.Type}}\"\u003e", + "description": "Type is the equivalent of `\u003cinput type=\"{{.Type}}\"\u003e`", "type": "string" }, "value": { - "description": "Value is the equivalent of \u003cinput value=\"{{.Value}}\"\u003e", + "description": "Value is the equivalent of `\u003cinput value=\"{{.Value}}\"\u003e`", "type": "object" } } @@ -1287,7 +1287,7 @@ ], "properties": { "action": { - "description": "Action should be used as the form action URL (\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e).", + "description": "Action should be used as the form action URL `\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e`.", "type": "string" }, "errors": { @@ -1416,7 +1416,7 @@ ], "properties": { "action": { - "description": "Action should be used as the form action URL (\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e).", + "description": "Action should be used as the form action URL `\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e`.", "type": "string" }, "errors": { diff --git a/docs/config.schema.json b/.schema/config.schema.json similarity index 99% rename from docs/config.schema.json rename to .schema/config.schema.json index 2bf8a99aafb..43ce3aa2ea0 100644 --- a/docs/config.schema.json +++ b/.schema/config.schema.json @@ -1,5 +1,5 @@ { - "$id": "https://github.com/ory/kratos/docs/config.schema.json", + "$id": "https://github.com/ory/kratos/.schema/config.schema.json", "$schema": "http://json-schema.org/draft-07/schema#", "title": "ORY Kratos Configuration", "type": "object", diff --git a/Makefile b/Makefile index bec156ab28c..198f994d3da 100644 --- a/Makefile +++ b/Makefile @@ -67,14 +67,14 @@ test: test-resetdb # Generates the SDKs .PHONY: sdk sdk: - $$(go env GOPATH)/bin/swagger generate spec -m -o docs/api.swagger.json -x internal/httpclient - $$(go env GOPATH)/bin/swagutil sanitize ./docs/api.swagger.json - $$(go env GOPATH)/bin/swagger validate ./docs/api.swagger.json - $$(go env GOPATH)/bin/swagger flatten --with-flatten=remove-unused -o ./docs/api.swagger.json ./docs/api.swagger.json - $$(go env GOPATH)/bin/swagger validate ./docs/api.swagger.json + $$(go env GOPATH)/bin/swagger generate spec -m -o .schema/api.swagger.json -x internal/httpclient + $$(go env GOPATH)/bin/swagutil sanitize ./.schema/api.swagger.json + $$(go env GOPATH)/bin/swagger validate ./.schema/api.swagger.json + $$(go env GOPATH)/bin/swagger flatten --with-flatten=remove-unused -o ./.schema/api.swagger.json ./.schema/api.swagger.json + $$(go env GOPATH)/bin/swagger validate ./.schema/api.swagger.json rm -rf internal/httpclient mkdir -p internal/httpclient - $$(go env GOPATH)/bin/swagger generate client -f ./docs/api.swagger.json -t internal/httpclient -A Ory_Kratos + $$(go env GOPATH)/bin/swagger generate client -f ./.schema/api.swagger.json -t internal/httpclient -A Ory_Kratos make format quickstart: diff --git a/README.md b/README.md index 1ecc50c2040..f87714a88b9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

ORY Kratos - Cloud native Identity and User Management

+

ORY Kratos - Cloud native Identity and User Management

Chat | diff --git a/cmd/serve.go b/cmd/serve.go index 0755791f9c7..6b945c1e15c 100644 --- a/cmd/serve.go +++ b/cmd/serve.go @@ -51,7 +51,7 @@ DON'T DO THIS IN PRODUCTION! }, } -var schemas = packr.New("schemas", "../docs") +var schemas = packr.New("schemas", "../.schema") func init() { rootCmd.AddCommand(serveCmd) diff --git a/docs/.editorconfig b/docs/.editorconfig new file mode 100644 index 00000000000..a9b781becef --- /dev/null +++ b/docs/.editorconfig @@ -0,0 +1,8 @@ +root = true + +[*] +insert_final_newline = true +charset = utf-8 +trim_trailing_whitespace = true +indent_style = space +indent_size = 2 diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000000..b2d6de30624 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/docs/.prettierignore b/docs/.prettierignore new file mode 100644 index 00000000000..6fb052bd125 --- /dev/null +++ b/docs/.prettierignore @@ -0,0 +1,6 @@ +build/ +website/build/ +schemas/ +apis/ +.widdershins/ +hooks/ diff --git a/docs/.prettierrc b/docs/.prettierrc new file mode 100644 index 00000000000..ffe12cd476b --- /dev/null +++ b/docs/.prettierrc @@ -0,0 +1,5 @@ +{ + "proseWrap": "always", + "singleQuote": true, + "trailingComma": "es5" +} diff --git a/docs/.widdershins/config.json b/docs/.widdershins/config.json new file mode 100644 index 00000000000..e0ecffc038d --- /dev/null +++ b/docs/.widdershins/config.json @@ -0,0 +1,20 @@ +{ + "language_tabs": [], + "verbose": true, + "codeSamples": true, + "httpSnippet": true, + "search": false, + "discovery": false, + "tocSummary": true, + "sample": true, + "tagGroups": [ + { + "title": "Public Endpoints", + "tags": ["public"] + }, + { + "title": "Administrative Endpoints", + "tags": ["admin"] + } + ] +} diff --git a/docs/.widdershins/templates/README.md b/docs/.widdershins/templates/README.md new file mode 100644 index 00000000000..f2a63d58c4a --- /dev/null +++ b/docs/.widdershins/templates/README.md @@ -0,0 +1,72 @@ +## Swagger / OpenAPI 2 and OpenAPI 3 template parameters + +Note that properties of OpenAPI objects will be in OpenAPI 3.0 form, as Swagger +/ OpenAPI 2.0 definitions are converted automatically. + +### Code templates + +- `method` - the HTTP method of the operation (in lower-case) +- `methodUpper` - the HTTP method of the operation (in upper-case) +- `url` - the full URL of the operation (including protocol and host) +- `consumes[]` - an array of MIME-types the operation consumes +- `produces[]` - an array of MIME-types the operation produces +- `operation` - the current operation object +- `operationId` - the current operation id +- `opName` - the operationId if set, otherwise the method + path +- `tags[]` - the full list of tags applying to the operation +- `security` - the security definitions applying to the operation +- `resource` - the current tag/path object +- `parameters[]` - an array of parameters for the operation (see below) +- `queryString` - an example queryString, urlEncoded +- `requiredQueryString` - an example queryString for `required:true` parameters +- `queryParameters[]` - a subset of `parameters` that are `in:query` +- `requiredParameters[]` - a subset of `queryParameters` that are + `required:true` +- `headerParameters[]` - a subset of `parameters` that are `in:header` +- `allHeaders[]` - a concatenation of `headerParameters` and pseudo-parameters + `Accept` and `Content-Type`, and optionally `Authorization` (the latter has an + `isAuth` boolean property set true so it can be omitted in templates if + desired + +### Parameter template + +- `parameters[]` - an array of + [parameters](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject), + including the following pseudo-properties + - `shortDesc` - a truncated version of the parameter description + - `safeType` - a computed version of the parameter type, including Body and + schema names + - `originalType` - the original type of the parameter + - `exampleValues` - an object containing examples for use in code-templates + - `json` - example values in JSON compatible syntax + - `object` - example values in raw object form (unquoted strings etc) + - `depth` - a zero-based indicator of the depth of expanded request body + parameters +- `enums[]` - an array of (parameter)name/value pairs + +### Responses template + +- `responses[]` - an array of + [responses](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#responseObject), + including `status` and `meaning` properties + +### Authentication template + +- `authenticationStr` - a simple string of methods (and scopes where + appropriate) +- `securityDefinitions[]` - an array of applicable + [securityDefinitions](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#securityRequirementObject) + +### Schema Property template + +- `schemaProperties[]` - an array of _ `name` _ `type` _ `required` _ + `description` +- `enums[]` - an array of (schema property)name/value pairs + +### Common to all templates + +- `openapi` - the top-level OpenAPI / Swagger document +- `header` - the front-matter of the Slate/Shins markdown document +- `host` - the (computed) host of the API +- `protocol` - the default/first protocol of the API +- `baseUrl` - the (computed) baseUrl of the API (including protocol and host) diff --git a/docs/.widdershins/templates/authentication.def b/docs/.widdershins/templates/authentication.def new file mode 100644 index 00000000000..6b039e532ea --- /dev/null +++ b/docs/.widdershins/templates/authentication.def @@ -0,0 +1,5 @@ + + diff --git a/docs/.widdershins/templates/authentication_none.def b/docs/.widdershins/templates/authentication_none.def new file mode 100644 index 00000000000..ddb19cf276a --- /dev/null +++ b/docs/.widdershins/templates/authentication_none.def @@ -0,0 +1,3 @@ + diff --git a/docs/.widdershins/templates/callbacks.def b/docs/.widdershins/templates/callbacks.def new file mode 100644 index 00000000000..4f155e8a1a4 --- /dev/null +++ b/docs/.widdershins/templates/callbacks.def @@ -0,0 +1,38 @@ +{{? data.operation.callbacks}} + +#### Callbacks + +
+ +{{ data.oldOperation = data.operation; }} + +{{ for (var c in data.operation.callbacks) { }} + +##### {{=c}} + +{{ var callback = data.operation.callbacks[c]; }} + +{{ for (var e in callback) { }} + +**{{=e}}** + +{{ var exp = callback[e]; }} + +{{ for (var m in exp) { }} + +{{ data.operation = exp[m]; }} +{{ data.method.operation = data.operation; }} + +{{= data.templates.operation(data) }} + +{{ } /* of methods */ }} + +{{ } /* of expressions */ }} + +{{ } /* of callbacks */ }} + +{{ data.operation = data.oldOperation; }} + +
+ +{{?}} diff --git a/docs/.widdershins/templates/code_go.dot b/docs/.widdershins/templates/code_go.dot new file mode 100644 index 00000000000..4b68a549032 --- /dev/null +++ b/docs/.widdershins/templates/code_go.dot @@ -0,0 +1,23 @@ +package main + +import ( + "bytes" + "net/http" +) + +func main() { + +{{?data.allHeaders.length}} + headers := map[string][]string{ + {{~data.allHeaders :p:index}}"{{=p.name}}": []string{"{{=p.exampleValues.object}}"}, + {{~}} + }{{?}} + + data := bytes.NewBuffer([]byte{jsonReq}) + req, err := http.NewRequest("{{=data.methodUpper}}", "{{=data.url}}", data) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} diff --git a/docs/.widdershins/templates/code_http.dot b/docs/.widdershins/templates/code_http.dot new file mode 100644 index 00000000000..98636ec8628 --- /dev/null +++ b/docs/.widdershins/templates/code_http.dot @@ -0,0 +1,7 @@ +{{=data.methodUpper}} {{=data.url}}{{=data.requiredQueryString}} HTTP/1.1{{? data.host}} +Host: {{=data.host}}{{?}}{{?data.consumes.length}} +Content-Type: {{=data.consumes[0]}}{{?}}{{?data.produces.length}} +Accept: {{=data.produces[0]}}{{?}} +{{?data.headerParameters.length}}{{~ data.headerParameters :p:index}}{{=p.name}}: {{=p.exampleValues.object}} +{{~}} +{{?}} \ No newline at end of file diff --git a/docs/.widdershins/templates/code_java.dot b/docs/.widdershins/templates/code_java.dot new file mode 100644 index 00000000000..8d61d00c6db --- /dev/null +++ b/docs/.widdershins/templates/code_java.dot @@ -0,0 +1,13 @@ +URL obj = new URL("{{=data.url}}{{=data.requiredQueryString}}"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("{{=data.methodUpper}}"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); diff --git a/docs/.widdershins/templates/code_javascript.dot b/docs/.widdershins/templates/code_javascript.dot new file mode 100644 index 00000000000..06d26413365 --- /dev/null +++ b/docs/.widdershins/templates/code_javascript.dot @@ -0,0 +1,14 @@ +{{?data.allHeaders.length}}var headers = { +{{~data.allHeaders :p:index}} '{{=p.name}}':{{=p.exampleValues.json}}{{?index < data.allHeaders.length-1}},{{?}} +{{~}} +}; +{{?}} +$.ajax({ + url: '{{=data.url}}', + method: '{{=data.method.verb}}', +{{?data.requiredQueryString}} data: '{{=data.requiredQueryString}}',{{?}} +{{?data.allHeaders.length}} headers: headers,{{?}} + success: function(data) { + console.log(JSON.stringify(data)); + } +}) diff --git a/docs/.widdershins/templates/code_nodejs.dot b/docs/.widdershins/templates/code_nodejs.dot new file mode 100644 index 00000000000..44ea2a5e640 --- /dev/null +++ b/docs/.widdershins/templates/code_nodejs.dot @@ -0,0 +1,18 @@ +const fetch = require('node-fetch'); +{{?data.bodyParameter.present}}const inputBody = '{{=data.bodyParameter.exampleValues.json}}';{{?}} +{{?data.allHeaders.length}}const headers = { +{{~data.allHeaders :p:index}} '{{=p.name}}':{{=p.exampleValues.json}}{{?index < data.allHeaders.length-1}},{{?}} +{{~}} +}; +{{?}} +fetch('{{=data.url}}{{=data.requiredQueryString}}', +{ + method: '{{=data.methodUpper}}'{{?data.bodyParameter.present || data.allHeaders.length}},{{?}} +{{?data.bodyParameter.present}} body: inputBody{{?}}{{? data.bodyParameter.present && data.allHeaders.length}},{{?}} +{{?data.allHeaders.length}} headers: headers{{?}} +}) +.then(function(res) { + return res.json(); +}).then(function(body) { + console.log(body); +}); diff --git a/docs/.widdershins/templates/code_python.dot b/docs/.widdershins/templates/code_python.dot new file mode 100644 index 00000000000..bd277a1dbc4 --- /dev/null +++ b/docs/.widdershins/templates/code_python.dot @@ -0,0 +1,10 @@ +import requests +{{?data.allHeaders.length}}headers = { +{{~data.allHeaders :p:index}} '{{=p.name}}': {{=p.exampleValues.json}}{{?index < data.allHeaders.length-1}},{{?}} +{{~}}} +{{?}} +r = requests.{{=data.method.verb}}('{{=data.url}}', params={ +{{~ data.requiredParameters :p:index}} '{{=p.name}}': {{=p.exampleValues.json}}{{? data.requiredParameters.length-1 != index }},{{?}}{{~}} +{{?data.allHeaders.length}}}, headers = headers{{?}}) + +print r.json() diff --git a/docs/.widdershins/templates/code_ruby.dot b/docs/.widdershins/templates/code_ruby.dot new file mode 100644 index 00000000000..172219db1ea --- /dev/null +++ b/docs/.widdershins/templates/code_ruby.dot @@ -0,0 +1,14 @@ +require 'rest-client' +require 'json' + +{{?data.allHeaders.length}}headers = { +{{~data.allHeaders :p:index}} '{{=p.name}}' => {{=p.exampleValues.json}}{{?index < data.allHeaders.length-1}},{{?}} +{{~}}}{{?}} + +result = RestClient.{{=data.method.verb}} '{{=data.url}}', + params: { + {{~ data.requiredParameters :p:index}}'{{=p.name}}' => '{{=p.safeType}}'{{? data.requiredParameters.length-1 != index }},{{?}} +{{~}}}{{? data.allHeaders.length}}, headers: headers +{{?}} + +p JSON.parse(result) diff --git a/docs/.widdershins/templates/code_shell.dot b/docs/.widdershins/templates/code_shell.dot new file mode 100644 index 00000000000..99346928085 --- /dev/null +++ b/docs/.widdershins/templates/code_shell.dot @@ -0,0 +1,3 @@ +curl -X {{=data.methodUpper}} {{=data.url}}{{=data.requiredQueryString}}{{?data.allHeaders.length}} \{{?}} +{{~data.allHeaders :p:index}} -H '{{=p.name}}: {{=p.exampleValues.object}}'{{?index < data.allHeaders.length-1}} \{{?}} +{{~}} diff --git a/docs/.widdershins/templates/debug.def b/docs/.widdershins/templates/debug.def new file mode 100644 index 00000000000..04fcf8f761b --- /dev/null +++ b/docs/.widdershins/templates/debug.def @@ -0,0 +1 @@ +{{= data.utils.inspect(data) }} diff --git a/docs/.widdershins/templates/discovery.def b/docs/.widdershins/templates/discovery.def new file mode 100644 index 00000000000..4755a7b8a3d --- /dev/null +++ b/docs/.widdershins/templates/discovery.def @@ -0,0 +1,11 @@ + diff --git a/docs/.widdershins/templates/footer.def b/docs/.widdershins/templates/footer.def new file mode 100644 index 00000000000..139597f9cb0 --- /dev/null +++ b/docs/.widdershins/templates/footer.def @@ -0,0 +1,2 @@ + + diff --git a/docs/.widdershins/templates/links.def b/docs/.widdershins/templates/links.def new file mode 100644 index 00000000000..72426c268e9 --- /dev/null +++ b/docs/.widdershins/templates/links.def @@ -0,0 +1,18 @@ +{{? data.response.links }} + +##### Links + +{{ for (var l in data.response.links) { }} +{{ var link = data.response.links[l]; }} + +**{{=l}}** => {{?link.operationId}}{{=link.operationId}}{{??}}{{=link.operationRef}}{{?}} + +{{? link.parameters }} +|Parameter|Expression| +|---|---| +{{for (var p in link.parameters) { }}|{{=p}}|{{=link.parameters[p]}}|{{ } }} +{{?}} + +{{ } /* of links */ }} + +{{?}} diff --git a/docs/.widdershins/templates/main.dot b/docs/.widdershins/templates/main.dot new file mode 100644 index 00000000000..bae434fd039 --- /dev/null +++ b/docs/.widdershins/templates/main.dot @@ -0,0 +1,109 @@ +{{? data.api.info.description}}{{=data.api.info.description}}{{?}} + +> You are viewing REST API documentation. This documentation is auto-generated from a swagger specification which +itself is generated from annotations in the source code of the project. It is possible that this documentation includes +bugs and that code samples are incomplete or wrong. +> +> If you find issues in the respective documentation, please do not edit the +Markdown files directly (as they are generated) but raise an issue on the project's GitHub presence instead. This documentation +will improve over time with your help! If you have ideas how to improve this part of the documentation, feel free to +share them in a [GitHub issue](https://github.com/ory/docs/issues/new) any time. + +{{? data.api.components && data.api.components.securitySchemes }} +{{#def.security}} +{{?}} + +{{ for (var r in data.resources) { }} +{{ data.resource = data.resources[r]; }} + + +## {{= r}} + +{{? data.resource.description }}{{= data.resource.description}}{{?}} + +{{? data.resource.externalDocs}} +{{=data.resource.externalDocs.description||'External documentation'}} +{{?}} + +{{ for (var m in data.resource.methods) { }} +{{ data.operationUniqueName = m; }} +{{ data.method = data.resource.methods[m]; }} +{{ data.operationUniqueSlug = data.method.slug; }} +{{ data.operation = data.method.operation; }} +{{= data.templates.operation(data) }} +{{ } /* of methods */ }} + +{{ } /* of resources */ }} + +{{? data.api.components && data.api.components.schemas }} +## Schemas + +{{ for (var s in data.components.schemas) { }} +{{ var origSchema = data.components.schemas[s]; }} +{{ var schema = data.api.components.schemas[s]; }} + +{{=s}} +#### {{=s}} + + + +{{? data.options.yaml }} +```yaml +{{=data.utils.yaml.safeDump(data.utils.getSample(schema,data.options,{},data.api))}} +{{??}} +```json +{{=data.utils.safejson(data.utils.getSample(schema,data.options,{},data.api),null,2)}} +{{?}} +``` + +{{ var enums = []; }} +{{ var blocks = data.utils.schemaToArray(origSchema,-1,{trim:true,join:true},data); }} +{{ for (var block of blocks) { + for (var p of block.rows) { + if (p.schema && p.schema.enum) { + for (var e of p.schema.enum) { + enums.push({name:p.name,value:e}); + } + } + } + } +}} + +{{~ blocks :block}} +{{? block.title }}*{{= block.title}}*{{= '\n\n'}}{{?}} +{{? block.externalDocs}} +{{=block.externalDocs.description||'External documentation'}} +{{?}} + +{{? block===blocks[0] }} +#### Properties +{{?}} + +{{? block.rows.length}}|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---|{{?}} +{{~ block.rows :p}}|{{=p.displayName}}|{{=p.safeType}}|{{=p.required}}|{{=p.restrictions||'none'}}|{{=p.description||'none'}}| +{{~}} +{{~}} +{{? (blocks[0].rows.length === 0) && (blocks.length === 1) }} +*None* +{{?}} + +{{? enums.length > 0 }} +##### Enumerated Values + +|Property|Value| +|---|---| +{{~ enums :e}}|{{=e.name}}|{{=data.utils.toPrimitive(e.value)}}| +{{~}} + +{{?}} + +{{ } /* of schemas */ }} + +{{?}} + +{{#def.footer}} + +{{? data.options.discovery}} +{{#def.discovery}} +{{?}} diff --git a/docs/.widdershins/templates/operation.dot b/docs/.widdershins/templates/operation.dot new file mode 100644 index 00000000000..32ad3d3cf51 --- /dev/null +++ b/docs/.widdershins/templates/operation.dot @@ -0,0 +1,194 @@ + +{{? data.operation.operationId}} + +{{?}} + +{{ data.methodUpper = data.method.verb.toUpperCase(); }} +{{ data.url = data.utils.slashes(data.baseUrl + data.method.path); }} +{{ data.parameters = data.operation.parameters; }} +{{ data.enums = []; }} +{{ data.utils.fakeProdCons(data); }} +{{ data.utils.fakeBodyParameter(data); }} +{{ data.utils.mergePathParameters(data); }} +{{ data.utils.getParameters(data); }} + +### {{= data.operationUniqueName}} + +``` +{{=data.methodUpper}} {{=data.url}}{{=data.requiredQueryString}} HTTP/1.1{{? data.host}} +Host: {{=data.host}}{{?}}{{?data.consumes.length}} +Content-Type: {{=data.consumes[0]}}{{?}}{{?data.produces.length}} +Accept: {{=data.produces[0]}}{{?}} +{{?data.headerParameters.length}}{{~ data.headerParameters :p:index}}{{=p.name}}: {{=p.exampleValues.object}} +{{~}} +{{?}} +``` + +{{? data.operation.summary && !data.options.tocSummary}}*{{= data.operation.summary }}*{{?}} + +{{? data.operation.description}}{{= data.operation.description }}{{?}} + +{{? data.operation.requestBody}} +#### Request body + +{{? data.bodyParameter.exampleValues.description }} +##### {{= data.bodyParameter.exampleValues.description }} +{{?}} + +{{= data.utils.getBodyParameterExamples(data) }} +{{?}} + +{{? data.parameters && data.parameters.length }} +{{#def.parameters}} +{{?}} + +{{#def.responses}} + +{{#def.callbacks}} + +{{ data.security = data.operation.security ? data.operation.security : data.api.security; }} +{{? data.security && data.security.length }} +{{#def.authentication}} +{{??}} +{{#def.authentication_none}} +{{?}} + +{{? data.options.codeSamples || data.operation["x-code-samples"] }} +#### Code samples + +
+ +
+
+ +```shell +curl -X {{=data.methodUpper}} {{=data.url}}{{=data.requiredQueryString}}{{?data.allHeaders.length}} \{{?}} +{{~data.allHeaders :p:index}} -H '{{=p.name}}: {{=p.exampleValues.object}}'{{?index < data.allHeaders.length-1}} \{{?}}{{~}} +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() {{{?data.allHeaders.length}} + headers := map[string][]string{ {{~data.allHeaders :p:index}} + "{{=p.name}}": []string{"{{=p.exampleValues.object}}"},{{~}} + }{{?}} + + var body []byte + // body = ... + + req, err := http.NewRequest("{{=data.methodUpper}}", "{{=data.url}}", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); +{{?data.bodyParameter.present}}const input = '{{=data.bodyParameter.exampleValues.json}}';{{?}} +{{?data.allHeaders.length}}const headers = { +{{~data.allHeaders :p:index}} '{{=p.name}}': {{=p.exampleValues.json}}{{?index < data.allHeaders.length-1}},{{?}}{{~}} +} +{{?}} +fetch('{{=data.url}}{{=data.requiredQueryString}}', { + method: '{{=data.methodUpper}}'{{?data.bodyParameter.present || data.allHeaders.length}},{{?}}{{?data.bodyParameter.present}} + body: input{{?}}{{? data.bodyParameter.present && data.allHeaders.length}},{{?}}{{?data.allHeaders.length}} + headers{{?}} +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("{{=data.url}}{{=data.requiredQueryString}}"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("{{=data.methodUpper}}"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +{{?data.allHeaders.length}}headers = { +{{~data.allHeaders :p:index}} '{{=p.name}}': {{=p.exampleValues.json}}{{?index < data.allHeaders.length-1}},{{?}} +{{~}}} +{{?}} +r = requests.{{=data.method.verb}}( + '{{=data.url}}', + params={{{~ data.requiredParameters :p:index}} + '{{=p.name}}': {{=p.exampleValues.json}}{{? data.requiredParameters.length-1 != index }},{{?}}{{~}}{{?data.allHeaders.length}}}, + headers = headers{{?}}) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +{{?data.allHeaders.length}}headers = { +{{~data.allHeaders :p:index}} '{{=p.name}}' => {{=p.exampleValues.json}}{{?index < data.allHeaders.length-1}},{{?}} +{{~}}}{{?}} + +result = RestClient.{{=data.method.verb}} '{{=data.url}}', + params: {{{~ data.requiredParameters :p:index}} + '{{=p.name}}' => '{{=p.safeType}}'{{? data.requiredParameters.length-1 != index }},{{?}}{{~}}}{{? data.allHeaders.length}}, headers: headers +{{?}} + +p JSON.parse(result) +``` + +
+
+
+{{?}} diff --git a/docs/.widdershins/templates/parameters.def b/docs/.widdershins/templates/parameters.def new file mode 100644 index 00000000000..4bb8cd770b1 --- /dev/null +++ b/docs/.widdershins/templates/parameters.def @@ -0,0 +1,39 @@ + +##### Parameters + +|Parameter|In|Type|Required|Description| +|---|---|---|---|---| +{{~ data.parameters :p}}|{{=p.name}}|{{=p.in}}|{{=p.safeType}}|{{=p.required}}|{{=p.shortDesc || 'none'}}| +{{~}} + +{{? data.longDescs }} +##### Detailed descriptions +{{~ data.parameters :p}}{{? p.shortDesc !== p.description}} +**{{=p.name}}**: {{=p.description}}{{?}} +{{~}} +{{?}} + +{{~ data.parameters :p}} + +{{? p.schema && p.schema.enum }} +{{~ p.schema.enum :e}} +{{ var entry = {}; entry.name = p.name; entry.value = e; data.enums.push(entry); }} +{{~}} +{{?}} + +{{? p.schema && p.schema.items && p.schema.items.enum }} +{{~ p.schema.items.enum :e}} +{{ var entry = {}; entry.name = p.name; entry.value = e; data.enums.push(entry); }} +{{~}} +{{?}} + +{{~}} + +{{? data.enums && data.enums.length }} +##### Enumerated Values + +|Parameter|Value| +|---|---| +{{~ data.enums :e}}|{{=e.name}}|{{=data.utils.toPrimitive(e.value)}}| +{{~}} +{{?}} diff --git a/docs/.widdershins/templates/responses.def b/docs/.widdershins/templates/responses.def new file mode 100644 index 00000000000..a073e24dc80 --- /dev/null +++ b/docs/.widdershins/templates/responses.def @@ -0,0 +1,92 @@ +{{ data.responses = data.utils.getResponses(data); }} +{{ data.responseSchemas = false; }} +{{~ data.responses :response }} +{{ if (response.content) data.responseSchemas = true; }} +{{~}} + +#### Responses + + +##### Overview + +|Status|Meaning|Description|Schema| +|---|---|---|---| +{{~ data.responses :r}}|{{=r.status}}|{{=r.meaning}}|{{=r.description || 'none'}}|{{=r.schema}}| +{{~}} + +{{ data.responseSchemas = false; }} +{{~ data.responses :response }} +{{ if (response.content && !response.$ref && !data.utils.isPrimitive(response.type)) data.responseSchemas = true; }} +{{~}} +{{? data.responseSchemas }} + +##### Response Schema +{{~ data.responses :response}} +{{? response.content && !response.$ref && !data.utils.isPrimitive(response.type)}} +{{ var responseKey = Object.keys(response.content)[0]; }} +{{ var responseSchema = response.content[responseKey].schema; }} +{{ var enums = []; }} +{{ var blocks = data.utils.schemaToArray(responseSchema,0,{trim:true,join:true},data); }} +{{ for (var block of blocks) { + for (var p of block.rows) { + if (p.schema && p.schema.enum) { + for (var e of p.schema.enum) { + enums.push({name:p.name,value:e}); + } + } + } + } +}} + +{{? blocks[0].rows.length || blocks[0].title }} +Status Code **{{=response.status}}** + +{{~ blocks :block}} +{{? block.title }}*{{=block.title}}* +{{?}} +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +{{~block.rows :p}}|{{=p.displayName}}|{{=p.safeType}}|{{=p.required}}|{{=p.restrictions||'none'}}|{{=p.description||'none'}}| +{{~}} +{{~}} +{{?}} + +{{? enums.length > 0 }} +###### Enumerated Values + +|Property|Value| +|---|---| +{{~ enums :e}}|{{=e.name}}|{{=data.utils.toPrimitive(e.value)}}| +{{~}} + +{{?}} + +{{ data.response = response; }} +{{#def.links}} + +{{?}} +{{~}} +{{?}} + +{{ data.responseHeaders = data.utils.getResponseHeaders(data); }} +{{? data.responseHeaders.length }} + +##### Response Headers + +|Status|Header|Type|Format|Description| +|---|---|---|---|---| +{{~ data.responseHeaders :h}}|{{=h.status}}|{{=h.header}}|{{=h.type}}|{{=h.format||''}}|{{=h.description||'none'}}| +{{~}} + +{{?}} + +{{ data.responseSchemas = false; }} +{{~ data.responses :response }} +{{ if (response.content) data.responseSchemas = true; }} +{{~}} + +{{? data.responseSchemas }} +##### Examples + +{{= data.utils.getResponseExamples(data) }} +{{?}} diff --git a/docs/.widdershins/templates/security.def b/docs/.widdershins/templates/security.def new file mode 100644 index 00000000000..f3e330d83f1 --- /dev/null +++ b/docs/.widdershins/templates/security.def @@ -0,0 +1,16 @@ +## Authentication + +{{ for (var s in data.api.components.securitySchemes) { }}{{ var sd = data.api.components.securitySchemes[s]; }}{{? sd.type == 'apiKey' }} +* API Key ({{=s}}) + - Parameter Name: **{{=sd.name}}**, in: {{=sd.in}}. {{=sd.description || ''}}{{?}}{{? sd.type == 'http'}} +- HTTP Authentication, scheme: {{=sd.scheme}} {{=sd.description || ''}}{{?}}{{? sd.type == 'oauth2'}} +- OAuth 2.0 Authorization. {{=sd.description || ''}} + {{ for (var f in sd.flows) { }}{{ var flow = sd.flows[f]; }}- Flow: {{=f}}{{? flow.authorizationUrl}} + - OAuth 2.0 Authorization URL = [{{=flow.authorizationUrl}}]({{=flow.authorizationUrl}}){{?}}{{? flow.tokenUrl}} + - OAuth 2.0 Token URL = [{{=flow.tokenUrl}}]({{=flow.tokenUrl}}){{?}}{{? flow.scopes}} + - OAuth 2.0 Scope + + |Scope|Scope Description| + |---|---| + {{ for (var sc in flow.scopes) { }}|{{=sc}}|{{=data.utils.join(flow.scopes[sc])}}| + {{ } /* of scopes */ }}{{?}}{{ } /* of flows */ }}{{?}}{{ } /* of securitySchemes */ }} \ No newline at end of file diff --git a/docs/.widdershins/templates/translations.dot b/docs/.widdershins/templates/translations.dot new file mode 100644 index 00000000000..fe07658ce4b --- /dev/null +++ b/docs/.widdershins/templates/translations.dot @@ -0,0 +1,16 @@ +{{ +data.translations.defaultTag = 'Default'; +data.translations.response = 'Response'; +data.translations.responseDefault = 'Default'; +data.translations.responseUnknown = 'Unknown'; +data.translations.schemaInline = 'Inline'; +data.translations.schemaNone = 'None'; +data.translations.externalDocs = 'External documentation'; +data.translations.secDefNone = 'None'; +data.translations.secDefScopes = 'Scopes'; +data.translations.anonymous = 'anonymous'; +data.translations.continued = 'continued'; +data.translations.indent = 'ยป'; +data.translations.readOnly = 'read-only'; +data.translations.writeOnly = 'write-only'; +}} diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000000..9e7a27bf134 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,75 @@ +# Documentation + +This directory contains the project's documentation. + +## Develop + +To change the documentation locally, you need NodeJS installed. +Next, install the dependencies: + +``` +$ npm +``` + +### Develop + +``` +$ npm start +``` + +This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server. + +### Build + +``` +$ npm build +``` + +This command generates static content into the `build` directory and can be served using any static contents hosting service. + +## Create Documentation + +To create a new documentation for a new or existing project, copy the contents (without `node_modules`) +into the project's `./docs` directory. Next you need to create these files (relative to the project's root directory) +directory: + +```js +// ./docs/config.js +// +// This file contains the project's name and slug and tag line, for example: +module.exports = { + projectName: 'ORY Keto', + projectSlug: 'keto', + projectTagLine: 'A cloud native access control server providing best-practice patterns (RBAC, ABAC, ACL, AWS IAM Policies, Kubernetes Roles, ...) via REST APIs.', + updateTags: [ + { + image: 'oryd/keto', + files: ['docs/docs/configure-deploy.md'] + } + ], + updateConfig: { + src: '.schema/config.schema.json', + dst: './docs/docs/reference/configuration.md' + } +}; +``` + +```js +// ./docs/sidebar.js +// +// This represents the sidebar navigation, for example: +module.exports = { + Introduction: [ + "index", + "install", + ], +}; +``` + +``` +// ./docs/src/css/theme.css +// empty file is ok +``` + +Next, put your markdown files in `./docs/docs`. You may also want to add the CircleCI Orb `ory/docs` to your CI config, +depending on the project type. diff --git a/docs/config.js b/docs/config.js new file mode 100644 index 00000000000..ebb19c5ba6a --- /dev/null +++ b/docs/config.js @@ -0,0 +1,15 @@ +module.exports = { + projectName: 'ORY Kratos', + projectSlug: 'kratos', + projectTagLine: 'Never build user login, user registration, 2fa, profile management ever again! Works on any operating system, cloud, with any programming language, user interface, and user experience! Written in Go.', + updateTags: [ + { + image: 'oryd/kratos', + files: ['docs/docs/quickstart.mdx'] + } + ], + updateConfig: { + src: '.schema/config.schema.json', + dst: './docs/docs/reference/configuration.md' + } +}; diff --git a/docs/contrib/config.js b/docs/contrib/config.js new file mode 100644 index 00000000000..025c5e84545 --- /dev/null +++ b/docs/contrib/config.js @@ -0,0 +1,25 @@ +const fs = require('fs'); +const path = require('path'); + +let config = { + projectName: 'ORY Template', + projectSlug: 'docusaurus-template', + projectTagLine: 'Stubbydi dab dub dadada', + updateTags: [ + { + image: 'oryd/docusaurus-template', + files: ['docs/docs/configure-deploy.md'], + }, + ], + updateConfig: { + src: '.schema/config.schema.json', + dst: './docs/docs/reference/configuration.md', + }, +}; + +const cn = path.join(__dirname, '..', 'config.js'); +if (fs.existsSync(cn)) { + config = require(cn); +} + +module.exports = config; diff --git a/docs/contrib/docs/index.md b/docs/contrib/docs/index.md new file mode 100644 index 00000000000..154c3c28792 --- /dev/null +++ b/docs/contrib/docs/index.md @@ -0,0 +1,5 @@ +--- +id: index +title: Docusaurus Project Template +sidebar_label: Template +--- diff --git a/docs/contrib/sidebar.js b/docs/contrib/sidebar.js new file mode 100644 index 00000000000..3ac05836f48 --- /dev/null +++ b/docs/contrib/sidebar.js @@ -0,0 +1,55 @@ +const config = require('./config.js'); +const fs = require('fs'); +const path = require('path'); + +const projects = [ + { + slug: 'kratos', + name: 'ORY Kratos', + }, + { + slug: 'hydra', + name: 'ORY Hydra', + }, + { + slug: 'oathkeeper', + name: 'ORY Oathkeeper', + }, + { + slug: 'Keto', + name: 'ORY Keto', + }, +].filter((item) => config.projectSlug !== item.slug); + +let sidebar = { + Welcome: ['index'], +}; + +const cn = path.join(__dirname, '..', 'sidebar.js'); +if (fs.existsSync(cn)) { + sidebar = require(cn); +} + +projects.forEach((item) => { + sidebar[item.name] = [ + { + type: 'link', + label: 'Home', + href: `https://www.ory.sh/${item.slug}`, + }, + { + type: 'link', + label: 'Docs', + href: `https://www.ory.sh/${item.slug}/docs`, + }, + { + type: 'link', + label: 'GitHub', + href: `https://github.com/ory/${item.slug}`, + }, + ]; +}); + +module.exports = { + docs: sidebar, +}; diff --git a/docs/contrib/theme.css b/docs/contrib/theme.css new file mode 100644 index 00000000000..46b15735b5e --- /dev/null +++ b/docs/contrib/theme.css @@ -0,0 +1,3 @@ +:root { + --ifm-color-primary: #6274f3; +} diff --git a/docs/docs/.gitkeep b/docs/docs/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/docs/docs/concepts/credentials.md b/docs/docs/concepts/credentials.md new file mode 100644 index 00000000000..bf64e766805 --- /dev/null +++ b/docs/docs/concepts/credentials.md @@ -0,0 +1,487 @@ +--- +id: credentials +title: Credentials +--- + +Each identity has one or more credentials associated with it: + +```yaml +credentials: + password: + id: password + identifiers: + - john.doe@acme.com + - johnd@ory.sh + config: + hashed_password: ... + oidc: + id: oidc + identifiers: + - google:j8kf7a3... + - facebook:83475891... + config: + - provider: google + identifier: j8kf7a3 + - provider: facebook + identifier: 83475891 +``` + +ORY Kratos supports several credential types: + +- `password`: The most common _identifier (username, email, ...) + password_ + credential. +- `oidc`: The "Log in with Google/Facebook/GitHub/..." credential. +- Other credentials - support other credential types (X509 Certificates, + Biometrics, ...) at will be added a later stage. + +Each credential - regardless of its type - has one or more identifiers attached +to it. Each identifier is universally unique. Assuming we had one identity with +credentials + +```yaml +credentials: + password: + id: password + identifiers: + - john.doe@acme.com +``` + +and tried to create (or update) another identity with the same identifier +(`john.doe@acme.com`), the system would reject the request with a 409 Conflict +state. + +While credentials must be unique per type, the can be duplicates amongst +multiple types: + +```yaml +# This is ok: +credentials: + password: + id: password + identifiers: + - john.doe@acme.com + oidc: + id: oidc + identifiers: + - john.doe@acme.com +``` + +The same would apply if those were two separate identities: + +```yaml +# Identity 1 +credentials: + password: + id: password + identifiers: + - john.doe@acme.com +--- +# Identity 2 +credentials: + oidc: + id: oidc + identifiers: + - john.doe@acme.com +``` + +## Username and Password + +The `password` method is the most commonly used form of authentication, it +requires an `identifier` (username, email, phone number, ...) and a `password` +during registration and login. + +ORY Kratos hashes the password after registration, password reset, and password +change using [Argon2](https://github.com/P-H-C/phc-winner-argon2), the winner of +the Password Hashing Competition (PHC). + +### Configuration + +Enabling this method is as easy as setting + +```yaml +selfservice: + strategies: + password: + enabled: true +``` + +in your ORY Kratos configuration. You can configure the Argon2 hasher using the +following options: + +```yaml +hashers: + argon2: + parallelism: 1 + memory: 131072 # 128MB + iterations: 3 + salt_length: 16 + key_length: 32 +``` + +For a complete reference, defaults, and description please check the +[Configuration Reference](../reference/configuration.md). + +For a better understanding of security implications imposed by Argon2 +Configuration, head over to [Argon2 Security](./security.md#argon2). + +### JSON Schema + +When processing an identity and its traits, the method will use the JSON Schema +to extract one or more identifiers. Assuming you want your identities to sign up +with an email address, and use that email address as a valid identifier during +login, you can use a schema along the lines of: + +```json +{ + "$id": "https://example.com/example.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Person", + "type": "object", + "properties": { + "email": { + "type": "string", + "format": "email", + "title": "E-Mail", + "ory.sh/kratos": { + "credentials": { + "password": { + "identifier": true + } + } + } + } + } +} +``` + +If you want a unique username instead, you could write the schema as follows: + +```json +{ + "$id": "https://example.com/example.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Person", + "type": "object", + "properties": { + "username": { + "type": "string", + "title": "Username", + "ory.sh/kratos": { + "credentials": { + "password": { + "identifier": true + } + } + } + } + } +} +``` + +You are not limited to one identifier per identity. You could also combine both +fields and support a use case of "username" and "email" as an identifier for +login: + +```json +{ + "$id": "https://example.com/example.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Person", + "type": "object", + "properties": { + "email": { + "type": "string", + "format": "email", + "title": "E-Mail", + "ory.sh/kratos": { + "credentials": { + "password": { + "identifier": true + } + } + } + }, + "username": { + "type": "string", + "title": "Username", + "ory.sh/kratos": { + "credentials": { + "password": { + "identifier": true + } + } + } + } + } +} +``` + +### Example + +Assuming your traits schema is as follows: + +```json +{ + "$id": "https://example.com/example.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Person", + "type": "object", + "properties": { + "first_name": { + "type": "string" + }, + "email": { + "type": "string", + "format": "email", + "ory.sh/kratos": { + "credentials": { + "password": { + "identifier": true + } + } + } + }, + "username": { + "type": "string", + "ory.sh/kratos": { + "credentials": { + "password": { + "identifier": true + } + } + } + } + }, + "additionalProperties": false +} +``` + +And an identity registers with the following JSON payload (more on registration +in +[Selfservice Registration](../self-service/flows/user-login-user-registration.md)): + +```json +{ + "traits": { + "first_name": "John Doe", + "email": "john.doe@example.org", + "username": "johndoe123" + }, + "password": "my-secret-password" +} +``` + +The `password` method would generate a credentials block as follows: + +```yaml +credentials: + password: + id: password + identifiers: + - john.doe@example.org + - johndoe123 + config: + hashed_password: ... # this would be `argon2(my-secret-password)` +``` + +Because credential identifiers need to be unique, no other identity can be +created that has `johndoe123` or `john.doe@example.org` as their `email` or +`username`. + +## Social Sign In / OpenID Connect / OAuth2 + +The `oidc` method uses OpenID Connect, or OAuth2 where OpenID Connect is not +supported, to authenticate identities using a third-party identity provider, +such as Google, Microsoft, GitHub - or any other OAuth2 / OpenID Connect +provider (for example [ORY Hydra](https://www.ory.sh/hydra)). + +### Configuration + +You can configure multiple OAuth2 / OpenID Connect providers. First, enable the +`oidc` method: + +```yaml +selfservice: + strategies: + oidc: + enabled: true +``` + +Next, you need to configure the providers you want to use (e.g. GitHub). Each +provider requires: + +```yaml +id: github # The ID of the provider. DO NOT change this once this is in use. + +# The provider you would like to use. ORY Kratos comes with some predefined providers to make +# life easier for you, but you can always opt for the "generic" provider, which works +# with any Certified OpenID Connect Provider (Google, ORY Hydra, ...): +provider: generic + +# Other supported providers are (more to come): +# +# provider: github +# provider: google + +# The OAuth2 / OpenID Connect provider will provide you with a OAuth2 Client ID and Client Secret. You need +# to set them here: +client_id: ... +client_secret: ... + +schema_url: http://mydomain.com/github.schema.json # See section "Schema" + +# What scope to request. Usually, this would be something like "profile" or "email". +# Please check the documentation of the OAuth2 / OpenID Connect provider to see what's allowed here. +scope: + - email + +# issuer_url is the OpenID Connect Server URL. You can leave this empty if `provider` is not set to `generic`. +# If set, neither `auth_url` nor `token_url` are required. +issuer_url: http://openid-connect-provider/ + +# auth_url is the authorize url, typically something like: https://example.org/oauth2/auth +# Should only be used when the OAuth2 / OpenID Connect server is not supporting OpenID Connect Discovery and when +# `provider` is set to `generic`. +auth_url: http://openid-connect-provider/oauth2/auth + +# token_url is the token url, typically something like: https://example.org/oauth2/token +# Should only be used when the OAuth2 / OpenID Connect server is not supporting OpenID Connect Discovery and when +# `provider` is set to `generic`. +token_url: http://openid-connect-provider/oauth2/token +``` + +### JSON Schema + +This strategy expects that you've set up your default JSON Schema for identity +traits. There are no extra settings for that. + +You do however need to set up an additional JSON Schema for your provider. This +is required because we need to transform profile data coming from, for example +GitHub, to your identity model. + +Defining that JSON Schema also allows you to require certain information. If you +ask the user to authorize the `photos` scope for example, you can configure the +JSON Schema in such a way that `photos` must be part of the identity data or the +flow will fail. + +You will also need to project data coming from the provider onto your own data +model. You can express this using a JSON Path +([learn more about the syntax](../reference/json-schema-json-paths.md)) in your +JSON Schema. Let's assume you want to map field `username` from the provider to +field `traits.name` in your identity: + +```yaml +{ + '$id': 'https://example.com/social.schema.json', + '$schema': 'http://json-schema.org/draft-07/schema#', + 'type': 'object', + 'properties': + { + 'username': + { + 'type': 'string', + 'ory.sh/kratos': + { 'mappings': { 'identity': { 'traits': [{ 'path': 'name' }] } } }, + }, + }, + 'required': ['username'], +} +``` + +If the OpenID Connect provider returns + +```json +{ + "sub": "123123123", + "username": "john.doe" +} +``` + +for example (`sub` is the OpenID Connect field for the identity's ID), that +would be transformed to identity: + +```yaml +id: '9f425a8d-7efc-4768-8f23-7647a74fdf13' + +credentials: + oidc: + id: oidc + identifiers: + - example:123123123 + config: + - provider: example + identifier: 123123123 + +traits_schema_url: http://foo.bar.com/person.schema.json # This come from the default identity schema url. + +traits: + name: john.doe # This is extracted from `username` using +``` + +### Example: Sign in with GitHub + +Let's say you want to enable "Sign in with GitHub". All you have to do is: + +- Create a + [GitHub OAuth2 Client](https://developer.github.com/apps/building-oauth-apps/creating-an-oauth-app/) +- Set the "Authorization callback URL" to: + `http://:/auth/browser/methods/oidc/callback/` + +```yaml +selfservice: + strategies: + oidc: + enabled: true + config: + providers: + - id: github # this is `` in the Authorization callback URL + provider: github + client_id: .... # Replace this with the OAuth2 Client ID provided by GitHub + client_secret: .... # Replace this with the OAuth2 Client Secret provided by GitHub + schema_url: http://mydomain.com/github.schema.json # See section "Schema" + scope: + - user:email +``` + +The following schema would take `email_primary` and `username` and map them into +your identity model to `traits.email` and `traits.name`: + +```json +{ + "$id": "http://mydomain.com/github.schema.json ", + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "email_primary": { + "type": "string", + "ory.sh/kratos": { + "mappings": { + "identity": { + "traits": [ + { + "path": "email" + } + ] + } + } + } + }, + "username": { + "type": "string", + "ory.sh/kratos": { + "mappings": { + "identity": { + "traits": [ + { + "path": "name" + } + ] + } + } + } + } + } +} +``` + +More examples will soon follow. diff --git a/docs/docs/concepts/email-sms.md b/docs/docs/concepts/email-sms.md new file mode 100644 index 00000000000..d431e0c8e62 --- /dev/null +++ b/docs/docs/concepts/email-sms.md @@ -0,0 +1,36 @@ +--- +id: email-sms +title: Out-of-band communication via E-Mail and SMS +--- + +ORY Kratos sends out-of-band messages via SMS or E-Mail. These messages are +required for The following exemplary use cases require these messages: + +- Send an account activation email +- Verify an E-Mail address or mobile phone number using SMS +- Preventing Account Enumeration Attacks +- Sending a 2FA Codes +- ... + +## Sending E-Mails via SMTP + +To have E-Mail delivery running with ORY Kratos requires an SMTP server. This is +set up in the configuration file using an absolute URL with the `smtp` schema: + +```yaml +courier: + smtp: + connection_uri: smtp://test:test@my-smtp-server:1025/ +``` + +### Templates + +A future version of ORY Kratos will feature proprietary E-Mail messages using +the Go template engine extended by +[sprig's template functions](http://masterminds.github.io/sprig/). It should +also be possible to internationalize these templates. + +## Sending SMS + +The Sending SMS feature is not supported at present. It will be available in a +future version of ORY Kratos. diff --git a/docs/docs/concepts/federation.md b/docs/docs/concepts/federation.md new file mode 100644 index 00000000000..2f3eab99955 --- /dev/null +++ b/docs/docs/concepts/federation.md @@ -0,0 +1,14 @@ +--- +id: federation +title: Federation +--- + +ORY Kratos does not support federation features itself, but it integrates with +projects like [ORY Hydra](https://www.ory.sh/hydra) that implement federation +protocols. + +## Becoming an OAuth2 and OpenID Connect Provider + +Future releases of ORY Kratos will integrate with +[ORY Hydra](https://www.ory.sh/hydra) natively to support OAuth2 and OpenID +Connect use cases. diff --git a/docs/docs/concepts/identity-user-model.md b/docs/docs/concepts/identity-user-model.md new file mode 100644 index 00000000000..5c1dbf0780c --- /dev/null +++ b/docs/docs/concepts/identity-user-model.md @@ -0,0 +1,261 @@ +--- +id: identity-user-model +title: Identity and User Model +--- + +An identity ("user", "user account", "account", "subject") is the "who" of a +software system. It can be a customer, an employee, a user, a contractor, and +even a programmatic identity such as an IoT device, an application, or some +other type of "robot." + +Identities take different roles sometimes for instance called "Account Recovery" +or "User Account" since these are commonly used terms. In ORY Kratos an identity +is always called an "Identity," and it always exposed as `identity` in the API +Endpoints, request and response payloads. + +The following examples uses YAML for improved readability. However the API +payload is usually in JSON format. An `identity has the following properties: + +```yaml +# A universally unique ID that is generated when the identity is created and that cannot be changed or updated +# at a later stage. +id: '9f425a8d-7efc-4768-8f23-7647a74fdf13' + +# This section represents all the credentials associated with this identity. It is further explained in section "Credentials". +credentials: + password: + id: password + identifiers: + - john.doe@acme.com + - johnd@ory.sh + config: + hashed_password: ... + oidc: + id: oidc + identifiers: + - google:j8kf7a3... + - facebook:83475891... + config: + - provider: google + identifier: j8kf7a3 + - provider: facebook + identifier: 83475891 + +# This is the JSON Schema ID used for validating the identities's traits. +traits_schema_id: default +# Could also be another schema: +# traits_schema_id: customer + +# Traits represent information about the identity, such as the first or last name. The traits content is completely +# up to you and will be validated using the JSON Schema at `traits_schema_url`. +traits: + # These are just examples + email: office@ory.sh + name: + first: Aeneas + last: Rekkas + favorite_animal: Dog + accepted_tos: true +``` + +## Identity Traits and JSON Schemas + +An identity may have one or more traits. Traits can be modified by the identity +itself e.g. as part of the registration or profile update process as well as +anyone having access to ORY Krato's Admin API. + +Traits tell ORY Kratos that a field has a particular meaning. For example, trait +`email` is a good candidate for the field "Email + Password" for signing up or +logging in. + +To validate traits Ory Kratos uses +[JSON Schema](https://json-schema.org/learn/getting-started-step-by-step.html) +adding a small extension "Vocabulary" that allows you to tell ORY Kratos that a +specific trait adds some specific meaning to the standard JSON Schema . + +Each identity can, theoretically, have a different Traits Schema. This is useful +in the following situations: + +- there is more than one type of identity in the system for instance customers, + support or staff; +- the system includes both users and robots sometimes also known as named + service accounts; +- the system needs to ingest another company's identity model, and +- the system's identity model changes or grows over time and requires + versioning. + +The following example illustrates a usage scenario with three types of +identities: Regular customers, +[grandfather accounts](https://en.wikipedia.org/wiki/Grandfather_clause), and +Service Accounts (Microsoft provides +[Service Accounts](https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/service-accounts)). +There would be one JSON Schema per type of identity: + +- Customers: `http://mydomain.com/schemas/v1/customer.schema.json` +- Grandfather Accounts: `http://mydomain.com/schemas/v2/customer.schema.json` +- Service Accounts: `http://mydomain.com/schemas/service-account.schema.json` + +ORY Kratos expects the JSON Schemas in its configuration file: + +```yaml +identity: + traits: + # This will be the default JSON Schema. If `traits_schema_id` is empty when creating an identity using the + # Admin API, or a user signs up using a selfservice flow, this schema will be used. + # + # This is a required configuration field! + default_schema_url: http://foo.bar.com/person.schema.json + + # Optionally define additional schemas here: + schemas: + # When creating an identity that uses this schema, `traits_schema_id: customer` would be set for that identity. + - id: customer + url: http://foo.bar.com/customer.schema.json +``` + +ORY Kratos enforces each of these schemas when at an identity's creation or +update. The employed business logic must be able to distingush between these +three identities. The switch statement is used in this case. For example: + +```go +// This is an example program that can deal with all three identities +// session := ... +switch (session.Identity.TraitsSchemaURL) { + case "customer": + // ... + case "employee": + // ... + case "default": + fallthrough + default: + // ... +} +``` + +## JSON Schema Vocabulary Extensions + +As already explained, traits tell ORY Kratos that a particular field has a +system-relevant meaning. That would for example include: + +- The email address for recovering a lost password +- The identifier for logging in e.g. username and password or email and password +- The phone number for enabling SMS 2FA +- ... + +ORY Kratos' JSON Schema Vocabulary Extension can be used within a property: + +```json5 +{ + $id: 'http://mydomain.com/schemas/v2/customer.schema.json', + $schema: 'http://json-schema.org/draft-07/schema#', + title: 'A customer (v2)', + type: 'object', + properties: { + email: { + title: 'E-Mail', + type: 'string', + format: 'email', + + // This tells ORY Kratos that the field should be used as the "username" for the username+password flow. + // It is an extension to the regular JSON Schema vocabulary. + 'ory.sh/kratos': { + credentials: { + password: { + identifier: true, + }, + }, + }, + }, + }, +} +``` + +An overview of available configuration options follows in the next sections. + +### Identifier for Username and Password Flows + +ORY Kratos can set specific fields to be used as the _identifier_ e.g. username, +email, phone number, etc., in the Username and Password Registration and Login +Flow: + +```json5 +{ + 'ory.sh/kratos': { + credentials: { + password: { + identifier: true, + }, + }, + }, +} +``` + +Looking at the traits from above + +```yaml +traits: + # These are just examples + email: office@ory.sh + name: + first: Aeneas + last: Rekkas + favorite_animal: Dog + accepted_tos: true +``` + +and using a JSON Schema that uses the `email` field as the identifier for the +password flow + +```json5 +{ + $id: 'http://mydomain.com/schemas/v2/customer.schema.json', + $schema: 'http://json-schema.org/draft-07/schema#', + title: 'A customer (v2)', + type: 'object', + properties: { + email: { + title: 'E-Mail', + type: 'string', + format: 'email', + + // This tells ORY Kratos that the field should be used as the "username" for the Username and Password Flow. + 'ory.sh/kratos': { + credentials: { + password: { + identifier: true, + }, + }, + }, + }, + name: { + type: 'object', + properties: { + first: { + type: 'string', + }, + last: { + type: 'string', + }, + }, + }, + favorite_animal: { + type: 'string', + }, + accepted_tos: { + type: 'string', + }, + }, + required: ['email'], + additionalProperties: false, +} +``` + +In this example, ORY Kratos understands that traits:email: `office@ory.sh` is +the identity's identifier. The system expects `office@ory.sh` plus a password to +sign in. + +[Username and Password Credentials](credentials.md#username-and-password) +contains more information and examples. + +There are currently no other extensions supported for Identity Traits. Further +fields will be added in future releases! diff --git a/docs/docs/concepts/index.md b/docs/docs/concepts/index.md new file mode 100644 index 00000000000..1e5966fe49d --- /dev/null +++ b/docs/docs/concepts/index.md @@ -0,0 +1,275 @@ +--- +id: index +title: Overview +--- + +ORY Kratos is a new software archetype **Identity Infrastructure Service**. +Traditional identity systems - sometimes referred to as Identity and Access +Management (IAM), Identity Management (IdM), Identity Provider (I(d)P), or IDaaS +(Identity as a Service) - have shortcomings that highlight the main differences +betweeen ORY Kratos and other systems. + +ORY Kratos solves identity on the network. It is not a on-device, for instance +mobile phones, user database. In Ory Kratos there is always an exchange of +credentials. In the case of web applications and identity: + +- Username + Password -> Cookie, Token, ... +- Email + Password -> Cookie, Token, ... +- Passwordless login -> Cookie, Token, ... + +Even for alternative use cases for example mobile, browser, or native +application there is either a cookie, which accesses the application directly +through the browser, or a token that accesses the application using a +programmatic client via an API. While it is nowadays common - but bad practice - +to use tokens for "Single Page Apps" or apps running on the client-side browser, +there is no real difference between these two approaches as both represent a set +of credentials valid for a certain domain or a number of domains. + +Still there is a vast solution set available for OAuth2 and OpenID Connect. The +reasons for this would perhaps include the following: + +- Assumptions - companies offer complexity as security (In Ory's view pretty + bad); +- Assumption - the nature of closed source does not allow for new, open and + de-facto standards to emerge and instead uses a consenus driven feature set, + even if it doesn't fit the use case 100%. + +ORY Kratos tackles both assumptions as follows: + +- With inspiration from the approach taken in the Kubernetes Project, Ory + provides an open source project that hopefully becomes an open standard in the + future. + +- Prioritise simplicity and ease of use for developers. Ory Kratos integrates + critical security components without relying on complex flows and protocols. + +Using Ory Kratos it is possible to consume OAuth2 and OpenID Connect, and/or +create an OAuth2 and OpenID Connect Provider by combining ORY Kratos with +[ORY Hydra](http://github.com/ory/hydra) . + +With a primary developer audience, Ory designs, secures, and tests critical +network flows, system architectures, user flows, protocols, and business logic. + +### Full-stack Identity and Access Management (IAM) + +_Disclaimer: There are neither product nor project names in this section. This +section's goal is to describe circumstances and problems that mostly stem from +the community's experience. For information purposes, there is a preliminary +comparision of ORY Kratos and other projects and products available at +[Comparison](../further-reading/comparison.md)_. + +Full-stack IAM is usually sold as a one-size-fits-all solution. Due to size and +complexity, these full-stack solutions are typically written in an enterprise +class programming language such as Java EE. The full-stack products have rich +feature sets that include: + +- theming to customize the user experience, and to constrain the anticipated + theming use case; +- HTML Template Engines specific to the language used, such Java Server Pages or + [Apache FreeMarkerโ„ข](https://www.keycloak.org/docs/latest/server_development/#html-templates); +- plugin loaders and APIs to add custom logic or even custom API endpoints, + specific to the language used by the project; and +- features such as integrated Load Balancers, Service Discovery, and other + features designed prior to today's mature cloud architectures. + +Full-stack software projects come with some overhead: + +- the software has a large disk, CPU, and memory footprint; +- while scaling and clustering for High Availability is possible, it is complex + since inter-process-communication for caches and other features is required + for example using protocols such as [JGroups](http://jgroups.org/); and +- starting off with pre-defined use cases is easy yet customization and + application specific features require much more work. + +Most full-stack projects we've seen are in-house solutions for IAM problems. +Imagine Google releasing their IAM as an open source product. It's certainly +great, and it covers a lot of ground, but it also comes with drawbacks: + +- Strict data models specific to the company developing the product: +- Inflexible login process with either a username or an email for login, but not + both or unable to change it later; +- Any application specific additional attributes are stored as unstructured + data, sometimes even as plain key/value pairs; +- Complex build pipelines when using modern frontend frameworks like React or + Angular in the HTML Rendering engine; +- The user model stays the same, even if when differentiating between customers + and employees in your system; and +- API consumption is usually an after-thought because most flows are built + around the user doing something in the browser. All of the above leads to + added complexity in application development and deployment due to session + management, cookie management, CSRF protection, and other mechanisms related + to identity and security. + +### Identity as a Service (IDaaS) + +In today's market, with many proprietary SAAS companies offering Identity as a +Service, it seems easy to make sign-on cumbersome for both developers and users. +Even with delegated third party login processes such as "Login with Google," +where OAuth2 and OpenID Connect are often the primary protocols, the challenge +is making a secure and simple login without any extra overhead, in this case, +for instance, Oauth2 and OpenID. + +Ory's focus is on simplicity, user experience, and above all, using the right +tools and technologies for the target application. Feedback from Ory's user +community as well as the open source development efforts involved in Ory Hydra- +OAuth2 and OpenID Connect server [ORY Hydra](https://github.com/ory/hydra), show +that implementing OAuth2 or OpenID Connect is often frustrating and too complex. +These technologies are not one size fits all, and not designed for every +implementation scenario. + +The main point is that OAuth2 and OpenID Connect protocols solve identity +federation. For instance, when the target application authenticates an identity +or authorizes access by using a system, for instance within an enterprise or +company domain, or with another third party service, outside of the +application's control. These protocols don't solve processes like updating a +user's profile, adding a secondary recovery email, solving 2FA, storing and +managing sessions, or solving global logout. These processes are the developer's +responsibility while the OAuth2 and OpenID Connect protocols simply offer a way +to securely solve identity federation over the Browser - they do not solve: + +- Storage and management of all these tokens. These would often end up in the + localStore making them vulnerable to XSS attacks. Or in a cookie issued by an + HTTP server; an extra function that would need to be developed. +- Managing and storing the user session. This would require the developer to + create the cookie for the session, delete the cookie at logs out, and to make + sure that the cookie implements best security practices. +- Refresh expiring tokens. While this function is straightforward for one + request, synchronising for example fifteen concurrent requests can be + difficult. + +The point is that OAuth2 is hard to use because the intended use cases, for +instance, "Facebook Photo Backups") are very specific, and the proper security +mechanisms need to be in place to deal with malicious third parties. Ory Kratos +simplifies user login. + +### Use a library + +Due to the mulitude of programming laguages across front end, backend and core +infrastructure, ORY Kratos embraced a polygot design. In other words Ory Kratos +provides Software Development Kit (SDK) and libraries for the main programming +languages. + +As software development teams grow, product requirements change. In different +parts of the development lifecycle, things, for instance humans, servers, and +code, need to scale to size. Over time, the original product splits into +smaller, more manageable chunks. The libraries chosen at the outset will need to +run on the newest version of the programming language. Sometimes even the +programming language or implementation framework are subject to change as a +whole. Still, the identity system is often so interlinked with all of the source +code, middlewares, annotations, shared state, etc., that it becomes an absolute +nightmare to decouple. + +### Roll your own + +Starting from scratch is sometimes the only option to fulfill the product's +architectural requirements. In this case, the following are some of the main +considerations and challenges faced in the Ory efforts: + +- To manage changing user models; +- To choose and use some encryption algorithms such as BCrypt, PBKDF2, Argon2, + Scrypt, Argon2, Argon2i, Argon2id, Argon2d. There are many alternatives and + most of the algorithms have numerous versions and parametrisation options for + example "Salt length parameter." The multitude of options makes it hard to + configure the most secure setting; +- To consider and implement a wide range of processes and process variants for + instance, the user signs up via email, and later uses "Sign up with Google" + that has the same email address. Or, the user previously signed up using the + email/password process or flow, and then signs up using "Sign up with Google" + and vice versa. Even these fairly simple use cases warrant considerable + development effort to correctly implement with some degree of user + friendliness; +- To prevent security threats for example + [account enumeration attacks](); +- To implement two factor authentication (2FA), for instance when the user + looses access to a registered and approved device, and there should be a + fallback phone number for SMS or offline security codes; +- To understand and use all of the important rules such as activation, welcome, + etc., around sending emails that don't alert spam filters; and +- To support a broad ecosystem of products and services for example in the event + that a target application needs to notify Stripe when a new customer signs up. + +The list above is purposely kept short. There are very many things to consider +when building Ory Kratos in concert with the other products Ory Keto, Ory Hydra, +and Ory Oathkeeper. The list is really, really long. + +## ORY Kratos + +Considering all of the information above, there would be enough context to +understand why and how ORY Kratos started, and why it's different from other +more conventional approaches. Ory Kratos uses a new stack, is open source, and +peer reviewed and developed in a broad community of experts. + +### Solving a specific problem domain + +ORY Kratos addresses a clearly defined problem domain: + +- managing credentials such as passwords, recovery email addresses, and security + questions; +- authentication including secure login, keeping track of sessions and devices; +- selfservice account management for example update profile, add/update email + addresses, and changing passwords; +- account/identity administration such as create, read, delete, update, import, + and get; and +- managing identity data for example first name, last name, profile picture, and + birthday, etc. + +Ory has numerous products that support the protocols OAuth2 or OpenID Connect in +[ORY Hydra](http://github.com/ory/hydra), a permission system in +[ORY Keto](http://github.com/ory/keto), and a Reverse Proxy in +[ORY Oathkeeper](http://github.com/ory/oathkeeper). + +### Software Architecture + +Ory's +[Software Architecture and Philosophy](../../ecosystem/software-architecture-philosophy.md) +document, explains the architectural beliefs and framework behind the Ory +Products in particular: + +- Small runtime footprint with about five (5) MB binary running on all operating + systems without any system, library, or VM dependencies; +- Fully virtualised in a fifteen (15) MB Docker image; +- Easy to manage with exactly one binary for the server and the cli; +- Run-time orchestration using the latest Kubernetes providing fast and easy to + use [Helm charts](https://github.com/ory/k8s); and +- Horizontal scaling with no etcd key value store or memcached or adjacent tool + required. + +### Bring your own User Interface (Framework) + +Ory's approach to user interface and user experience is to provide for an +interaction concept with maximum flexibility and creativity. Some companies need +[progressive profiling](https://blog.hubspot.com/blog/tabid/6307/bid/34155/how-to-capture-more-and-better-lead-intel-with-progressive-profiling.aspx) +and build a NodeJS app. Other companies desire to capture everything in one go, +using Client-Side JavaScript library such as Angular or React. Some companies +want an iOS-native registration and login experience. While Ory's cloud native +headless API approach address many integration and UI issues, with ORY Kratos, +predefined flows make it easy to implement a custom user interface for login, +registration, profile management, account reset, etc. Furthermore, to make to +very easy to get started there is a reference implementation +[github.com/ory/kratos-selfservice-ui-node](https://github.com/ory/kratos-selfservice-ui-node). + +For more details about each individual flow, consult the +[Self-Service Flows Chapter](../self-service/flows/index.md). + +### Bring your own Identity Model(s) + +Sometimes it is necessary to store more than one type of identity in your +system: + +- A customer that uses email + password to login, and needs to set a birthdate; + or +- An employee that uses a unique username + password to login with a cost center + attached to the profile. + +ORY Kratos implements both scenarios by using +[JSON Schemas for Identity Traits](./identity-user-model.md) + +### Forget passport-js, oidc-client, ... + +While proprietary and bespoke middleware can protect APIs and Web endpoints, Ory +Open Source provides a base solution for many use cases. For example, ORY Kratos +integrates with ORY Oathkeeper, a Reverse Proxy solution. Defining Access Rules +is as easy as writing a few lines of JSON / JSON5 / YAML! + +Please consult the Quick Start documentation [Quickstart](../quickstart.md), for +further information. diff --git a/docs/docs/concepts/securing-applications.md b/docs/docs/concepts/securing-applications.md new file mode 100644 index 00000000000..8b24a342f20 --- /dev/null +++ b/docs/docs/concepts/securing-applications.md @@ -0,0 +1,8 @@ +--- +id: securing-applications +title: Securing Applications +--- + +This chapter will cover how to secure applications using ORY Kratos and ORY +Oathkeeper. In the future, we will also provide reference to using ORY Keto for +permissions. diff --git a/docs/docs/concepts/security.md b/docs/docs/concepts/security.md new file mode 100644 index 00000000000..7b37d0d2f23 --- /dev/null +++ b/docs/docs/concepts/security.md @@ -0,0 +1,219 @@ +--- +id: security +title: Threat Models and Security Profiles +--- + +Running any software that stores personal information exposes the +developer/company to risks. Analyzing which threat agents pose a risk, +understanding the possible motivations for an attack, or why an agent is a +threat, knowing the attack surface, the likelihood, and the impact are important +all aspects of a threat model. + +This documentation can not substitute a thorough and serious threat model, yet +it will provide some guidelines to help configure ORY Kratos in a way that makes +it best suited for any risk assessment. + +> Please be aware that this chapter is still work in progress. Not all +> mitigation strategies have been implemented yet in ORY Kratos! + +## Understanding Threats + +This section examines several threat vectors in systems that manage identities. + +### Account Enumeration Attacks + +> "Often, web applications reveal when a username exists on system, either as a +> consequence of a misconfiguration or as a design decision. For example, +> sometimes, when we submit wrong credentials, we receive a message that states +> that either the username is present on the system or the provided password is +> wrong. The information obtained can be used by an attacker to gain a list of +> users on system. This information can be used to attack the web application, +> for example, through a brute force or default username/password attack. +> Description of the Issue" +> +> [Source]() + +#### Scenarios + +Considering the above, an example would be for example an adult website. A +threat agent wants to blackmail a well known politician by checking if someone +can sign up at that website using the `well-known-politician@email.com` email. + +If the service responds with +`Sorry, that email is already signed up here. Did you try to log in instead?`, +the agent is able to proceed with some type of blackmail scheme. + +[OWASP defines several Black-Box tests]() +that cover Account Enumeration Scenarios. + +#### Mitigation + +ORY Kratos can be configured to send an out-of-band message to the email used +for login, registration, account recovery, etc.: + +- If an application or user tries to sign in using an unknown email address, an + email will be sent to that address reading "You tried to sign in at X but you + do not have an account yet, did you mean to sign up instead?" +- ... + +### Bruteforce Attacks + +Will be addressed in a future release. + +### Phishing Attacks + +Will be addressed in a future release. + +### Social Engineering Attacks + +Will be addressed in a future release. + +### SMS Spoofing Attacks + +Will be addressed in a future release. + +## Choosing the right Security Profile and Configuration + +Will be addressed in a future release. + +### Argon2 + +ORY Kratos uses Argon2 for password hashing. Argon2 is the official winner of +the PHC 2017. You can tweak the Argon2 configuration in your ORY Kratos +configuration file: + +```yaml +hashers: + argon2: + memory: 1048576 + iterations: 2 + parallelism: 4 + salt_length: 16 + key_length: 32 +``` + +## Digital Identity Guidelines + +There is no one standard to digital identity. ORY Kratos closely follows +emerging frameworks and guidelines such as: +[Digital Identity Guidelines established by the National Institute of Standards and Technology (NIST)](https://pages.nist.gov/800-63-3/) +(and a follow-up [FAQ](https://pages.nist.gov/800-63-3/)) . + +As ORY Kratos grows, this document will continue to expand and add sections +covering individual security recommendations established by NIST. + +### Password Policy + +Almost every service with a login offers some type of registration using a +password. Therefore, there are many strategies floating around, with many of +them implementing terrible and insecure patterns such as: + +- Not allowing special characters in passwords. +- Not allowing the use of password managers by disabling the "paste" + functionality in password fields. +- Requiring you to rotate your password every month. +- ... + +Troy Hunt has written an +[excellent piece on password policies](https://www.troyhunt.com/passwords-evolved-authentication-guidance-for-the-modern-era/) +and why they recently changed and how. + +ORY Kratos implements a password policy that: + +- Checks if a password has previously been leaked using the + [HIBP API](https://haveibeenpwned.com/API/v2); and +- Checks if a password is too similar to one of the identifiers (in a future + release [kratos#184](https://github.com/ory/kratos/issues/184)). + +This is a rundown of all the practices ORY Kratos implements and why. **Some +things need to be implemented by yourself** as they must be implemented in the +User Interface that interfaces with ORY Kratos. You can find these in section +[User Interface Guidelines](#user-interface-guidelines). + +#### Password Complexity + +This outline and quotes are defined in the +[NIST Digital Identity Guidelines - 5.1.1.2 Memorized Secret Verifiers](https://pages.nist.gov/800-63-3/sp800-63b.html). +ORY Kratos, unless explicitly advertised, implements these guidelines and best +practices. + +Passwords must have a minimum length of 8 characters and all characters +(unicode, ASCII) must be allowed: + +> Verifiers SHALL require subscriber-chosen memorized secrets to be at least 8 +> characters in length. Verifiers SHOULD permit subscriber-chosen memorized +> secrets at least 64 characters in length. All printing ASCII [RFC 20] +> characters as well as the space character SHOULD be acceptable in memorized +> secrets. Unicode [ISO/ISC 10646] characters SHOULD be accepted as well. To +> make allowances for likely mistyping, verifiers MAY replace multiple +> consecutive space characters with a single space character prior to +> verification, provided that the result is at least 8 characters in length. +> Truncation of the secret SHALL NOT be performed. For purposes of the above +> length requirements, each Unicode code point SHALL be counted as a single +> character. + +Passwords must be checked against a database of compromised secrets such as +[Have I Been Pwnd](https://haveibeenpwned.com): + +> When processing requests to establish and change memorized secrets, verifiers +> SHALL compare the prospective secrets against a list that contains values +> known to be commonly-used, expected, or compromised. For example, the list MAY +> include, but is not limited to: +> +> - Passwords obtained from previous breach corpuses. +> - Dictionary words. +> - Repetitive or sequential characters (e.g. โ€˜aaaaaaโ€™, โ€˜1234abcdโ€™). +> - Context-specific words, such as the name of the service, the username, and +> derivatives thereof. +> +> If the chosen secret is found in the list, the CSP or verifier SHALL advise +> the subscriber that they need to select a different secret, SHALL provide the +> reason for rejection, and SHALL require the subscriber to choose a different +> value. + +Show the user a password-strength meter (to be implemented, see +[#136](https://github.com/ory/kratos/issues/136)): + +> Verifiers SHOULD offer guidance to the subscriber, such as a password-strength +> meter [Meters], to assist the user in choosing a strong memorized secret. This +> is particularly important following the rejection of a memorized secret on the +> above list as it discourages trivial modification of listed (and likely very +> weak) memorized secrets + +Do not require mixtures of characters types or prohibiting repeated characters: + +> Verifiers SHOULD NOT impose other composition rules (e.g., requiring mixtures +> of different character types or prohibiting consecutively repeated characters) +> for memorized secrets. Verifiers SHOULD NOT require memorized secrets to be +> changed arbitrarily (e.g., periodically). However, verifiers SHALL force a +> change if there is evidence of compromise of the authenticator. + +#### User Interface Guidelines + +These best practices need to be implemented in your User Interface and can not +be handled by ORY Kratos. All ORY-built reference and demo applications +implement these best practices: + +Allow pasting of passwords: + +> Verifiers SHOULD permit claimants to use โ€œpasteโ€ functionality when entering a +> memorized secret. This facilitates the use of password managers, which are +> widely used and in many cases increase the likelihood that users will choose +> stronger memorized secrets. + +Allow the user to show the secret in the UI: + +> In order to assist the claimant in successfully entering a memorized secret, +> the verifier SHOULD offer an option to display the secret โ€” rather than a +> series of dots or asterisks โ€” until it is entered. This allows the claimant to +> verify their entry if they are in a location where their screen is unlikely to +> be observed. The verifier MAY also permit the userโ€™s device to display +> individual entered characters for a short time after each character is typed +> to verify correct entry. This is particularly applicable on mobile devices. + +#### Password Hints + +> Memorized secret verifiers SHALL NOT permit the subscriber to store a โ€œhintโ€ +> that is accessible to an unauthenticated claimant. +> +> [NIST Digital Identity Guidelines - 5.1.1.2 Memorized Secret Verifiers](https://pages.nist.gov/800-63-3/sp800-63b.html) diff --git a/docs/docs/concepts/ui-user-interface.md b/docs/docs/concepts/ui-user-interface.md new file mode 100644 index 00000000000..9eb3ccacc2b --- /dev/null +++ b/docs/docs/concepts/ui-user-interface.md @@ -0,0 +1,35 @@ +--- +id: ui-user-interface +title: User Interface +--- + +ORY Kratos has no user interface included. Instead, it defines HTTP flows and +APIs that make it simple to write your own UI in a variety of languages and +frameworks. + +The following two examples are typical UIs used in connection with ORY Kratos. + +## Administrative User Interface (Admin UI) + +The AUI might show all of the identities in the system and provide features to +administrators such as editing profiles, resetting passwords, and so on. + +At present, there is no Open Source AUI for ORY Kratos. + +## Self-service User Interface (SSUI) + +The SSUI shows screens such as "login", "Registration", "Update your profile", +"Recover your account", and others. The following provides more reference for +SSUI at +[github.com/ory/kratos-selfservice-ui-node](https://github.com/ory/kratos-selfservice-ui-node). + +The SSUI can be built in any programming language including Java, Node, or +Python and can be run both a server or a end-user device for example a browser, +or a mobile phone. Implementing a SSUI is simple and straight forward. There is +no complex authentication mechanism required and no need to worry about possible +attack vectors such as CSRF or Session Attacks since ORY Kratos provides the +preventive measures built in. + +Chapter [Self-Service Flows](../self-service/flows/index.md) contains further +information on APIs and flows related to the SSUI, and build self service +applications. diff --git a/docs/docs/further-reading/comparison.md b/docs/docs/further-reading/comparison.md new file mode 100644 index 00000000000..b589a0f001a --- /dev/null +++ b/docs/docs/further-reading/comparison.md @@ -0,0 +1,7 @@ +--- +id: comparison +title: Comparison +--- + +This document will provide you with an overview of how ORY Kratos compares to +other projects and products. diff --git a/docs/docs/further-reading/contrib.md b/docs/docs/further-reading/contrib.md new file mode 100644 index 00000000000..3ef131a8dc6 --- /dev/null +++ b/docs/docs/further-reading/contrib.md @@ -0,0 +1,18 @@ +This file is meant to collect community contributions (such as articles and how +to's) which will later be merged into appropriate sections. + + diff --git a/docs/docs/index.md b/docs/docs/index.md new file mode 100644 index 00000000000..dfe641c8814 --- /dev/null +++ b/docs/docs/index.md @@ -0,0 +1,61 @@ +--- +id: index +title: Introduction +--- + +ORY Kratos is an API-first Identity and User Management system that is built +according to +[cloud architecture best practices](../ecosystem/software-architecture-philosophy.md). +It implements core use cases that almost every software application needs to +deal with: + +- **Self-service Login and Registration**: Allow end-users to create and sign + into accounts (we call them **identities**) using Username / Email and + password combinations, Social Sign In ("Sign in with Google, GitHub"), + Passwordless flows, and others. +- **Multi-Factor Authentication (MFA/2FA)**: Support protocols such as TOTP + ([RFC 6238](https://tools.ietf.org/html/rfc6238) and + [IETF RFC 4226](https://tools.ietf.org/html/rfc4226) - better known as + [Google Authenticator](https://en.wikipedia.org/wiki/Google_Authenticator)) +- **Account Verification**: Verify that an E-Mail address, phone number, or + physical address actually belong to that identity. +- **Account Recovery**: Recover access using "Forgot Password" flows, Security + Codes (in case of MKFA device loss), and others. +- **Profile and Account Management**: Update passwords, personal details, email + addresses, linked social profiles using secure flows. +- **Admin APIs**: Import, update, delete identities. + +Identity is a hard problem and ORY Kratos solves it in a unique way. We value +security, flexibility, and integration with cloud technology (such as +Kubernetes) most: + +- ORY Kratos does not ship a HTML Rendering Engine. You can build your own UI + (or use our example UIs) in the language and framework you feel most + comfortable with! +- The workflow engine allows you to fully customize your use experience: Whether + your users need to activate their account after registration, or a multi-step + (progressive) registration - it's all possible! +- One Identity Data Model does not fit all - you might have customers that need + a billing address, internal support staff that is assigned to a cost center, + and that smart fridge on floor 4. You can express the different data models + using [JSON Schema](https://json-schema.org/) and make the system work for + you - not the other way around! + +To learn more about what's different and how ORY Kratos compares to other (open +source) solutions, head over to [Concepts](./concepts/index.md) and +[Comparison](./further-reading/comparison.md). + +But it's not just features - ORY Kratos stands out because it runs on any +operating system (Linux, macOS, Windows) and on most processors (i386, amd64, +arm, ...). The compiled binary has _no system or library or file dependencies_ +and can be run as a single, static binary on top of a, for example, raw Linux +kernel. The binary and Docker Image is less than 20MB small. + +ORY Kratos scales horizontally without effort. The only external dependency is a +RDBMS - we currently support SQLite, PostgreSQL, MySQL, CockroachDB. You will +not need memcached, etcd, or any other system to scale ORY Kratos. + +We believe in strong separation of concerns, it is a guiding principle in the +design of each ORY project. As such, we build software that solves specific +problems very well and offloads adjacent issues (such as a user interface) to +other applications. diff --git a/docs/docs/install.md b/docs/docs/install.md new file mode 100644 index 00000000000..ed72341c12c --- /dev/null +++ b/docs/docs/install.md @@ -0,0 +1,82 @@ +--- +id: install +title: Installation +--- + +Installing ORY Kratos on any system is straight forward. We provide pre-built +binaries, Docker Images and support various package managers. + +## Docker + +We recommend using Docker to run ORY Kratos: + +```shell +$ docker pull oryd/kratos +$ docker run --rm -it oryd/kratos help +``` + +## macOS + +You can install ORY Kratos using [homebrew](https://brew.sh/) on macOS: + +```shell +$ brew tap ory/kratos +$ brew install ory/kratos/kratos +$ kratos help +``` + +## Linux + +On linux, you can use `curl | bash` to fetch the latest stable binary using: + +```shell +$ curl https://raw.githubusercontent.com/ory/kratos/master/install.sh | bash -s -- -b . +$ ./kratos help +``` + +You may want to move ORY Kratos to your `$PATH`: + +```shell +$ sudo mv ./kratos /usr/local/bin/ +$ kratos help +``` + +## Windows + +You can install ORY Kratos using [scoop](https://scoop.sh) on Windows: + +```shell +> scoop bucket add ory-kratos https://github.com/ory/scoop-kratos.git +> scoop install kratos +> kratos help +``` + +## Download Binaries + +The client and server **binaries are downloadable at the +[releases tab](https://github.com/ory/kratos/releases)**. There is currently no +installer available. You have to add the Kratos binary to the PATH environment +variable yourself or put the binary in a location that is already in your +`$PATH` (e.g. `/usr/local/bin`, ...). + +Once installed, you should be able to run: + +```shell +$ kratos help +``` + +## Building from Source + +If you wish to compile ORY Kratos yourself, you need to install and set up +[Go 1.12+](https://golang.org/) and add `$GOPATH/bin` to your `$PATH`. + +The following commands will check out the latest release tag of ORY Kratos and +compile it and set up flags so that `kratos version` works as expected. Please +note that this will only work with a linux shell like bash or sh. + +```shell +$ go get -d -u github.com/ory/kratos +$ cd $(go env GOPATH)/src/github.com/ory/kratos +$ GO111MODULE=on make install +$ $(go env GOPATH)/bin/kratos help +``` diff --git a/docs/docs/quickstart.mdx b/docs/docs/quickstart.mdx new file mode 100644 index 00000000000..3184ecae8bf --- /dev/null +++ b/docs/docs/quickstart.mdx @@ -0,0 +1,342 @@ +--- +id: quickstart +title: Quickstart +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; + +ORY Kratos has several moving parts and getting everything right from the +beginning can be challenging. This getting started guide will help you install +ORY Kratos and some additional dependencies so that you can see how ORY Kratos +works. + +Please be aware that this guide is not a replacement for studying the docs. You +must understand core concepts and APIs to use ORY Kratos productively. This is +merely a guide to get you set up with some examples. + +## Use case: You want login and registration for your Application + +This section gives you some context on what we want to achieve and what tools we +need for that. You will also learn about the network set up we picked for this +guide. + +This quickstart guide operates on the assumption that we are writing a NodeJS +app called **SecureApp**. This app is using nothing fancy - some ExpressJS and a +bit of HTML Templating using Handlebars. We do want to use TypeScript but only +because it's more readable - not because we're doing anything out of the +ordinary! + +You could pick any technology here, of course. This works with Swift, ReactJS, +or Angular (client side) as well as with PHP, Ruby, Python, Java (server side) - +you name it! We picked NodeJS + TypeScript because we believe it is the easiest +to understand, and because JavaScript and NodeJS are universally understood and +easy to install. + +We don't really know what SecureApp should do one day. But we do know that it +will have some type of dashboard and that it needs users, therefore we need: + +- Login +- Logout +- Registration +- Profile management ("update first name", "update avatar ...") +- Credentials Management ("add a new recovery email", "change password", "...") +- Account Recovery ("password reset") +- Two Factor Authentication with Google Authenticator +- "Sign in with Google" and "Sign in with GitHub" + +and of course: + +- A dashboard that shows "Hello {{ firstName }} {{ lastName }}, your birthday is + on {{ birthday }}!". It is only visible when the user is signed in! + +## Setup + +As you might already know, ORY Kratos is API-only. It does not have a UI or HTML +Templating Engine. We will implement all the user-facing UIs (dashboard, login, +registration, ...) in our NodeJS SecureApp! + +To ensure that no one can access the dashboard without prior authentication +(login), we will use a reverse proxy +([ORY Oathkeeper](https://github.com/ory/oathkeeper)) to deny all +unauthenticated traffic to `http://secure-app/dashboard` and redirect the user +to the login page at `http://secure-app/auth/login`. Further, we will configure +access to `http://secure-app/auth/login` in such a way that access only works if +one is not yet authenticated. + +ORY Kratos does not ship with an administrative user interface. You must +implement that yourself or choose the ORY Cloud offering (to be announced). In +this quickstart, we will use ORY Kratos CLI (Command Line Interface) to interact +with ORY Kratos' Administrative APIs. + +The quickstart also comes with [MailSlurper](https://mailslurper.com), a mock +SMTP server the demo uses to show how e.g. email verification works. + +### Clone ORY Kratos and run it in Docker + +To get this example working, you will need Git and +[Docker, and Docker Compose](https://docs.docker.com/get-docker/) installed on +your system. No other dependencies are required. Let's clone ORY Kratos and run +`docker-compose`: + +```shell script +git clone https://github.com/ory/kratos.git +# or if you have git+ssh set up: +# git clone git@github.com:ory/kratos.git +cd kratos +make quickstart + +# or if you don't have make installed: +docker pull oryd/kratos:latest-sqlite +docker pull oryd/kratos-selfservice-ui-node:latest +docker-compose -f quickstart.yml up --build --force-recreate +``` + +This might take a minute or two. Once the output slows down and logs indicate a +healthy system you're ready to roll! A healthy system will show something along +the lines of (the order of messages might be reversed): + +``` +kratos_1 | time="2020-01-20T14:52:13Z" level=info msg="Starting the admin httpd on: 0.0.0.0:4434" +kratos_1 | time="2020-01-20T14:52:13Z" level=info msg="Starting the public httpd on: 0.0.0.0:4433" + +oathkeeper_1 | {"level":"info","msg":"TLS has not been configured for api, skipping","time":"2020-01-20T09:22:09Z"} +oathkeeper_1 | {"level":"info","msg":"Listening on http://:4456","time":"2020-01-20T09:22:09Z"} +oathkeeper_1 | {"level":"info","msg":"TLS has not been configured for proxy, skipping","time":"2020-01-20T09:22:09Z"} +oathkeeper_1 | {"level":"info","msg":"Listening on http://:4455","time":"2020-01-20T09:22:09Z"} +``` + +> There are two important factors to get a fully functional system: +> +> - You need to make sure that ports `4435`, `4455`, `4456`, `4433`, `4434`, +> `4436` > +> [are free](https://serverfault.com/questions/309052/check-if-port-is-open-or-closed-on-a-linux-server). +> - Make sure to always use `127.0.0.1` as the hostname, never use `localhost`! +> This is important because browsers treat these two as separate domains and +> will therefore have issues with setting and using the right cookies. + +You might notice that no database is being used in this example. ORY Kratos +supports SQLite, PostgreSQL, MySQL, and CockroachDB as database backends. For +the quickstart, we're mounting a persistent volume to store the SQLite database +in. Future guides will explain how to set up a production system! + +#### Mitigating Docker Errors + +If you encounter build errors (e.g. network timeout), make sure that the network +is running correctly and run `docker-compose -f quickstart.yml up --build` +again. If the problem persists, feel free to +[open an issue](https://github.com/ory/kratos/issues/new/choose). + +### Network Architecture + +This demo makes use of several services / Docker Images: + +1. [ORY Kratos](https://github.com/ory/kratos) +2. The **SecureApp** - an + [example application written in NodeJS](http://github.com/ory/kratos-selfservice-ui-node) + that implements the login, registration, logout, ..., and dashboard screen. +3. A reverse proxy ([ORY Oathkeeper](https://github.com/ory/oathkeeper)) to + protect the **SecureApp**. +4. An SMTP server with which ORY Kratos can send E-Mails with. We will use + [MailHog](https://github.com/mailhog/MailHog), a minimalistic SMTP throaway + server with an easy UI. + +To better understand how everything is wired, let's take a look at the network +configuration. This assumes that you have at least some understanding of how +Docker (Compose) Networks work: + +[User Login and Registration Network Topology](https://mermaid.ink/img/eyJjb2RlIjoiZ3JhcGggVERcblxuc3ViZ3JhcGggaG5bSG9zdCBOZXR3b3JrXVxuICAgIEJbQnJvd3Nlcl1cbiAgICBCLS0-fENhbiBhY2Nlc3MgVVJMcyB2aWEgMTI3LjAuMC4xOjQ0NTV8T0tQSE5cbiAgICBCLS0-fENhbiBhY2Nlc3MgVUkgdmlhIDEyNy4wLjAuMTo0NDM2fFNNVFBVSVxuICAgIE9LUEhOKFtSZXZlcnNlIFByb3h5IGV4cG9zZWQgYXQgOjQ0NTVdKVxuICAgIFNNVFBVSShbTWFpbFNsdXJwZXIgVUkgZXhwb3NlZCBhdCA6NDQzNl0pXG5lbmRcblxuc3ViZ3JhcGggZG5bXCJJbnRlcm5hbCBEb2NrZXIgTmV0d29yayAoaW50cmFuZXQpXCJdXG4gICAgT0tQSE4tLT5PT1xuICAgIFNNVFBVSS0tPlNNVFBcbiAgICBPTy0tPnxQcm94aWVzIFVSTHNzIC8ub3J5L2tyYXRvcy9wdWJsaWMvKiB0b3xPS1xuICAgIE9PLS0-fFwiUHJveGllcyAvYXV0aC9sb2dpbiwgL2F1dGgvcmVnaXN0cmF0aW9uLCAvZGFzaGJvYXJkLCAuLi4gdG9cInxTQVxuICAgIFNBLS0-fFRhbGtzIHRvfE9LXG4gICAgT0stLT58U2VuZHMgbWFpbCB2aWF8U01UUFxuICAgIE9PLS0-fFZhbGlkYXRlcyBhdXRoIHNlc3Npb25zIHVzaW5nfE9LXG5cbiAgICBPS1tPUlkgS3JhdG9zXVxuICAgIE9PW1wiUmV2ZXJzZSBQcm94eSAoT1JZIE9hdGhrZWVwZXIpXCJdXG4gICAgU0FbXCJTZWN1cmVBcHAgKE9SWSBLcmF0b3MgU2VsZlNlcnZpY2UgVUkgTm9kZSBFeGFtcGxlKVwiXVxuICAgIFNNVFBbXCJTTVRQIFNlcnZlciAoTWFpbFNsdXJwZXIpXCJdXG5lbmRcbiIsIm1lcm1haWQiOnsidGhlbWUiOiJuZXV0cmFsIiwiZmxvd2NoYXJ0Ijp7InJhbmtTcGFjaW5nIjo2NSwibm9kZVNwYWNpbmciOjMwLCJjdXJ2ZSI6ImJhc2lzIn19LCJ1cGRhdGVFZGl0b3IiOmZhbHNlfQ); + +As you can see, most requests are proxied through the Reverse Proxy +([ORY Oathkeeper](https://github.com/ory/oathkeeper)). The `quickstart.yml` file +also defines additional ports such as `4434`, `4456`, and others. These ports +are only there for debugging and playing around with and are not actually +required for the demo to work. + +The next diagram shows how we've configured the routes in our Reverse Proxy +([ORY Oathkeeper](https://github.com/ory/oathkeeper)): + +[User Login and Registration Routes](https://mermaid.ink/img/eyJjb2RlIjoiZ3JhcGggVERcblxuc3ViZ3JhcGggcGlbUHVibGljIEludGVybmV0XVxuICAgIEJbQnJvd3Nlcl1cbmVuZFxuXG5zdWJncmFwaCB2cGNbVlBDIC8gQ2xvdWQgLyBEb2NrZXIgTmV0d29ya11cbnN1YmdyYXBoIFwiRGVtaWxpdGFyaXplZCBab25lIC8gRE1aXCJcbiAgICBPS1tPUlkgT2F0aGtlZXBlciA6NDQ1NV1cbiAgICBCIC0tPiBPS1xuZW5kXG5cbiAgICBPSyAtLT58XCJGb3J3YXJkcyB7LywvZGFzaGJvYXJkfSB0b1wifCBTQURcbiAgICBPSyAtLT58XCJGb3J3YXJkcyAvYXV0aC9sb2dvdXQgdG9cInwgU0FMVVxuICAgIE9LIC0tPnxcIkZvcndhcmRzIC9hdXRoL2xvZ2luIHRvXCJ8IFNBTElcbiAgICBPSyAtLT58XCJGb3J3YXJkcyAvYXV0aC9yZWdpc3RyYXRpb24gdG9cInwgU0FSXG4gICAgT0sgLS0-fFwiRm9yd2FyZHMgL2F1dGgvKiB0b1wifCBTQUFcbiAgICBPSyAtLT58XCJGb3J3YXJkcyAvLm9yeS9rcmF0b3MvcHVibGljLyogdG9cInwgS1BcblxuICAgIHN1YmdyYXBoIFwiUHJpdmF0ZSBTdWJuZXQgLyBJbnRyYW5ldFwiXG4gICAgS1sgT1JZIEtyYXRvcyBdXG5cbiAgICBLUChbIE9SWSBLcmF0b3MgUHVibGljIEFQSSBdKVxuICAgIEtBKFsgT1JZIEtyYXRvcyBBZG1pbiBBUEkgXSlcbiAgICBTQSAtLT4gS0FcbiAgICBLQSAtLmJlbG9uZ3MgdG8uLT4gS1xuICAgIEtQIC0uYmVsb25ncyB0by4tPiBLXG5cbiAgICBzdWJncmFwaCBzYVtcIlNlY3VyZUFwcCAvIGtyYXRvcy1zZXJsZnNlcnZpY2UtdWktbm9kZSBFeGFtcGxlXCJdXG5cbiAgICAgICAgU0FbU2VjdXJlQXBwXVxuICAgICAgICBTQUQgLS5iZWxvbmdzIHRvLi0-IFNBXG4gICAgICAgIFNBTFUgLS5iZWxvbmdzIHRvLi0-IFNBXG4gICAgICAgIFNBTEkgLS5iZWxvbmdzIHRvLi0-IFNBXG4gICAgICAgIFNBUiAtLmJlbG9uZ3MgdG8uLT4gU0FcbiAgICAgICAgU0FBIC0uYmVsb25ncyB0by4tPiBTQVxuXG4gICAgICAgIHN1YmdyYXBoIFwiSGFzIGFjdGl2ZSBsb2dpbiBzZXNzaW9uXCJcbiAgICAgICAgICAgIFNBRChbUm91dGUgL2Rhc2hib2FyZF0pXG4gICAgICAgICAgICBTQUxVKFtSb3V0ZSAvYXV0aC9sb2dvdXRdKVxuICAgICAgICBlbmRcblxuICAgICAgICBzdWJncmFwaCBcIk5vIGFjdGl2ZSBsb2dpbiBzZXNzaW9uXCJcbiAgICAgICAgICAgIFNBTEkoW1JvdXRlIC9hdXRoL2xvZ2luXSkgXG4gICAgICAgICAgICBTQVIoW1JvdXRlIC9hdXRoL3JlZ2lzdHJhdGlvbl0pIFxuICAgICAgICAgICAgU0FBKFtSb3V0ZSAvYXV0aC8uLi5dKVxuICAgICAgICBlbmRcbiAgICBlbmRcbiAgICBlbmRcblxuZW5kXG4iLCJtZXJtYWlkIjp7InRoZW1lIjoibmV1dHJhbCIsImZsb3djaGFydCI6eyJyYW5rU3BhY2luZyI6NzAsIm5vZGVTcGFjaW5nIjozMCwiY3VydmUiOiJiYXNpcyJ9fX0); + +You might notice that we're also proxying requests to ORY Kratos' Public API. We +are doing this because that way all requests are going to and coming from the +same hostname. This avoids common cross-domain issues with cookies. + +## Perform registration, logout, login + +Enough theory, it's time to get this thing going! Let's start by trying to open +the dashboard - **go to +[127.0.0.1:4455/dashboard](http://127.0.0.1:4455/dashboard)**. You will probably +notice that you're ending up at the login endpoint: + +Login screen of your secured app; + +Looking at the network stack, you can see two redirects happening: + +Network trace of your secured app; + +The first redirect from `http://127.0.0.1:4445/dashboard` to +`http://127.0.0.1:4455/.ory/kratos/public/auth/browser/login` is initiated by +the Reverse Proxy ([ORY Oathkeeper](https://github.com/ory/oathkeeper)) because +the browser does not have a valid authentication (login) session yet. The +redirect points to one of ORY Krato's APIs used for logging in browser-based +applications. ORY Kratos does some security checks and prepares form data and +redirects the browser to `http://127.0.0.1:4445/auth/login`, appending a +`?request=...` query parameter. The endpoint at `/auth/login` (which belongs to +our SecureApp) then fetches data important for rendering the forms from ORY +Krato's Admin API: + +```shell script +$ curl http://127.0.0.1:4434/self-service/browser/flows/requests/login?request= +{ + "id": "27aa98bc-a074-418f-96fa-8b8146050209", + "expires_at": "2020-01-20T21:10:12.7365393Z", + "issued_at": "2020-01-20T21:00:12.7365532Z", + "request_url": "http://127.0.0.1:4455/auth/browser/login", + "methods": { + "password": { + "method": "password", + "config": { + "action": "http://127.0.0.1:4455/.ory/kratos/public/auth/browser/methods/password/login?request=27aa98bc-a074-418f-96fa-8b8146050209", + "method": "POST", + "fields": [ + { + "name": "csrf_token", + "type": "hidden", + "required": true, + "value": "Ii8iIEdnn12vVQ2vyz2YaHjmXMUK5eSQgw9pgENGxPjXi1PHC9gOG51x61o2GT9LGvC81ddvmNXYeLvlPxA04g==" + }, + { + "name": "identifier", + "type": "text", + "required": true + }, + { + "name": "password", + "type": "password", + "required": true + } + ] + } + } + } +} +``` + +This data is then rendered as an HTML form. This flow also works with Single +Page Apps (SPA) and Frameworks like Angular or ReactJS. For more details about +the specific flows (login, registration, logout, ...), head over to the +[concept](./concepts/index.md) chapter. + +Let's move on to the next flow - registration! Click on "Create an account", +which initiates a flow similar to the one we just used: + +Registration screen of your secured app; + +The network trace looks familiar by now: + +Registration with network trace screen of your secured app; + +If we try to sign up using a password like `123456`, ORY Krato's password policy +will complain: + +Registration with network trace screen of your secured app; + +The error message is coming directly from ORY Krato's API: + +```shell script +$ curl http://127.0.0.1:4434/self-service/browser/flows/requests/registration?request= +{ + "id": "79349cbd-c785-476a-8db8-d0d71c5b003c", + "expires_at": "2020-01-20T21:17:00.5077381Z", + "issued_at": "2020-01-20T21:07:00.5077527Z", + "request_url": "http://127.0.0.1:4455/auth/browser/registration", + "methods": { + "password": { + "method": "password", + "config": { + "action": "http://127.0.0.1:4455/.ory/kratos/public/auth/browser/methods/password/registration?request=79349cbd-c785-476a-8db8-d0d71c5b003c", + "method": "POST", + "fields": [ + { + "name": "csrf_token", + "type": "hidden", + "required": true, + "value": "+ZQ8x5cVgdtt4xtPIRJXQPKMVU5c/S2Mj2MuudP32vsMME0g26oQnV/H/brcNvBjkJq1XoF3UcnUFPzcr6Eq4Q==" + }, + { + "name": "password", + "type": "password", + "required": true + }, + { + "name": "traits.email", + "type": "text", + "value": "hello@ory.sh" + }, + { + "name": "traits.full_name", + "type": "text" + } + ] + } + } + } +} +``` + +Setting a password that doesn't violate these policies, we will be immediately +redirected to the Dashboard: + +SecureApp Dashboard; + +By using "logout" you will be redirected to the log in screen again an will be +able to use the credentials just set up to log in! + +### Understanding how Login and Registration works + +Head over to the [Self-Service Flows Chapter](./self-service/flows/index.md) for +a in-depth explanation of how the individual flows work. + +### Email Verification + +As you've signed up, an email was sent to the email address you used. Because +the quickstart uses a fake SMTP server, the email did not arrive in your inbox. +You can retrieve the email however by opening the MailSlurper UI at +[127.0.0.1:4436](http://127.0.0.1:4436). + +You should see something like this: + +User Email Verification; + +If not, hard refresh the tab or click on the home icon in the menu bar. + +Next, click the verification link. You will end up at the dashboard, with a +verified E-Mail Address (check the `verified` and `verified_at` field in the +JSON Payload): + +SecureApp Dashboard; + +To re-request the verification email, fill out the form at +[127.0.0.1:4455/verify](http://127.0.0.1:4455/verify). + +#### Configuration Used + +You can find all configuration files for this quickstart guide in +`./contrib/quickstart` and `./quickstart.yml`. To understand what each of those +individual configuration files are doing, you must consult the other chapters of +this documentation. + +In the future, this guide will support more use cases such as: + +- Use GitHub to login in and sign up +- Use PostgreSQL / MySQL instead of SQLite + +## Cleaning up Docker + +To clean everything up, you need to bring down the Docker Compose environment +and remove all mounted volumes. + +```shell script +docker-compose -f quickstart.yml down -v +docker-compose -f quickstart.yml rm -f -s -v +``` diff --git a/docs/docs/reference/api.md b/docs/docs/reference/api.md new file mode 100644 index 00000000000..ca5f316a8c7 --- /dev/null +++ b/docs/docs/reference/api.md @@ -0,0 +1,5719 @@ +--- +title: Ory Kratos +language_tabs: [] +toc_footers: [] +includes: [] +search: false +highlight_theme: darkula +headingLevel: 2 +--- + +Welcome to the ORY Kratos HTTP API documentation! + +> You are viewing REST API documentation. This documentation is auto-generated +> from a swagger specification which itself is generated from annotations in the +> source code of the project. It is possible that this documentation includes +> bugs and that code samples are incomplete or wrong. +> +> If you find issues in the respective documentation, please do not edit the +> Markdown files directly (as they are generated) but raise an issue on the +> project's GitHub presence instead. This documentation will improve over time +> with your help! If you have ideas how to improve this part of the +> documentation, feel free to share them in a +> [GitHub issue](https://github.com/ory/docs/issues/new) any time. + + + +## health + + + +### Check alive status + +``` +GET /health/alive HTTP/1.1 +Accept: application/json + +``` + +This endpoint returns a 200 status code when the HTTP server is up running. This +status does currently not include checks whether the database connection is +working. + +If the service supports TLS Edge Termination, this endpoint does not require the +`X-Forwarded-Proto` header to be set. + +Be aware that if you are running multiple nodes of this service, the health +status will never refer to the cluster state, only to a single instance. + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------ | ----------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | healthStatus | [healthStatus](#schemahealthstatus) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 200 Response + +```json +{ + "status": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /health/alive \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/health/alive", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/health/alive', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/health/alive"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/health/alive', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/health/alive', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Check readiness status + +``` +GET /health/ready HTTP/1.1 +Accept: application/json + +``` + +This endpoint returns a 200 status code when the HTTP server is up running and +the environment dependencies (e.g. the database) are responsive as well. + +If the service supports TLS Edge Termination, this endpoint does not require the +`X-Forwarded-Proto` header to be set. + +Be aware that if you are running multiple nodes of this service, the health +status will never refer to the cluster state, only to a single instance. + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | ------------------------------------------------------------------------ | -------------------- | --------------------------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | healthStatus | [healthStatus](#schemahealthstatus) | +| 503 | [Service Unavailable](https://tools.ietf.org/html/rfc7231#section-6.6.4) | healthNotReadyStatus | [healthNotReadyStatus](#schemahealthnotreadystatus) | + +##### Examples + +> 200 Response + +```json +{ + "status": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /health/ready \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/health/ready", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/health/ready', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/health/ready"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/health/ready', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/health/ready', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +## Administrative Endpoints + + + +### List all identities in the system + +``` +GET /identities HTTP/1.1 +Accept: application/json + +``` + +This endpoint returns a login request's context with, for example, error details +and other information. + +Learn how identities work in +[ORY Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | --------------------- | ----------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | A list of identities. | Inline | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + + + +##### Response Schema + +Status Code **200** + +| Name | Type | Required | Restrictions | Description | +| ------------------- | ----------------------------------------------------- | -------- | ------------ | -------------------------------------------------------------------------------------------------------------- | +| _anonymous_ | [[Identity](#schemaidentity)] | false | none | none | +| ยป addresses | [[VerifiableAddress](#schemaverifiableaddress)] | false | none | none | +| ยปยป expires_at | string(date-time) | true | none | none | +| ยปยป id | [UUID](#schemauuid)(uuid4) | true | none | none | +| ยปยป value | string | true | none | none | +| ยปยป verified | boolean | true | none | none | +| ยปยป verified_at | string(date-time) | true | none | none | +| ยปยป via | [VerifiableAddressType](#schemaverifiableaddresstype) | true | none | none | +| ยป id | [UUID](#schemauuid)(uuid4) | true | none | none | +| ยป traits | [Traits](#schematraits) | true | none | none | +| ยป traits_schema_id | string | true | none | TraitsSchemaID is the ID of the JSON Schema to be used for validating the identity's traits. | +| ยป traits_schema_url | string | false | none | TraitsSchemaURL is the URL of the endpoint where the identity's traits schema can be fetched from. format: url | + +##### Examples + +> 200 Response + +```json +[ + { + "addresses": [ + { + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-04-06T10:21:38Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" + } +] +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /identities \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/identities", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/identities', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/identities"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/identities', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/identities', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Create an identity + +``` +POST /identities HTTP/1.1 +Content-Type: application/json +Accept: application/json + +``` + +This endpoint creates an identity. It is NOT possible to set an identity's +credentials (password, ...) using this method! A way to achieve that will be +introduced in the future. + +Learn how identities work in +[ORY Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model). + +#### Request body + +```json +{ + "addresses": [ + { + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-04-06T10:21:38Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +} +``` + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ---- | --------------------------- | -------- | ----------- | +| body | body | [Identity](#schemaidentity) | true | none | + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------------ | ----------------------------------- | +| 201 | [Created](https://tools.ietf.org/html/rfc7231#section-6.3.2) | A single identity. | [Identity](#schemaidentity) | +| 400 | [Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 201 Response + +```json +{ + "addresses": [ + { + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-04-06T10:21:38Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X POST /identities \ + -H 'Content-Type: application/json' \ -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Content-Type": []string{"application/json"}, + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("POST", "/identities", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); +const input = '{ + "addresses": [ + { + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-04-06T10:21:38Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +}'; +const headers = { + 'Content-Type': 'application/json', 'Accept': 'application/json' +} + +fetch('/identities', { + method: 'POST', + body: input, + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/identities"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("POST"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json' +} + +r = requests.post( + '/identities', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Content-Type' => 'application/json', + 'Accept' => 'application/json' +} + +result = RestClient.post '/identities', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Get an identity + +``` +GET /identities/{id} HTTP/1.1 +Accept: application/json + +``` + +Learn how identities work in +[ORY Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ---- | ------ | -------- | ---------------------------------------------------- | +| id | path | string | true | ID must be set to the ID of identity you want to get | + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------------ | ----------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | A single identity. | [Identity](#schemaidentity) | +| 400 | [Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 200 Response + +```json +{ + "addresses": [ + { + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-04-06T10:21:38Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /identities/{id} \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/identities/{id}", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/identities/{id}', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/identities/{id}"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/identities/{id}', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/identities/{id}', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Update an identity + +``` +PUT /identities/{id} HTTP/1.1 +Content-Type: application/json +Accept: application/json + +``` + +This endpoint updates an identity. It is NOT possible to set an identity's +credentials (password, ...) using this method! A way to achieve that will be +introduced in the future. + +The full identity payload (except credentials) is expected. This endpoint does +not support patching. + +Learn how identities work in +[ORY Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model). + +#### Request body + +```json +{ + "addresses": [ + { + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-04-06T10:21:38Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +} +``` + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ---- | --------------------------- | -------- | ------------------------------------------------------- | +| id | path | string | true | ID must be set to the ID of identity you want to update | +| body | body | [Identity](#schemaidentity) | true | none | + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------------ | ----------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | A single identity. | [Identity](#schemaidentity) | +| 400 | [Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1) | genericError | [genericError](#schemagenericerror) | +| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 200 Response + +```json +{ + "addresses": [ + { + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-04-06T10:21:38Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X PUT /identities/{id} \ + -H 'Content-Type: application/json' \ -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Content-Type": []string{"application/json"}, + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("PUT", "/identities/{id}", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); +const input = '{ + "addresses": [ + { + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-04-06T10:21:38Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +}'; +const headers = { + 'Content-Type': 'application/json', 'Accept': 'application/json' +} + +fetch('/identities/{id}', { + method: 'PUT', + body: input, + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/identities/{id}"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("PUT"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json' +} + +r = requests.put( + '/identities/{id}', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Content-Type' => 'application/json', + 'Accept' => 'application/json' +} + +result = RestClient.put '/identities/{id}', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Delete an identity + +``` +DELETE /identities/{id} HTTP/1.1 +Accept: application/json + +``` + +This endpoint deletes an identity. This can not be undone. + +Learn how identities work in +[ORY Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ---- | ------ | -------- | ------------------------ | +| id | path | string | true | ID is the identity's ID. | + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 204 | [No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 404 Response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": { + "property1": {}, + "property2": {} + }, + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X DELETE /identities/{id} \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("DELETE", "/identities/{id}", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/identities/{id}', { + method: 'DELETE', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/identities/{id}"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("DELETE"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.delete( + '/identities/{id}', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.delete '/identities/{id}', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +## common + + + +### getSchema + +``` +GET /schemas/{id} HTTP/1.1 +Accept: application/json + +``` + +Get a traits schema definition + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ---- | ------ | -------- | -------------------------------------------------- | +| id | path | string | true | ID must be set to the ID of schema you want to get | + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------------------------ | ----------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | The raw identity traits schema | Inline | +| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + + + +##### Response Schema + +##### Examples + +> 200 Response + +```json +{} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /schemas/{id} \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/schemas/{id}", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/schemas/{id}', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/schemas/{id}"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/schemas/{id}', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/schemas/{id}', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Get the request context of browser-based login user flows + +``` +GET /self-service/browser/flows/requests/login?request=string HTTP/1.1 +Accept: application/json + +``` + +This endpoint returns a login request's context with, for example, error details +and other information. + +When accessing this endpoint through ORY Kratos' Public API, ensure that cookies +are set as they are required for CSRF to work. To prevent token scanning +attacks, the public endpoint does not return 404 status codes to prevent +scanning attacks. + +More information can be found at +[ORY Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ----- | ------ | -------- | ------------------------------- | +| request | query | string | true | Request is the Login Request ID | + +##### Detailed descriptions + +**request**: Request is the Login Request ID + +The value for this parameter comes from `request` URL Query parameter sent to +your application (e.g. `/login?request=abcde`). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------ | ----------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | loginRequest | [loginRequest](#schemaloginrequest) | +| 403 | [Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3) | genericError | [genericError](#schemagenericerror) | +| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | genericError | [genericError](#schemagenericerror) | +| 410 | [Gone](https://tools.ietf.org/html/rfc7231#section-6.5.9) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 200 Response + +```json +{ + "active": "string", + "expires_at": "2020-04-06T10:21:38Z", + "forced": true, + "id": "string", + "issued_at": "2020-04-06T10:21:38Z", + "methods": { + "property1": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + }, + "property2": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + } + }, + "request_url": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/requests/login?request=string \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/requests/login", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/requests/login?request=string', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/requests/login?request=string"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/requests/login', + params={ + 'request': 'string'}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/requests/login', + params: { + 'request' => 'string'}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Get the request context of browser-based profile management flows + +``` +GET /self-service/browser/flows/requests/profile?request=string HTTP/1.1 +Accept: application/json + +``` + +When accessing this endpoint through ORY Kratos' Public API, ensure that cookies +are set as they are required for checking the auth session. To prevent scanning +attacks, the public endpoint does not return 404 status codes but instead 403 +or 500. + +More information can be found at +[ORY Kratos Profile Management Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-profile-management). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ----- | ------ | -------- | ------------------------------- | +| request | query | string | true | Request is the Login Request ID | + +##### Detailed descriptions + +**request**: Request is the Login Request ID + +The value for this parameter comes from `request` URL Query parameter sent to +your application (e.g. `/login?request=abcde`). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------------------ | ----------------------------------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | profileManagementRequest | [profileManagementRequest](#schemaprofilemanagementrequest) | +| 403 | [Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3) | genericError | [genericError](#schemagenericerror) | +| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | genericError | [genericError](#schemagenericerror) | +| 410 | [Gone](https://tools.ietf.org/html/rfc7231#section-6.5.9) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 200 Response + +```json +{ + "expires_at": "2020-04-06T10:21:38Z", + "form": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string" + }, + "id": "string", + "identity": { + "addresses": [ + { + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-04-06T10:21:38Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" + }, + "issued_at": "2020-04-06T10:21:38Z", + "request_url": "string", + "update_successful": true +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/requests/profile?request=string \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/requests/profile", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/requests/profile?request=string', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/requests/profile?request=string"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/requests/profile', + params={ + 'request': 'string'}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/requests/profile', + params: { + 'request' => 'string'}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Get the request context of browser-based registration user flows + +``` +GET /self-service/browser/flows/requests/registration?request=string HTTP/1.1 +Accept: application/json + +``` + +This endpoint returns a registration request's context with, for example, error +details and other information. + +When accessing this endpoint through ORY Kratos' Public API, ensure that cookies +are set as they are required for CSRF to work. To prevent token scanning +attacks, the public endpoint does not return 404 status codes to prevent +scanning attacks. + +More information can be found at +[ORY Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ----- | ------ | -------- | -------------------------------------- | +| request | query | string | true | Request is the Registration Request ID | + +##### Detailed descriptions + +**request**: Request is the Registration Request ID + +The value for this parameter comes from `request` URL Query parameter sent to +your application (e.g. `/registration?request=abcde`). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------------- | ------------------------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | registrationRequest | [registrationRequest](#schemaregistrationrequest) | +| 403 | [Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3) | genericError | [genericError](#schemagenericerror) | +| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | genericError | [genericError](#schemagenericerror) | +| 410 | [Gone](https://tools.ietf.org/html/rfc7231#section-6.5.9) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 200 Response + +```json +{ + "active": "string", + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "issued_at": "2020-04-06T10:21:38Z", + "methods": { + "property1": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + }, + "property2": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + } + }, + "request_url": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/requests/registration?request=string \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/requests/registration", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/requests/registration?request=string', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/requests/registration?request=string"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/requests/registration', + params={ + 'request': 'string'}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/requests/registration', + params: { + 'request' => 'string'}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Get the request context of browser-based verification flows + +``` +GET /self-service/browser/flows/requests/verification?request=string HTTP/1.1 +Accept: application/json + +``` + +When accessing this endpoint through ORY Kratos' Public API, ensure that cookies +are set as they are required for checking the auth session. To prevent scanning +attacks, the public endpoint does not return 404 status codes but instead 403 +or 500. + +More information can be found at +[ORY Kratos Email and Phone Verification Documentation](https://www.ory.sh/docs/kratos/selfservice/flows/verify-email-account-activation). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ----- | ------ | -------- | ------------------------- | +| request | query | string | true | Request is the Request ID | + +##### Detailed descriptions + +**request**: Request is the Request ID + +The value for this parameter comes from `request` URL Query parameter sent to +your application (e.g. `/verify?request=abcde`). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------------- | ------------------------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | verificationRequest | [verificationRequest](#schemaverificationrequest) | +| 403 | [Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3) | genericError | [genericError](#schemagenericerror) | +| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 200 Response + +```json +{ + "expires_at": "2020-04-06T10:21:38Z", + "form": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string" + }, + "id": "string", + "issued_at": "2020-04-06T10:21:38Z", + "request_url": "string", + "success": true, + "via": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/requests/verification?request=string \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/requests/verification", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/requests/verification?request=string', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/requests/verification?request=string"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/requests/verification', + params={ + 'request': 'string'}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/requests/verification', + params: { + 'request' => 'string'}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Get user-facing self-service errors + +``` +GET /self-service/errors HTTP/1.1 +Accept: application/json + +``` + +This endpoint returns the error associated with a user-facing self service +errors. + +When accessing this endpoint through ORY Kratos' Public API, ensure that cookies +are set as they are required for CSRF to work. To prevent token scanning +attacks, the public endpoint does not return 404 status codes to prevent +scanning attacks. + +More information can be found at +[ORY Kratos User User Facing Error Documentation](https://www.ory.sh/docs/kratos/self-service/flows/user-facing-errors). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ----- | ------ | -------- | ----------- | +| error | query | string | false | none | + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | -------------------------- | --------------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | User-facing error response | [errorContainer](#schemaerrorcontainer) | +| 403 | [Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3) | genericError | [genericError](#schemagenericerror) | +| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 200 Response + +```json +{ + "errors": {}, + "id": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/errors \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/errors", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/errors', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/errors"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/errors', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/errors', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +## Public Endpoints + + + +### Initialize browser-based login user flow + +``` +GET /self-service/browser/flows/login HTTP/1.1 +Accept: application/json + +``` + +This endpoint initializes a browser-based user login flow. Once initialized, the +browser will be redirected to `urls.login_ui` with the request ID set as a query +parameter. If a valid user session exists already, the browser will be +redirected to `urls.default_redirect_url`. + +> This endpoint is NOT INTENDED for API clients and only works with browsers +> (Chrome, Firefox, ...). + +More information can be found at +[ORY Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 302 | [Found](https://tools.ietf.org/html/rfc7231#section-6.4.3) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 500 Response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": { + "property1": {}, + "property2": {} + }, + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/login \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/login", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/login', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/login"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/login', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/login', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Initialize Browser-Based Logout User Flow + +``` +GET /self-service/browser/flows/logout HTTP/1.1 +Accept: application/json + +``` + +This endpoint initializes a logout flow. + +> This endpoint is NOT INTENDED for API clients and only works with browsers +> (Chrome, Firefox, ...). + +On successful logout, the browser will be redirected (HTTP 302 Found) to +`urls.default_return_to`. + +More information can be found at +[ORY Kratos User Logout Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-logout). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 302 | [Found](https://tools.ietf.org/html/rfc7231#section-6.4.3) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 500 Response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": { + "property1": {}, + "property2": {} + }, + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/logout \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/logout", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/logout', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/logout"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/logout', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/logout', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Initialize browser-based profile management flow + +``` +GET /self-service/browser/flows/profile HTTP/1.1 +Accept: application/json + +``` + +This endpoint initializes a browser-based profile management flow. Once +initialized, the browser will be redirected to `urls.profile_ui` with the +request ID set as a query parameter. If no valid user session exists, a login +flow will be initialized. + +> This endpoint is NOT INTENDED for API clients and only works with browsers +> (Chrome, Firefox, ...). + +More information can be found at +[ORY Kratos Profile Management Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-profile-management). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 302 | [Found](https://tools.ietf.org/html/rfc7231#section-6.4.3) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 500 Response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": { + "property1": {}, + "property2": {} + }, + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/profile \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/profile", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/profile', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/profile"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/profile', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/profile', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Complete the browser-based profile management flows + +``` +POST /self-service/browser/flows/verification/{via}/complete?request=string HTTP/1.1 +Accept: application/json + +``` + +This endpoint completes a browser-based profile management flow. This is usually +achieved by POSTing data to this endpoint. + +If the provided profile data is valid against the Identity's Traits JSON Schema, +the data will be updated and the browser redirected to `url.profile_ui` for +further steps. + +> This endpoint is NOT INTENDED for API clients and only works with browsers +> (Chrome, Firefox, ...) and HTML Forms. + +More information can be found at +[ORY Kratos Email and Phone Verification Documentation](https://www.ory.sh/docs/kratos/selfservice/flows/verify-email-account-activation). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ----- | ------ | -------- | ------------------------- | +| request | query | string | true | Request is the Request ID | +| via | path | string | true | What to verify | + +##### Detailed descriptions + +**request**: Request is the Request ID + +The value for this parameter comes from `request` URL Query parameter sent to +your application (e.g. `/verify?request=abcde`). + +**via**: What to verify + +Currently only "email" is supported. + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 302 | [Found](https://tools.ietf.org/html/rfc7231#section-6.4.3) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 500 Response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": { + "property1": {}, + "property2": {} + }, + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X POST /self-service/browser/flows/verification/{via}/complete?request=string \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("POST", "/self-service/browser/flows/verification/{via}/complete", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/verification/{via}/complete?request=string', { + method: 'POST', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/verification/{via}/complete?request=string"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("POST"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.post( + '/self-service/browser/flows/verification/{via}/complete', + params={ + 'request': 'string'}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.post '/self-service/browser/flows/verification/{via}/complete', + params: { + 'request' => 'string'}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Initialize browser-based registration user flow + +``` +GET /self-service/browser/flows/registration HTTP/1.1 +Accept: application/json + +``` + +This endpoint initializes a browser-based user registration flow. Once +initialized, the browser will be redirected to `urls.registration_ui` with the +request ID set as a query parameter. If a valid user session exists already, the +browser will be redirected to `urls.default_redirect_url`. + +> This endpoint is NOT INTENDED for API clients and only works with browsers +> (Chrome, Firefox, ...). + +More information can be found at +[ORY Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 302 | [Found](https://tools.ietf.org/html/rfc7231#section-6.4.3) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 500 Response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": { + "property1": {}, + "property2": {} + }, + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/registration \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/registration", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/registration', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/registration"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/registration', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/registration', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Initialize browser-based verification flow + +``` +GET /self-service/browser/flows/verification/init/{via} HTTP/1.1 +Accept: application/json + +``` + +This endpoint initializes a browser-based profile management flow. Once +initialized, the browser will be redirected to `urls.profile_ui` with the +request ID set as a query parameter. If no valid user session exists, a login +flow will be initialized. + +> This endpoint is NOT INTENDED for API clients and only works with browsers +> (Chrome, Firefox, ...). + +More information can be found at +[ORY Kratos Email and Phone Verification Documentation](https://www.ory.sh/docs/kratos/selfservice/flows/verify-email-account-activation). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ---- | ------ | -------- | -------------- | +| via | path | string | true | What to verify | + +##### Detailed descriptions + +**via**: What to verify + +Currently only "email" is supported. + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 302 | [Found](https://tools.ietf.org/html/rfc7231#section-6.4.3) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 500 Response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": { + "property1": {}, + "property2": {} + }, + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/verification/init/{via} \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/verification/init/{via}", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/verification/init/{via}', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/verification/init/{via}"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/verification/init/{via}', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/verification/init/{via}', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Complete the browser-based verification flows + +``` +GET /self-service/browser/flows/verification/{via}/confirm/{code} HTTP/1.1 +Accept: application/json + +``` + +This endpoint completes a browser-based verification flow. + +> This endpoint is NOT INTENDED for API clients and only works with browsers +> (Chrome, Firefox, ...) and HTML Forms. + +More information can be found at +[ORY Kratos Email and Phone Verification Documentation](https://www.ory.sh/docs/kratos/selfservice/flows/verify-email-account-activation). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ---- | ------ | -------- | -------------- | +| code | path | string | true | none | +| via | path | string | true | What to verify | + +##### Detailed descriptions + +**via**: What to verify + +Currently only "email" is supported. + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 302 | [Found](https://tools.ietf.org/html/rfc7231#section-6.4.3) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 500 Response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": { + "property1": {}, + "property2": {} + }, + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/verification/{via}/confirm/{code} \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/verification/{via}/confirm/{code}", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/verification/{via}/confirm/{code}', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/verification/{via}/confirm/{code}"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/verification/{via}/confirm/{code}', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/verification/{via}/confirm/{code}', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Check who the current HTTP session belongs to + +``` +GET /sessions/whoami HTTP/1.1 +Accept: application/json + +``` + +Uses the HTTP Headers in the GET request to determine (e.g. by using checking +the cookies) who is authenticated. Returns a session object or 401 if the +credentials are invalid or no credentials were sent. + +This endpoint is useful for reverse proxies and API Gateways. + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------ | ----------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | session | [session](#schemasession) | +| 403 | [Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +> 200 Response + +```json +{ + "authenticated_at": "2020-04-06T10:21:38Z", + "expires_at": "2020-04-06T10:21:38Z", + "identity": { + "addresses": [ + { + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-04-06T10:21:38Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" + }, + "issued_at": "2020-04-06T10:21:38Z", + "sid": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /sessions/whoami \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/sessions/whoami", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/sessions/whoami', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/sessions/whoami"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/sessions/whoami', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/sessions/whoami', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +## version + + + +### Get service version + +``` +GET /version HTTP/1.1 +Accept: application/json + +``` + +This endpoint returns the service version typically notated using semantic +versioning. + +If the service supports TLS Edge Termination, this endpoint does not require the +`X-Forwarded-Proto` header to be set. + +Be aware that if you are running multiple nodes of this service, the health +status will never refer to the cluster state, only to a single instance. + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | ------------------------------------------------------- | ----------- | ------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | version | [version](#schemaversion) | + +##### Examples + +> 200 Response + +```json +{ + "version": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /version \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/version", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/version', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/version"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/version', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/version', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ +## Schemas + +CredentialsType + +#### CredentialsType + + + +```json +"string" +``` + +_CredentialsType represents several different credential types, like password +credentials, passwordless credentials,_ + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------------------------------------------------------------------------------------------------------------------- | ------ | -------- | ------------ | ----------- | +| CredentialsType represents several different credential types, like password credentials, passwordless credentials, | string | false | none | and so on. | + +Error + +#### Error + + + +```json +{ + "message": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------- | ------ | -------- | ------------ | ---------------------------------------- | +| message | string | false | none | Code FormErrorCode `json:"id,omitempty"` | + +Identity + +#### Identity + + + +```json +{ + "addresses": [ + { + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-04-06T10:21:38Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----------------- | ----------------------------------------------- | -------- | ------------ | -------------------------------------------------------------------------------------------------------------- | +| addresses | [[VerifiableAddress](#schemaverifiableaddress)] | false | none | none | +| id | [UUID](#schemauuid) | true | none | none | +| traits | [Traits](#schematraits) | true | none | none | +| traits_schema_id | string | true | none | TraitsSchemaID is the ID of the JSON Schema to be used for validating the identity's traits. | +| traits_schema_url | string | false | none | TraitsSchemaURL is the URL of the endpoint where the identity's traits schema can be fetched from. format: url | + +Traits + +#### Traits + + + +```json +{} +``` + +#### Properties + +_None_ + +UUID + +#### UUID + + + +```json +"string" +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----------- | ------------- | -------- | ------------ | ----------- | +| _anonymous_ | string(uuid4) | false | none | none | + +VerifiableAddress + +#### VerifiableAddress + + + +```json +{ + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-04-06T10:21:38Z", + "via": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----------- | ----------------------------------------------------- | -------- | ------------ | ----------- | +| expires_at | string(date-time) | true | none | none | +| id | [UUID](#schemauuid) | true | none | none | +| value | string | true | none | none | +| verified | boolean | true | none | none | +| verified_at | string(date-time) | true | none | none | +| via | [VerifiableAddressType](#schemaverifiableaddresstype) | true | none | none | + +VerifiableAddressType + +#### VerifiableAddressType + + + +```json +"string" +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----------- | ------ | -------- | ------------ | ----------- | +| _anonymous_ | string | false | none | none | + +completeSelfServiceBrowserProfileManagementFlowPayload + +#### completeSelfServiceBrowserProfileManagementFlowPayload + + + +```json +{ + "traits": {} +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------ | ------ | -------- | ------------ | ------------------------------------------------------------------------- | +| traits | object | true | none | Traits contains all of the identity's traits. type: string format: binary | + +errorContainer + +#### errorContainer + + + +```json +{ + "errors": {}, + "id": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------ | ------------------- | -------- | ------------ | ----------- | +| errors | object | false | none | none | +| id | [UUID](#schemauuid) | false | none | none | + +form + +#### form + + + +```json +{ + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string" +} +``` + +_HTMLForm represents a HTML Form. The container can work with both HTTP Form and +JSON requests_ + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------ | ------------------------------- | -------- | ------------ | ------------------------------------------------------------------------------------------- | +| action | string | true | none | Action should be used as the form action URL `
`. | +| errors | [[Error](#schemaerror)] | false | none | Errors contains all form errors. These will be duplicates of the individual field errors. | +| fields | [formFields](#schemaformfields) | true | none | Fields contains multiple fields | +| method | string | true | none | Method is the form method (e.g. POST) | + +formField + +#### formField + + + +```json +{ + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} +} +``` + +_Field represents a HTML Form Field_ + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| -------- | ----------------------- | -------- | ------------ | ----------------------------------------------------------------------- | +| disabled | boolean | false | none | Disabled is the equivalent of `` | +| errors | [[Error](#schemaerror)] | false | none | Errors contains all validation errors this particular field has caused. | +| name | string | true | none | Name is the equivalent of `` | +| pattern | string | false | none | Pattern is the equivalent of `` | +| required | boolean | true | none | Required is the equivalent of `` | +| type | string | true | none | Type is the equivalent of `` | +| value | object | false | none | Value is the equivalent of `` | + +formFields + +#### formFields + + + +```json +[ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } +] +``` + +_Fields contains multiple fields_ + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----------- | ------------------------------- | -------- | ------------ | ------------------------------- | +| _anonymous_ | [[formField](#schemaformfield)] | false | none | Fields contains multiple fields | + +genericError + +#### genericError + + + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": { + "property1": {}, + "property2": {} + }, + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + +_Error response_ + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----- | ------------------------------------------------- | -------- | ------------ | ----------- | +| error | [genericErrorPayload](#schemagenericerrorpayload) | false | none | none | + +genericErrorPayload + +#### genericErrorPayload + + + +```json +{ + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": { + "property1": {}, + "property2": {} + }, + "message": "string", + "reason": "string", + "request": "string", + "status": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| -------------------------- | -------------- | -------- | ------------ | -------------------------------------------------------------------------------------- | +| code | integer(int64) | false | none | Code represents the error status code (404, 403, 401, ...). | +| debug | string | false | none | Debug contains debug information. This is usually not available and has to be enabled. | +| details | object | false | none | none | +| ยป **additionalProperties** | object | false | none | none | +| message | string | false | none | none | +| reason | string | false | none | none | +| request | string | false | none | none | +| status | string | false | none | none | + +healthNotReadyStatus + +#### healthNotReadyStatus + + + +```json +{ + "errors": { + "property1": "string", + "property2": "string" + } +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| -------------------------- | ------ | -------- | ------------ | ------------------------------------------------------------------ | +| errors | object | false | none | Errors contains a list of errors that caused the not ready status. | +| ยป **additionalProperties** | string | false | none | none | + +healthStatus + +#### healthStatus + + + +```json +{ + "status": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------ | ------ | -------- | ------------ | ---------------------------- | +| status | string | false | none | Status always contains "ok". | + +loginRequest + +#### loginRequest + + + +```json +{ + "active": "string", + "expires_at": "2020-04-06T10:21:38Z", + "forced": true, + "id": "string", + "issued_at": "2020-04-06T10:21:38Z", + "methods": { + "property1": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + }, + "property2": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + } + }, + "request_url": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| -------------------------- | ----------------------------------------------- | -------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| active | [CredentialsType](#schemacredentialstype) | false | none | and so on. | +| expires_at | string(date-time) | true | none | ExpiresAt is the time (UTC) when the request expires. If the user still wishes to log in, a new request has to be initiated. | +| forced | boolean | false | none | Forced stores whether this login request should enforce reauthentication. | +| id | [UUID](#schemauuid) | true | none | none | +| issued_at | string(date-time) | true | none | IssuedAt is the time (UTC) when the request occurred. | +| methods | object | true | none | Methods contains context for all enabled login methods. If a login request has been processed, but for example the password is incorrect, this will contain error messages. | +| ยป **additionalProperties** | [loginRequestMethod](#schemaloginrequestmethod) | false | none | none | +| request_url | string | true | none | RequestURL is the initial URL that was requested from ORY Kratos. It can be used to forward information contained in the URL's path or query for example. | + +loginRequestMethod + +#### loginRequestMethod + + + +```json +{ + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------ | ----------------------------------------------------------- | -------- | ------------ | ----------- | +| config | [loginRequestMethodConfig](#schemaloginrequestmethodconfig) | true | none | none | +| method | [CredentialsType](#schemacredentialstype) | true | none | and so on. | + +loginRequestMethodConfig + +#### loginRequestMethodConfig + + + +```json +{ + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| --------- | ------------------------------- | -------- | ------------ | ------------------------------------------------------------------------------------------- | +| action | string | true | none | Action should be used as the form action URL ``. | +| errors | [[Error](#schemaerror)] | false | none | Errors contains all form errors. These will be duplicates of the individual field errors. | +| fields | [formFields](#schemaformfields) | true | none | Fields contains multiple fields | +| method | string | true | none | Method is the form method (e.g. POST) | +| providers | [[formField](#schemaformfield)] | false | none | Providers is set for the "oidc" request method. | + +profileManagementRequest + +#### profileManagementRequest + + + +```json +{ + "expires_at": "2020-04-06T10:21:38Z", + "form": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string" + }, + "id": "string", + "identity": { + "addresses": [ + { + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-04-06T10:21:38Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" + }, + "issued_at": "2020-04-06T10:21:38Z", + "request_url": "string", + "update_successful": true +} +``` + +_Request presents a profile management request_ + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----------------- | --------------------------- | -------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| expires_at | string(date-time) | true | none | ExpiresAt is the time (UTC) when the request expires. If the user still wishes to update the profile, a new request has to be initiated. | +| form | [form](#schemaform) | true | none | HTMLForm represents a HTML Form. The container can work with both HTTP Form and JSON requests | +| id | [UUID](#schemauuid) | true | none | none | +| identity | [Identity](#schemaidentity) | true | none | none | +| issued_at | string(date-time) | true | none | IssuedAt is the time (UTC) when the request occurred. | +| request_url | string | true | none | RequestURL is the initial URL that was requested from ORY Kratos. It can be used to forward information contained in the URL's path or query for example. | +| update_successful | boolean | true | none | UpdateSuccessful, if true, indicates that the profile has been updated successfully with the provided data. Done will stay true when repeatedly checking. If set to true, done will revert back to false only when a request with invalid (e.g. "please use a valid phone number") data was sent. | + +registrationRequest + +#### registrationRequest + + + +```json +{ + "active": "string", + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "issued_at": "2020-04-06T10:21:38Z", + "methods": { + "property1": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + }, + "property2": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + } + }, + "request_url": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| -------------------------- | ------------------------------------------------------------- | -------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| active | [CredentialsType](#schemacredentialstype) | true | none | and so on. | +| expires_at | string(date-time) | true | none | ExpiresAt is the time (UTC) when the request expires. If the user still wishes to log in, a new request has to be initiated. | +| id | [UUID](#schemauuid) | true | none | none | +| issued_at | string(date-time) | true | none | IssuedAt is the time (UTC) when the request occurred. | +| methods | object | true | none | Methods contains context for all enabled registration methods. If a registration request has been processed, but for example the password is incorrect, this will contain error messages. | +| ยป **additionalProperties** | [registrationRequestMethod](#schemaregistrationrequestmethod) | false | none | none | +| request_url | string | true | none | RequestURL is the initial URL that was requested from ORY Kratos. It can be used to forward information contained in the URL's path or query for example. | + +registrationRequestMethod + +#### registrationRequestMethod + + + +```json +{ + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------ | ------------------------------------------------------------------------- | -------- | ------------ | ----------- | +| config | [registrationRequestMethodConfig](#schemaregistrationrequestmethodconfig) | false | none | none | +| method | [CredentialsType](#schemacredentialstype) | false | none | and so on. | + +registrationRequestMethodConfig + +#### registrationRequestMethodConfig + + + +```json +{ + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| --------- | ------------------------------- | -------- | ------------ | ------------------------------------------------------------------------------------------- | +| action | string | true | none | Action should be used as the form action URL ``. | +| errors | [[Error](#schemaerror)] | false | none | Errors contains all form errors. These will be duplicates of the individual field errors. | +| fields | [formFields](#schemaformfields) | true | none | Fields contains multiple fields | +| method | string | true | none | Method is the form method (e.g. POST) | +| providers | [[formField](#schemaformfield)] | false | none | Providers is set for the "oidc" request method. | + +session + +#### session + + + +```json +{ + "authenticated_at": "2020-04-06T10:21:38Z", + "expires_at": "2020-04-06T10:21:38Z", + "identity": { + "addresses": [ + { + "expires_at": "2020-04-06T10:21:38Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-04-06T10:21:38Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" + }, + "issued_at": "2020-04-06T10:21:38Z", + "sid": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ---------------- | --------------------------- | -------- | ------------ | ----------- | +| authenticated_at | string(date-time) | true | none | none | +| expires_at | string(date-time) | true | none | none | +| identity | [Identity](#schemaidentity) | true | none | none | +| issued_at | string(date-time) | true | none | none | +| sid | [UUID](#schemauuid) | true | none | none | + +verificationRequest + +#### verificationRequest + + + +```json +{ + "expires_at": "2020-04-06T10:21:38Z", + "form": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string" + }, + "id": "string", + "issued_at": "2020-04-06T10:21:38Z", + "request_url": "string", + "success": true, + "via": "string" +} +``` + +_Request presents a verification request_ + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----------- | ----------------------------------------------------- | -------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| expires_at | string(date-time) | false | none | ExpiresAt is the time (UTC) when the request expires. If the user still wishes to update the profile, a new request has to be initiated. | +| form | [form](#schemaform) | false | none | HTMLForm represents a HTML Form. The container can work with both HTTP Form and JSON requests | +| id | [UUID](#schemauuid) | false | none | none | +| issued_at | string(date-time) | false | none | IssuedAt is the time (UTC) when the request occurred. | +| request_url | string | false | none | RequestURL is the initial URL that was requested from ORY Kratos. It can be used to forward information contained in the URL's path or query for example. | +| success | boolean | false | none | Success, if true, implies that the request was completed successfully. | +| via | [VerifiableAddressType](#schemaverifiableaddresstype) | false | none | none | + +version + +#### version + + + +```json +{ + "version": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------- | ------ | -------- | ------------ | --------------------------------- | +| version | string | false | none | Version is the service's version. | diff --git a/docs/docs/reference/configuration.md b/docs/docs/reference/configuration.md new file mode 100644 index 00000000000..c6826e9d3d1 --- /dev/null +++ b/docs/docs/reference/configuration.md @@ -0,0 +1,693 @@ +--- +id: configuration +title: Configuration +--- + + + +If file `$HOME/.kratos.yaml` exists, it will be used as a configuration file +which supports all configuration settings listed below. + +You can load the config file from another source using the +`-c path/to/config.yaml` or `--config path/to/config.yaml` flag: +`kratos --config path/to/config.yaml`. + +Config files can be formatted as JSON, YAML and TOML. Some configuration values +support reloading without server restart. All configuration values can be set +using environment variables, as documented below. + +To find out more about edge cases like setting string array values through +environmental variables head to the +[Configuring ORY services](https://www.ory.sh/docs/ecosystem/configuring) +section. + +```yaml +## ORY Kratos Configuration +# + +## dsn ## +# +# Set this value using environment variables on +# - Linux/macOS: +# $ export DSN= +# - Windows Command Line (CMD): +# > set DSN= +# +dsn: occaecat + +## identity ## +# +identity: + ## traits ## + # + traits: + ## default_schema_url ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export IDENTITY_TRAITS_DEFAULT_SCHEMA_URL= + # - Windows Command Line (CMD): + # > set IDENTITY_TRAITS_DEFAULT_SCHEMA_URL= + # + default_schema_url: http://WBwVKWvcJYnRFLOpuTSaootvh.bwCxwHzemclRM,p2bR9wN.avr4J5iwFryiF + + ## schemas ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export IDENTITY_TRAITS_SCHEMAS= + # - Windows Command Line (CMD): + # > set IDENTITY_TRAITS_SCHEMAS= + # + schemas: + - 59663280.313260764 + - true + - elit + - null + - true + +## selfservice ## +# +selfservice: + ## logout ## + # + logout: + ## redirect_to ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_LOGOUT_REDIRECT_TO= + # - Windows Command Line (CMD): + # > set SELFSERVICE_LOGOUT_REDIRECT_TO= + # + redirect_to: http://TPNXSkIbeASVeSLyyRTbVjdkX.ygfeQk8llwnWZ+NeenrZJJHgd8BAoqaQ5iHO9BW-DeqlXBuYKVlL0ijQpJw9Q + + ## strategies ## + # + strategies: + ## password ## + # + password: + ## enabled ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_STRATEGIES_PASSWORD_ENABLED= + # - Windows Command Line (CMD): + # > set SELFSERVICE_STRATEGIES_PASSWORD_ENABLED= + # + enabled: false + + ## oidc ## + # + oidc: + ## enabled ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_STRATEGIES_OIDC_ENABLED= + # - Windows Command Line (CMD): + # > set SELFSERVICE_STRATEGIES_OIDC_ENABLED= + # + enabled: true + + ## config ## + # + config: + ## providers ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_STRATEGIES_OIDC_CONFIG_PROVIDERS= + # - Windows Command Line (CMD): + # > set SELFSERVICE_STRATEGIES_OIDC_CONFIG_PROVIDERS= + # + providers: + - id: ullamco + provider: generic + client_id: velit dolore Duis reprehenderit nisi + client_secret: in consequat dolore + schema_url: http://lpoYQWvHuSDrJljhVjOCONOS.bbfmvV- + issuer_url: http://XaQqjEDUcXllKKimZtGo.ntupaSho,,H5SxzjVm6F8 + auth_url: http://HZ.xxzFv8 + token_url: https://ujCgzKnVDjBnAp.gzxei+BObHmgpLrbeJz8e-zVywPpN-wap+fAWWq4 + scope: + - tempor eu do + - mollit anim incididunt in irure + - id ut sint deserunt commodo + + ## profile ## + # + profile: + ## request_lifespan ## + # + # Default value: 1h + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_PROFILE_REQUEST_LIFESPAN= + # - Windows Command Line (CMD): + # > set SELFSERVICE_PROFILE_REQUEST_LIFESPAN= + # + request_lifespan: 6389090690ns + + ## privileged_session_max_age ## + # + # Default value: 1h + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_PROFILE_PRIVILEGED_SESSION_MAX_AGE= + # - Windows Command Line (CMD): + # > set SELFSERVICE_PROFILE_PRIVILEGED_SESSION_MAX_AGE= + # + privileged_session_max_age: 4926695us + + ## verify ## + # + verify: + ## Self-Service Verification Request Lifespan ## + # + # Sets how long the verification request (for the UI interaction) is valid. + # + # Default value: 1h + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_VERIFY_REQUEST_LIFESPAN= + # - Windows Command Line (CMD): + # > set SELFSERVICE_VERIFY_REQUEST_LIFESPAN= + # + request_lifespan: 2892813086ms + + ## Self-Service Verification Link Lifespan ## + # + # Sets how long the verification link (e.g. the one sent via email) is valid for. + # + # Default value: 24h + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_VERIFY_LINK_LIFESPAN= + # - Windows Command Line (CMD): + # > set SELFSERVICE_VERIFY_LINK_LIFESPAN= + # + link_lifespan: 76658s + + ## login ## + # + login: + ## request_lifespan ## + # + # Default value: 1h + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_LOGIN_REQUEST_LIFESPAN= + # - Windows Command Line (CMD): + # > set SELFSERVICE_LOGIN_REQUEST_LIFESPAN= + # + request_lifespan: 261924674us + + ## before ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_LOGIN_BEFORE= + # - Windows Command Line (CMD): + # > set SELFSERVICE_LOGIN_BEFORE= + # + before: + - job: redirect + config: + default_redirect_url: https://LZuL.nvTjdRbGlnQ5BkDs7Zsz + allow_user_defined_redirect: true + - job: redirect + config: + default_redirect_url: https://v.pwlI+GKKH5Pux,sNH1wU4fGbfkt0NmRtlVjj7FQQPBBzZs9EbfyO + allow_user_defined_redirect: true + - job: redirect + config: + default_redirect_url: https://OH.olzn+m.xe-6Kgs137g9lEn5LoChjMW2ECFLRp9k. + allow_user_defined_redirect: false + - job: redirect + config: + default_redirect_url: http://teHyPcra.bonyF50e-GPaGsOOOLDBpR4ZbyeXdr.gxXWn- + allow_user_defined_redirect: false + - job: redirect + config: + default_redirect_url: https://KqeIwKYdUYHYPNbCHuqANnEQxOqLUet.qvcf7rYxwxTFNKXDpk1FwLllKiEeXMcI0Ga94bmUnUNfTqUbpV + allow_user_defined_redirect: true + + ## after ## + # + after: + ## password ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_LOGIN_AFTER_PASSWORD= + # - Windows Command Line (CMD): + # > set SELFSERVICE_LOGIN_AFTER_PASSWORD= + # + password: + - job: session + + ## oidc ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_LOGIN_AFTER_OIDC= + # - Windows Command Line (CMD): + # > set SELFSERVICE_LOGIN_AFTER_OIDC= + # + oidc: + - job: revoke_active_sessions + - job: redirect + config: + default_redirect_url: http://TJpEMihFHEbvDTr.fbH04HGSBxwZWwiI,fl3tnRgZzaFK3Vf1CD + allow_user_defined_redirect: true + + ## registration ## + # + registration: + ## request_lifespan ## + # + # Default value: 1h + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_REGISTRATION_REQUEST_LIFESPAN= + # - Windows Command Line (CMD): + # > set SELFSERVICE_REGISTRATION_REQUEST_LIFESPAN= + # + request_lifespan: 32118264ns + + ## before ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_REGISTRATION_BEFORE= + # - Windows Command Line (CMD): + # > set SELFSERVICE_REGISTRATION_BEFORE= + # + before: + - job: redirect + config: + default_redirect_url: http://ubxIxHSXZdAFmtpNOWW.jfzQsBcHwDgtadjbGtuabQB2 + allow_user_defined_redirect: false + - job: redirect + config: + default_redirect_url: https://iebhoGPqxM.vyA6f8LWYiTlokLrGXo5VboE + allow_user_defined_redirect: false + - job: redirect + config: + default_redirect_url: http://EfZCcuFccKLA.kqFt96m + allow_user_defined_redirect: false + - job: redirect + config: + default_redirect_url: http://yWrLhTQqdWvktATVW.iyvioS-Lan.m7JaD6ZGb + allow_user_defined_redirect: true + - job: redirect + config: + default_redirect_url: http://dKpGhABBIQhDutIAcuGFMtJytuNccC.rcqk+0nhhGiAAB82WPG9EfYBoOv3nmPr6syGv6dWyW90F6xNkO+DQuUw1 + allow_user_defined_redirect: false + + ## after ## + # + after: + ## password ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_REGISTRATION_AFTER_PASSWORD= + # - Windows Command Line (CMD): + # > set SELFSERVICE_REGISTRATION_AFTER_PASSWORD= + # + password: + - job: verify + + ## oidc ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SELFSERVICE_REGISTRATION_AFTER_OIDC= + # - Windows Command Line (CMD): + # > set SELFSERVICE_REGISTRATION_AFTER_OIDC= + # + oidc: + - job: session + - job: verify + - job: redirect + config: + default_redirect_url: http://FVJpZlF.hfauWp + allow_user_defined_redirect: false + - job: redirect + config: + default_redirect_url: http://MxYouifavjiddhfCRhVxEdCo.oiyhO1RNkxr0Fgtohdl5JbiRdZfvSmK+YgXDahIOY+E7sRyf0HEc1rnan-6S37UZ8D + allow_user_defined_redirect: true + - job: redirect + config: + default_redirect_url: https://s.moiB9e8fSa + allow_user_defined_redirect: false + +## Courier configuration ## +# +# The courier is responsible for sending and delivering messages over email, sms, and other means. +# +courier: + ## SMTP Configuration ## + # + # Configures outgoing emails using the SMTP protocol. + # + smtp: + ## SMTP connection string ## + # + # This URI will be used to connect to the SMTP server. + # + # Examples: + # - smtps://foo:bar@my-mailserver:1234/ + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export COURIER_SMTP_CONNECTION_URI= + # - Windows Command Line (CMD): + # > set COURIER_SMTP_CONNECTION_URI= + # + connection_uri: smtps://foo:bar@my-mailserver:1234/ + + ## SMTP Sender Address ## + # + # The recipient of an email will see this as the sender address. + # + # Default value: no-reply@ory.kratos.sh + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export COURIER_SMTP_FROM_ADDRESS= + # - Windows Command Line (CMD): + # > set COURIER_SMTP_FROM_ADDRESS= + # + from_address: J4LNi@lKDckRnZblhfGKt.vtou + + ## Override message templates ## + # + # You can override certain or all message templates by pointing this key to the path where the templates are located. + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export COURIER_TEMPLATE_OVERRIDE_PATH= + # - Windows Command Line (CMD): + # > set COURIER_TEMPLATE_OVERRIDE_PATH= + # + template_override_path: magna nulla officia + +## serve ## +# +serve: + ## admin ## + # + admin: + ## host ## + # + # Default value: 0.0.0.0 + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SERVE_ADMIN_HOST= + # - Windows Command Line (CMD): + # > set SERVE_ADMIN_HOST= + # + host: ut aliqua amet pariatur Lorem + + ## port ## + # + # Default value: 4434 + # + # Examples: + # - 4434 + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SERVE_ADMIN_PORT= + # - Windows Command Line (CMD): + # > set SERVE_ADMIN_PORT= + # + port: 4434 + + ## public ## + # + public: + ## host ## + # + # Default value: 0.0.0.0 + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SERVE_PUBLIC_HOST= + # - Windows Command Line (CMD): + # > set SERVE_PUBLIC_HOST= + # + host: eiusmod ea + + ## port ## + # + # Default value: 4433 + # + # Examples: + # - 4433 + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SERVE_PUBLIC_PORT= + # - Windows Command Line (CMD): + # > set SERVE_PUBLIC_PORT= + # + port: 4433 + +## urls ## +# +urls: + ## profile_ui ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export URLS_PROFILE_UI= + # - Windows Command Line (CMD): + # > set URLS_PROFILE_UI= + # + profile_ui: http://BMvdJD.oumrvPl+.YTtiPL6I21HYzlRsoTW-Dd1-lDUCJltAHcth.+eggbpCfQvWY.YSS3i + + ## mfa_ui ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export URLS_MFA_UI= + # - Windows Command Line (CMD): + # > set URLS_MFA_UI= + # + mfa_ui: http://jJAIvAwZyxLFzQjBYtcGhLGuzwudpru.dbF.OeGVZf-fC + + ## login_ui ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export URLS_LOGIN_UI= + # - Windows Command Line (CMD): + # > set URLS_LOGIN_UI= + # + login_ui: http://bC.dsmw,wLBWDeODw.jzOSI + + ## registration_ui ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export URLS_REGISTRATION_UI= + # - Windows Command Line (CMD): + # > set URLS_REGISTRATION_UI= + # + registration_ui: http://aFuZJoeUxZWbuTpHLFZvK.gxlPs3in99K,qmGgreVGQFtdAJbjtOmf4,oaXujXoOfC9 + + ## error_ui ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export URLS_ERROR_UI= + # - Windows Command Line (CMD): + # > set URLS_ERROR_UI= + # + error_ui: http://XyOnfsMVwIYMBlWKnkCPLOEjjM.czcUWzDof8Yf3EfshOx2zlNKWInKZLdpwX6P+UoqMabq6j7wR2Wpgx+zXrxhS34dr + + ## Verify User Interface URL ## + # + # The URL of the Verify User Interface, the page where users can request activate and / or verify their email or telephone number. + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export URLS_VERIFY_UI= + # - Windows Command Line (CMD): + # > set URLS_VERIFY_UI= + # + verify_ui: https://AFOEiEYuMWbJuHEggEbQ.pfQWlSMyPl,,pcK80YpSmfTu4+8fJfb9nsteihlmuak + + ## default_return_to ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export URLS_DEFAULT_RETURN_TO= + # - Windows Command Line (CMD): + # > set URLS_DEFAULT_RETURN_TO= + # + default_return_to: http://zkQAiAiiIYb.ccihU+5ATPZJD2Pw8g,BV1p3ttrEDUdvY1.smb0rA + + ## self ## + # + self: + ## public ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export URLS_SELF_PUBLIC= + # - Windows Command Line (CMD): + # > set URLS_SELF_PUBLIC= + # + public: https://soaSpPGphWtHdGE.jnisR2qXIxFM6sRpbYF6B9pd1FBsbPIWBKPsXHYbqlRhdmG0xq.pO0IJ4m + + ## admin ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export URLS_SELF_ADMIN= + # - Windows Command Line (CMD): + # > set URLS_SELF_ADMIN= + # + admin: http://AW.pbumgzDhx3hSJ+clKU7Oe,amEjmmbm1Ru2yMg0k6kV7cdSKDcPsn1QYXOVUB1071goU + + ## whitelisted_return_to_domains ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export URLS_WHITELISTED_RETURN_TO_DOMAINS= + # - Windows Command Line (CMD): + # > set URLS_WHITELISTED_RETURN_TO_DOMAINS= + # + whitelisted_return_to_domains: + - http://CTLQXiigUbkVwraZAOiDopaD.lzwMQNslH,m2aPn + +## log ## +# +log: + ## level ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export LOG_LEVEL= + # - Windows Command Line (CMD): + # > set LOG_LEVEL= + # + level: debug + + ## format ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export LOG_FORMAT= + # - Windows Command Line (CMD): + # > set LOG_FORMAT= + # + format: text + +## secrets ## +# +secrets: + ## session ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SECRETS_SESSION= + # - Windows Command Line (CMD): + # > set SECRETS_SESSION= + # + session: + - laboris dolore quis + - cupidatatexercitation sunt + +## hashers ## +# +hashers: + ## argon2 ## + # + argon2: + ## memory ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export HASHERS_ARGON2_MEMORY= + # - Windows Command Line (CMD): + # > set HASHERS_ARGON2_MEMORY= + # + memory: 11883317 + + ## iterations ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export HASHERS_ARGON2_ITERATIONS= + # - Windows Command Line (CMD): + # > set HASHERS_ARGON2_ITERATIONS= + # + iterations: 21236220 + + ## parallelism ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export HASHERS_ARGON2_PARALLELISM= + # - Windows Command Line (CMD): + # > set HASHERS_ARGON2_PARALLELISM= + # + parallelism: 71551855 + + ## salt_length ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export HASHERS_ARGON2_SALT_LENGTH= + # - Windows Command Line (CMD): + # > set HASHERS_ARGON2_SALT_LENGTH= + # + salt_length: 80719037 + + ## key_length ## + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export HASHERS_ARGON2_KEY_LENGTH= + # - Windows Command Line (CMD): + # > set HASHERS_ARGON2_KEY_LENGTH= + # + key_length: 86477135 + +## security ## +# +security: + ## session ## + # + session: + ## cookie ## + # + cookie: + ## same_site ## + # + # Default value: Lax + # + # Set this value using environment variables on + # - Linux/macOS: + # $ export SECURITY_SESSION_COOKIE_SAME_SITE= + # - Windows Command Line (CMD): + # > set SECURITY_SESSION_COOKIE_SAME_SITE= + # + same_site: Strict +``` diff --git a/docs/docs/reference/html-forms.md b/docs/docs/reference/html-forms.md new file mode 100644 index 00000000000..83a8c4c1414 --- /dev/null +++ b/docs/docs/reference/html-forms.md @@ -0,0 +1,50 @@ +--- +id: html-forms +title: HTML Form Parser +--- + +If you're using HTML Forms to sign users up or update profiles, ORY Kratos needs +to assert the type of each field, as HTML Form Field Values are untyped. + +ORY Kratos uses the JSON Schema to assert types. There are a few tricks you +should know when using this feature. + +## Nesting + +Assuming this JSON Schema: + +```json +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "name": { + "type": "object", + "properties": { + "first": { + "type": "string" + }, + "last": { + "type": "string" + } + } + } + } +} +``` + +You could address `name.first` this with an HTML Input Form: + +``` + +``` + +## Checkboxes + +Checkboxes for `true` / `false` can be set up as follows. If the value is +supposed to be false: not checked: + +``` + + +``` diff --git a/docs/docs/reference/json-schema-json-paths.md b/docs/docs/reference/json-schema-json-paths.md new file mode 100644 index 00000000000..e265cdc4d3b --- /dev/null +++ b/docs/docs/reference/json-schema-json-paths.md @@ -0,0 +1,34 @@ +--- +id: json-schema-json-paths +title: JSON Schema and JSON Paths +--- + +[JSON Schema](https://json-schema.org) is a vocabulary that allows you to +annotate and validate JSON documents. It is a IETF (Internet and Engineering +Task Force) public standard and is similar to a XML DTD but suited for JSON +payloads. + +We rely on JSON Schema heavily internally, from configuration validation to +generating OpenAPI Spec to writing documentation. By using ORY Kratos, you will +be exposed to JSON Schema as it is used for defining Identity data models and +other things. + +To learn more about JSON Schema, head over to +[json-schema.org/learn/](https://json-schema.org/learn/). + +We are currently using JSON Schema Draft7 but plan on migrating to a newer +version in the future. + +## JSON Path Syntax + +In some cases you can define a JSON Path. We use +[`tidwall/gjson`](https://github.com/tidwall/gjson) for this. A GJSON Path is a +text string syntax that describes a search pattern for quickly retrieving values +from a JSON payload. + +There are two types of JSON Paths: + +- Reading JSON using the + [GJSON Syntax](https://github.com/tidwall/gjson/blob/master/SYNTAX.md); +- Writing JSON using the + [SJSON Syntax](https://github.com/tidwall/sjson#path-syntax). diff --git a/docs/docs/sdk/api.md b/docs/docs/sdk/api.md new file mode 100644 index 00000000000..8c1ad67ccf4 --- /dev/null +++ b/docs/docs/sdk/api.md @@ -0,0 +1,5556 @@ +--- +title: REST API +id: api +--- + +Welcome to the ORY Kratos HTTP API documentation! + +> You are viewing REST API documentation. This documentation is auto-generated +> from a swagger specification which itself is generated from annotations in the +> source code of the project. It is possible that this documentation includes +> bugs and that code samples are incomplete or wrong. +> +> If you find issues in the respective documentation, please do not edit the +> Markdown files directly (as they are generated) but raise an issue on the +> project's GitHub presence instead. This documentation will improve over time +> with your help! If you have ideas how to improve this part of the +> documentation, feel free to share them in a +> [GitHub issue](https://github.com/ory/docs/issues/new) any time. + + + +## health + + + +### Check alive status + +``` +GET /health/alive HTTP/1.1 +Accept: application/json + +``` + +This endpoint returns a 200 status code when the HTTP server is up running. This +status does currently not include checks whether the database connection is +working. + +If the service supports TLS Edge Termination, this endpoint does not require the +`X-Forwarded-Proto` header to be set. + +Be aware that if you are running multiple nodes of this service, the health +status will never refer to the cluster state, only to a single instance. + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------ | ----------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | healthStatus | [healthStatus](#schemahealthstatus) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +###### 200 response + +```json +{ + "status": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /health/alive \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/health/alive", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/health/alive', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/health/alive"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/health/alive', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/health/alive', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Check readiness status + +``` +GET /health/ready HTTP/1.1 +Accept: application/json + +``` + +This endpoint returns a 200 status code when the HTTP server is up running and +the environment dependencies (e.g. the database) are responsive as well. + +If the service supports TLS Edge Termination, this endpoint does not require the +`X-Forwarded-Proto` header to be set. + +Be aware that if you are running multiple nodes of this service, the health +status will never refer to the cluster state, only to a single instance. + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | ------------------------------------------------------------------------ | -------------------- | --------------------------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | healthStatus | [healthStatus](#schemahealthstatus) | +| 503 | [Service Unavailable](https://tools.ietf.org/html/rfc7231#section-6.6.4) | healthNotReadyStatus | [healthNotReadyStatus](#schemahealthnotreadystatus) | + +##### Examples + +###### 200 response + +```json +{ + "status": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /health/ready \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/health/ready", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/health/ready', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/health/ready"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/health/ready', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/health/ready', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +## Administrative Endpoints + + + +### List all identities in the system + +``` +GET /identities HTTP/1.1 +Accept: application/json + +``` + +This endpoint returns a login request's context with, for example, error details +and other information. + +Learn how identities work in +[ORY Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | ------------------------------------------------------- | --------------------- | ------ | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | A list of identities. | + +nolint:deadcode,unused|Inline| +|500|[Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1)|genericError|[genericError](#schemagenericerror)| + + + +##### Response Schema + +Status Code **200** + +| Name | Type | Required | Restrictions | Description | +| ------------------- | ----------------------------------------------------- | -------- | ------------ | -------------------------------------------------------------------------------------------------------------- | +| _anonymous_ | [[Identity](#schemaidentity)] | false | none | none | +| ยป addresses | [[VerifiableAddress](#schemaverifiableaddress)] | false | none | none | +| ยปยป expires_at | string(date-time) | true | none | none | +| ยปยป id | [UUID](#schemauuid)(uuid4) | true | none | none | +| ยปยป value | string | true | none | none | +| ยปยป verified | boolean | true | none | none | +| ยปยป verified_at | string(date-time) | true | none | none | +| ยปยป via | [VerifiableAddressType](#schemaverifiableaddresstype) | true | none | none | +| ยป id | [UUID](#schemauuid)(uuid4) | true | none | none | +| ยป traits | [Traits](#schematraits) | true | none | none | +| ยป traits_schema_id | string | true | none | TraitsSchemaID is the ID of the JSON Schema to be used for validating the identity's traits. | +| ยป traits_schema_url | string | false | none | TraitsSchemaURL is the URL of the endpoint where the identity's traits schema can be fetched from. format: url | + +##### Examples + +###### 200 response + +```json +[ + { + "addresses": [ + { + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-03-25T17:39:55Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" + } +] +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /identities \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/identities", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/identities', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/identities"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/identities', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/identities', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Create an identity + +``` +POST /identities HTTP/1.1 +Content-Type: application/json +Accept: application/json + +``` + +This endpoint creates an identity. It is NOT possible to set an identity's +credentials (password, ...) using this method! A way to achieve that will be +introduced in the future. + +Learn how identities work in +[ORY Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model). + +#### Request body + +```json +{ + "addresses": [ + { + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-03-25T17:39:55Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +} +``` + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ---- | --------------------------- | -------- | ----------- | +| body | body | [Identity](#schemaidentity) | true | none | + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | ------------------------------------------------------------ | ------------------ | ------ | +| 201 | [Created](https://tools.ietf.org/html/rfc7231#section-6.3.2) | A single identity. | + +nolint:deadcode,unused|[Identity](#schemaidentity)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|genericError|[genericError](#schemagenericerror)| +|500|[Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1)|genericError|[genericError](#schemagenericerror)| + +##### Examples + +###### 201 response + +```json +{ + "addresses": [ + { + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-03-25T17:39:55Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X POST /identities \ + -H 'Content-Type: application/json' \ -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Content-Type": []string{"application/json"}, + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("POST", "/identities", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); +const input = '{ + "addresses": [ + { + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-03-25T17:39:55Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +}'; +const headers = { + 'Content-Type': 'application/json', 'Accept': 'application/json' +} + +fetch('/identities', { + method: 'POST', + body: input, + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/identities"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("POST"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json' +} + +r = requests.post( + '/identities', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Content-Type' => 'application/json', + 'Accept' => 'application/json' +} + +result = RestClient.post '/identities', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Get an identity + +``` +GET /identities/{id} HTTP/1.1 +Accept: application/json + +``` + +Learn how identities work in +[ORY Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ---- | ------ | -------- | ---------------------------------------------------- | +| id | path | string | true | ID must be set to the ID of identity you want to get | + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | ------------------------------------------------------- | ------------------ | ------ | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | A single identity. | + +nolint:deadcode,unused|[Identity](#schemaidentity)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|genericError|[genericError](#schemagenericerror)| +|500|[Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1)|genericError|[genericError](#schemagenericerror)| + +##### Examples + +###### 200 response + +```json +{ + "addresses": [ + { + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-03-25T17:39:55Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /identities/{id} \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/identities/{id}", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/identities/{id}', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/identities/{id}"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/identities/{id}', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/identities/{id}', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Update an identity + +``` +PUT /identities/{id} HTTP/1.1 +Content-Type: application/json +Accept: application/json + +``` + +This endpoint updates an identity. It is NOT possible to set an identity's +credentials (password, ...) using this method! A way to achieve that will be +introduced in the future. + +The full identity payload (except credentials) is expected. This endpoint does +not support patching. + +Learn how identities work in +[ORY Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model). + +#### Request body + +```json +{ + "addresses": [ + { + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-03-25T17:39:55Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +} +``` + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ---- | --------------------------- | -------- | ------------------------------------------------------- | +| id | path | string | true | ID must be set to the ID of identity you want to update | +| body | body | [Identity](#schemaidentity) | true | none | + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | ------------------------------------------------------- | ------------------ | ------ | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | A single identity. | + +nolint:deadcode,unused|[Identity](#schemaidentity)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|genericError|[genericError](#schemagenericerror)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|genericError|[genericError](#schemagenericerror)| +|500|[Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1)|genericError|[genericError](#schemagenericerror)| + +##### Examples + +###### 200 response + +```json +{ + "addresses": [ + { + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-03-25T17:39:55Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X PUT /identities/{id} \ + -H 'Content-Type: application/json' \ -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Content-Type": []string{"application/json"}, + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("PUT", "/identities/{id}", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); +const input = '{ + "addresses": [ + { + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-03-25T17:39:55Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +}'; +const headers = { + 'Content-Type': 'application/json', 'Accept': 'application/json' +} + +fetch('/identities/{id}', { + method: 'PUT', + body: input, + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/identities/{id}"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("PUT"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json' +} + +r = requests.put( + '/identities/{id}', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Content-Type' => 'application/json', + 'Accept' => 'application/json' +} + +result = RestClient.put '/identities/{id}', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Delete an identity + +``` +DELETE /identities/{id} HTTP/1.1 +Accept: application/json + +``` + +This endpoint deletes an identity. This can not be undone. + +Learn how identities work in +[ORY Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ---- | ------ | -------- | ------------------------ | +| id | path | string | true | ID is the identity's ID. | + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 204 | [No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +###### 404 response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": [ + { + "property1": {}, + "property2": {} + } + ], + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X DELETE /identities/{id} \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("DELETE", "/identities/{id}", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/identities/{id}', { + method: 'DELETE', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/identities/{id}"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("DELETE"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.delete( + '/identities/{id}', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.delete '/identities/{id}', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +## Public Endpoints + + + +### Initialize browser-based login user flow + +``` +GET /self-service/browser/flows/login HTTP/1.1 +Accept: application/json + +``` + +This endpoint initializes a browser-based user login flow. Once initialized, the +browser will be redirected to `urls.login_ui` with the request ID set as a query +parameter. If a valid user session exists already, the browser will be +redirected to `urls.default_redirect_url`. + +> This endpoint is NOT INTENDED for API clients and only works with browsers +> (Chrome, Firefox, ...). + +More information can be found at +[ORY Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 302 | [Found](https://tools.ietf.org/html/rfc7231#section-6.4.3) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +###### 500 response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": [ + { + "property1": {}, + "property2": {} + } + ], + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/login \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/login", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/login', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/login"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/login', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/login', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Initialize Browser-Based Logout User Flow + +``` +GET /self-service/browser/flows/logout HTTP/1.1 +Accept: application/json + +``` + +This endpoint initializes a logout flow. + +> This endpoint is NOT INTENDED for API clients and only works with browsers +> (Chrome, Firefox, ...). + +On successful logout, the browser will be redirected (HTTP 302 Found) to +`urls.default_return_to`. + +More information can be found at +[ORY Kratos User Logout Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-logout). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 302 | [Found](https://tools.ietf.org/html/rfc7231#section-6.4.3) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +###### 500 response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": [ + { + "property1": {}, + "property2": {} + } + ], + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/logout \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/logout", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/logout', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/logout"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/logout', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/logout', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Initialize browser-based profile management flow + +``` +GET /self-service/browser/flows/profile HTTP/1.1 +Accept: application/json + +``` + +This endpoint initializes a browser-based profile management flow. Once +initialized, the browser will be redirected to `urls.profile_ui` with the +request ID set as a query parameter. If no valid user session exists, a login +flow will be initialized. + +> This endpoint is NOT INTENDED for API clients and only works with browsers +> (Chrome, Firefox, ...). + +More information can be found at +[ORY Kratos Profile Management Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-profile-management). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 302 | [Found](https://tools.ietf.org/html/rfc7231#section-6.4.3) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +###### 500 response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": [ + { + "property1": {}, + "property2": {} + } + ], + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/profile \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/profile", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/profile', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/profile"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/profile', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/profile', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Complete the browser-based profile management flows + +``` +POST /self-service/browser/flows/verification/{via}/complete?request=string HTTP/1.1 +Accept: application/json + +``` + +This endpoint completes a browser-based profile management flow. This is usually +achieved by POSTing data to this endpoint. + +If the provided profile data is valid against the Identity's Traits JSON Schema, +the data will be updated and the browser redirected to `url.profile_ui` for +further steps. + +> This endpoint is NOT INTENDED for API clients and only works with browsers +> (Chrome, Firefox, ...) and HTML Forms. + +More information can be found at +[ORY Kratos Email and Phone Verification Documentation](https://www.ory.sh/docs/kratos/selfservice/flows/verify-email-account-activation). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ----- | ------ | -------- | ------------------------- | +| request | query | string | true | Request is the Request ID | +| via | path | string | true | What to verify | + +##### Detailed descriptions + +**request**: Request is the Request ID + +The value for this parameter comes from `request` URL Query parameter sent to +your application (e.g. `/verify?request=abcde`). + +**via**: What to verify + +Currently only "email" is supported. + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 302 | [Found](https://tools.ietf.org/html/rfc7231#section-6.4.3) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +###### 500 response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": [ + { + "property1": {}, + "property2": {} + } + ], + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X POST /self-service/browser/flows/verification/{via}/complete?request=string \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("POST", "/self-service/browser/flows/verification/{via}/complete", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/verification/{via}/complete?request=string', { + method: 'POST', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/verification/{via}/complete?request=string"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("POST"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.post( + '/self-service/browser/flows/verification/{via}/complete', + params={ + 'request': 'string'}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.post '/self-service/browser/flows/verification/{via}/complete', + params: { + 'request' => 'string'}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Initialize browser-based registration user flow + +``` +GET /self-service/browser/flows/registration HTTP/1.1 +Accept: application/json + +``` + +This endpoint initializes a browser-based user registration flow. Once +initialized, the browser will be redirected to `urls.registration_ui` with the +request ID set as a query parameter. If a valid user session exists already, the +browser will be redirected to `urls.default_redirect_url`. + +> This endpoint is NOT INTENDED for API clients and only works with browsers +> (Chrome, Firefox, ...). + +More information can be found at +[ORY Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 302 | [Found](https://tools.ietf.org/html/rfc7231#section-6.4.3) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +###### 500 response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": [ + { + "property1": {}, + "property2": {} + } + ], + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/registration \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/registration", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/registration', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/registration"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/registration', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/registration', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Initialize browser-based verification flow + +``` +GET /self-service/browser/flows/verification/init/{via} HTTP/1.1 +Accept: application/json + +``` + +This endpoint initializes a browser-based profile management flow. Once +initialized, the browser will be redirected to `urls.profile_ui` with the +request ID set as a query parameter. If no valid user session exists, a login +flow will be initialized. + +> This endpoint is NOT INTENDED for API clients and only works with browsers +> (Chrome, Firefox, ...). + +More information can be found at +[ORY Kratos Email and Phone Verification Documentation](https://www.ory.sh/docs/kratos/selfservice/flows/verify-email-account-activation). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ---- | ------ | -------- | -------------- | +| via | path | string | true | What to verify | + +##### Detailed descriptions + +**via**: What to verify + +Currently only "email" is supported. + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 302 | [Found](https://tools.ietf.org/html/rfc7231#section-6.4.3) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +###### 500 response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": [ + { + "property1": {}, + "property2": {} + } + ], + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/verification/init/{via} \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/verification/init/{via}", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/verification/init/{via}', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/verification/init/{via}"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/verification/init/{via}', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/verification/init/{via}', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Complete the browser-based verification flows + +``` +GET /self-service/browser/flows/verification/{via}/confirm/{code} HTTP/1.1 +Accept: application/json + +``` + +This endpoint completes a browser-based verification flow. + +> This endpoint is NOT INTENDED for API clients and only works with browsers +> (Chrome, Firefox, ...) and HTML Forms. + +More information can be found at +[ORY Kratos Email and Phone Verification Documentation](https://www.ory.sh/docs/kratos/selfservice/flows/verify-email-account-activation). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ---- | ------ | -------- | -------------- | +| code | path | string | true | none | +| via | path | string | true | What to verify | + +##### Detailed descriptions + +**via**: What to verify + +Currently only "email" is supported. + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| 302 | [Found](https://tools.ietf.org/html/rfc7231#section-6.4.3) | Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is | +| typically 201. | None | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +###### 500 response + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": [ + { + "property1": {}, + "property2": {} + } + ], + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/verification/{via}/confirm/{code} \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/verification/{via}/confirm/{code}", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/verification/{via}/confirm/{code}', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/verification/{via}/confirm/{code}"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/verification/{via}/confirm/{code}', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/verification/{via}/confirm/{code}', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Check who the current HTTP session belongs to + +``` +GET /sessions/whoami HTTP/1.1 +Accept: application/json + +``` + +Uses the HTTP Headers in the GET request to determine (e.g. by using checking +the cookies) who is authenticated. Returns a session object or 401 if the +credentials are invalid or no credentials were sent. + +This endpoint is useful for reverse proxies and API Gateways. + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------ | ----------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | session | [session](#schemasession) | +| 403 | [Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +###### 200 response + +```json +{ + "authenticated_at": "2020-03-25T17:39:55Z", + "expires_at": "2020-03-25T17:39:55Z", + "identity": { + "addresses": [ + { + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-03-25T17:39:55Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" + }, + "issued_at": "2020-03-25T17:39:55Z", + "sid": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /sessions/whoami \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/sessions/whoami", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/sessions/whoami', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/sessions/whoami"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/sessions/whoami', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/sessions/whoami', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +## common + + + +### Get the request context of browser-based login user flows + +``` +GET /self-service/browser/flows/requests/login?request=string HTTP/1.1 +Accept: application/json + +``` + +This endpoint returns a login request's context with, for example, error details +and other information. + +When accessing this endpoint through ORY Kratos' Public API, ensure that cookies +are set as they are required for CSRF to work. To prevent token scanning +attacks, the public endpoint does not return 404 status codes to prevent +scanning attacks. + +More information can be found at +[ORY Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ----- | ------ | -------- | ------------------------------- | +| request | query | string | true | Request is the Login Request ID | + +##### Detailed descriptions + +**request**: Request is the Login Request ID + +The value for this parameter comes from `request` URL Query parameter sent to +your application (e.g. `/login?request=abcde`). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------ | ----------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | loginRequest | [loginRequest](#schemaloginrequest) | +| 403 | [Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3) | genericError | [genericError](#schemagenericerror) | +| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +###### 200 response + +```json +{ + "active": "string", + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "issued_at": "2020-03-25T17:39:55Z", + "methods": { + "property1": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + }, + "property2": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + } + }, + "request_url": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/requests/login?request=string \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/requests/login", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/requests/login?request=string', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/requests/login?request=string"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/requests/login', + params={ + 'request': 'string'}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/requests/login', + params: { + 'request' => 'string'}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Get the request context of browser-based profile management flows + +``` +GET /self-service/browser/flows/requests/profile?request=string HTTP/1.1 +Accept: application/json + +``` + +When accessing this endpoint through ORY Kratos' Public API, ensure that cookies +are set as they are required for checking the auth session. To prevent scanning +attacks, the public endpoint does not return 404 status codes but instead 403 +or 500. + +More information can be found at +[ORY Kratos Profile Management Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-profile-management). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ----- | ------ | -------- | ------------------------------- | +| request | query | string | true | Request is the Login Request ID | + +##### Detailed descriptions + +**request**: Request is the Login Request ID + +The value for this parameter comes from `request` URL Query parameter sent to +your application (e.g. `/login?request=abcde`). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------------------ | ----------------------------------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | profileManagementRequest | [profileManagementRequest](#schemaprofilemanagementrequest) | +| 403 | [Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3) | genericError | [genericError](#schemagenericerror) | +| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +###### 200 response + +```json +{ + "expires_at": "2020-03-25T17:39:55Z", + "form": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string" + }, + "id": "string", + "identity": { + "addresses": [ + { + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-03-25T17:39:55Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" + }, + "issued_at": "2020-03-25T17:39:55Z", + "request_url": "string", + "update_successful": true +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/requests/profile?request=string \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/requests/profile", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/requests/profile?request=string', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/requests/profile?request=string"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/requests/profile', + params={ + 'request': 'string'}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/requests/profile', + params: { + 'request' => 'string'}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Get the request context of browser-based registration user flows + +``` +GET /self-service/browser/flows/requests/registration?request=string HTTP/1.1 +Accept: application/json + +``` + +This endpoint returns a registration request's context with, for example, error +details and other information. + +When accessing this endpoint through ORY Kratos' Public API, ensure that cookies +are set as they are required for CSRF to work. To prevent token scanning +attacks, the public endpoint does not return 404 status codes to prevent +scanning attacks. + +More information can be found at +[ORY Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ----- | ------ | -------- | -------------------------------------- | +| request | query | string | true | Request is the Registration Request ID | + +##### Detailed descriptions + +**request**: Request is the Registration Request ID + +The value for this parameter comes from `request` URL Query parameter sent to +your application (e.g. `/registration?request=abcde`). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------------- | ------------------------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | registrationRequest | [registrationRequest](#schemaregistrationrequest) | +| 403 | [Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3) | genericError | [genericError](#schemagenericerror) | +| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +###### 200 response + +```json +{ + "active": "string", + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "issued_at": "2020-03-25T17:39:55Z", + "methods": { + "property1": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + }, + "property2": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + } + }, + "request_url": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/requests/registration?request=string \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/requests/registration", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/requests/registration?request=string', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/requests/registration?request=string"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/requests/registration', + params={ + 'request': 'string'}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/requests/registration', + params: { + 'request' => 'string'}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Get the request context of browser-based verification flows + +``` +GET /self-service/browser/flows/requests/verification?request=string HTTP/1.1 +Accept: application/json + +``` + +When accessing this endpoint through ORY Kratos' Public API, ensure that cookies +are set as they are required for checking the auth session. To prevent scanning +attacks, the public endpoint does not return 404 status codes but instead 403 +or 500. + +More information can be found at +[ORY Kratos Email and Phone Verification Documentation](https://www.ory.sh/docs/kratos/selfservice/flows/verify-email-account-activation). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ----- | ------ | -------- | ------------------------- | +| request | query | string | true | Request is the Request ID | + +##### Detailed descriptions + +**request**: Request is the Request ID + +The value for this parameter comes from `request` URL Query parameter sent to +your application (e.g. `/verify?request=abcde`). + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | ------------------- | ------------------------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | verificationRequest | [verificationRequest](#schemaverificationrequest) | +| 403 | [Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3) | genericError | [genericError](#schemagenericerror) | +| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +###### 200 response + +```json +{ + "expires_at": "2020-03-25T17:39:55Z", + "form": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string" + }, + "id": "string", + "issued_at": "2020-03-25T17:39:55Z", + "request_url": "string", + "success": true, + "via": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/browser/flows/requests/verification?request=string \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/browser/flows/requests/verification", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/browser/flows/requests/verification?request=string', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/browser/flows/requests/verification?request=string"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/browser/flows/requests/verification', + params={ + 'request': 'string'}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/browser/flows/requests/verification', + params: { + 'request' => 'string'}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +### Get user-facing self-service errors + +``` +GET /self-service/errors HTTP/1.1 +Accept: application/json + +``` + +This endpoint returns the error associated with a user-facing self service +errors. + +When accessing this endpoint through ORY Kratos' Public API, ensure that cookies +are set as they are required for CSRF to work. To prevent token scanning +attacks, the public endpoint does not return 404 status codes to prevent +scanning attacks. + +More information can be found at +[ORY Kratos User User Facing Error Documentation](https://www.ory.sh/docs/kratos/self-service/flows/user-facing-errors). + + + +##### Parameters + +| Parameter | In | Type | Required | Description | +| --------- | ----- | ------ | -------- | ----------- | +| id | query | string | false | none | + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | -------------------------------------------------------------------------- | -------------------------- | --------------------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | User-facing error response | [errorContainer](#schemaerrorcontainer) | +| 403 | [Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3) | genericError | [genericError](#schemagenericerror) | +| 404 | [Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4) | genericError | [genericError](#schemagenericerror) | +| 500 | [Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1) | genericError | [genericError](#schemagenericerror) | + +##### Examples + +###### 200 response + +```json +{ + "errors": {}, + "id": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /self-service/errors \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/self-service/errors", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/self-service/errors', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/self-service/errors"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/self-service/errors', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/self-service/errors', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ + + +## version + + + +### Get service version + +``` +GET /version HTTP/1.1 +Accept: application/json + +``` + +This endpoint returns the service version typically notated using semantic +versioning. + +If the service supports TLS Edge Termination, this endpoint does not require the +`X-Forwarded-Proto` header to be set. + +Be aware that if you are running multiple nodes of this service, the health +status will never refer to the cluster state, only to a single instance. + +#### Responses + + + +##### Overview + +| Status | Meaning | Description | Schema | +| ------ | ------------------------------------------------------- | ----------- | ------------------------- | +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | version | [version](#schemaversion) | + +##### Examples + +###### 200 response + +```json +{ + "version": "string" +} +``` + + + +#### Code samples + +
+ +
+
+ +```shell +curl -X GET /version \ + -H 'Accept: application/json' +``` + +
+
+ +```go +package main + +import ( + "bytes" + "net/http" +) + +func main() { + headers := map[string][]string{ + "Accept": []string{"application/json"}, + } + + var body []byte + // body = ... + + req, err := http.NewRequest("GET", "/version", bytes.NewBuffer(body)) + req.Header = headers + + client := &http.Client{} + resp, err := client.Do(req) + // ... +} +``` + +
+
+ +```nodejs +const fetch = require('node-fetch'); + +const headers = { + 'Accept': 'application/json' +} + +fetch('/version', { + method: 'GET', + headers +}) +.then(r => r.json()) +.then((body) => { + console.log(body) +}) +``` + +
+
+ +```java +// This sample needs improvement. +URL obj = new URL("/version"); + +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); + +int responseCode = con.getResponseCode(); + +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream()) +); + +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); + +System.out.println(response.toString()); +``` + +
+
+ +```python +import requests + +headers = { + 'Accept': 'application/json' +} + +r = requests.get( + '/version', + params={}, + headers = headers) + +print r.json() +``` + +
+
+ +```ruby +require 'rest-client' +require 'json' + +headers = { + 'Accept' => 'application/json' +} + +result = RestClient.get '/version', + params: {}, headers: headers + +p JSON.parse(result) +``` + +
+
+
+ +## Schemas + +CredentialsType + +#### CredentialsType + + + +```json +"string" +``` + +_CredentialsType represents several different credential types, like password +credentials, passwordless credentials,_ + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------------------------------------------------------------------------------------------------------------------- | ------ | -------- | ------------ | ----------- | +| CredentialsType represents several different credential types, like password credentials, passwordless credentials, | string | false | none | and so on. | + +Error + +#### Error + + + +```json +{ + "message": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------- | ------ | -------- | ------------ | ---------------------------------------- | +| message | string | false | none | Code FormErrorCode `json:"id,omitempty"` | + +Identity + +#### Identity + + + +```json +{ + "addresses": [ + { + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-03-25T17:39:55Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----------------- | ----------------------------------------------- | -------- | ------------ | -------------------------------------------------------------------------------------------------------------- | +| addresses | [[VerifiableAddress](#schemaverifiableaddress)] | false | none | none | +| id | [UUID](#schemauuid) | true | none | none | +| traits | [Traits](#schematraits) | true | none | none | +| traits_schema_id | string | true | none | TraitsSchemaID is the ID of the JSON Schema to be used for validating the identity's traits. | +| traits_schema_url | string | false | none | TraitsSchemaURL is the URL of the endpoint where the identity's traits schema can be fetched from. format: url | + +Traits + +#### Traits + + + +```json +{} +``` + +#### Properties + +_None_ + +UUID + +#### UUID + + + +```json +"string" +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----------- | ------------- | -------- | ------------ | ----------- | +| _anonymous_ | string(uuid4) | false | none | none | + +VerifiableAddress + +#### VerifiableAddress + + + +```json +{ + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-03-25T17:39:55Z", + "via": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----------- | ----------------------------------------------------- | -------- | ------------ | ----------- | +| expires_at | string(date-time) | true | none | none | +| id | [UUID](#schemauuid) | true | none | none | +| value | string | true | none | none | +| verified | boolean | true | none | none | +| verified_at | string(date-time) | true | none | none | +| via | [VerifiableAddressType](#schemaverifiableaddresstype) | true | none | none | + +VerifiableAddressType + +#### VerifiableAddressType + + + +```json +"string" +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----------- | ------ | -------- | ------------ | ----------- | +| _anonymous_ | string | false | none | none | + +completeSelfServiceBrowserProfileManagementFlowPayload + +#### completeSelfServiceBrowserProfileManagementFlowPayload + + + +```json +{ + "traits": {} +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------ | ------ | -------- | ------------ | ------------------------------------------------------------------------- | +| traits | object | true | none | Traits contains all of the identity's traits. type: string format: binary | + +errorContainer + +#### errorContainer + + + +```json +{ + "errors": {}, + "id": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------ | ------------------- | -------- | ------------ | ----------- | +| errors | object | false | none | none | +| id | [UUID](#schemauuid) | false | none | none | + +form + +#### form + + + +```json +{ + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string" +} +``` + +_HTMLForm represents a HTML Form. The container can work with both HTTP Form and +JSON requests_ + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------ | ------------------------------- | -------- | ------------ | ------------------------------------------------------------------------------------------- | +| action | string | true | none | Action should be used as the form action URL ``. | +| errors | [[Error](#schemaerror)] | false | none | Errors contains all form errors. These will be duplicates of the individual field errors. | +| fields | [formFields](#schemaformfields) | true | none | Fields contains multiple fields | +| method | string | true | none | Method is the form method (e.g. POST) | + +formField + +#### formField + + + +```json +{ + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} +} +``` + +_Field represents a HTML Form Field_ + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| -------- | ----------------------- | -------- | ------------ | ----------------------------------------------------------------------- | +| disabled | boolean | false | none | Disabled is the equivalent of `` | +| errors | [[Error](#schemaerror)] | false | none | Errors contains all validation errors this particular field has caused. | +| name | string | true | none | Name is the equivalent of `` | +| pattern | string | false | none | Pattern is the equivalent of `` | +| required | boolean | true | none | Required is the equivalent of `` | +| type | string | true | none | Type is the equivalent of `` | +| value | object | false | none | Value is the equivalent of `` | + +formFields + +#### formFields + + + +```json +[ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } +] +``` + +_Fields contains multiple fields_ + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----------- | ------------------------------- | -------- | ------------ | ------------------------------- | +| _anonymous_ | [[formField](#schemaformfield)] | false | none | Fields contains multiple fields | + +genericError + +#### genericError + + + +```json +{ + "error": { + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": [ + { + "property1": {}, + "property2": {} + } + ], + "message": "string", + "reason": "string", + "request": "string", + "status": "string" + } +} +``` + +_Error response_ + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----- | ------------------------------------------------- | -------- | ------------ | ---------------------- | +| error | [genericErrorPayload](#schemagenericerrorpayload) | false | none | nolint:deadcode,unused | + +genericErrorPayload + +#### genericErrorPayload + + + +```json +{ + "code": 404, + "debug": "The database adapter was unable to find the element", + "details": [ + { + "property1": {}, + "property2": {} + } + ], + "message": "string", + "reason": "string", + "request": "string", + "status": "string" +} +``` + +_nolint:deadcode,unused_ + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| -------------------------- | -------------- | -------- | ------------ | -------------------------------------------------------------------------------------- | +| code | integer(int64) | false | none | Code represents the error status code (404, 403, 401, ...). | +| debug | string | false | none | Debug contains debug information. This is usually not available and has to be enabled. | +| details | [object] | false | none | none | +| ยป **additionalProperties** | object | false | none | none | +| message | string | false | none | none | +| reason | string | false | none | none | +| request | string | false | none | none | +| status | string | false | none | none | + +healthNotReadyStatus + +#### healthNotReadyStatus + + + +```json +{ + "errors": { + "property1": "string", + "property2": "string" + } +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| -------------------------- | ------ | -------- | ------------ | ------------------------------------------------------------------ | +| errors | object | false | none | Errors contains a list of errors that caused the not ready status. | +| ยป **additionalProperties** | string | false | none | none | + +healthStatus + +#### healthStatus + + + +```json +{ + "status": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------ | ------ | -------- | ------------ | ---------------------------- | +| status | string | false | none | Status always contains "ok". | + +loginRequest + +#### loginRequest + + + +```json +{ + "active": "string", + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "issued_at": "2020-03-25T17:39:55Z", + "methods": { + "property1": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + }, + "property2": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + } + }, + "request_url": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| -------------------------- | ----------------------------------------------- | -------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| active | [CredentialsType](#schemacredentialstype) | false | none | and so on. | +| expires_at | string(date-time) | true | none | ExpiresAt is the time (UTC) when the request expires. If the user still wishes to log in, a new request has to be initiated. | +| id | [UUID](#schemauuid) | true | none | none | +| issued_at | string(date-time) | true | none | IssuedAt is the time (UTC) when the request occurred. | +| methods | object | true | none | Methods contains context for all enabled login methods. If a login request has been processed, but for example the password is incorrect, this will contain error messages. | +| ยป **additionalProperties** | [loginRequestMethod](#schemaloginrequestmethod) | false | none | none | +| request_url | string | true | none | RequestURL is the initial URL that was requested from ORY Kratos. It can be used to forward information contained in the URL's path or query for example. | + +loginRequestMethod + +#### loginRequestMethod + + + +```json +{ + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------ | ----------------------------------------------------------- | -------- | ------------ | ----------- | +| config | [loginRequestMethodConfig](#schemaloginrequestmethodconfig) | true | none | none | +| method | [CredentialsType](#schemacredentialstype) | true | none | and so on. | + +loginRequestMethodConfig + +#### loginRequestMethodConfig + + + +```json +{ + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| --------- | ------------------------------- | -------- | ------------ | ------------------------------------------------------------------------------------------- | +| action | string | true | none | Action should be used as the form action URL ``. | +| errors | [[Error](#schemaerror)] | false | none | Errors contains all form errors. These will be duplicates of the individual field errors. | +| fields | [formFields](#schemaformfields) | true | none | Fields contains multiple fields | +| method | string | true | none | Method is the form method (e.g. POST) | +| providers | [[formField](#schemaformfield)] | false | none | Providers is set for the "oidc" request method. | + +profileManagementRequest + +#### profileManagementRequest + + + +```json +{ + "expires_at": "2020-03-25T17:39:55Z", + "form": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string" + }, + "id": "string", + "identity": { + "addresses": [ + { + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-03-25T17:39:55Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" + }, + "issued_at": "2020-03-25T17:39:55Z", + "request_url": "string", + "update_successful": true +} +``` + +_Request presents a profile management request_ + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----------------- | --------------------------- | -------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| expires_at | string(date-time) | true | none | ExpiresAt is the time (UTC) when the request expires. If the user still wishes to update the profile, a new request has to be initiated. | +| form | [form](#schemaform) | true | none | HTMLForm represents a HTML Form. The container can work with both HTTP Form and JSON requests | +| id | [UUID](#schemauuid) | true | none | none | +| identity | [Identity](#schemaidentity) | true | none | none | +| issued_at | string(date-time) | true | none | IssuedAt is the time (UTC) when the request occurred. | +| request_url | string | true | none | RequestURL is the initial URL that was requested from ORY Kratos. It can be used to forward information contained in the URL's path or query for example. | +| update_successful | boolean | true | none | UpdateSuccessful, if true, indicates that the profile has been updated successfully with the provided data. Done will stay true when repeatedly checking. If set to true, done will revert back to false only when a request with invalid (e.g. "please use a valid phone number") data was sent. | + +registrationRequest + +#### registrationRequest + + + +```json +{ + "active": "string", + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "issued_at": "2020-03-25T17:39:55Z", + "methods": { + "property1": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + }, + "property2": { + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" + } + }, + "request_url": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| -------------------------- | ------------------------------------------------------------- | -------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| active | [CredentialsType](#schemacredentialstype) | true | none | and so on. | +| expires_at | string(date-time) | true | none | ExpiresAt is the time (UTC) when the request expires. If the user still wishes to log in, a new request has to be initiated. | +| id | [UUID](#schemauuid) | true | none | none | +| issued_at | string(date-time) | true | none | IssuedAt is the time (UTC) when the request occurred. | +| methods | object | true | none | Methods contains context for all enabled registration methods. If a registration request has been processed, but for example the password is incorrect, this will contain error messages. | +| ยป **additionalProperties** | [registrationRequestMethod](#schemaregistrationrequestmethod) | false | none | none | +| request_url | string | true | none | RequestURL is the initial URL that was requested from ORY Kratos. It can be used to forward information contained in the URL's path or query for example. | + +registrationRequestMethod + +#### registrationRequestMethod + + + +```json +{ + "config": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] + }, + "method": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------ | ------------------------------------------------------------------------- | -------- | ------------ | ----------- | +| config | [registrationRequestMethodConfig](#schemaregistrationrequestmethodconfig) | false | none | none | +| method | [CredentialsType](#schemacredentialstype) | false | none | and so on. | + +registrationRequestMethodConfig + +#### registrationRequestMethodConfig + + + +```json +{ + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string", + "providers": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ] +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| --------- | ------------------------------- | -------- | ------------ | ------------------------------------------------------------------------------------------- | +| action | string | true | none | Action should be used as the form action URL ``. | +| errors | [[Error](#schemaerror)] | false | none | Errors contains all form errors. These will be duplicates of the individual field errors. | +| fields | [formFields](#schemaformfields) | true | none | Fields contains multiple fields | +| method | string | true | none | Method is the form method (e.g. POST) | +| providers | [[formField](#schemaformfield)] | false | none | Providers is set for the "oidc" request method. | + +session + +#### session + + + +```json +{ + "authenticated_at": "2020-03-25T17:39:55Z", + "expires_at": "2020-03-25T17:39:55Z", + "identity": { + "addresses": [ + { + "expires_at": "2020-03-25T17:39:55Z", + "id": "string", + "value": "string", + "verified": true, + "verified_at": "2020-03-25T17:39:55Z", + "via": "string" + } + ], + "id": "string", + "traits": {}, + "traits_schema_id": "string", + "traits_schema_url": "string" + }, + "issued_at": "2020-03-25T17:39:55Z", + "sid": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ---------------- | --------------------------- | -------- | ------------ | ----------- | +| authenticated_at | string(date-time) | true | none | none | +| expires_at | string(date-time) | true | none | none | +| identity | [Identity](#schemaidentity) | true | none | none | +| issued_at | string(date-time) | true | none | none | +| sid | [UUID](#schemauuid) | true | none | none | + +verificationRequest + +#### verificationRequest + + + +```json +{ + "expires_at": "2020-03-25T17:39:55Z", + "form": { + "action": "string", + "errors": [ + { + "message": "string" + } + ], + "fields": [ + { + "disabled": true, + "errors": [ + { + "message": "string" + } + ], + "name": "string", + "pattern": "string", + "required": true, + "type": "string", + "value": {} + } + ], + "method": "string" + }, + "id": "string", + "issued_at": "2020-03-25T17:39:55Z", + "request_url": "string", + "success": true, + "via": "string" +} +``` + +_Request presents a verification request_ + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ----------- | ----------------------------------------------------- | -------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| expires_at | string(date-time) | false | none | ExpiresAt is the time (UTC) when the request expires. If the user still wishes to update the profile, a new request has to be initiated. | +| form | [form](#schemaform) | false | none | HTMLForm represents a HTML Form. The container can work with both HTTP Form and JSON requests | +| id | [UUID](#schemauuid) | false | none | none | +| issued_at | string(date-time) | false | none | IssuedAt is the time (UTC) when the request occurred. | +| request_url | string | false | none | RequestURL is the initial URL that was requested from ORY Kratos. It can be used to forward information contained in the URL's path or query for example. | +| success | boolean | false | none | Success, if true, implies that the request was completed successfully. | +| via | [VerifiableAddressType](#schemaverifiableaddresstype) | false | none | none | + +version + +#### version + + + +```json +{ + "version": "string" +} +``` + +#### Properties + +| Name | Type | Required | Restrictions | Description | +| ------- | ------ | -------- | ------------ | --------------------------------- | +| version | string | false | none | Version is the service's version. | diff --git a/docs/docs/sdk/index.md b/docs/docs/sdk/index.md new file mode 100644 index 00000000000..14d863d0bbd --- /dev/null +++ b/docs/docs/sdk/index.md @@ -0,0 +1,29 @@ +--- +id: index +title: Overview +--- + +All SDKs use automated code generation provided by +[`openapi-generator`](https://github.com/OpenAPITools/openapi-generator). +Unfortunately, `openapi-generator` has serious breaking changes in the generated +code when upgrading versions. Therefore, we do not make backwards compatibility +promises with regards to the generated SDKs. We hope to improve this process in +the future. + +Before you check out the SDKs, head over to the [REST API](api.md) documentation +which includes code samples for common programming languages for each REST +endpoint. + +We publish our SDKs for popular languages in their respective package +repositories: + +- [Python](https://pypi.org/project/ory-kratos-client/) +- [PHP](https://packagist.org/packages/ory/kratos-client) +- [Go](https://github.com/ory/kratos-client-go) +- [NodeJS](https://www.npmjs.com/package/@oryd/kratos-client) (with TypeScript) +- [Java](https://search.maven.org/artifact/sh.ory.kratos/kratos-client) +- [Ruby](https://rubygems.org/gems/ory-kratos-client) + +Missing your programming language? +[Create an issue](https://github.com/ory/kratos/issues) and help us build, test +and publish the SDK for your programming language! diff --git a/docs/docs/self-service/flows/index.md b/docs/docs/self-service/flows/index.md new file mode 100644 index 00000000000..03e7b296a7f --- /dev/null +++ b/docs/docs/self-service/flows/index.md @@ -0,0 +1,31 @@ +--- +id: index +title: Overview +--- + +ORY Kratos allows end-users to sign up, log in, log out, update profile +information, recover accounts, and perform other important account management +tasks without third party involvement ("self-service"). + +The opposite to self-service management is someone using administrative +privileges to create, update, or delete accounts. + +## Network Flows for Browsers + +All Self-Service Flows such as [User Login](./user-login.md), +[User Registration](./user-login-user-registration.md), +[Profile Management](./user-profile-management.md) use the same template: + +1. The Browser makes an HTTP request to the flow's initialization endpoint (e.g. + `/auth/browser/login`); +2. The initialization endpoint processes data and associates it with a request + ID and redirects the browser to the flow's configured UI URL (e.g. + `urls.login_ui`), appending the request ID as the `request` URL Query + Parameter; +3. The endpoint responsible for the UI URL uses the `request` URL Query + Parameter (e.g. `http://my-app/auth/login?request=abcde`) to fetch the data + previously associated with the Request ID from either ORY Kratos's Public or + Admin API. +4. The UI endpoint renders the fetched data in any way it sees it fit. The flow + is typically completed by the browser making another request to one of ORY + Kratos' endpoints, which is usually described in the fetched request data. diff --git a/docs/docs/self-service/flows/password-reset-account-recovery.md b/docs/docs/self-service/flows/password-reset-account-recovery.md new file mode 100644 index 00000000000..caa4338cc79 --- /dev/null +++ b/docs/docs/self-service/flows/password-reset-account-recovery.md @@ -0,0 +1,16 @@ +--- +id: password-reset-account-recovery +title: Account Recovery +--- + +Account Recovery must be performed if access to an account needs to be +recovered. Common use cases include: + +- "Forgot password" flows +- "Lost MFA device" flows +- ... + +## Forgot Password + +The forgot password flow is a work in progress and will be implemented in a +future release of ORY Kratos. diff --git a/docs/docs/self-service/flows/user-facing-errors.md b/docs/docs/self-service/flows/user-facing-errors.md new file mode 100644 index 00000000000..19da0cc9b3d --- /dev/null +++ b/docs/docs/self-service/flows/user-facing-errors.md @@ -0,0 +1,49 @@ +--- +id: user-facing-errors +title: User-Facing Errors +--- + +Because ORY Kratos does not render User Interfaces, we implemented a flow that +allows you to implement the error page in any way you want. + +## User-Facing Errors in the Browser + +When a user-facing error occurs (e.g. during Self Service User Login), ORY +Kratos will store error message and context and redirect the User's Browser to +the Error UI URL set by the `urls.error_ui` configuration or `URLS_ERROR_UI` +environment variable. + +Assuming `urls.error_ui` is set to `https://example.org/errors`, ORY Kratos will +redirect the User's Browser to `https://example.org/errors?error=abcde`. + +The route matching `https://example.org/errors` uses the `error` URL Query +parameter value `abcde` to make a request to ORY Kratos' Public or Admin API +`https://kratos- + + + + + + + + +
+ + + + + + +
+``` + +Depending on the type of login flows you want to support, this might also be a +"Sign up/in with GitHub" flow: + +```html + +
+ + + + +
+``` + +In stark contrast to other Identity Systems, ORY Kratos does not render this +HTML. Instead, you need to implement the HTML code in your application (e.g. +NodeJS + ExpressJS, Java, PHP, ReactJS, ...), which gives you extreme +flexibility and customizability in your user interface flows and designs. + +Each Login and Registration Strategy (e.g. +[Username and Password](../strategies/username-email-password.md), +[Social Sign In](../strategies/openid-connect-social-sign-in-oauth2.md), +Passwordless, ...) works a bit differently but they all boil down to the same +abstract sequence: + +[![Abstract Login and Registration User Flow](https://mermaid.ink/img/eyJjb2RlIjoic2VxdWVuY2VEaWFncmFtXG4gIHBhcnRpY2lwYW50IEIgYXMgQnJvd3NlclxuICBwYXJ0aWNpcGFudCBLIGFzIE9SWSBLcmF0b3NcbiAgcGFydGljaXBhbnQgQSBhcyBZb3VyIEFwcGxpY2F0aW9uXG5cblxuICBCLT4-SzogSW5pdGlhdGUgTG9naW5cbiAgSy0-PkI6IFJlZGlyZWN0cyB0byB5b3VyIEFwcGxpY2F0aW9uJ3MgL2xvZ2luIGVuZHBvaW50XG4gIEItPj5BOiBDYWxscyAvbG9naW5cbiAgQS0tPj5LOiBGZXRjaGVzIGRhdGEgdG8gcmVuZGVyIGZvcm1zIGV0Y1xuICBCLS0-PkE6IEZpbGxzIG91dCBmb3JtcywgY2xpY2tzIGUuZy4gXCJTdWJtaXQgTG9naW5cIlxuICBCLT4-SzogUE9TVHMgZGF0YSB0b1xuICBLLS0-Pks6IFByb2Nlc3NlcyBMb2dpbiBJbmZvXG5cbiAgYWx0IExvZ2luIGRhdGEgdmFsaWRcbiAgICBLLS0-PkI6IFNldHMgc2Vzc2lvbiBjb29raWVcbiAgICBLLT4-QjogUmVkaXJlY3RzIHRvIGUuZy4gRGFzaGJvYXJkXG4gIGVsc2UgTG9naW4gZGF0YSBpbnZhbGlkXG4gICAgSy0tPj5COiBSZWRpcmVjdHMgdG8geW91ciBBcHBsaWNhaXRvbidzIC9sb2dpbiBlbmRwb2ludFxuICAgIEItPj5BOiBDYWxscyAvbG9naW5cbiAgICBBLS0-Pks6IEZldGNoZXMgZGF0YSB0byByZW5kZXIgZm9ybSBmaWVsZHMgYW5kIGVycm9yc1xuICAgIEItLT4-QTogRmlsbHMgb3V0IGZvcm1zIGFnYWluLCBjb3JyZWN0cyBlcnJvcnNcbiAgICBCLT4-SzogUE9TVHMgZGF0YSBhZ2FpbiAtIGFuZCBzbyBvbi4uLlxuICBlbmRcbiIsIm1lcm1haWQiOnsidGhlbWUiOiJuZXV0cmFsIiwic2VxdWVuY2VEaWFncmFtIjp7ImRpYWdyYW1NYXJnaW5YIjoxNSwiZGlhZ3JhbU1hcmdpblkiOjE1LCJib3hUZXh0TWFyZ2luIjowLCJub3RlTWFyZ2luIjoxNSwibWVzc2FnZU1hcmdpbiI6NDUsIm1pcnJvckFjdG9ycyI6dHJ1ZX19fQ)](https://mermaid-js.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic2VxdWVuY2VEaWFncmFtXG4gIHBhcnRpY2lwYW50IEIgYXMgQnJvd3NlclxuICBwYXJ0aWNpcGFudCBLIGFzIE9SWSBLcmF0b3NcbiAgcGFydGljaXBhbnQgQSBhcyBZb3VyIEFwcGxpY2F0aW9uXG5cblxuICBCLT4-SzogSW5pdGlhdGUgTG9naW5cbiAgSy0-PkI6IFJlZGlyZWN0cyB0byB5b3VyIEFwcGxpY2F0aW9uJ3MgL2xvZ2luIGVuZHBvaW50XG4gIEItPj5BOiBDYWxscyAvbG9naW5cbiAgQS0tPj5LOiBGZXRjaGVzIGRhdGEgdG8gcmVuZGVyIGZvcm1zIGV0Y1xuICBCLS0-PkE6IEZpbGxzIG91dCBmb3JtcywgY2xpY2tzIGUuZy4gXCJTdWJtaXQgTG9naW5cIlxuICBCLT4-SzogUE9TVHMgZGF0YSB0b1xuICBLLS0-Pks6IFByb2Nlc3NlcyBMb2dpbiBJbmZvXG5cbiAgYWx0IExvZ2luIGRhdGEgdmFsaWRcbiAgICBLLS0-PkI6IFNldHMgc2Vzc2lvbiBjb29raWVcbiAgICBLLT4-QjogUmVkaXJlY3RzIHRvIGUuZy4gRGFzaGJvYXJkXG4gIGVsc2UgTG9naW4gZGF0YSBpbnZhbGlkXG4gICAgSy0tPj5COiBSZWRpcmVjdHMgdG8geW91ciBBcHBsaWNhaXRvbidzIC9sb2dpbiBlbmRwb2ludFxuICAgIEItPj5BOiBDYWxscyAvbG9naW5cbiAgICBBLS0-Pks6IEZldGNoZXMgZGF0YSB0byByZW5kZXIgZm9ybSBmaWVsZHMgYW5kIGVycm9yc1xuICAgIEItLT4-QTogRmlsbHMgb3V0IGZvcm1zIGFnYWluLCBjb3JyZWN0cyBlcnJvcnNcbiAgICBCLT4-SzogUE9TVHMgZGF0YSBhZ2FpbiAtIGFuZCBzbyBvbi4uLlxuICBlbmRcbiIsIm1lcm1haWQiOnsidGhlbWUiOiJuZXV0cmFsIiwic2VxdWVuY2VEaWFncmFtIjp7ImRpYWdyYW1NYXJnaW5YIjoxNSwiZGlhZ3JhbU1hcmdpblkiOjE1LCJib3hUZXh0TWFyZ2luIjowLCJub3RlTWFyZ2luIjoxNSwibWVzc2FnZU1hcmdpbiI6NDUsIm1pcnJvckFjdG9ycyI6dHJ1ZX19fQ) + +The exact data being fetched and the step _"Processes Login / Registration +Info"_ depend, of course, on the actual Strategy being used. But it is important +to understand that **"Your Application"** is responsible for rendering the +actual Login and Registration HTML Forms. You can of course implement one app +for rendering all the Login, Registration, ... screens, and another app (think +"Service Oriented Architecture", "Micro-Services" or "Service Mesh") is +responsible for rendering your Dashboards, Management Screens, and so on. + +> It is highly RECOMMENDED to all the applications (or "services"), including +> ORY Kratos, behind a common API Gateway or Reverse Proxy. This greatly reduces +> the amount of work you have to do to get all the Cookies working properly. We +> RECOMMEND using [ORY Oathkeeper](http://github.com/ory/oathkeeper) for this as +> it integrates best with the ORY Ecosystem and because all of our examples use +> ORY Oathkeeper. You MAY of course use any other reverse proxy (Envoy, AWS API +> Gateway, Ambassador, Nginx, Kong, ...), but we do not have examples or guides +> for those at this time. + +### Code + +Because Login and Registration are so similar, we can use one common piece of +code to cover both. A functioning example of the code and approach used here can +be found on +[github.com/ory/kratos-selfservice-ui-node](https://github.com/ory/kratos-selfservice-ui-node). + +The code example used here is universal and does not use an SDK because we want +you to understand the fundamentals of how this flow works. + +While this example assumes a Server-Side Application, a Client-Side (e.g. +ReactJS) Application would work the same, but use ORY Kratos' Public API +instead. + +```js +const fetch = require('node-fetch'); + +const config = { + kratos: { + // The browser config key is used to redirect the user. It reflects where ORY Kratos' Public API + // is accessible from. Here, we're assuming traffic going to `http://example.org/.ory/kratos/public/` + // will be forwarded to ORY Kratos' Public API. + browser: 'http://example.org/.ory/kratos/public/', + + // This is where ORY Kratos' Admin API is accessible. + admin: 'https://ory-kratos-admin.example-org.vpc/', + }, +}; + +// The parameter "flow" can be "login" and "registration". +// You would register the two routes in express js like this: +// +// app.get('/auth/registration', authHandler('registration')) +// app.get('/auth/login', authHandler('login')) + +export const authHandler = (flow) => (req, res, next) => { + // The request ID is used to identify the login and registraion request and + // return data like the csrf_token and so on. + const request = req.query.request; + if (!request) { + console.log('No request found in URL, initializing ${flow} flow.'); + res.redirect(`${config.kratos.browser}/auth/browser/${flow}`); + return; + } + + // This is the ORY Kratos URL. If this app and ORY Kratos are running + // on the same (e.g. Kubernetes) cluster, this should be ORY Kratos's internal hostname. + const url = new URL(`${config.kratos.admin}/auth/browser/requests/${flow}`); + url.searchParams.set('request', request); + + fetch(url.toString()) + .then((response) => { + // A 404 code means that this code does not exist. We'll retry by re-initiating the flow. + if (response.status == 404) { + res.redirect(`${config.kratos.browser}/auth/browser/${flow}`); + return; + } + + return response.json(); + }) + .then((request) => { + // Request contains all the request data for this Registration request. + // You can process that data here, if you want. + + // Lastly, you probably want to render the data using a view (e.g. Jade Template): + res.render(flow, request); + }); +}; +``` + +For details on payloads and potential HTML snippets consult the individual +Self-Service Strategies for: + +- [Username and Password Strategy](../strategies/username-email-password.md) +- [Social Sign In Strategy](../strategies/openid-connect-social-sign-in-oauth2.md) + +### Server-Side Browser Applications + +Let's take a look at the concrete network topologies, calls, and payloads. Here, +we're assuming that you're running a server-side browser application (written in +e.g. PHP, Java, NodeJS) to render the login and registration screen on the +server and make all API calls from that server code. The counterpart to this +would be a client-side browser application (written in e.g. Vanilla JavaScript, +JQuery, ReactJS, AngularJS, ...) that uses AJAX requests to fetch data. For +these type of applications, read this section first and go to section +[Client-Side Browser Applications](#client-side-browser-applications) next. + +#### Network Topology + +Your Server-Side Application and ORY Kratos are deployed in a Virtual Private +Cluster that can not be accessed from the public internet directly. Instead, +only ORY Oathkeeper can be accessed from the public internet and proxies +incoming requests to the appropriate service: + +- Public internet traffic to domain `example.org` is sent to ORY Oathkeeper + which in turn: + - proxies URLs matching `https://example.org/auth/login` to your Server-Side + Application available at + `https://your-service-side-application.example-org.vpc/auth/login` + - proxies URLs matching `https://example.org/auth/registration` to your + Server-Side Application available at + `https://your-service-side-application.example-org.vpc/auth/registration` + - `https://example.org/.ory/kratos/public/*` is proxied to + `https://ory-kratos-public.example-org.vpc/` +- `https://ory-kratos-admin.example-org.vpc/` exposes ORY Kratos' Admin API and + is not accessible by the open internet and ideally only by Your Server-Side + Application. +- `https://ory-kratos-public.example-org.vpc` exposes ORY Kratos' Public API and + is ideally only accessible by ORY Oathkeeper. +- `https://your-service-side-application.example-org.vpc` exposes your + Server-Side Application and is ideally only accessible by ORY Oathkeeper. + +The ORY Kratos Admin API is exposed only in the intranet and only the +Server-Side Application should be able to talk to it. + +[![User Login and Registration Network Topology for Server-Side Applications](https://mermaid.ink/img/eyJjb2RlIjoiZ3JhcGggVERcblxuc3ViZ3JhcGggcGlbUHVibGljIEludGVybmV0XVxuICAgIEJbQnJvd3Nlcl1cbmVuZFxuXG5zdWJncmFwaCB2cGNbVlBDIC8gQ2xvdWQgLyBEb2NrZXIgTmV0d29ya11cbnN1YmdyYXBoIFwiRGVtaWxpdGFyaXplZCBab25lIC8gRE1aXCJcbiAgICBPS1tPUlkgT2F0aGtlZXBlciA6NDQ1NV1cbiAgICBCIC0tPiBPS1xuZW5kXG5cbiAgICBPSyAtLT58XCJGb3J3YXJkcyAvYXV0aC9sb2dpbiB0b1wifCBTQUxJXG4gICAgT0sgLS0-fFwiRm9yd2FyZHMgL2F1dGgvcmVnaXN0cmF0aW9uIHRvXCJ8IFNBTFJcbiAgICBPSyAtLT58XCJGb3J3YXJkcyAvLm9yeS9rcmF0b3MvcHVibGljLyogdG9cInwgS1BcblxuICAgIHN1YmdyYXBoIFwiUHJpdmF0ZSBTdWJuZXQgLyBJbnRyYW5ldFwiXG4gICAgS1sgT1JZIEtyYXRvcyBdXG5cbiAgICBLUChbIE9SWSBLcmF0b3MgUHVibGljIEFQSSBdKVxuICAgIEtBKFsgT1JZIEtyYXRvcyBBZG1pbiBBUEkgXSlcbiAgICBTQSAtLT58XCJ0YWxrcyB0b1wifCBLQVxuICAgIEtBIC0uYmVsb25ncyB0by4tPiBLXG4gICAgS1AgLS5iZWxvbmdzIHRvLi0-IEtcblxuICAgIHN1YmdyYXBoIHNhW1wiWW91ciBBcHBsaWNhdGlvblwiXVxuXG4gICAgICAgIFNBW1wiWW91ciBTZXJ2ZXItU2lkZSBBcHBsaWNhdGlvblwiXVxuICAgICAgICBTQUxJIC0uYmVsb25ncyB0by4tPiBTQVxuICAgICAgICBTQUxSIC0uYmVsb25ncyB0by4tPiBTQVxuICAgICAgICBTQUxJKFtSb3V0ZSAvYXV0aC9sb2dpbl0pIFxuICAgICAgICBTQUxSKFtSb3V0ZSAvYXV0aC9yZWdpc3RyYXRpb25dKSBcbiAgICBlbmRcbiAgICBlbmRcblxuZW5kXG4iLCJtZXJtYWlkIjp7InRoZW1lIjoibmV1dHJhbCIsImZsb3djaGFydCI6eyJyYW5rU3BhY2luZyI6NzAsIm5vZGVTcGFjaW5nIjozMCwiY3VydmUiOiJiYXNpcyJ9fSwidXBkYXRlRWRpdG9yIjpmYWxzZX0)](https://mermaid-js.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiZ3JhcGggVERcblxuc3ViZ3JhcGggcGlbUHVibGljIEludGVybmV0XVxuICAgIEJbQnJvd3Nlcl1cbmVuZFxuXG5zdWJncmFwaCB2cGNbVlBDIC8gQ2xvdWQgLyBEb2NrZXIgTmV0d29ya11cbnN1YmdyYXBoIFwiRGVtaWxpdGFyaXplZCBab25lIC8gRE1aXCJcbiAgICBPS1tPUlkgT2F0aGtlZXBlciA6NDQ1NV1cbiAgICBCIC0tPiBPS1xuZW5kXG5cbiAgICBPSyAtLT58XCJGb3J3YXJkcyAvYXV0aC9sb2dpbiB0b1wifCBTQUxJXG4gICAgT0sgLS0-fFwiRm9yd2FyZHMgL2F1dGgvcmVnaXN0cmF0aW9uIHRvXCJ8IFNBTFJcbiAgICBPSyAtLT58XCJGb3J3YXJkcyAvLm9yeS9rcmF0b3MvcHVibGljLyogdG9cInwgS1BcblxuICAgIHN1YmdyYXBoIFwiUHJpdmF0ZSBTdWJuZXQgLyBJbnRyYW5ldFwiXG4gICAgS1sgT1JZIEtyYXRvcyBdXG5cbiAgICBLUChbIE9SWSBLcmF0b3MgUHVibGljIEFQSSBdKVxuICAgIEtBKFsgT1JZIEtyYXRvcyBBZG1pbiBBUEkgXSlcbiAgICBTQSAtLT58XCJ0YWxrcyB0b1wifCBLQVxuICAgIEtBIC0uYmVsb25ncyB0by4tPiBLXG4gICAgS1AgLS5iZWxvbmdzIHRvLi0-IEtcblxuICAgIHN1YmdyYXBoIHNhW1wiWW91ciBBcHBsaWNhdGlvblwiXVxuXG4gICAgICAgIFNBW1wiWW91ciBTZXJ2ZXItU2lkZSBBcHBsaWNhdGlvblwiXVxuICAgICAgICBTQUxJIC0uYmVsb25ncyB0by4tPiBTQVxuICAgICAgICBTQUxSIC0uYmVsb25ncyB0by4tPiBTQVxuICAgICAgICBTQUxJKFtSb3V0ZSAvYXV0aC9sb2dpbl0pIFxuICAgICAgICBTQUxSKFtSb3V0ZSAvYXV0aC9yZWdpc3RyYXRpb25dKSBcbiAgICBlbmRcbiAgICBlbmRcblxuZW5kXG4iLCJtZXJtYWlkIjp7InRoZW1lIjoibmV1dHJhbCIsImZsb3djaGFydCI6eyJyYW5rU3BhY2luZyI6NzAsIm5vZGVTcGFjaW5nIjozMCwiY3VydmUiOiJiYXNpcyJ9fSwidXBkYXRlRWRpdG9yIjpmYWxzZX0) + +#### User Login and User Registration Process Sequence + +The Login and Registration User Flow is composed of several high-level steps +summarized in this state diagram: + +[![User Login and Registration State Machine](https://mermaid.ink/img/eyJjb2RlIjoic3RhdGVEaWFncmFtXG4gIHMxOiBVc2VyIGJyb3dzZXMgYXBwXG4gIHMyOiBFeGVjdXRlIFwiQmVmb3JlIExvZ2luL1JlZ2lzdHJhdGlvbiBKb2IocylcIlxuICBzMzogVXNlciBJbnRlcmZhY2UgQXBwbGljYXRpb24gcmVuZGVycyBcIkxvZ2luL1JlZ2lzdHJhdGlvbiBSZXF1ZXN0XCJcbiAgczQ6IEV4ZWN1dGUgXCJBZnRlciBMb2dpbi9SZWdpc3RyYXRpb24gSm9iKHMpXCJcbiAgczU6IFVwZGF0ZSBcIkxvZ2luL1JlZ2lzdHJhdGlvbiBSZXF1ZXN0XCIgd2l0aCBFcnJvciBDb250ZXh0KHMpXG4gIHM2OiBMb2dpbi9SZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bFxuXG5cblxuXHRbKl0gLS0-IHMxXG4gIHMxIC0tPiBzMiA6IFVzZXIgY2xpY2tzIFwiTG9nIGluIC8gU2lnbiB1cFwiXG4gIHMyIC0tPiBFcnJvciA6IEEgam9iIGZhaWxzXG4gIHMyIC0tPiBzMyA6IFVzZXIgaXMgcmVkaXJlY3RlZCB0byBMb2dpbi9SZWdpc3RyYXRpb24gVUkgVVJMXG4gIHMzIC0tPiBzNCA6IFVzZXIgcHJvdmlkZXMgdmFsaWQgY3JlZGVudGlhbHMvcmVnaXN0cmF0aW9uIGRhdGFcbiAgczMgLS0-IHM1IDogVXNlciBwcm92aWRlcyBpbnZhbGlkIGNyZWRlbnRpYWxzL3JlZ2lzdHJhdGlvbiBkYXRhXG4gIHM1IC0tPiBzMyA6IFVzZXIgaXMgcmVkaXJlY3RlZCB0byBMb2dpbi9SZWdpc3RyYXRpb24gVUkgVVJMXG4gIHM0IC0tPiBFcnJvciA6IEEgam9iIGZhaWxzXG4gIHM0IC0tPiBzNlxuICBzNiAtLT4gWypdXG5cbiAgRXJyb3IgLS0-IFsqXVxuXG5cbiIsIm1lcm1haWQiOnsidGhlbWUiOiJkZWZhdWx0In0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9)](https://mermaid-js.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic3RhdGVEaWFncmFtXG4gIHMxOiBVc2VyIGJyb3dzZXMgYXBwXG4gIHMyOiBFeGVjdXRlIFwiQmVmb3JlIExvZ2luL1JlZ2lzdHJhdGlvbiBKb2IocylcIlxuICBzMzogVXNlciBJbnRlcmZhY2UgQXBwbGljYXRpb24gcmVuZGVycyBcIkxvZ2luL1JlZ2lzdHJhdGlvbiBSZXF1ZXN0XCJcbiAgczQ6IEV4ZWN1dGUgXCJBZnRlciBMb2dpbi9SZWdpc3RyYXRpb24gSm9iKHMpXCJcbiAgczU6IFVwZGF0ZSBcIkxvZ2luL1JlZ2lzdHJhdGlvbiBSZXF1ZXN0XCIgd2l0aCBFcnJvciBDb250ZXh0KHMpXG4gIHM2OiBMb2dpbi9SZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bFxuXG5cblxuXHRbKl0gLS0-IHMxXG4gIHMxIC0tPiBzMiA6IFVzZXIgY2xpY2tzIFwiTG9nIGluIC8gU2lnbiB1cFwiXG4gIHMyIC0tPiBFcnJvciA6IEEgam9iIGZhaWxzXG4gIHMyIC0tPiBzMyA6IFVzZXIgaXMgcmVkaXJlY3RlZCB0byBMb2dpbi9SZWdpc3RyYXRpb24gVUkgVVJMXG4gIHMzIC0tPiBzNCA6IFVzZXIgcHJvdmlkZXMgdmFsaWQgY3JlZGVudGlhbHMvcmVnaXN0cmF0aW9uIGRhdGFcbiAgczMgLS0-IHM1IDogVXNlciBwcm92aWRlcyBpbnZhbGlkIGNyZWRlbnRpYWxzL3JlZ2lzdHJhdGlvbiBkYXRhXG4gIHM1IC0tPiBzMyA6IFVzZXIgaXMgcmVkaXJlY3RlZCB0byBMb2dpbi9SZWdpc3RyYXRpb24gVUkgVVJMXG4gIHM0IC0tPiBFcnJvciA6IEEgam9iIGZhaWxzXG4gIHM0IC0tPiBzNlxuICBzNiAtLT4gWypdXG5cbiAgRXJyb3IgLS0-IFsqXVxuXG5cbiIsIm1lcm1haWQiOnsidGhlbWUiOiJkZWZhdWx0In0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9) + +1. The **Login/Registration User Flow** is initiated because a link was clicked + or an action was performed that requires an active user session. +1. ORY Kratos executes Jobs defined in the **Before Login/Registration + Workflow**. If a failure occurs, the whole flow is aborted. +1. The user's browser is redirected to + `https://example.org/.ory/kratos/public/auth/browser/(login|registration)` + (the notation `(login|registration)` expresses the two possibilities of + `../auth/browser/login` or `../auth/browser/registration`). +1. ORY Kratos does some internal processing (e.g. checks if a session cookie is + set, generates payloads for form fields, sets CSRF token, ...) and redirects + the user's browser to the Login UI URL which is defined using the + `urls.login_ui` (or `urls.registration_ui`) config or `URLS_LOGIN_UI` (or + `URLS_REGISTRATION_UI`) environment variable, which is set to the ui + endpoints - for example `https://example.org/auth/login` and + `https://example.org/auth/registration`). The user's browser is thus + redirected to `https://example.org/auth/(login|registration)?request=abcde`. + The `request` query parameter includes a unique ID which will be used to + fetch contextual data for this login request. +1. Your Server-Side Application makes a `GET` request to + `https://ory-kratos-admin.example-org.vpc/auth/browser/requests/(login|registration)?request=abcde`. + ORY Kratos responds with a JSON Payload that contains data (form fields, + error messages, ...) for all enabled User Login Strategies: + `json5 { "id": "abcde", "expires_at": "2020-01-27T09:34:39.3249566Z", "issued_at": "2020-01-27T09:24:39.3249689Z", "request_url": "https://example.org/.ory/kratos/public/auth/browser/(login|registration)", "methods": { "oidc": { "method": "oidc", "config": { /* ... */ } }, "password": { "method": "password", "config": { /* ... */ } } // ... } }` +1. Your Server-Side applications renders the data however you see fit. The User + interacts with it an completes the Login by clicking, for example, the + "Login", the "Login with Google", ... button. +1. The User's browser makes a request to one of ORY Kratos' Strategy URLs (e.g. + `https://example.org/.ory/kratos/public/auth/browser/methods/password/(login|registration)` + or + `https://example.org/.ory/kratos/public/auth/browser/methods/oidc/auth/abcde`). + ORY Kratos validates the User's credentials (when logging in - e.g. Username + and Password, by performing an OpenID Connect flow, ...) or the registration + form data (when signing up - e.g. is the E-Mail address valid, is the person + at least 21 years old, ...): + - If the credentials / form data is invalid, the Login Request's JSON Payload + is updated - for example with + ```json5 + { + id: 'abcde', + expires_at: '2020-01-27T10:05:50.1678228Z', + issued_at: '2020-01-27T09:55:50.1678348Z', + request_url: 'http://127.0.0.1:4455/auth/browser/(login|registration)', + methods: { + oidc: { + method: 'oidc', + config: { + /* ... */ + }, + }, + password: { + method: 'password', + config: { + /* ... */ + errors: [ + { + message: 'The provided credentials are invalid. Check for spelling mistakes in your password or username, email address, or phone number.', + }, + ], + }, + }, + }, + } + ``` + and the user's Browser is redirected back to the Login UI: + `https://example.org/auth/(login|registration)?request=abcde`. + - If credentials / data is valid, ORY Kratos proceeds with the next step. + - If the flow is a registration request and the registration data is valid, + the identity is created. +1. ORY Kratos executes Jobs (e.g. redirect somewhere) defined in the **After + Login/Registration Workflow**. If a failure occurs, the whole flow is + aborted. + +[![User Login Sequence Diagram for Server-Side Applications](https://mermaid.ink/img/eyJjb2RlIjoic2VxdWVuY2VEaWFncmFtXG4gIHBhcnRpY2lwYW50IEIgYXMgQnJvd3NlclxuICBwYXJ0aWNpcGFudCBPIGFzIE9SWSBPYXRoa2VlcGVyXG4gIHBhcnRpY2lwYW50IEtQIGFzIE9SWSBLcmF0b3MgUHVibGljIEFQSVxuICBwYXJ0aWNpcGFudCBBIGFzIFlvdXIgU2VydmVyLVNpZGUgQXBwbGljYXRpb25cbiAgcGFydGljaXBhbnQgS0EgYXMgT1JZIEtyYXRvcyBBZG1pbiBBUElcblxuICBCLT4-K086IEdFVCAvLm9yeS9rcmF0b3MvcHVibGljL2F1dGgvYnJvd3Nlci8obG9naW58cmVnaXN0cmF0aW9uKVxuICBPLT4-K0tQOiBHRVQgL2F1dGgvYnJvd3Nlci8obG9naW58cmVnaXN0cmF0aW9uKVxuICBLUC0tPj5LUDogRXhlY3V0ZSBKb2JzIGRlZmluZWQgaW4gXCJCZWZvcmUgTG9naW4vUmVnaXN0cmF0aW9uIFdvcmtmbG93KHMpXCJcbiAgS1AtLT4-LU86IEhUVFAgMzAyIEZvdW5kIC9hcHAvYXV0aC8obG9naW58cmVnaXN0cmF0aW9uKT9yZXF1ZXN0PWFiY2RlXG4gIE8tLT4-LUI6IEhUVFAgMzAyIEZvdW5kIC9hcHAvYXV0aC8obG9naW58cmVnaXN0cmF0aW9uKT9yZXF1ZXN0PWFiY2RlXG5cbiAgQi0-PitPOiBHRVQgL2FwcC9hdXRoLyhsb2dpbnxyZWdpc3RyYXRpb24pP3JlcXVlc3Q9YWJjZGVcbiAgTy0-PitBOiBHRVQgL2F1dGgvKGxvZ2lufHJlZ2lzdHJhdGlvbik_cmVxdWVzdD1hYmNkZVxuICBBLT4-K0tBOiBHRVQgL2F1dGgvYnJvd3Nlci9yZXF1ZXN0cy8obG9naW58cmVnaXN0cmF0aW9uKT9yZXF1ZXN0PWFiY2RlXG4gIEtBLT4-LUE6IFNlbmRzIExvZ2luL1JlZ2lzdHJhdGlvbiBSZXF1ZXN0IEpTT04gUGF5bG9hZFxuICBOb3RlIG92ZXIgQSxLQTogIHtcIm1ldGhvZHNcIjp7XCJwYXNzd29yZFwiOi4uLixcIm9pZGNcIjouLn19XG4gIEEtLT4-QTogR2VuZXJhdGUgYW5kIHJlbmRlciBIVE1MXG4gIEEtLT4-LU86IFJldHVybiBIVE1MIChGb3JtLCAuLi4pXG4gIE8tLT4-LUI6IFJldHVybiBIVE1MIChGb3JtLCAuLi4pXG5cbiAgQi0tPj5COiBGaWxsIG91dCBIVE1MXG5cbiAgQi0-PitPOiBQT1NUIEhUTUwgRm9ybVxuICBPLT4-K0tQOiBQT1NUIEhUTUwgRm9ybVxuICBLUC0tPj5LUDogQ2hlY2tzIGxvZ2luIC8gcmVnaXN0cmF0aW9uIGRhdGFcblxuXG4gIGFsdCBMb2dpbiBkYXRhIGlzIHZhbGlkXG4gICAgS1AtLT4-LUtQOiBFeGVjdXRlIEpvYnMgZGVmaW5lZCBpbiBcIkFmdGVyIExvZ2luIFdvcmtmbG93KHMpXCJcbiAgICBLUC0tPj5POiBIVFRQIDMwMiBGb3VuZCAvYXBwL2Rhc2hib2FyZFxuICAgIE5vdGUgb3ZlciBLUCxCOiBTZXQtQ29va2llOiBhdXRoX3Nlc3Npb249Li4uXG4gICAgTy0tPj4tQjogSFRUUCAzMDIgRm91bmQgL2FwcC9kYXNoYm9hcmRcbiAgICBCLT4-TzogR0VUIC9hcHAvZGFzaGJvYXJkXG4gICAgTy0tPktBOiBWYWxpZGF0ZXMgU2Vzc2lvbiBDb29raWVcbiAgICBPLT4-QTogR0VUIC9kYXNoYm9hcmRcbiAgZWxzZSBMb2dpbiBkYXRhIGlzIGludmFsaWRcbiAgICBOb3RlIG92ZXIgS1AsQjogVXNlciByZXRyaWVzIGxvZ2luIC8gcmVnaXN0cmF0aW9uXG4gICAgS1AtLT4-TzogSFRUUCAzMDIgRm91bmQgL2FwcC9hdXRoLyhsb2dpbnxyZWdpc3RyYXRpb24pP3JlcXVlc3Q9YWJjZGVcbiAgICBPLS0-PkI6IEhUVFAgMzAyIEZvdW5kIC9hcHAvYXV0aC8obG9naW58cmVnaXN0cmF0aW9uKT9yZXF1ZXN0PWFiY2RlXG4gIGVuZFxuICAiLCJtZXJtYWlkIjp7InRoZW1lIjoibmV1dHJhbCIsInNlcXVlbmNlRGlhZ3JhbSI6eyJkaWFncmFtTWFyZ2luWCI6MTUsImRpYWdyYW1NYXJnaW5ZIjoxNSwiYm94VGV4dE1hcmdpbiI6MSwibm90ZU1hcmdpbiI6MTAsIm1lc3NhZ2VNYXJnaW4iOjU1LCJtaXJyb3JBY3RvcnMiOnRydWV9fSwidXBkYXRlRWRpdG9yIjpmYWxzZX0)](https://mermaid-js.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic2VxdWVuY2VEaWFncmFtXG4gIHBhcnRpY2lwYW50IEIgYXMgQnJvd3NlclxuICBwYXJ0aWNpcGFudCBPIGFzIE9SWSBPYXRoa2VlcGVyXG4gIHBhcnRpY2lwYW50IEtQIGFzIE9SWSBLcmF0b3MgUHVibGljIEFQSVxuICBwYXJ0aWNpcGFudCBBIGFzIFlvdXIgU2VydmVyLVNpZGUgQXBwbGljYXRpb25cbiAgcGFydGljaXBhbnQgS0EgYXMgT1JZIEtyYXRvcyBBZG1pbiBBUElcblxuICBCLT4-K086IEdFVCAvLm9yeS9rcmF0b3MvcHVibGljL2F1dGgvYnJvd3Nlci8obG9naW58cmVnaXN0cmF0aW9uKVxuICBPLT4-K0tQOiBHRVQgL2F1dGgvYnJvd3Nlci8obG9naW58cmVnaXN0cmF0aW9uKVxuICBLUC0tPj5LUDogRXhlY3V0ZSBKb2JzIGRlZmluZWQgaW4gXCJCZWZvcmUgTG9naW4vUmVnaXN0cmF0aW9uIFdvcmtmbG93KHMpXCJcbiAgS1AtLT4-LU86IEhUVFAgMzAyIEZvdW5kIC9hcHAvYXV0aC8obG9naW58cmVnaXN0cmF0aW9uKT9yZXF1ZXN0PWFiY2RlXG4gIE8tLT4-LUI6IEhUVFAgMzAyIEZvdW5kIC9hcHAvYXV0aC8obG9naW58cmVnaXN0cmF0aW9uKT9yZXF1ZXN0PWFiY2RlXG5cbiAgQi0-PitPOiBHRVQgL2FwcC9hdXRoLyhsb2dpbnxyZWdpc3RyYXRpb24pP3JlcXVlc3Q9YWJjZGVcbiAgTy0-PitBOiBHRVQgL2F1dGgvKGxvZ2lufHJlZ2lzdHJhdGlvbik_cmVxdWVzdD1hYmNkZVxuICBBLT4-K0tBOiBHRVQgL2F1dGgvYnJvd3Nlci9yZXF1ZXN0cy8obG9naW58cmVnaXN0cmF0aW9uKT9yZXF1ZXN0PWFiY2RlXG4gIEtBLT4-LUE6IFNlbmRzIExvZ2luL1JlZ2lzdHJhdGlvbiBSZXF1ZXN0IEpTT04gUGF5bG9hZFxuICBOb3RlIG92ZXIgQSxLQTogIHtcIm1ldGhvZHNcIjp7XCJwYXNzd29yZFwiOi4uLixcIm9pZGNcIjouLn19XG4gIEEtLT4-QTogR2VuZXJhdGUgYW5kIHJlbmRlciBIVE1MXG4gIEEtLT4-LU86IFJldHVybiBIVE1MIChGb3JtLCAuLi4pXG4gIE8tLT4-LUI6IFJldHVybiBIVE1MIChGb3JtLCAuLi4pXG5cbiAgQi0tPj5COiBGaWxsIG91dCBIVE1MXG5cbiAgQi0-PitPOiBQT1NUIEhUTUwgRm9ybVxuICBPLT4-K0tQOiBQT1NUIEhUTUwgRm9ybVxuICBLUC0tPj5LUDogQ2hlY2tzIGxvZ2luIC8gcmVnaXN0cmF0aW9uIGRhdGFcblxuXG4gIGFsdCBMb2dpbiBkYXRhIGlzIHZhbGlkXG4gICAgS1AtLT4-LUtQOiBFeGVjdXRlIEpvYnMgZGVmaW5lZCBpbiBcIkFmdGVyIExvZ2luIFdvcmtmbG93KHMpXCJcbiAgICBLUC0tPj5POiBIVFRQIDMwMiBGb3VuZCAvYXBwL2Rhc2hib2FyZFxuICAgIE5vdGUgb3ZlciBLUCxCOiBTZXQtQ29va2llOiBhdXRoX3Nlc3Npb249Li4uXG4gICAgTy0tPj4tQjogSFRUUCAzMDIgRm91bmQgL2FwcC9kYXNoYm9hcmRcbiAgICBCLT4-TzogR0VUIC9hcHAvZGFzaGJvYXJkXG4gICAgTy0tPktBOiBWYWxpZGF0ZXMgU2Vzc2lvbiBDb29raWVcbiAgICBPLT4-QTogR0VUIC9kYXNoYm9hcmRcbiAgZWxzZSBMb2dpbiBkYXRhIGlzIGludmFsaWRcbiAgICBOb3RlIG92ZXIgS1AsQjogVXNlciByZXRyaWVzIGxvZ2luIC8gcmVnaXN0cmF0aW9uXG4gICAgS1AtLT4-TzogSFRUUCAzMDIgRm91bmQgL2FwcC9hdXRoLyhsb2dpbnxyZWdpc3RyYXRpb24pP3JlcXVlc3Q9YWJjZGVcbiAgICBPLS0-PkI6IEhUVFAgMzAyIEZvdW5kIC9hcHAvYXV0aC8obG9naW58cmVnaXN0cmF0aW9uKT9yZXF1ZXN0PWFiY2RlXG4gIGVuZFxuICAiLCJtZXJtYWlkIjp7InRoZW1lIjoibmV1dHJhbCIsInNlcXVlbmNlRGlhZ3JhbSI6eyJkaWFncmFtTWFyZ2luWCI6MTUsImRpYWdyYW1NYXJnaW5ZIjoxNSwiYm94VGV4dE1hcmdpbiI6MSwibm90ZU1hcmdpbiI6MTAsIm1lc3NhZ2VNYXJnaW4iOjU1LCJtaXJyb3JBY3RvcnMiOnRydWV9fSwidXBkYXRlRWRpdG9yIjpmYWxzZX0) + +### Client-Side Browser Applications + +Because Client-Side Browser Applications do not have access to ORY Kratos' Admin +API, they must use the ORY Kratos Public API instead. The flow for a Client-Side +Browser Application is almost the exact same as the one for Server-Side +Applications, with the small difference that +`https://example.org/.ory/kratos/public/auth/browser/requests/login?request=abcde` +would be called via AJAX instead of making a request to +`https://ory-kratos-admin.example-org.vpc/auth/browser/requests/login?request=abcde`. + +> To prevent brute force, guessing, session injection, and other attacks, it is +> required that cookies are working for this endpoint. The cookie set in the +> initial HTTP request made to +> `https://example.org/.ory/kratos/public/auth/browser/login` MUST be set and +> available when calling this endpoint! + +## Self-Service User Login and User Registration for API Clients + +Will be addressed in a future release. + +## Executing Jobs before User Login + +ORY Kratos allows you to configure jobs that run before the Login Request is +generated. This may be helpful if you'd like to restrict logins to IPs coming +from your internal network or other logic. + +You can find available `before` jobs in +[Self-Service Before Login Jobs](../workflows/jobs/before.md#user-login) and +configure them using the ORY Kratos configuration file: + +```yaml +selfservice: + login: + before: + - run: + config: + # +``` + +## Executing Jobs after User Login + +ORY Kratos allows you to configure jobs that run before the Login Request is +generated. This may be helpful if you'd like to restrict logins to IPs coming +from your internal network or other logic. + +You can find available `after` jobs in +[Self-Service After Login Jobs](../workflows/jobs/after.md#user-login) and +configure them using the ORY Kratos configuration file: + +```yaml +selfservice: + after: + : + - run: + config: + # +``` + +It's possible to define jobs running after login for each individual User Login +Flow Strategy (e.g. `password`, `oidc`). + +## Executing Jobs before User Registration + +ORY Kratos allows you to configure jobs that run before the Registration Request +is generated. This may be helpful if you'd like to restrict registrations to IPs +coming from your internal network or other logic. + +You can find available `before` jobs in +[Self-Service Before Registration Jobs](../workflows/jobs/before.md#user-registration) +and configure them using the ORY Kratos configuration file: + +```yaml +selfservice: + registration: + before: + - run: + config: + # +``` + +## Executing Jobs after User Registration + +ORY Kratos allows you to configure jobs that run before the Registration Request +is generated. This may be helpful if you'd like to restrict registrations to IPs +coming from your internal network or other logic. + +You can find available `after` jobs in +[Self-Service After Registration Jobs](../workflows/jobs/after.md#user-registration) +and configure them using the ORY Kratos configuration file: + +```yaml +selfservice: + after: + : + - run: + config: + # +``` + +It's possible to define jobs running after registration for each individual User +Registration Flow Strategy (e.g. `password`, `oidc`). diff --git a/docs/docs/self-service/flows/user-logout.md b/docs/docs/self-service/flows/user-logout.md new file mode 100644 index 00000000000..7f7438b0e68 --- /dev/null +++ b/docs/docs/self-service/flows/user-logout.md @@ -0,0 +1,33 @@ +--- +id: user-logout +title: User Logout +--- + +ORY Kratos supports two logout flows: + +- Browser-based (easy): This flow works for all applications running on top of a + browser. Websites, single-page apps, Cordova/Ionic, and so on. +- API-based (advanced): This flow works for native applications like iOS + (Swift), Android (Java), Microsoft (.NET), React Native, Electron, and others. + +## Self-Service User Logout for Browser Applications + +> WARNING - This flow is currently vulnerable to CSRF attacks because anyone can +> direct your users to the logout endpoint. A future release of ORY Kratos will +> use POST Forms with Anti-CSRF Tokens to prevent this problem. This is tracked +> as [kratos#142](https://github.com/ory/kratos/issues/142). + +To log a user out, all you have to do is to direct the browser to +`http://ory-kratos-public/auth/browser/logout`. After successful logout, the +browser will be redirected to the `redirect_to` value set in ORY Krato's +configuration file: + +``` +selfservice: + logout: + redirect_to: http://test.kratos.ory.sh:4000/ +``` + +## Self-Service User Logout for API Clients + +This will be addressed in a future release of ORY Kratos. diff --git a/docs/docs/self-service/flows/user-settings-profile-management.md b/docs/docs/self-service/flows/user-settings-profile-management.md new file mode 100644 index 00000000000..d7fc0730f95 --- /dev/null +++ b/docs/docs/self-service/flows/user-settings-profile-management.md @@ -0,0 +1,205 @@ +--- +id: user-settings-profile-management +title: User Settings and Profile Management +--- + +ORY Kratos allows users to update their own settings and profile information +using two principal flows: + +- Browser-based (easy): This flow works for all applications running on top of a + browser. Websites, single-page apps, Cordova/Ionic, and so on. +- API-based (advanced): This flow works for native applications like iOS + (Swift), Android (Java), Microsoft (.NET), React Native, Electron, and others. + +This flow does not allow updates of security-sensitive information such as the +password, fields associated with login (e.g. email), fields associated with +account recovery (e.g. recovery email address). These fields must be updated +using a separate flow which requires prior security checks. using a separate +flow which requires prior security checks. + +The updated profile must be valid against the JSON Schema defined for its +[Identity Traits](../../concepts/identity-user-model.md). If one or more fields +do not validate (e.g. "Not an email"), the profile will not be updated. + +The only required configuration is setting the Profile UI URL in the +[ORY Kratos configuration file](../../reference/configuration.md): + +```yaml +urls: + settings_ui: https://.../.. +``` + +## Self-Service User Profile Management for Browser Applications + +This flow is similar to +[User Login and User Registration](user-login-user-registration.md) but does not +support before/after work flows or individual strategies. It uses the already +established [Network Flows for Browsers](index.md#network-flows-for-browsers). + +### Server-Side Browser Applications + +The [Network Flows for Browsers](index.md#network-flows-for-browsers) works as +follows for Profile Management: + +1. An initial HTTP Request is made to + `https://example.org/.ory/kratos/public/self-service/browser/flows/settings`. +2. ORY Kratos redirects the browser to the URL set in `urls.settings_ui` and + appends the `request` URL Query Parameter (e.g. + `https://example.org/settings?request=abcde`). +3. The Endpoint at `/settings` makes a HTTP GET Request to + `https://ory-kratos-admin.example-org.vpc/self-service/browser/flows/requests/settings?request=abcde` + and fetches Profile Management Request JSON Payload that represent the + individual fields that can be updated. +4. The User updates the profile data and sends a HTTP POST request to, e.g., + `https://example.org/.ory/kratos/public/self-service/browser/flows/settings/strategies/password?request=abcde`. + - If the profile data is invalid, all validation errors will be collected and + added to the Profile Management JSON Payload. The Browser is redirected to + the `urls.settings_ui` URL (e.g. + `https://example.org/profile?request=abcde`). + - If the profile data is valid, the identity's traits are updated and the + process is complete. + +Assuming the Identity's Traits JSON Schema is defined as + +```json +{ + "$id": "https://example.org/identity.traits.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Person", + "type": "object", + "properties": { + "email": { + "type": "string", + "format": "email", + "title": "E-Mail", + "minLength": 3, + "ory.sh/kratos": { + "credentials": { + "password": { + "identifier": true + } + } + } + }, + "name": { + "type": "object", + "properties": { + "first": { + "type": "string", + "minLength": 5 + }, + "last": { + "type": "string" + } + } + } + }, + "required": ["email"], + "additionalProperties": false +} +``` + +the resulting JSON Payload coming from +`https://ory-kratos-admin.example-org.vpc/self-service/browser/flows/requests/settings?request=abcde` +would look something along the lines of: + +```json +{ + "id": "48068b5d-3438-4d6f-9955-331b96c41762", + "expires_at": "2020-01-27T23:03:58.5986947Z", + "issued_at": "2020-01-27T22:03:58.5987099Z", + "request_url": "http://127.0.0.1:4455/settings", + "form": { + "action": "https://example.org/.ory/kratos/public/settings?48068b5d-3438-4d6f-9955-331b96c41762", + "method": "POST", + "fields": { + "csrf_token": { + "name": "csrf_token", + "type": "hidden", + "required": true, + "value": "+5+WxP7+leOpfjHHkWWe99APD7845i82p4wGtfdWKHBK5fFg4BS7JjzdeI7kdsOUElyrG10ZR5vIqi7asNpqAA==" + }, + "traits.email": { + "name": "traits.email", + "type": "text", + "value": "foobar@ory.sh" + }, + "traits.name.first": { + "name": "traits.name.first", + "type": "text", + "value": "Foobar" + }, + "traits.name.last": { + "name": "traits.name.last", + "type": "text", + "value": "Barbaz" + } + } + }, + "identity": { + "id": "c631e58a-445a-4844-ae80-f0b426a1e11e", + "traits_schema_id": "default", + "traits_schema_url": "https://example.org/identity.traits.schema.json", + "traits": { + "email": "foobar@ory.sh", + "name": { + "last": "Foobar", + "first": "Barbaz" + } + } + } +} +``` + +If the user tries to save profile data that does not validate against the +provided JSON Schema, error payloads will be added to the fields affected: + +```json5 +{ + id: '48068b5d-3438-4d6f-9955-331b96c41762', + // ... + form: { + // ... + fields: { + // ... + 'traits.name.first': { + name: 'traits.name.first', + type: 'text', + value: 'abc', + errors: [ + { + message: 'traits.name.first: Must be at least 5 characters long', + }, + ], + }, + // ... + }, + }, + // ... +} +``` + +Keep in mind that it is not possible to update the `traits.email` field as +updating that field requires prior authentication. + +> Updating these "protected" fields will be implemented in a future release of +> ORY Kratos. + +### Client-Side Browser Applications + +Because Client-Side Browser Applications do not have access to ORY Kratos' Admin +API, they must use the ORY Kratos Public API instead. The flow for a Client-Side +Browser Application is almost the exact same as the one for Server-Side +Applications, with the small difference that +`https://example.org/.ory/kratos/public/self-service/browser/flows/requests/settings?request=abcde` +would be called via AJAX instead of making a request to +`https://ory-kratos-admin.example-org.vpc/self-service/browser/flows/requests/settings?request=abcde`. + +> To prevent brute force, guessing, session injection, and other attacks, it is +> required that cookies are working for this endpoint. The cookie set in the +> initial HTTP request made to `https://example.org/.ory/kratos/public/settings` +> MUST be set and available when calling this endpoint! + +## Self-Service User Profile Management for API Clients + +Will be addressed in a future release. diff --git a/docs/docs/self-service/flows/verify-email-account-activation.mdx b/docs/docs/self-service/flows/verify-email-account-activation.mdx new file mode 100644 index 00000000000..c9f7331ffd5 --- /dev/null +++ b/docs/docs/self-service/flows/verify-email-account-activation.mdx @@ -0,0 +1,209 @@ +--- +id: verify-email-account-activation +title: Email and Phone Verification and Account Activation +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; + +ORY Kratos allows users to verify their out-of-band (email, telephone number, +...) communication channels. Verification can be initiated + +- after registration or by performing a verification flow; +- manually by the user. + +Currently, ORY Kratos only supports verification of email addresses. Before +sending out a verification E-Mail, ORY Kratos will check if the email address is +already known. Depending on the result, one of the two flows will be executed: + +- Unknown email address: An email is sent to the address informing the recipient + that someone tried to verify this email address but that it is not known by + the system: + Verification email for unknown address; +- Known email address: An email which includes a verification link is sent to + the address: + Verification email for known address; + +This prevents Account Enumeration Attacks at is is not possible for a threat +agent to determine if an account exists or not based on the verification flow. + +The emails are using templates that can be customised as explained in +[Customizing E-Mail Templates](../../concepts/email-sms.md#templates). The +template IDs are: + +- Unknown email address: `verify_invalid` +- Known email address: `verify_valids` + +## Account Activation + +Using this feature implements the so-called "account activation" with the +difference that ORY Kratos does not provide a feature that prevents sign in into +accounts without verified addresses. The reason being that verification is +proving that the user controls the given address, but it is not an +authentication mechanism. + +You may however chose to limit what an identity without verified addresses is +able to do in your application logic or API Gateways. + +## Setting Email Verification + +You must define at least one Identity Traits field as a verification field. You +can do so by defining the following section in your Identity Traits JSON Schema: + +```json5 +{ + // ... + properties: { + // This could also be an array or any other field name + email: { + type: 'string', + format: 'email', + 'ory.sh/kratos': { + verification: { + // Currently, only email is supported + via: 'email', + }, + }, + }, + }, + // ... +} +``` + +You can also combine this with the password strategy login identifier. + +```json5 +{ + // ... + properties: { + // This could also be an array or any other field name + email: { + type: 'string', + format: 'email', + 'ory.sh/kratos': { + credentials: { + password: { + identifier: true, + }, + }, + verification: { + // Currently, only email is supported + via: 'email', + }, + }, + }, + }, + // ... +} +``` + +That way, the field `email` (or any field you define with these properties) will +serve as both the login identifier as well as a verifiable email address. + +### Verify Email on User Registration + +To send an email after user registration, add the following sections to your ORY +Kratos config file: + +```yaml +# required +urls: + # Similar to login_ui or profile_ui, this points to the user interface where the verificaiton + # user interface is implemented. + # + # For more information on this endpoint please head over to the next section + verify_ui: https://my-kratos-ui/verify + +selfservice: + registration: + after: + password: + # .... + - job: verify # This sends the verification email after successful registration + # .... +``` + +## Self-Service Request or Resend Verification Link for Browser Applications + +A user might want to resend a verification link because the link expired or did +not arrive in the inbox. + +The flow implementing this feature uses the already established +[Network Flows for Browsers](index.md#network-flows-for-browsers). + +### Server-Side Browser Applications + +You can find an exemplary implementation for this flow on GitHub: + +- [Verification HTTP Route](https://github.com/ory/kratos-selfservice-ui-node/blob/master/src/routes/verify.ts) +- [Verification UI](https://github.com/ory/kratos-selfservice-ui-node/blob/master/views/verify.hbs) + +The [Network Flows for Browsers](index.md#network-flows-for-browsers) works as +follows for Email Verification: + +1. An initial HTTP Request is made to + `/self-service/browser/flows/verification/:via`. Currently, only `email` is + supported as `:via`. +2. ORY Kratos redirects the browser to the URL set in `urls.verify_ui` and + appends the `request` URL Query Parameter (e.g. + `https://example.org/verify?request=abcde`). +3. The Endpoint at `/profile` makes a HTTP GET Request to + `https://ory-kratos-admin.example-org.vpc/self-service/browser/flows/requests/verification?request=abcde` + and fetches Verification Request JSON Payload that represent the individual + fields that can be updated. +4. The user fills out the form and sends a HTTP POST request to + `https://example.org/.ory/kratos/public/self-service/browser/flows/verification/:via/complete?request=abcde`. + Depending on whether the address is known or not, a `verify_valid` or + `verify_invalid` message will be sent to the given address. + +An exemplary payload for a verification request looks as follows: + +```json +{ + "id": "9c3e945c-096a-42ec-8617-caecda9e9263", + "expires_at": "2020-02-18T16:11:25.3112038Z", + "issued_at": "2020-02-18T15:11:25.3112824Z", + "request_url": "http://127.0.0.1:4455/self-service/browser/flows/verification/email", + "form": { + "action": "http://127.0.0.1:4455/.ory/kratos/public/self-service/browser/flows/verification/email/complete?request=9c3e945c-096a-42ec-8617-caecda9e9263", + "method": "POST", + "fields": [ + { + "name": "csrf_token", + "type": "hidden", + "required": true, + "value": "fMusJj65BxNtrog/DYryN4sZmuLA85WkbAh4yP9pT1lAQTIAPTVGJTmmLL66Y0HEbIpKEU5gTr5qJoRXHsBoSw==" + }, + { + "name": "to_verify", + "type": "email", + "required": true + } + ] + }, + "via": "email", + "success": false +} +``` + +### Client-Side Browser Applications + +Because Client-Side Browser Applications do not have access to ORY Kratos' Admin +API, they must use the ORY Kratos Public API instead. The flow for a Client-Side +Browser Application is almost the exact same as the one for Server-Side +Applications, with the small difference that +`https://example.org/.ory/kratos/public/self-service/browser/flows/requests/verification?request=abcde` +would be called via AJAX instead of making a request to +`https://ory-kratos-admin.example-org.vpc/self-service/browser/flows/requests/verification?request=abcde`. + +> To prevent brute force, guessing, session injection, and other attacks, it is +> required that cookies are working for this endpoint. The cookie set in the +> initial HTTP request made to +> `https://example.org/.ory/kratos/public/self-service/browser/flows/verification/:via` +> MUST be set and available when calling this endpoint! +> +> When making AJAX requests from JavaScript, make sure to set +> `{ withCredentials: true }` (name and layout may vary between libraries). + +## Email Verification for API Clients + +Will be addressed in a future release. diff --git a/docs/docs/self-service/strategies/index.md b/docs/docs/self-service/strategies/index.md new file mode 100644 index 00000000000..7c25370633b --- /dev/null +++ b/docs/docs/self-service/strategies/index.md @@ -0,0 +1,9 @@ +--- +id: index +title: Overview +--- + +ORY Kratos implements several Self Service Strategies. These strategies +implement flows such as login, registration, and account recovery. Some +strategies may not implement all of these flows - account recovery is, for +example, not implemented by the OpenID Connect strategy. diff --git a/docs/docs/self-service/strategies/openid-connect-social-sign-in-oauth2.md b/docs/docs/self-service/strategies/openid-connect-social-sign-in-oauth2.md new file mode 100644 index 00000000000..d3a5dac7f05 --- /dev/null +++ b/docs/docs/self-service/strategies/openid-connect-social-sign-in-oauth2.md @@ -0,0 +1,44 @@ +--- +id: openid-connect-social-sign-in-oauth2 +title: Social Sign In with OpenID Connect and OAuth2 +--- + +> The OpenID Connect Strategy does already work but needs further documentation +> and code improvements. It will be documented in an upcoming release of ORY +> Kratos. + +The Social Sign In Strategy enables you to use + +- [GitHub](http://github.com/); +- [Apple](https://developer.apple.com/sign-in-with-apple/); +- [Google](https://developers.google.com/identity/sign-in/web/sign-in); +- [Facebook](https://developers.facebook.com/docs/facebook-login/); +- [ORY Hydra](https://www.ory.sh/hydra); +- [Keycloak](https://www.keycloak.org); +- and every other OpenID Connect Certified Provider + +as the Identity Provider. + +Because of the nature of this flow (a browser is required) it does not work + +## Browser Clients + +### Login + +Sign In only works when an identity exists for that profile already. If it does +not exist, a registration flow will be performed instead. + +### Registration + +Sign Up on conflict with existing primary identifiers like email: + +- Sign Up is dis-allowed and the user is asked to instead log in and then link + his/her account instead. + +## API Clients + +API-based login and registration using this strategy will be addressed in a +future release of ORY Kratos. + +Please be aware that OpenID Connect providers always require a Browser, with the +exception of "Sign in with Apple" on recent iOS versions. diff --git a/docs/docs/self-service/strategies/username-email-password.md b/docs/docs/self-service/strategies/username-email-password.md new file mode 100644 index 00000000000..2b518902f94 --- /dev/null +++ b/docs/docs/self-service/strategies/username-email-password.md @@ -0,0 +1,641 @@ +--- +id: username-email-password +title: Username or Email and Password +--- + +The `password` strategy implements the most-common used form of login and +registration: An identifier (username, email, phone number, ...) and a password. + +It implements several flows, specifically +[User Login and User Registration](../flows/user-login-user-registration.md). + +To enable the `password` strategy, set `selfservice.strategies.password.enabled` +to true in your ORY Kratos configuration: + +```yaml +selfservice: + strategies: + password: + enabled: true +``` + +Passwords are hashed using the +[Argon2 Hashing Algorithm](../../concepts/security.md#Argon2) which can be +configured in the +[ORY Kratos Argon2 Configuration](../../concepts/security.md#Argon2). + +When a user signs up using this strategy, the Default Identity Traits Schema +(set using `identity.traits.default_schema_url`) is used: + +```yaml +identity: + traits: + # also supports http(s) of course + default_schema_url: file:///path/to/default-identity.schema.json +``` + +If you don't know what that means, please read the +["Concepts: Identity" Chapter](../../concepts/identity-user-model.md). + +## Choosing between Username, Email, Phone Number + +Before you start, you need to decide what data you want to collect from your +users and why! It is hard to change this decision afterwards, so make sure +you've taken everything into account! + +When logging in, the user will use a login identifier and a password to sign up +and in. The identifier can be + +- a username - e.g. "john.doe" or "johndoe123" or "oryuser", +- an email address - e.g. `john.doe@gmail.com`, +- a phone number - e.g. `+49-1234-4321-1234-4321`. + +All of these approaches have up- and downsides. + +Using the email address as the login identifier is easy to remember, does not +require additional fields (because the email address is already being +collected), and is usually unique. It's usually unique because sometimes +companies use a "shared" email account (e.g. office@acme.org) to access +services. In that case, multiple real identities are using the same email +identifier to log in. + +The email address however represents a unique identifier and personally +identifiable information (PII). An attacker could for example check if an email +address (e.g. `john.doe@gmail.com`) is registered at a site (e.g. an adult +website) and use that information for blackmail (see +[Account Enumeration Attacks](../../concepts/security.md#account-enumeration-attacks)). + +The same considerations apply to using a phone number as the primary +registration & login identifier. + +Using a free text username reduces the privacy risk because it is much harder to +make a connection between the username and a real world identity. It's still +possible in cases where users choose a username such as +"john.doe.from.mineapolis.1970", but finding the right username identifier is +still difficult and there is plausible deniability because anyone could use that +username. + +A free text username however requires capturing additional fields (e.g. an email +address for password resets / account recovery) and is hard to remember. It is +often very difficult to find unique usernames as people tend to use a +combination of their names and initials (e.g. `john.doe`) which has a high +chance of collision. Therefore, one ends up with usernames such as +`john.doe1234432`. + +It is important to understand that ORY Kratos lowercases all `password` +identifiers and therefore E-Mail addresses. Characters `+` or `.` which have +special meaning for some E-Mail Providers (e.g. GMail) are not normalized: + +- `userNAME` is equal to `username` +- `foo@BaR.com` is equal to `foo@bar.com` +- `foo+baz@bar.com` is NOT equal to `foo@bar.com` +- `foo.baz@bar.com` is NOT equal to `foobar@bar.com` + +You need to decide which route you want to take. + +### Email and Password + +To use the email address as the login identifier, define the following Identity +Traits Schema: + +```json +{ + "$id": "https://example.com/registration.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Person", + "type": "object", + "properties": { + "email": { + "type": "string", + "format": "email", + "ory.sh/kratos": { + "credentials": { + "password": { + "identifier": true + } + } + } + } + } +} +``` + +### Multiple E-Mails and Password + +You can allow users to sign up with multiple E-Mail Addresses and use any of +those for log in: + +```json +{ + "$id": "https://example.com/registration.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Person", + "type": "object", + "properties": { + "emails": { + "type": "array", + "items": { + "type": "string", + "format": "email", + "ory.sh/kratos": { + "credentials": { + "password": { + "identifier": true + } + } + } + } + } + } +} +``` + +### Username and Password + +To use a username as the login identifier, define the following Identity Traits +Schema: + +```json +{ + "$id": "https://example.com/registration.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Person", + "type": "object", + "properties": { + "email": { + "type": "string", + "format": "email", + "ory.sh/kratos": { + "credentials": { + "password": { + "identifier": true + } + } + } + } + } +} +``` + +### Username and Email and Password + +You may also mix usernames and passwords: + +```json +{ + "$id": "https://example.com/registration.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Person", + "type": "object", + "properties": { + "email": { + "type": "string", + "format": "email", + "ory.sh/kratos": { + "credentials": { + "password": { + "identifier": true + } + } + } + }, + "username": { + "type": "string", + "ory.sh/kratos": { + "credentials": { + "password": { + "identifier": true + } + } + } + } + } +} +``` + +### Phone Number And Password + +> This will be addressed in a future release and is tracked as +> [kratos#137](https://github.com/ory/kratos/issues/137). + +## Browser Clients + +### Registration + +This strategy uses the high-level registration flow defined in chapter +[Self-Service Registration User Flow](../flows/user-login-user-registration.md). + +Once the user is redirected to the Registration UI URL, the endpoint responsible +for that URL makes a request to ORY Kratos' Public / Admin API and appends the +`request` query parameter. + +ORY Kratos uses the JSON Schema defined in `identity.traits.default_schema_url` +to generate a list of form fields and add it to the Registration Request. + +Using a JSON Schema like + +```json +{ + "$id": "https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Person", + "type": "object", + "properties": { + "email": { + "type": "string", + "format": "email", + "title": "E-Mail", + "minLength": 3, + "ory.sh/kratos": { + "credentials": { + "password": { + "identifier": true + } + } + } + }, + "name": { + "type": "object", + "properties": { + "first": { + "type": "string" + }, + "last": { + "type": "string" + } + } + } + }, + "required": ["email"], + "additionalProperties": false +} +``` + +will result in the following Registration Request + +```json5 +{ + id: '713df601-d6c8-4331-8195-c29b92db459f', + expires_at: '2020-01-27T16:31:00.3507956Z', + issued_at: '2020-01-27T16:21:00.3508076Z', + request_url: 'http://127.0.0.1:4455/auth/browser/registration', + methods: { + password: { + method: 'password', + config: { + action: 'http://127.0.0.1:4455/.ory/kratos/public/auth/browser/methods/password/registration?request=713df601-d6c8-4331-8195-c29b92db459f', + method: 'POST', + fields: [ + { + name: 'csrf_token', + type: 'hidden', + required: true, + value: '0klCuilgIO2k0Ev3J3IEsMOlmxg0RhjiiiWXVKm3Pd7HxZLVkDHWoOSfiT+/BJn69Dg2fmq6MHv8HkEx6MrVlw==', + }, + { + name: 'traits.email', + type: 'email', + required: true, + }, + { + name: 'password', + type: 'password', + required: true, + }, + { + name: 'traits.name.first', + type: 'text', + }, + { + name: 'traits.name.last', + type: 'text', + }, + ], + }, + }, + }, +} +``` + +which in turn is easily to render by filling out a HTML Form template: + +```html +
+ + > + + +
+``` + +Once the user clicks "Create Account", the payload will be sent to ORY Kratos' +Public API. The data will be validated against the JSON Schema (e.g. checking if +a required field is missing, if some condition like `minLength` is not +fulfilled, ...). If the data is invalid or incomplete, the browser will be +redirected to the same login endpoint with the same request ID. When fetching +that request ID again, error details will be included in the JSON Response, such +as: + +```json5 +{ + id: '713df601-d6c8-4331-8195-c29b92db459f', + expires_at: '2020-01-27T16:31:00.3507956Z', + issued_at: '2020-01-27T16:21:00.3508076Z', + request_url: 'http://127.0.0.1:4455/auth/browser/registration', + methods: { + password: { + method: 'password', + config: { + errors: [ + { + message: 'Please update the Form Fields to proceed.', + }, + ], + action: 'http://127.0.0.1:4455/.ory/kratos/public/auth/browser/methods/password/registration?request=713df601-d6c8-4331-8195-c29b92db459f', + method: 'POST', + fields: [ + /* ... */ + { + name: 'password', + type: 'text', + value: 't4aegbydfv5234', + errors: [ + { + message: "traits.email: Does not match format 'email'", + }, + ], + }, + /* ... */ + ], + }, + }, + }, +} +``` + +> Validation error messages and context will be improved in future releases. +> This is tracked as [kratos#185](https://github.com/ory/kratos/issues/185). + +### Login + +The Login flow is almost identical to the registration flow. The only difference +is that only three fields will be requested: + +```json5 +{ + id: '0cfb0f7e-3866-453c-9c23-28cc2cb7fead', + expires_at: '2020-01-27T16:48:53.8826084Z', + issued_at: '2020-01-27T16:38:53.8826392Z', + request_url: 'http://127.0.0.1:4455/auth/browser/login', + methods: { + password: { + method: 'password', + config: { + action: 'http://127.0.0.1:4455/.ory/kratos/public/auth/browser/methods/password/login?request=0cfb0f7e-3866-453c-9c23-28cc2cb7fead', + method: 'POST', + fields: [ + { + name: 'csrf_token', + type: 'hidden', + required: true, + value: 'F0LABRxm/os+18VBUcbmz98LkJid1sEj++4X41rcdbcCzhBqpTcIxn6YB4nJsHuF6JY9/sMq6bqN1cGGG6Gd/g==', + }, + { + name: 'identifier', + type: 'text', + required: true, + }, + { + name: 'password', + type: 'password', + required: true, + }, + ], + }, + }, + }, +} +``` + +If the login form is filled out incorrectly, errors are included in the +response: + +```json5 +{ + id: '0cfb0f7e-3866-453c-9c23-28cc2cb7fead', + expires_at: '2020-01-27T16:48:53.8826084Z', + issued_at: '2020-01-27T16:38:53.8826392Z', + request_url: 'http://127.0.0.1:4455/auth/browser/login', + methods: { + password: { + method: 'password', + config: { + errors: [ + { + message: 'Please check the data you provided.', + }, + ], + action: 'http://127.0.0.1:4455/.ory/kratos/public/auth/browser/methods/password/login?request=0cfb0f7e-3866-453c-9c23-28cc2cb7fead', + method: 'POST', + fields: [ + /* ... */ + { + name: 'password', + type: 'password', + required: true, + errors: [ + { + message: 'password: password is required', + }, + ], + }, + ], + }, + }, + }, +} +``` + +## API Clients + +API-based login and registration using this strategy will be addressed in a +future release of ORY Kratos. + +## Security and Defenses + +Password-based authentication flows are subject to frequent abuse through + +- Social Engineering Attacks; +- Password Guessing Attacks; +- Phishing Attacks. + +### Anti-automation + +> This feature is a work in progress and is tracked as +> [kratos#133](https://github.com/ory/kratos/issues/138). + +Actions that cause out-of-band communications, such as sending an activation +link via email or an activation code via SMS, can be abused by automated +systems. The goal of such an attack is to send out so many emails or SMS, that +your reputation worsens (spam filters) or you're faced with massive costs +(carrier fees). + +CAPTCHA renders these attacks either very difficult or impossible. ORY Kratos +has CAPTCHA support built-in. ORY Kratos will prompt the user to complete a +CAPTCHA in the following scenarios: + +- The user tries to register more than one account within 72 hours. +- The user failed provide valid credentials for the third time within 12 hours. +- The user tries to recover their account for the second time within 72 hours. + +For integration guidelines, please check the individual flow's (registration, +login, account recovery) integration documentation. + +### Password Validation + +> Further improvements are work in progress and are tracked on +> [GitHub](https://github.com/ory/kratos/issues?q=is%3Aopen+label%3Amodule%3Ass%2Fpassword+) + +To prevent weak passwords ORY Kratos implements different measures. Users often +choose passwords similar to their traits. To prevent this ORY Kratos ensures +there is a sufficient +[Levenshtein-Distance](https://en.wikipedia.org/wiki/Levenshtein_distance) (aka +"Edit-Distance") between the identifier and the password. It also makes sure +that the identifier and password have a small enough longest common substring. + +Furthermore the `password` strategy comes with a build-in check against the +["Have I been pwned"](https://haveibeenpwned.com) breach database. This way ORY +Kratos makes sure your users cannot use passwords like "password", "123456" or +any other commonly used one. To protect the value of the password the +[range API](https://haveibeenpwned.com/API/v3#SearchingPwnedPasswordsByRange) is +being used. + +### Account Enumeration Defenses (work in progress) + +> This feature is a work in progress and is tracked as +> [kratos#133](https://github.com/ory/kratos/issues/133). + +Account enumeration attacks allow a attacker to find out who is signed up. This +compromises the privacy of your users and can hurt reputation depending on the +service (e.g. "adult content"). + +This attack usually makes only sense if an email address or a phone number is +collected during registration. For chosen usernames, this attack is much more +difficult, as the attacker has to know what usernames the victim is using. + +There are three common ways an attacker can figure out if a user is signed up at +a service: + +- During login: "No user with this email address was found" +- During registration: "A user with this email address exists already" +- During password reset: "No user with this email address was found" + +To mitigate this attack, the following strategies need to be deployed: + +- The login form should return the same message regardless of whether the + password is wrong or the email/username does not exist: "The provided + credentials are invalid." +- The password reset form should always return a success message and send out an + email. If the email address is registered, a normal password reset email is + sent. If the email address is not registered, an email is sent to the address + indicating that no account is set up with that email address. This is helpful + to users that have multiple email addresses and are using the wrong email + address for the password reset. +- The registration form should also always return a success message and send out + an email. If the email address is not yet registered, a regular "account + activation" email is sent out. If the email address is registered already, a + email is sent out telling the user that the account is already set up, and + link to the login screen. + +If you wish to mitigate account enumeration attacks, it is important to note +that you can not sign in users directly after sign up! Depending on the type of +service you provide, you might not care about this specific attack in which case +direct login after sign up would be ok. + +#### Enabling Account Enumeration Defenses + +Assuming you wish to enable account enumeration defenses, you need to configure +ORY Kratos as follows: + +- Collect one or more email addresses during sign up and enable email + verification. +- **Do not** enable the `session` post-registration workflow. Use only the + `redirect` post-registration workflow. + +```yaml +selfservice: + registration: + after: + password: + # !! DO NOT enable `session` or all registration processes will fail!! + # - run: session + + # You **must** enable identifier verification or no email will be sent and the registration is thus just a blank + # entry in the database with no way of logging in. + - run: verify + + # You **must** enable redirection. The page should show a message such as: "Registration complete, please + # check your email for further steps". The user will be redirected to this page regardless of the registration + # status (success, invalid). + - run: redirect + config: + default_redirect_url: http://test.kratos.ory.sh:4000/registration_next_steps +``` + +#### Disable Account Enumeration Defenses + +Enforcing email verification, which requires an email round trip and disrupts +the sign up process, is not always feasible. In these cases, you might want to +disable account enumeration defenses. + +You can disable the defense mechanism on a per-field basis in your Identity +Traits Schema: + +```yaml +{ + '$id': 'https://example.com/registration.schema.json', + '$schema': 'http://json-schema.org/draft-07/schema#', + 'title': 'Person', + 'type': 'object', + 'properties': + { + 'username': + { + 'type': 'string', + 'ory.sh/kratos': + { + 'credentials': + { + 'password': + { + 'identifier': true, + 'disable_account_enumeration_defenses': true, + }, + }, + }, + }, + }, +} +``` + +This will tell ORY Kratos to display messages such as "a user with this email +address exists already" and "no user with this email address is registered on +this site". You can then enable the `session` post-registration workflow: + +```yaml +selfservice: + registration: + after: + password: + - run: session + + # You can optionally enable verification of the provided email address(es) or phone number(s) + # - run: verify + + # You may now directly redirect to e.g. the dashboard: + - run: redirect + config: + default_redirect_url: http://test.kratos.ory.sh:4000/dashboard +``` diff --git a/docs/docs/self-service/workflows/jobs/after.md b/docs/docs/self-service/workflows/jobs/after.md new file mode 100644 index 00000000000..46d7914d981 --- /dev/null +++ b/docs/docs/self-service/workflows/jobs/after.md @@ -0,0 +1,172 @@ +--- +id: after +title: After Jobs +--- + +## User Login + +Jobs running after successful user authentication can be defined per +Self-Service Login Strategy in ORY Kratos' configuration file, for example: + +```yaml +selfservice: + login: + after: + passwordless: + - job: redirect + config: + redirect_to: https://url-to-redirect/to + oidc: + - job: redirect + config: + redirect_to: https://url-to-redirect/to + password: + - job: redirect + config: + redirect_to: https://url-to-redirect/to +``` + +### `session` + +The `session` job will send a `Set-Cookie` header which contains the session +cookie. To use it, you must first define one or more (for secret rotation) +session secrets and then use it in one of the `after` work flows: + +```yaml +secrets: + session: + - something-super-secret # The first entry will be used to sign and verify session cookies + + # All other entries will be used to verify session cookies that were signed before "something-super-secret" became + # the current signing secret. + - old-session-secret + - older-session-secret + - ancient-session-secret + +selfservice: + registration: + after: + : + - job: session + # can not be configured +``` + +> This job is required for login to work, otherwise no session will be created. + +### `redirect` + +The `redirect` job will send a HTTP 302 Found response and redirect the client +to the specified endpoint. There are two configuration options available: + +```yaml +selfservice: + login: + after: + : + - job: redirect + config: + # redirect_to sets the URL the client will be redirected to. + redirect_to: https://url-to-redirect/to + + # allow_user_defined, if enabled, will check for a `?return_to` query parameter in the original request URL. + # If the parameter is set and the URL is whitelisted in `urls.whitelisted_return_to_domains` + allow_user_defined: true +``` + +> It is highly recommended to set up a redirect job after login, otherwise the +> user might get stuck on an empty, white screen. + +### `revoke_active_sessions` + +The `revoke_active_sessions` will delete all active sessions for that user on +successful login: + +```yaml +selfservice: + login: + after: + : + - job: revoke_active_sessions + # can not be configured +``` + +## User Registration + +Jobs running after successful user registration can be defined per Self-Service +Registration Strategy in ORY Kratos' configuration file, for example: + +```yaml +selfservice: + registration: + after: + passwordless: + - job: redirect + config: + redirect_to: https://url-to-redirect/to + oidc: + - job: redirect + config: + redirect_to: https://url-to-redirect/to + password: + - job: redirect + config: + redirect_to: https://url-to-redirect/to +``` + +### `session` + +The `session` job will send a `Set-Cookie` header which contains the session +cookie. To use it, you must first define one or more (for secret rotation) +session secrets and then use it in one of the `after` work flows: + +```yaml +secrets: + session: + - something-super-secret # The first entry will be used to sign and verify session cookies + + # All other entries will be used to verify session cookies that were signed before "something-super-secret" became + # the current signing secret. + - old-session-secret + - older-session-secret + - ancient-session-secret + +selfservice: + registration: + after: + : + - job: session + # can not be configured +``` + +The `session` job is useful if you want users to be signed in immediately after +registration, without further account activation or an additional login flow. + +> Using this job as part of your post-registration workflow makes your system +> vulnerable to +> [Account Enumeration Attacks](../../../concepts/security.md#account-enumeration-attacks) +> because a threat agent can distinguish between existing and non-existing +> accounts by checking if `Set-Cookie` was sent as part of the registration +> response. + +### `redirect` + +The `redirect` job will send a HTTP 302 Found response and redirect the client +to the specified endpoint. There are two configuration options available: + +```yaml +selfservice: + registration: + after: + : + - job: redirect + config: + # redirect_to sets the URL the client will be redirected to. + redirect_to: https://url-to-redirect/to + + # allow_user_defined, if enabled, will check for a `?return_to` query parameter in the original request URL. + # If the parameter is set and the URL is whitelisted in `urls.whitelisted_return_to_domains` + allow_user_defined: true +``` + +> It is highly recommended to set up a redirect job after registration, +> otherwise the user might get stuck on an empty, white screen. diff --git a/docs/docs/self-service/workflows/jobs/before.md b/docs/docs/self-service/workflows/jobs/before.md new file mode 100644 index 00000000000..a047751a165 --- /dev/null +++ b/docs/docs/self-service/workflows/jobs/before.md @@ -0,0 +1,9 @@ +--- +id: before +title: Before Jobs +--- + +There are currently no jobs available for before workflows. Jobs will be added +in the future. Please +[open an issue on ORY Kratos' GitHub](https://github.com/ory/kratos/issues/new/choose) +if you have use cases. diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js new file mode 100644 index 00000000000..e30d6de1739 --- /dev/null +++ b/docs/docusaurus.config.js @@ -0,0 +1,130 @@ +const config = require('./contrib/config.js') +const fs = require('fs') + +let versions = [ + 'next' +] + +const links = [ + { + to: 'index', + activeBasePath: `${config.projectSlug}/docs`, + label: `Docs`, + position: 'left', + }, + { + href: 'https://www.ory.sh/docs', + label: 'Ecosystem', + position: 'left', + }, + { + href: 'https://www.ory.sh/blog', label: 'Blog', + position: 'left', + }, + { + href: 'https://community.ory.sh', label: 'Forum', + position: 'left', + }, + { + href: 'https://www.ory.sh/chat', label: 'Chat', + position: 'left', + }, + { + href: `https://github.com/ory/${config.projectSlug}`, + label: 'GitHub', + position: 'left', + }, +] + +if (fs.existsSync('./versions.json')) { + const version = require('./versions.json'); + if (version && version.length > 0) { + links.push({ + label: version[0], + position: 'right', + to: 'versions' + }); + } +} + +module.exports = { + title: config.projectName, + tagline: config.projectTagLine, + url: `https://www.ory.sh/`, + baseUrl: `/${config.projectSlug}/docs/`, + favicon: 'img/favico.png', + organizationName: 'ory', // Usually your GitHub org/user name. + projectName: config.projectSlug, // Usually your repo name. + themeConfig: { + googleAnalytics: { + trackingID: 'UA-71865250-1', + anonymizeIP: true, + }, + algolia: { + apiKey: '8463c6ece843b377565726bb4ed325b0', + indexName: 'ory', + // algoliaOptions: { + // facetFilters: ['language:LANGUAGE', 'version:VERSION'], + // }, + }, + navbar: { + logo: { + alt: config.projectName, + src: `img/logo-${config.projectSlug}.svg`, + }, + links: links + }, + footer: { + style: 'dark', + copyright: `Copyright ยฉ ${new Date().getFullYear()} ORY GmbH`, + links: [ + { + title: 'Company', + items: [ + { + label: 'Imprint', + href: 'https://www.ory.sh/imprint', + }, + { + label: 'Privacy', + href: 'https://www.ory.sh/privacy', + }, + { + label: 'Terms', + href: 'https://www.ory.sh/tos', + }, + ], + }, + ], + }, + }, + plugins: [ + [ + "@docusaurus/plugin-content-docs", + { + path: config.projectSlug === 'docusaurus-template' ? 'contrib/docs' : 'docs', + sidebarPath: require.resolve('./contrib/sidebar.js'), + editUrl: + `https://github.com/docs/${config.projectSlug}/edit/master/docs`, + routeBasePath: '', + showLastUpdateAuthor: true, + showLastUpdateTime: true, + }, + ], + [ + "@docusaurus/plugin-content-pages", + ], + ["@docusaurus/plugin-google-analytics"], + ["@docusaurus/plugin-sitemap"] + ], + themes: [ + [ + "@docusaurus/theme-classic", + { + customCss: config.projectSlug === 'docusaurus-template' ? require.resolve('./contrib/theme.css') : require.resolve('./src/css/theme.css'), + } + ], [ + "@docusaurus/theme-search-algolia" + ] + ], +}; diff --git a/docs/package-lock.json b/docs/package-lock.json new file mode 100644 index 00000000000..0aacbbef239 --- /dev/null +++ b/docs/package-lock.json @@ -0,0 +1,13649 @@ +{ + "name": "keto", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@apidevtools/json-schema-ref-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-8.0.0.tgz", + "integrity": "sha512-n4YBtwQhdpLto1BaUCyAeflizmIbaloGShsPyRtFf5qdFJxfssj+GgLavczgKJFa3Bq+3St2CKcpRJdjtB4EBw==", + "dev": true, + "requires": { + "@jsdevtools/ono": "^7.1.0", + "call-me-maybe": "^1.0.1", + "js-yaml": "^3.13.1" + } + }, + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/compat-data": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", + "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", + "requires": { + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/generator": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", + "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "requires": { + "@babel/types": "^7.9.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz", + "integrity": "sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/types": "^7.9.0" + } + }, + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.0.tgz", + "integrity": "sha512-3xJEiyuYU4Q/Ar9BsHisgdxZsRlsShMe90URZ0e6przL26CCs8NJbDoxH94kKT17PcxlMhsCAwZd90evCo26VQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-module-imports": "^7.8.3", + "@babel/types": "^7.9.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", + "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "requires": { + "@babel/compat-data": "^7.8.6", + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz", + "integrity": "sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg==", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "requires": { + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==" + }, + "@babel/helper-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", + "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==" + }, + "@babel/helper-wrap-function": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "@babel/parser": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", + "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.8", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz", + "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz", + "integrity": "sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", + "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", + "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", + "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", + "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", + "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", + "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", + "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.9.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", + "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz", + "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz", + "integrity": "sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw==", + "requires": { + "@babel/helper-builder-react-jsx": "^7.9.0", + "@babel/helper-builder-react-jsx-experimental": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz", + "integrity": "sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw==", + "requires": { + "@babel/helper-builder-react-jsx-experimental": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz", + "integrity": "sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz", + "integrity": "sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz", + "integrity": "sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw==", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "resolve": "^1.8.1", + "semver": "^5.5.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.4.tgz", + "integrity": "sha512-yeWeUkKx2auDbSxRe8MusAG+n4m9BFY/v+lPjmQDgOFX5qnySkUY5oXzkp6FwPdsYqnKay6lorXYdC0n3bZO7w==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-typescript": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", + "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", + "requires": { + "@babel/compat-data": "^7.9.0", + "@babel/helper-compilation-targets": "^7.8.7", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.0", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.0", + "@babel/plugin-transform-modules-commonjs": "^7.9.0", + "@babel/plugin-transform-modules-systemjs": "^7.9.0", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.8.7", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.0", + "browserslist": "^4.9.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.4.tgz", + "integrity": "sha512-AxylVB3FXeOTQXNXyiuAQJSvss62FEotbX2Pzx3K/7c+MKJMdSg6Ose6QYllkdCFA8EInCJVw7M/o5QbLuA4ZQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-react-display-name": "^7.8.3", + "@babel/plugin-transform-react-jsx": "^7.9.4", + "@babel/plugin-transform-react-jsx-development": "^7.9.0", + "@babel/plugin-transform-react-jsx-self": "^7.9.0", + "@babel/plugin-transform-react-jsx-source": "^7.9.0" + } + }, + "@babel/preset-typescript": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz", + "integrity": "sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-typescript": "^7.9.0" + } + }, + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", + "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@csstools/convert-colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", + "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" + }, + "@docusaurus/core": { + "version": "2.0.0-alpha.50", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.0.0-alpha.50.tgz", + "integrity": "sha512-lNvft+di325Ww3/S/kgbJmDmZF6OgJc3gM5zE8Lcl2Hqa6gZ6INIsGhnGxIX5Of1apliWGRVSojEF+mxf0BE1g==", + "requires": { + "@babel/core": "^7.9.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.9.0", + "@babel/preset-env": "^7.9.0", + "@babel/preset-react": "^7.9.4", + "@babel/preset-typescript": "^7.9.0", + "@babel/runtime": "^7.9.2", + "@docusaurus/utils": "^2.0.0-alpha.50", + "@endiliey/static-site-generator-webpack-plugin": "^4.0.0", + "babel-loader": "^8.1.0", + "babel-plugin-dynamic-import-node": "^2.3.0", + "cache-loader": "^4.1.0", + "chalk": "^3.0.0", + "chokidar": "^3.3.0", + "classnames": "^2.2.6", + "commander": "^4.0.1", + "copy-webpack-plugin": "^5.0.5", + "core-js": "^2.6.5", + "css-loader": "^3.4.2", + "del": "^5.1.0", + "ejs": "^3.0.2", + "express": "^4.17.1", + "fs-extra": "^8.1.0", + "globby": "^10.0.1", + "html-minifier-terser": "^5.0.5", + "html-tags": "^3.1.0", + "html-webpack-plugin": "^4.0.4", + "import-fresh": "^3.2.1", + "lodash": "^4.17.15", + "mini-css-extract-plugin": "^0.8.0", + "nprogress": "^0.2.0", + "null-loader": "^3.0.0", + "optimize-css-assets-webpack-plugin": "^5.0.3", + "portfinder": "^1.0.25", + "postcss-loader": "^3.0.0", + "postcss-preset-env": "^6.7.0", + "react-dev-utils": "^10.2.1", + "react-helmet": "^6.0.0-beta", + "react-loadable": "^5.5.0", + "react-loadable-ssr-addon": "^0.2.0", + "react-router": "^5.1.2", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.1.2", + "semver": "^6.3.0", + "shelljs": "^0.8.3", + "std-env": "^2.2.1", + "terser-webpack-plugin": "^2.3.5", + "wait-file": "^1.0.5", + "webpack": "^4.41.2", + "webpack-bundle-analyzer": "^3.6.1", + "webpack-dev-server": "^3.10.3", + "webpack-merge": "^4.2.2", + "webpackbar": "^4.0.0" + } + }, + "@docusaurus/mdx-loader": { + "version": "2.0.0-alpha.50", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-alpha.50.tgz", + "integrity": "sha512-S4e+zR0yWnMQQCcmQzWZi3Bl74FeF1E3qzyE4laQHXD1+napUo0j6eY8gFSI8h4mY2AaMQ3smCxqmqUU5IvtpQ==", + "requires": { + "@babel/parser": "^7.9.4", + "@babel/traverse": "^7.9.0", + "@mdx-js/mdx": "^1.5.8", + "@mdx-js/react": "^1.5.8", + "escape-html": "^1.0.3", + "fs-extra": "^8.1.0", + "github-slugger": "^1.3.0", + "gray-matter": "^4.0.2", + "loader-utils": "^1.2.3", + "mdast-util-to-string": "^1.1.0", + "remark-emoji": "^2.1.0", + "stringify-object": "^3.3.0", + "unist-util-visit": "^2.0.2" + } + }, + "@docusaurus/plugin-content-blog": { + "version": "2.0.0-alpha.50", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-alpha.50.tgz", + "integrity": "sha512-dHlahBYhCt0Orfj1bnrNAViUzylCV0oLpZlFAiJnv3vYSYpJsNtz6MFrhd3k/1agO6VRsUzMOkS7huFrZcIamw==", + "requires": { + "@docusaurus/mdx-loader": "^2.0.0-alpha.50", + "@docusaurus/utils": "^2.0.0-alpha.50", + "feed": "^4.1.0", + "fs-extra": "^8.1.0", + "globby": "^10.0.1", + "loader-utils": "^1.2.3", + "lodash.kebabcase": "^4.1.1" + } + }, + "@docusaurus/plugin-content-docs": { + "version": "2.0.0-alpha.50", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-alpha.50.tgz", + "integrity": "sha512-jBOq9kqntE+7RSZ4urivohFTEpb37pYVyRETtNFm+ArisBCclEOnxQetk3n36kNDijBKDnGxAVWPJF+zaEAe4Q==", + "requires": { + "@docusaurus/mdx-loader": "^2.0.0-alpha.50", + "@docusaurus/utils": "^2.0.0-alpha.50", + "execa": "^3.4.0", + "fs-extra": "^8.1.0", + "globby": "^10.0.1", + "import-fresh": "^3.2.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15", + "shelljs": "^0.8.3" + }, + "dependencies": { + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==" + } + } + }, + "@docusaurus/plugin-content-pages": { + "version": "2.0.0-alpha.50", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-alpha.50.tgz", + "integrity": "sha512-fSoQTcJdCh1EFGVvAvNMPaU6eilXM2pRaOgP9GthBktB8iasVxnUM5bpCuFjHXqvEZux1ho8XqrvQgTh06jPsA==", + "requires": { + "@docusaurus/types": "^2.0.0-alpha.50", + "@docusaurus/utils": "^2.0.0-alpha.50", + "globby": "^10.0.1" + } + }, + "@docusaurus/plugin-google-analytics": { + "version": "2.0.0-alpha.50", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-alpha.50.tgz", + "integrity": "sha512-99tw5yGRhrMfeTFny4dkjLdgeTrE/jbTQGUNHKaTiKQxm+APhiwDoKlptUrkMy4lxwPc3IW1cEcgF8j0oao1EQ==" + }, + "@docusaurus/plugin-google-gtag": { + "version": "2.0.0-alpha.50", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-alpha.50.tgz", + "integrity": "sha512-fdW6ycdnLbWah31vx1e8/n4oopwmo5H89zzC9xVsJB0snBPQnMNbuZ82ob9TXYN57JcnK5bZeVPR/RYiAh0CWQ==" + }, + "@docusaurus/plugin-sitemap": { + "version": "2.0.0-alpha.50", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-alpha.50.tgz", + "integrity": "sha512-aGTeDohtjPc/nnwG4QxMem/xmbqi345Cdvkij3HZi2/kfEb0e6VxZ/YXa6Vvdb7f4ezav2N5bY7uqQojGDz8vg==", + "requires": { + "@docusaurus/types": "^2.0.0-alpha.50", + "sitemap": "^3.2.2" + } + }, + "@docusaurus/preset-classic": { + "version": "2.0.0-alpha.50", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.0.0-alpha.50.tgz", + "integrity": "sha512-SrVE95VNOY/X5Cc7ZL175TiCNjW50PEVoGVp/Y86/RAQEq7Wm5Bi32jFAcsjndbTOqKaEhRikSkqEQipbrF8GA==", + "requires": { + "@docusaurus/plugin-content-blog": "^2.0.0-alpha.50", + "@docusaurus/plugin-content-docs": "^2.0.0-alpha.50", + "@docusaurus/plugin-content-pages": "^2.0.0-alpha.50", + "@docusaurus/plugin-google-analytics": "^2.0.0-alpha.50", + "@docusaurus/plugin-google-gtag": "^2.0.0-alpha.50", + "@docusaurus/plugin-sitemap": "^2.0.0-alpha.50", + "@docusaurus/theme-classic": "^2.0.0-alpha.50", + "@docusaurus/theme-search-algolia": "^2.0.0-alpha.50", + "remark-admonitions": "^1.2.1" + } + }, + "@docusaurus/theme-classic": { + "version": "2.0.0-alpha.50", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.0.0-alpha.50.tgz", + "integrity": "sha512-tcMnUsdHi3jKg7DLqohftYnwDGa8Tyrtrx0zcMDXOUcYF9NCdoz3DT/39c5Fo5tDIvvGAKVkuSBJX8O/UnzDIQ==", + "requires": { + "@mdx-js/mdx": "^1.5.8", + "@mdx-js/react": "^1.5.8", + "classnames": "^2.2.6", + "clipboard": "^2.0.6", + "infima": "0.2.0-alpha.6", + "parse-numeric-range": "^0.0.2", + "prism-react-renderer": "^1.0.2", + "prismjs": "^1.19.0", + "react-router-dom": "^5.1.2", + "react-toggle": "^4.1.1" + } + }, + "@docusaurus/theme-search-algolia": { + "version": "2.0.0-alpha.50", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-alpha.50.tgz", + "integrity": "sha512-ixceplsidNabn0L15XYaOHzf+DCPM0+0sESW7xXK2X/K/IQaP1Mrcrs/MPovjCqylt/0UuHro1CUJimQi/x8yw==", + "requires": { + "classnames": "^2.2.6", + "docsearch.js": "^2.6.3" + } + }, + "@docusaurus/types": { + "version": "2.0.0-alpha.50", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.0.0-alpha.50.tgz", + "integrity": "sha512-wrbBGRfTF/Obt4oaCBoVY2yKaU6jEJlqdAqSj346vBUTxKyHNVDp2EgFrjZ+nesmWlHfP6ELfIvjc/cgRwliLQ==", + "requires": { + "@types/webpack": "^4.41.0", + "commander": "^4.0.1", + "querystring": "0.2.0" + } + }, + "@docusaurus/utils": { + "version": "2.0.0-alpha.50", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.0.0-alpha.50.tgz", + "integrity": "sha512-1mQgmlF7/kB4Ud1EpUcS5C9fafI2TpjChIUEvT6Qgi5m1XOxiOTiV8x0JY/SCewR3aSmiR5nP/+hiiv57CxIFA==", + "requires": { + "escape-string-regexp": "^2.0.0", + "fs-extra": "^8.1.0", + "gray-matter": "^4.0.2", + "lodash": "^4.17.15" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + } + } + }, + "@endiliey/static-site-generator-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@endiliey/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-3MBqYCs30qk1OBRC697NqhGouYbs71D1B8hrk/AFJC6GwF2QaJOQZtA1JYAaGSe650sZ8r5ppRTtCRXepDWlng==", + "requires": { + "bluebird": "^3.7.1", + "cheerio": "^0.22.0", + "eval": "^0.1.4", + "url": "^0.11.0", + "webpack-sources": "^1.4.3" + } + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@jsdevtools/ono": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.1.tgz", + "integrity": "sha512-pu5fxkbLQWzRbBgfFbZfHXz0KlYojOfVdUhcNfy9lef8ZhBt0pckGr8g7zv4vPX4Out5vBNvqd/az4UaVWzZ9A==", + "dev": true + }, + "@mdx-js/mdx": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.5.8.tgz", + "integrity": "sha512-OzanPTN0p9GZOEVeEuEa8QsjxxGyfFOOnI/+V1oC1su9UIN4KUg1k4n/hWTZC+VZhdW1Lfj6+Ho8nIs6L+pbDA==", + "requires": { + "@babel/core": "7.8.4", + "@babel/plugin-syntax-jsx": "7.8.3", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "^1.5.8", + "babel-plugin-apply-mdx-type-prop": "^1.5.8", + "babel-plugin-extract-import-names": "^1.5.8", + "camelcase-css": "2.0.1", + "detab": "2.0.3", + "hast-util-raw": "5.0.2", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "7.0.0", + "remark-mdx": "^1.5.8", + "remark-parse": "7.0.2", + "remark-squeeze-paragraphs": "3.0.4", + "style-to-object": "0.3.0", + "unified": "8.4.2", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.2" + }, + "dependencies": { + "@babel/core": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz", + "integrity": "sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helpers": "^7.8.4", + "@babel/parser": "^7.8.4", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@mdx-js/react": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.5.8.tgz", + "integrity": "sha512-L3rehITVxqDHOPJFGBSHKt3Mv/p3MENYlGIwLNYU89/iVqTLMD/vz8hL9RQtKqRoMbKuWpzzLlKIObqJzthNYg==" + }, + "@mdx-js/util": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.5.8.tgz", + "integrity": "sha512-a7Gjjw8bfBSertA/pTWBA/9WKEhgaSxvQE2NTSUzaknrzGFOhs4alZSHh3RHmSFdSWv5pUuzAgsWseMLhWEVkQ==" + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==" + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@types/anymatch": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", + "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==" + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/html-minifier-terser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.0.0.tgz", + "integrity": "sha512-q95SP4FdkmF0CwO0F2q0H6ZgudsApaY/yCtAQNRn1gduef5fGpyEphzy0YCq/N0UFvDSnLg5V8jFK/YGXlDiCw==" + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + }, + "@types/node": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.0.tgz", + "integrity": "sha512-uM4mnmsIIPK/yeO+42F2RQhGUIs39K2RFmugcJANppXe6J1nvH87PvzPZYpza7Xhhs8Yn9yIAVdLZ84z61+0xQ==" + }, + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==" + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==" + }, + "@types/tapable": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.5.tgz", + "integrity": "sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ==" + }, + "@types/uglify-js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.0.5.tgz", + "integrity": "sha512-L7EbSkhSaWBpkl+PZAEAqZTqtTeIsq7s/oX/q0LNnxxJoRVKQE0T81XDVyaxjiiKQwiV2vhVeYRqxdRNqGOGJw==", + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@types/unist": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", + "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==" + }, + "@types/webpack": { + "version": "4.41.10", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.10.tgz", + "integrity": "sha512-vIy0qaq8AjOjZLuFPqpo7nAJzcoVXMdw3mvpNN07Uvdy0p1IpJeLNBe3obdRP7FX2jIusDE7z1pZa0A6qYUgnA==", + "requires": { + "@types/anymatch": "*", + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@types/webpack-sources": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.7.tgz", + "integrity": "sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw==", + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + }, + "acorn-walk": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz", + "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==" + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" + }, + "agentkeepalive": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-2.2.0.tgz", + "integrity": "sha1-xdG9SxKQCPEWPyNvhuX66iAm4u8=" + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" + }, + "algoliasearch": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-3.35.1.tgz", + "integrity": "sha512-K4yKVhaHkXfJ/xcUnil04xiSrB8B8yHZoFEhWNpXg23eiCnqvTZw1tn/SqvdsANlYHLJlKl0qi3I/Q2Sqo7LwQ==", + "requires": { + "agentkeepalive": "^2.2.0", + "debug": "^2.6.9", + "envify": "^4.0.0", + "es6-promise": "^4.1.0", + "events": "^1.1.0", + "foreach": "^2.0.5", + "global": "^4.3.2", + "inherits": "^2.0.1", + "isarray": "^2.0.1", + "load-script": "^1.0.0", + "object-keys": "^1.0.11", + "querystring-es3": "^0.2.1", + "reduce": "^1.0.1", + "semver": "^5.1.0", + "tunnel-agent": "^0.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "requires": { + "type-fest": "^0.11.0" + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "autocomplete.js": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/autocomplete.js/-/autocomplete.js-0.36.0.tgz", + "integrity": "sha512-jEwUXnVMeCHHutUt10i/8ZiRaCb0Wo+ZyKxeGsYwBDtw6EJHqEeDrq4UwZRD8YBSvp3g6klP678il2eeiVXN2Q==", + "requires": { + "immediate": "^3.2.3" + } + }, + "autoprefixer": { + "version": "9.7.5", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.5.tgz", + "integrity": "sha512-URo6Zvt7VYifomeAfJlMFnYDhow1rk2bufwkbamPEAtQFcL11moLk4PnR7n9vlu7M+BkXAZkHFA0mIcY7tjQFg==", + "requires": { + "browserslist": "^4.11.0", + "caniuse-lite": "^1.0.30001036", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.27", + "postcss-value-parser": "^4.0.3" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-apply-mdx-type-prop": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.5.8.tgz", + "integrity": "sha512-xYp5F9mAnZdDRFSd1vF3XQ0GQUbIulCpnuht2jCmK30GAHL8szVL7TgzwhEGamQ6yJmP/gEyYNM9OR5D2n26eA==", + "requires": { + "@babel/helper-plugin-utils": "7.8.3", + "@mdx-js/util": "^1.5.8" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-extract-import-names": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.5.8.tgz", + "integrity": "sha512-LcLfP8ZRBZMdMAXHLugyvvd5PY0gMmLMWFogWAUsG32X6TYW2Eavx+il2bw73KDbW+UdCC1bAJ3NuU25T1MI3g==", + "requires": { + "@babel/helper-plugin-utils": "7.8.3" + } + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bfj": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", + "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz", + "integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==", + "requires": { + "caniuse-lite": "^1.0.30001038", + "electron-to-chromium": "^1.3.390", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + }, + "buffer-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz", + "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cache-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-4.1.0.tgz", + "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==", + "requires": { + "buffer-json": "^2.0.0", + "find-cache-dir": "^3.0.0", + "loader-utils": "^1.2.3", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "requires": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001039", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001039.tgz", + "integrity": "sha512-SezbWCTT34eyFoWHgx8UWso7YtvtM7oosmFoXbCkdC6qJzRfBTeTgE9REtKtiuKXuMwWTZEvdnFNGAyVMorv8Q==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "ccount": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.5.tgz", + "integrity": "sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw==" + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==" + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==" + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "check-types": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", + "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==" + }, + "cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" + } + }, + "chokidar": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.3.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, + "clipboard": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", + "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" + }, + "consola": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.11.3.tgz", + "integrity": "sha512-aoW0YIIAmeftGR8GSpw6CGQluNdkWMWh3yEFjH/hmynTYnMtibXszii3lxCXmk8YxJtI3FAK5aTiquA5VH68Gw==" + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "copy-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "core-js-compat": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", + "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "requires": { + "browserslist": "^4.8.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-blank-pseudo": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", + "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", + "requires": { + "postcss": "^7.0.5" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-has-pseudo": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", + "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^5.0.0-rc.4" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "css-loader": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz", + "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==", + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.23", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.1.1", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.2", + "schema-utils": "^2.6.0" + } + }, + "css-prefers-color-scheme": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", + "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", + "requires": { + "postcss": "^7.0.5" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" + }, + "cssdb": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", + "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^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.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "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.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.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": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", + "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", + "requires": { + "globby": "^10.0.1", + "graceful-fs": "^4.2.2", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.1", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.3.tgz", + "integrity": "sha512-Up8P0clUVwq0FnFjDclzZsy9PadzRn5FFxrr47tQQvMHqyiFYVbpH8oXDzWtF0Q7pYy3l+RPmtBl+BsFF6wH0A==", + "requires": { + "repeat-string": "^1.5.4" + } + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" + }, + "detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "docsearch.js": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/docsearch.js/-/docsearch.js-2.6.3.tgz", + "integrity": "sha512-GN+MBozuyz664ycpZY0ecdQE0ND/LSgJKhTLA0/v3arIS3S1Rpf2OJz6A35ReMsm91V5apcmzr5/kM84cvUg+A==", + "requires": { + "algoliasearch": "^3.24.5", + "autocomplete.js": "0.36.0", + "hogan.js": "^3.0.2", + "request": "^2.87.0", + "stack-utils": "^1.0.1", + "to-factory": "^1.0.0", + "zepto": "^1.2.0" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", + "integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==", + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "drange": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz", + "integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==", + "dev": true + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.0.2.tgz", + "integrity": "sha512-IncmUpn1yN84hy2shb0POJ80FWrfGNY0cxO9f4v+/sG7qcBvAtVWUA1IdzY/8EYUmOVhoKJVdJjNd3AZcnxOjA==" + }, + "electron-to-chromium": { + "version": "1.3.396", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.396.tgz", + "integrity": "sha512-ESY3UGekvNQwofHvgdsFW8GQEoudbqtJfoSDovnsCRRx8t0+0dPbE1XD/ZQdB+jbskSyPwUtIVYSyKwSXW/A6Q==" + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "emoticon": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-3.2.0.tgz", + "integrity": "sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "envify": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz", + "integrity": "sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==", + "requires": { + "esprima": "^4.0.0", + "through": "~2.3.4" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "eval": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.4.tgz", + "integrity": "sha512-npGsebJejyjMRnLdFu+T/97dnigqIU0Ov3IGrZ8ygd1v7RL1vGkEKtvyWZobqUH1AQgKlg0Yqqe2BtMA9/QZLw==", + "requires": { + "require-like": ">= 0.1.1" + } + }, + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==" + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==" + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "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.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + }, + "fast-glob": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", + "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fastq": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.7.0.tgz", + "integrity": "sha512-YOadQRnHd5q6PogvAR/x62BGituF2ufiEA6s8aavQANw5YKHERI4AREboX6KotzP8oX2klxYF2wcV/7bn1clfQ==", + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "feed": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.1.0.tgz", + "integrity": "sha512-dAXWXM8QMxZ1DRnAxDmy1MaWZFlh1Ku7TU3onbXgHrVJynsxkNGPUed1AxszVW8AXo43xExronVkIqK+ACsoBA==", + "requires": { + "xml-js": "^1.6.11" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "filesize": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", + "integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "follow-redirects": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.11.0.tgz", + "integrity": "sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA==", + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "fork-ts-checker-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^3.3.0", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "format-util": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/format-util/-/format-util-1.0.5.tgz", + "integrity": "sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==", + "dev": true + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "github-slugger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.3.0.tgz", + "integrity": "sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q==", + "requires": { + "emoji-regex": ">=6.0.0 <=6.1.1" + }, + "dependencies": { + "emoji-regex": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz", + "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=" + } + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "dependencies": { + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + } + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "requires": { + "delegate": "^3.1.2" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "gray-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.2.tgz", + "integrity": "sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw==", + "requires": { + "js-yaml": "^3.11.0", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + } + }, + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hast-to-hyperscript": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-7.0.4.tgz", + "integrity": "sha512-vmwriQ2H0RPS9ho4Kkbf3n3lY436QKLq6VaGA1pzBh36hBi3tm1DO9bR+kaJIbpT10UqaANDkMjxvjVfr+cnOA==", + "requires": { + "comma-separated-tokens": "^1.0.0", + "property-information": "^5.3.0", + "space-separated-tokens": "^1.0.0", + "style-to-object": "^0.2.1", + "unist-util-is": "^3.0.0", + "web-namespaces": "^1.1.2" + }, + "dependencies": { + "style-to-object": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.2.3.tgz", + "integrity": "sha512-1d/k4EY2N7jVLOqf2j04dTc37TPOv/hHxZmvpg8Pdh8UYydxeu/C1W1U4vD8alzf5V2Gt7rLsmkr4dxAlDm9ng==", + "requires": { + "inline-style-parser": "0.1.1" + } + } + } + }, + "hast-util-from-parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz", + "integrity": "sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA==", + "requires": { + "ccount": "^1.0.3", + "hastscript": "^5.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.1.2", + "xtend": "^4.0.1" + } + }, + "hast-util-parse-selector": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz", + "integrity": "sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA==" + }, + "hast-util-raw": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-5.0.2.tgz", + "integrity": "sha512-3ReYQcIHmzSgMq8UrDZHFL0oGlbuVGdLKs8s/Fe8BfHFAyZDrdv1fy/AGn+Fim8ZuvAHcJ61NQhVMtyfHviT/g==", + "requires": { + "hast-util-from-parse5": "^5.0.0", + "hast-util-to-parse5": "^5.0.0", + "html-void-elements": "^1.0.0", + "parse5": "^5.0.0", + "unist-util-position": "^3.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + } + }, + "hast-util-to-parse5": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-5.1.2.tgz", + "integrity": "sha512-ZgYLJu9lYknMfsBY0rBV4TJn2xiwF1fXFFjbP6EE7S0s5mS8LIKBVWzhA1MeIs1SWW6GnnE4In6c3kPb+CWhog==", + "requires": { + "hast-to-hyperscript": "^7.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + } + }, + "hastscript": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz", + "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==", + "requires": { + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" + }, + "history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hogan.js": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz", + "integrity": "sha1-TNnhq9QpQUbnZ55B14mHMrAse/0=", + "requires": { + "mkdirp": "0.3.0", + "nopt": "1.0.10" + }, + "dependencies": { + "mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=" + } + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + }, + "html-minifier-terser": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.0.5.tgz", + "integrity": "sha512-cBSFFghQh/uHcfSiL42KxxIRMF7A144+3E44xdlctIjxEmkEfCvouxNyFH2wysXk1fCGBPwtcr3hDWlGTfkDew==", + "requires": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + } + }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==" + }, + "html-void-elements": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", + "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==" + }, + "html-webpack-plugin": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.4.tgz", + "integrity": "sha512-BREQzUbFfIQS39KqxkT2L1Ot0tuu1isako1CaCQLrgEQ43zi2ScHAe3SMTnVBWsStnIsGtl8jprDdxwZkNhrwQ==", + "requires": { + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" + }, + "http-proxy": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + }, + "immediate": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", + "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=" + }, + "immer": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", + "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==" + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "infima": { + "version": "0.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.6.tgz", + "integrity": "sha512-5Oin586QeBa5VdP8xpPuHB/BDg1D66+B5bFG67XPqKV8mD0hwKt2LJFYqoSJKGPBccxGBQpHEOFUd2sUSdhdGA==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "inquirer": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", + "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==" + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-docker": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", + "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "requires": { + "is-path-inside": "^2.1.0" + }, + "dependencies": { + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "requires": { + "path-is-inside": "^1.0.2" + } + } + } + }, + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==" + }, + "is-wsl": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", + "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jest-worker": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.2.6.tgz", + "integrity": "sha512-FJn9XDUSxcOR4cwDzRfL1z56rUofNTFs539FGASpd50RHdb6EVkhxQqktodW2mI49l+W3H+tFJDotCHUQF6dmA==", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-faker": { + "version": "0.5.0-rcv.24", + "resolved": "https://registry.npmjs.org/json-schema-faker/-/json-schema-faker-0.5.0-rcv.24.tgz", + "integrity": "sha512-qwuRwv7dnUdqdwuifb6kJAVUKm0mzi4h/mzvMwDKxyWUzjxFCdVH/g9IfKxvc4M7rvAavr8pcx9uO1PNIIWE0g==", + "dev": true, + "requires": { + "json-schema-ref-parser": "^6.1.0", + "jsonpath-plus": "^2.0.0", + "randexp": "^0.5.3" + }, + "dependencies": { + "json-schema-ref-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-6.1.0.tgz", + "integrity": "sha512-pXe9H1m6IgIpXmE5JSb8epilNTGsmTb2iPohAXpOdhqGFbQjNeHHsZxU+C8w6T81GZxSPFLeUoqDJmzxx5IGuw==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "js-yaml": "^3.12.1", + "ono": "^4.0.11" + } + } + } + }, + "json-schema-ref-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-8.0.0.tgz", + "integrity": "sha512-2P4icmNkZLrBr6oa5gSZaDSol/oaBHYkoP/8dsw63E54NnHGRhhiFuy9yFoxPuSm+uHKmeGxAAWMDF16SCHhcQ==", + "dev": true, + "requires": { + "@apidevtools/json-schema-ref-parser": "8.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" + }, + "json5": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", + "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonpath-plus": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-2.0.0.tgz", + "integrity": "sha512-ksXaz9+3SIZ5BMxgr7MQueYcR515VRZPuoDhIymUd1JcF6BnVaYJS7k4NJni4EHhvJaOIGGiPqT8+ifsGp6mBw==", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "requires": { + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "requires": { + "leven": "^3.1.0" + } + }, + "load-script": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", + "integrity": "sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ=" + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" + }, + "lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" + }, + "lodash.chunk": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", + "integrity": "sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw=" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=" + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lodash.padstart": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" + }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "loglevel": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", + "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", + "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", + "requires": { + "tslib": "^1.10.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdast-squeeze-paragraphs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-3.0.5.tgz", + "integrity": "sha512-xX6Vbe348Y/rukQlG4W3xH+7v4ZlzUbSY4HUIQCuYrF2DrkcHx584mCaFxkWoDZKNUfyLZItHC9VAqX3kIP7XA==", + "requires": { + "unist-util-remove": "^1.0.0" + } + }, + "mdast-util-definitions": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.5.tgz", + "integrity": "sha512-CJXEdoLfiISCDc2JB6QLb79pYfI6+GcIH+W2ox9nMc7od0Pz+bovcHsiq29xAQY6ayqe/9CsK2VzkSJdg1pFYA==", + "requires": { + "unist-util-visit": "^1.0.0" + }, + "dependencies": { + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + } + } + }, + "mdast-util-to-hast": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-7.0.0.tgz", + "integrity": "sha512-vxnXKSZgvPG2grZM3kxaF052pxsLtq8TPAkiMkqYj1nFTOazYUPXt3LFYIEB6Ws/IX7Uyvljzk64kD6DwZl/wQ==", + "requires": { + "collapse-white-space": "^1.0.0", + "detab": "^2.0.0", + "mdast-util-definitions": "^1.2.0", + "mdurl": "^1.0.1", + "trim-lines": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + } + }, + "mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==" + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "requires": { + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "^0.1.0" + } + }, + "mini-create-react-context": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.3.2.tgz", + "integrity": "sha512-2v+OeetEyliMt5VHMXsBhABoJ0/M4RCe7fatd/fBy6SMiKazUSEt3gxxypfnk2SHMkdBYvorHRoQxuGoiwbzAw==", + "requires": { + "@babel/runtime": "^7.4.0", + "gud": "^1.0.0", + "tiny-warning": "^1.0.2" + } + }, + "mini-css-extract-plugin": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz", + "integrity": "sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw==", + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", + "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "no-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", + "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", + "requires": { + "lower-case": "^2.0.1", + "tslib": "^1.10.0" + } + }, + "node-emoji": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", + "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "requires": { + "lodash.toarray": "^4.4.0" + } + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==" + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + } + } + }, + "node-releases": { + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==" + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + } + } + }, + "nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=" + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + }, + "null-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-3.0.0.tgz", + "integrity": "sha512-hf5sNLl8xdRho4UPBOOeoIwT3WhjYcMUQm0zj44EhD6UscMAz72o2udpoDFBgykucdEDGIcd6SXbc/G6zssbzw==", + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "ono": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/ono/-/ono-4.0.11.tgz", + "integrity": "sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g==", + "dev": true, + "requires": { + "format-util": "^1.0.3" + } + }, + "open": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.3.tgz", + "integrity": "sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA==", + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, + "opener": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==" + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + } + } + }, + "optimize-css-assets-webpack-plugin": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz", + "integrity": "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==", + "requires": { + "cssnano": "^4.1.10", + "last-call-webpack-plugin": "^3.0.0" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "param-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", + "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", + "requires": { + "dot-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-numeric-range": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-0.0.2.tgz", + "integrity": "sha1-tPCdQTx6282Yf26SM8e0shDJOOQ=" + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascal-case": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", + "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "requires": { + "find-up": "^2.1.0" + } + }, + "portfinder": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-attribute-case-insensitive": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", + "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^6.0.2" + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-color-functional-notation": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", + "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-gray": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", + "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-hex-alpha": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", + "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", + "requires": { + "postcss": "^7.0.14", + "postcss-values-parser": "^2.0.1" + } + }, + "postcss-color-mod-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", + "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-rebeccapurple": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", + "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-custom-media": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", + "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-custom-properties": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", + "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", + "requires": { + "postcss": "^7.0.17", + "postcss-values-parser": "^2.0.1" + } + }, + "postcss-custom-selectors": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", + "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-dir-pseudo-class": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", + "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-double-position-gradients": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", + "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", + "requires": { + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-env-function": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", + "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-focus-visible": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", + "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-focus-within": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", + "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-font-variant": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", + "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-gap-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", + "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-image-set-function": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", + "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-initial": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", + "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", + "requires": { + "lodash.template": "^4.5.0", + "postcss": "^7.0.2" + } + }, + "postcss-lab-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", + "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-logical": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", + "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-media-minmax": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", + "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-nesting": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", + "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-overflow-shorthand": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", + "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-page-break": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", + "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-place": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", + "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-preset-env": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", + "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", + "requires": { + "autoprefixer": "^9.6.1", + "browserslist": "^4.6.4", + "caniuse-lite": "^1.0.30000981", + "css-blank-pseudo": "^0.1.4", + "css-has-pseudo": "^0.10.0", + "css-prefers-color-scheme": "^3.1.1", + "cssdb": "^4.4.0", + "postcss": "^7.0.17", + "postcss-attribute-case-insensitive": "^4.0.1", + "postcss-color-functional-notation": "^2.0.1", + "postcss-color-gray": "^5.0.0", + "postcss-color-hex-alpha": "^5.0.3", + "postcss-color-mod-function": "^3.0.3", + "postcss-color-rebeccapurple": "^4.0.1", + "postcss-custom-media": "^7.0.8", + "postcss-custom-properties": "^8.0.11", + "postcss-custom-selectors": "^5.1.2", + "postcss-dir-pseudo-class": "^5.0.0", + "postcss-double-position-gradients": "^1.0.0", + "postcss-env-function": "^2.0.2", + "postcss-focus-visible": "^4.0.0", + "postcss-focus-within": "^3.0.0", + "postcss-font-variant": "^4.0.0", + "postcss-gap-properties": "^2.0.0", + "postcss-image-set-function": "^3.0.1", + "postcss-initial": "^3.0.0", + "postcss-lab-function": "^2.0.1", + "postcss-logical": "^3.0.0", + "postcss-media-minmax": "^4.0.0", + "postcss-nesting": "^7.0.0", + "postcss-overflow-shorthand": "^2.0.0", + "postcss-page-break": "^2.0.0", + "postcss-place": "^4.0.1", + "postcss-pseudo-class-any-link": "^6.0.0", + "postcss-replace-overflow-wrap": "^3.0.0", + "postcss-selector-matches": "^4.0.0", + "postcss-selector-not": "^4.0.0" + } + }, + "postcss-pseudo-class-any-link": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", + "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-replace-overflow-wrap": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", + "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-selector-matches": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", + "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "postcss-selector-not": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", + "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==" + }, + "postcss-values-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", + "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "prettier": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.2.tgz", + "integrity": "sha512-5xJQIPT8BraI7ZnaDwSbu5zLrB6vvi8hVV58yHQ+QK64qrY40dULy0HSRlQ2/2IdzeBpjhDkqdcFBnFeDEMVdg==", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==" + }, + "prism-react-renderer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.0.2.tgz", + "integrity": "sha512-0++pJyRfu4v2OxI/Us/5RLui9ESDkTiLkVCtKuPZYdpB8UQWJpnJQhPrWab053XtsKW3oM0sD69uJ6N9exm1Ag==" + }, + "prismjs": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.20.0.tgz", + "integrity": "sha512-AEDjSrVNkynnw6A+B1DsFkd6AVdTnp+/WoUixFRULlCLZVRZlVQMVWio/16jv7G1FscUxQxOQhWwApgbnxr6kQ==", + "requires": { + "clipboard": "^2.0.0" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "property-information": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.4.0.tgz", + "integrity": "sha512-nmMWAm/3vKFGmmOWOcdLjgq/Hlxa+hsuR/px1Lp/UGEyc5A22A6l78Shc2C0E71sPmAqglni+HrS7L7VJ7AUCA==", + "requires": { + "xtend": "^4.0.0" + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" + }, + "ramda": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.0.tgz", + "integrity": "sha512-pVzZdDpWwWqEVVLshWUHjNwuVP7SfcmPraYuqocJp1yo2U1R7P+5QAfDhdItkuoGqIBnBYrtPp7rEPqDn9HlZA==", + "dev": true + }, + "randexp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz", + "integrity": "sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==", + "dev": true, + "requires": { + "drange": "^1.0.2", + "ret": "^0.2.0" + }, + "dependencies": { + "ret": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", + "dev": true + } + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dev-utils": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz", + "integrity": "sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ==", + "requires": { + "@babel/code-frame": "7.8.3", + "address": "1.1.2", + "browserslist": "4.10.0", + "chalk": "2.4.2", + "cross-spawn": "7.0.1", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "2.0.0", + "filesize": "6.0.1", + "find-up": "4.1.0", + "fork-ts-checker-webpack-plugin": "3.1.1", + "global-modules": "2.0.0", + "globby": "8.0.2", + "gzip-size": "5.1.1", + "immer": "1.10.0", + "inquirer": "7.0.4", + "is-root": "2.1.0", + "loader-utils": "1.2.3", + "open": "^7.0.2", + "pkg-up": "3.1.0", + "react-error-overlay": "^6.0.7", + "recursive-readdir": "2.2.2", + "shell-quote": "1.7.2", + "strip-ansi": "6.0.0", + "text-table": "0.2.0" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "browserslist": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.10.0.tgz", + "integrity": "sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA==", + "requires": { + "caniuse-lite": "^1.0.30001035", + "electron-to-chromium": "^1.3.378", + "node-releases": "^1.1.52", + "pkg-up": "^3.1.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + } + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "dependencies": { + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globby": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "requires": { + "array-union": "^1.0.1", + "dir-glob": "2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "react-error-overlay": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.7.tgz", + "integrity": "sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA==" + }, + "react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" + }, + "react-helmet": { + "version": "6.0.0-beta.2", + "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.0.0-beta.2.tgz", + "integrity": "sha512-rRAeil8HsddijqG2+1jeR5qY9wGQvK1zPMf+8MkiTCyhpEP/2qhAAPolEsveeAlz0xSv5C5xYypHtgCtFn0euw==", + "requires": { + "object-assign": "^4.1.1", + "prop-types": "^15.7.2", + "react-fast-compare": "^2.0.4", + "react-side-effect": "^2.1.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-loadable": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-loadable/-/react-loadable-5.5.0.tgz", + "integrity": "sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg==", + "requires": { + "prop-types": "^15.5.0" + } + }, + "react-loadable-ssr-addon": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon/-/react-loadable-ssr-addon-0.2.0.tgz", + "integrity": "sha512-gTfPaxWZa5mHKeSOE61RpoLe7hyjcJHgNa5m0ZZGV3OCkWsOKlfYgoBxXzu9ENg/ePR/kFd5H3ncF4K5eyyNTQ==" + }, + "react-router": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.1.2.tgz", + "integrity": "sha512-yjEuMFy1ONK246B+rsa0cUam5OeAQ8pyclRDgpxuSCrAlJ1qN9uZ5IgyKC7gQg0w8OM50NXHEegPh/ks9YuR2A==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.3.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, + "react-router-dom": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.1.2.tgz", + "integrity": "sha512-7BPHAaIwWpZS074UKaw1FjVdZBSVWEk8IuDXdB+OkLb8vd/WRQIpA4ag9WQk61aEfQs47wHyjWUoUGGZxpQXew==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.1.2", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, + "react-side-effect": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.0.tgz", + "integrity": "sha512-IgmcegOSi5SNX+2Snh1vqmF0Vg/CbkycU9XZbOHJlZ6kMzTmi3yc254oB1WCkgA7OQtIAoLmcSFuHTc/tlcqXg==" + }, + "react-toggle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/react-toggle/-/react-toggle-4.1.1.tgz", + "integrity": "sha512-+wXlMcSpg8SmnIXauMaZiKpR+r2wp2gMUteroejp2UTSqGTVvZLN+m9EhMzFARBKEw7KpQOwzCyfzeHeAndQGw==", + "requires": { + "classnames": "^2.2.5" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "requires": { + "picomatch": "^2.0.7" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "requires": { + "resolve": "^1.1.6" + } + }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "requires": { + "minimatch": "3.0.4" + } + }, + "reduce": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce/-/reduce-1.0.2.tgz", + "integrity": "sha512-xX7Fxke/oHO5IfZSk77lvPa/7bjMh9BuCk4OOoX5XTXrM7s0Z+MkPfSDfz0q7r91BhhGSs8gii/VEN/7zhCPpQ==", + "requires": { + "object-keys": "^1.1.0" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==" + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "rehype-parse": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-6.0.2.tgz", + "integrity": "sha512-0S3CpvpTAgGmnz8kiCyFLGuW5yA4OQhyNTm/nwPopZ7+PI11WnGl1TTWTGv/2hPEe/g2jRLlhVVSsoDH8waRug==", + "requires": { + "hast-util-from-parse5": "^5.0.0", + "parse5": "^5.0.0", + "xtend": "^4.0.0" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "remark-admonitions": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/remark-admonitions/-/remark-admonitions-1.2.1.tgz", + "integrity": "sha512-Ji6p68VDvD+H1oS95Fdx9Ar5WA2wcDA4kwrrhVU7fGctC6+d3uiMICu7w7/2Xld+lnU7/gi+432+rRbup5S8ow==", + "requires": { + "rehype-parse": "^6.0.2", + "unified": "^8.4.2", + "unist-util-visit": "^2.0.1" + } + }, + "remark-emoji": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.1.0.tgz", + "integrity": "sha512-lDddGsxXURV01WS9WAiS9rO/cedO1pvr9tahtLhr6qCGFhHG4yZSJW3Ha4Nw9Uk1hLNmUBtPC0+m45Ms+xEitg==", + "requires": { + "emoticon": "^3.2.0", + "node-emoji": "^1.10.0", + "unist-util-visit": "^2.0.2" + } + }, + "remark-mdx": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.5.8.tgz", + "integrity": "sha512-wtqqsDuO/mU/ucEo/CDp0L8SPdS2oOE6PRsMm+lQ9TLmqgep4MBmyH8bLpoc8Wf7yjNmae/5yBzUN1YUvR/SsQ==", + "requires": { + "@babel/core": "7.8.4", + "@babel/helper-plugin-utils": "7.8.3", + "@babel/plugin-proposal-object-rest-spread": "7.8.3", + "@babel/plugin-syntax-jsx": "7.8.3", + "@mdx-js/util": "^1.5.8", + "is-alphabetical": "1.0.4", + "remark-parse": "7.0.2", + "unified": "8.4.2" + }, + "dependencies": { + "@babel/core": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz", + "integrity": "sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helpers": "^7.8.4", + "@babel/parser": "^7.8.4", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "remark-parse": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-7.0.2.tgz", + "integrity": "sha512-9+my0lQS80IQkYXsMA8Sg6m9QfXYJBnXjWYN5U+kFc5/n69t+XZVXU/ZBYr3cYH8FheEGf1v87rkFDhJ8bVgMA==", + "requires": { + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^1.1.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "remark-squeeze-paragraphs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-3.0.4.tgz", + "integrity": "sha512-Wmz5Yj9q+W1oryo8BV17JrOXZgUKVcpJ2ApE2pwnoHwhFKSk4Wp2PmFNbmJMgYSqAdFwfkoe+TSYop5Fy8wMgA==", + "requires": { + "mdast-squeeze-paragraphs": "^3.0.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", + "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha1-rW8wwTvs15cBDEaK+ndcDAprR/o=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==" + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "^1.1.1" + } + }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=" + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "requires": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + } + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=" + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" + }, + "shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, + "sitemap": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-3.2.2.tgz", + "integrity": "sha512-TModL/WU4m2q/mQcrDgNANn0P4LwprM9MMvG4hu5zP4c6IIKs2YLTu6nXXnNr8ODW/WFtxKggiJ1EGn2W0GNmg==", + "requires": { + "lodash.chunk": "^4.2.0", + "lodash.padstart": "^4.6.1", + "whatwg-url": "^7.0.0", + "xmlbuilder": "^13.0.0" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==" + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==" + }, + "state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "std-env": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.2.1.tgz", + "integrity": "sha512-IjYQUinA3lg5re/YMlwlfhqNRTzMZMqE+pezevdcTaHceqx8ngEi1alX9nNCk9Sc81fy1fLDeQoaCzeiW1yBOQ==", + "requires": { + "ci-info": "^1.6.0" + } + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string.prototype.trimend": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz", + "integrity": "sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz", + "integrity": "sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + } + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "requires": { + "inline-style-parser": "0.1.1" + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-what": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", + "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==" + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "terser": { + "version": "4.6.10", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.10.tgz", + "integrity": "sha512-qbF/3UOo11Hggsbsqm2hPa6+L4w7bkr+09FNseEe8xrcVD3APGLFqE+Oz1ZKAxjYnFsj80rLOfgAtJ0LNJjtTA==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "terser-webpack-plugin": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz", + "integrity": "sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w==", + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.2.0", + "jest-worker": "^25.1.0", + "p-limit": "^2.2.2", + "schema-utils": "^2.6.4", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.4.3", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", + "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-factory": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-factory/-/to-factory-1.0.0.tgz", + "integrity": "sha1-hzivi9lxIK0dQEeXKtpVY7+UebE=" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + }, + "trim-lines": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.3.tgz", + "integrity": "sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA==" + }, + "trim-trailing-lines": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz", + "integrity": "sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA==" + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "requires": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + }, + "unified": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", + "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" + } + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==" + }, + "unist-util-generated": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.5.tgz", + "integrity": "sha512-1TC+NxQa4N9pNdayCYA1EGUOCAO0Le3fVp7Jzns6lnua/mYgwHo0tz5WUAfrdpNch1RZLHc61VZ1SDgrtNXLSw==" + }, + "unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" + }, + "unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==" + }, + "unist-util-remove": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-1.0.3.tgz", + "integrity": "sha512-mB6nCHCQK0pQffUAcCVmKgIWzG/AXs/V8qpS8K72tMPtOSCMSjDeMc5yN+Ye8rB0FhcE+JvW++o1xRNc0R+++g==", + "requires": { + "unist-util-is": "^3.0.0" + } + }, + "unist-util-remove-position": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", + "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", + "requires": { + "unist-util-visit": "^1.1.0" + }, + "dependencies": { + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + } + } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.2.tgz", + "integrity": "sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "dependencies": { + "unist-util-is": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz", + "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==" + }, + "unist-util-visit-parents": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz", + "integrity": "sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + } + } + }, + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "requires": { + "unist-util-is": "^3.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vfile": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.1.0.tgz", + "integrity": "sha512-BaTPalregj++64xbGK6uIlsurN3BCRNM/P2Pg8HezlGzKd1O9PrwIac6bd9Pdx2uTb0QHoioZ+rXKolbVXEgJg==", + "requires": { + "@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" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + } + } + }, + "vfile-location": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", + "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==" + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "wait-file": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/wait-file/-/wait-file-1.0.5.tgz", + "integrity": "sha512-udLpJY/eOxlrMm3+XD1RLuF2oT9B7J7wiyR5/9xrvQymS6YR6trWvVhzOldHrVbLwyiRmLj9fcvsjzpSXeZHkw==", + "requires": { + "@hapi/joi": "^15.1.0", + "fs-extra": "^8.1.0", + "rx": "^4.1.0" + } + }, + "watchpack": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", + "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", + "requires": { + "chokidar": "^2.1.8", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "optional": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "web-namespaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", + "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==" + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "webpack": { + "version": "4.42.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.1.tgz", + "integrity": "sha512-SGfYMigqEfdGchGhFFJ9KyRpQKnipvEvjc1TwrXEPCM6H5Wywu10ka8o3KGrMzSMxMQKt8aCHUFh5DaQ9UmyRg==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.1.tgz", + "integrity": "sha512-Nfd8HDwfSx1xBwC+P8QMGvHAOITxNBSvu/J/mCJvOwv+G4VWkU7zir9SSenTtyCi0LnVtmsc7G5SZo1uV+bxRw==", + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.15", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==" + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" + } + } + }, + "webpack-dev-server": { + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz", + "integrity": "sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ==", + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.6", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.25", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "12.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "optional": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "webpackbar": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-4.0.0.tgz", + "integrity": "sha512-k1qRoSL/3BVuINzngj09nIwreD8wxV4grcuhHTD8VJgUbGcy8lQSPqv+bM00B7F+PffwIsQ8ISd4mIwRbr23eQ==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "consola": "^2.10.0", + "figures": "^3.0.0", + "pretty-time": "^1.1.0", + "std-env": "^2.2.1", + "text-table": "^0.2.0", + "wrap-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + } + } + } + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "requires": { + "errno": "~0.1.7" + } + }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "requires": { + "microevent.ts": "~0.1.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "requires": { + "sax": "^1.2.4" + } + }, + "xmlbuilder": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz", + "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yaml": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.8.3.tgz", + "integrity": "sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7" + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "zepto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zepto/-/zepto-1.2.0.tgz", + "integrity": "sha1-4Se9nmb9hGvl6rSME5SIL3wOT5g=" + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" + } + } +} diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 00000000000..afb85859a38 --- /dev/null +++ b/docs/package.json @@ -0,0 +1,41 @@ +{ + "name": "keto", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "generate:api": "widdershins -u ../.widdershins/templates -e ../.widdershins/config.json ../api.swagger.json -o ../docs/oathkeeper/sdk/api.md", + "format": "prettier --write '{docs/**,docs,scripts,static,contrib}/*.{md,json,js,css,html}' || true" + }, + "dependencies": { + "@docusaurus/core": "2.0.0-alpha.50", + "@docusaurus/preset-classic": "2.0.0-alpha.50", + "classnames": "^2.2.6", + "node-fetch": "^2.6.0", + "react": "^16.8.4", + "react-dom": "^16.8.4" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "json-schema-faker": "^0.5.0-rcv.24", + "json-schema-ref-parser": "^8.0.0", + "prettier": "^2.0.2", + "ramda": "^0.27.0", + "yaml": "^1.8.3" + } +} diff --git a/docs/scripts/config.js b/docs/scripts/config.js new file mode 100644 index 00000000000..0515c156fac --- /dev/null +++ b/docs/scripts/config.js @@ -0,0 +1,198 @@ +const RefParser = require('json-schema-ref-parser'); +const parser = new RefParser(); +const jsf = require('json-schema-faker'); +const YAML = require('yaml'); +const { pathOr } = require('ramda'); +const path = require('path'); +const fs = require('fs'); + +jsf.option({ + alwaysFakeOptionals: true, + useExamplesValue: true, + useDefaultValue: true, + minItems: 1, +}); + +if (process.argv.length !== 3 || process.argv[1] === 'help') { + console.error(` + usage: + node config.js path/to/config.js +`); + return; +} + +const config = require(path.resolve(process.argv[2])); + +const enhance = (schema, parents = []) => (item) => { + const key = item.key.value; + + const path = [ + ...parents.map((parent) => ['properties', parent]), + ['properties', key], + ].flat(); + + if (['title', 'description'].find((f) => path[path.length - 1] === f)) { + return; + } + + const comments = [`# ${pathOr(key, [...path, 'title'], schema)} ##`, '']; + + const description = pathOr('', [...path, 'description'], schema); + if (description) { + comments.push(' ' + description.split('\n').join('\n '), ''); + } + + const defaultValue = pathOr('', [...path, 'default'], schema); + if (defaultValue || defaultValue === false) { + comments.push(' Default value: ' + defaultValue, ''); + } + + const examples = pathOr('', [...path, 'examples'], schema); + if (examples) { + comments.push( + ' Examples:', + ...YAML.stringify(examples) + .split('\n') + .map((i) => ` ${i}`) + ); // split always returns one empty object so no need for newline + } + + let hasChildren; + if (item.value.items) { + item.value.items.forEach((item) => { + if (item.key) { + enhance(schema, [...parents, key])(item); + hasChildren = true; + } + }); + } + + if (!hasChildren) { + const env = [...parents, key].map((i) => i.toUpperCase()).join('_'); + comments.push( + ' Set this value using environment variables on', + ' - Linux/macOS:', + ` $ export ${env}=`, + ' - Windows Command Line (CMD):', + ` > set ${env}=`, + '' + ); + } + + item.commentBefore = comments.join('\n'); + item.spaceBefore = true; +}; + +new Promise((resolve, reject) => { + parser.dereference( + require(path.resolve(config.updateConfig.src)), + (err, result) => (err ? reject(err) : resolve(result)) + ); +}) + .then((schema) => { + const removeAdditionalProperties = (o) => { + delete o['additionalProperties']; + if (o.properties) { + Object.keys(o.properties).forEach((key) => + removeAdditionalProperties(o.properties[key]) + ); + } + }; + + const enableAll = (o) => { + if (o.properties) { + Object.keys(o.properties).forEach((key) => { + if (key === 'enable') { + o.properties[key] = true; + } + enableAll(o.properties[key]); + }); + } + }; + + removeAdditionalProperties(schema); + enableAll(schema); + if (schema.definitions) { + Object.keys(schema.definitions).forEach((key) => { + removeAdditionalProperties(schema.definitions[key]); + enableAll(schema.definitions[key]); + }); + } + + jsf.option({ + useExamplesValue: true, + useDefaultValue: false, // do not change this!! + fixedProbabilities: true, + alwaysFakeOptionals: true, + }); + + const values = jsf.generate(schema); + const doc = YAML.parseDocument(YAML.stringify(values)); + + const comments = [`# ${pathOr(config.projectSlug, ['title'], schema)}`, '']; + + const description = pathOr('', ['description'], schema); + if (description) { + comments.push(' ' + description); + } + + doc.commentBefore = comments.join('\n'); + doc.spaceAfter = false; + doc.spaceBefore = false; + + doc.contents.items.forEach(enhance(schema, [])); + + return Promise.resolve({ + // schema, + // values, + yaml: doc.toString(), + }); + }) + .then((out) => { + const content = `--- +id: configuration +title: Configuration +--- + + + +If file \`$HOME/.${config.projectSlug}.yaml\` exists, it will be used as a configuration file which supports all +configuration settings listed below. + +You can load the config file from another source using the \`-c path/to/config.yaml\` or \`--config path/to/config.yaml\` +flag: \`${config.projectSlug} --config path/to/config.yaml\`. + +Config files can be formatted as JSON, YAML and TOML. Some configuration values support reloading without server restart. +All configuration values can be set using environment variables, as documented below. + +To find out more about edge cases like setting string array values through environmental variables head to the +[Configuring ORY services](https://www.ory.sh/docs/ecosystem/configuring) section. + +\`\`\`yaml +${out.yaml} +\`\`\``; + + return new Promise((resolve, reject) => { + fs.writeFile( + path.resolve(config.updateConfig.dst), + content, + 'utf8', + (err) => { + if (err) { + reject(err); + return; + } + resolve(); + } + ); + }); + }) + .then(() => { + console.log('Done!'); + }) + .catch((err) => { + console.error(err); + process.exit(1); + }); diff --git a/docs/scripts/docker-tag.js b/docs/scripts/docker-tag.js new file mode 100644 index 00000000000..f8a1ee2955a --- /dev/null +++ b/docs/scripts/docker-tag.js @@ -0,0 +1,58 @@ +const fs = require('fs'); +const path = require('path'); + +const help = ` + usage: + node docker-tag.js path/to/config.js $CIRCLE_TAG +`; + +if (process.argv.length !== 4) { + if (process.argv[2] === 'help') { + console.log(help); + return; + } else if (process.argv.length === 3) { + console.log('Skipping because tag is empty'); + return; + } + + console.error(help); + process.exit(1); + return; +} + +const config = require(path.resolve(process.argv[2])); +const next = process.argv[3]; + +const replace = (path, replacer) => + new Promise((resolve, reject) => { + fs.readFile(path, 'utf8', (err, data) => { + if (err) { + return reject(err); + } + + fs.writeFile(path, replacer(data), 'utf8', (err) => { + if (err) { + return reject(err); + } + resolve(); + }); + }); + }); + +config.updateTags.forEach(({ files, image }) => { + files.forEach((loc) => { + replace(loc, (content) => + content.replace( + new RegExp(`${image}:v[0-9a-zA-Z\\.\\+\\_\\-]+`, 'g'), + `${image}:${next}` + ) + ) + .then(() => { + console.log('Done!'); + }) + .catch((err) => { + console.error(err); + process.exit(1); + }); + }); +}); diff --git a/docs/scripts/fix-api.js b/docs/scripts/fix-api.js new file mode 100644 index 00000000000..93468eb074c --- /dev/null +++ b/docs/scripts/fix-api.js @@ -0,0 +1,48 @@ +const fs = require('fs'); + +if (process.argv.length !== 3 || process.argv[1] === 'help') { + console.error(` + usage: + node fix-api.js path/to/file.md +`); + process.exit(1); +} + +const file = process.argv[2]; + +fs.readFile(file, (err, b) => { + if (err) { + throw err; + } + + const t = b + .toString() + .replace(/^id: api/gim, '') + .replace(/^title:(.*)/im, 'title: REST API\nid: api') // improve title, add docusaurus id + .replace(/^language_tabs:.*\n/im, '') // not supported by docusaurus + .replace(/^toc_footers.*\n/im, '') // not supported by docusaurus + .replace(/^includes.*\n/im, '') // not supported by docusaurus + .replace(/^search.*\n/im, '') // not supported by docusaurus + .replace(/^highlight_theme.*\n/im, '') // not supported by docusaurus + .replace(/^headingLevel.*\n/im, '') // not supported by docusaurus + // .replace(/^ Scroll down for example requests and responses.*\n/im, '') // Irrelevant information + // .replace(/^Base Urls:*\n/im, '') // Irrelevant information, let's replace it with something useful instead! + // .replace(/^\* \/<\/a>\n/im, '') // Irrelevant information + // .replace(/

([a-zA-Z0-9_\-]+)<\/h2>\n/gim, '## $2') + // .replace(/

([a-zA-Z0-9_\-]+)<\/h2>\n/gim, '## $2') + .replace(/\n\s*\n/g, '\n\n', -1) + .replace(/^-(\s.*)\n/gim, '-$1', -1) + .replace(/\n\n---/gi, '\n---\n\n') + // .replace(/\n\s*\n```/gi, '\n```') + // .replace(/^

Responses<\/h3>$/gim, '#### Summary',-1) + // .replace(/^> Example responses/gim, '### Responses',-1) + // .replace(/^> Body parameter/gim, '### Request body',-1) + .replace(/^> ([0-9]+) Response$/gim, '###### $1 response', -1); + + fs.writeFile(file, t, (err) => { + if (err) { + throw err; + } + }); +}); diff --git a/docs/scripts/rerelease.js b/docs/scripts/rerelease.js new file mode 100644 index 00000000000..d848e7f37cf --- /dev/null +++ b/docs/scripts/rerelease.js @@ -0,0 +1,13 @@ +const path = require('path'); +const name = process.argv[2]; +const fs = require('fs'); + +const p = path.join(__dirname, '../versions.json'); + +fs.writeFile(p, JSON.stringify(require(p).filter((v) => v !== name)), function ( + err +) { + if (err) { + return console.error(err); + } +}); diff --git a/docs/sidebar.js b/docs/sidebar.js new file mode 100644 index 00000000000..b54b55e8811 --- /dev/null +++ b/docs/sidebar.js @@ -0,0 +1,42 @@ +module.exports = { + Introduction: [ + "index", "quickstart", "install", + ], + Concepts: [ + "concepts/index", + "concepts/ui-user-interface", + "concepts/identity-user-model", + "concepts/credentials", + "concepts/email-sms", + "concepts/federation", + "concepts/security" + ], + "Self Service Flows": [ + "self-service/flows/index", + "self-service/flows/user-login-user-registration", + "self-service/flows/user-logout", + "self-service/flows/user-settings-profile-management", + "self-service/flows/password-reset-account-recovery", + "self-service/flows/user-facing-errors", + "self-service/flows/verify-email-account-activation" + ], + "Self Service Strategies": [ + "self-service/strategies/index", + "self-service/strategies/username-email-password", + "self-service/strategies/openid-connect-social-sign-in-oauth2" + ], + "Self Service Jobs and Workflows": [ + "self-service/workflows/jobs/before", + "self-service/workflows/jobs/after" + ], + "Reference": [ + "reference/configuration", + "reference/json-schema-json-paths", + "reference/html-forms", + "reference/api" + ], + SDKs: ["sdk/index"], + "Further Reading": [ + "further-reading/comparison" + ], +}; diff --git a/docs/src/css/.gitkeep b/docs/src/css/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/docs/src/css/theme.css b/docs/src/css/theme.css new file mode 100644 index 00000000000..fde8a975bb0 --- /dev/null +++ b/docs/src/css/theme.css @@ -0,0 +1,18 @@ +/* stylelint-disable docusaurus/copyright-header */ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ +:root { + --ifm-color-primary: #6274f3; + --ifm-color-primary-dark: rgb(33, 175, 144); + --ifm-color-primary-darker: rgb(31, 165, 136); + --ifm-color-primary-darkest: rgb(26, 136, 112); + --ifm-color-primary-light: rgb(70, 203, 174); + --ifm-color-primary-lighter: rgb(102, 212, 189); + --ifm-color-primary-lightest: rgb(146, 224, 208); + --ifm-code-font-size: 95%; +} diff --git a/docs/src/pages/index.js b/docs/src/pages/index.js new file mode 100644 index 00000000000..17298eb8f18 --- /dev/null +++ b/docs/src/pages/index.js @@ -0,0 +1,10 @@ +import React from 'react'; + +import {Redirect} from '@docusaurus/router'; +import useBaseUrl from '@docusaurus/useBaseUrl'; + +function Home() { + return ; +} + +export default Home; diff --git a/docs/src/pages/versions.js b/docs/src/pages/versions.js new file mode 100644 index 00000000000..b445b2bd306 --- /dev/null +++ b/docs/src/pages/versions.js @@ -0,0 +1,95 @@ +import React from 'react'; + +import Layout from '@theme/Layout'; + +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import Link from '@docusaurus/Link'; +import useBaseUrl from '@docusaurus/useBaseUrl'; + +import versions from '../../versions.json'; + +function Version() { + const context = useDocusaurusContext(); + const {siteConfig = {}} = context; + const latestVersion = versions[0]; + const pastVersions = versions.filter(version => version !== latestVersion); + const repoUrl = `https://github.com/${siteConfig.organizationName}/${siteConfig.projectName}`; + return ( + +
+

Documentation versions

+
+

Latest version (Stable)

+

Here you can find the latest documentation.

+ + + + + + + + +
{latestVersion} + + Documentation + + + + Changelog + +
+
+
+

Next version (Unreleased)

+

Here you can find the documentation for unreleased version.

+ + + + + + + + +
master + + Documentation + + + Source Code +
+
+ {pastVersions.length > 0 && ( +
+

Past Versions

+

+ Here you can find documentation for previous versions. +

+ + + {pastVersions.map(version => ( + + + + + + ))} + +
{version} + + Documentation + + + + Changelog + +
+
+ )} +
+
+ ); +} + +export default Version; diff --git a/docs/static/img/docs/email-verify-known.png b/docs/static/img/docs/email-verify-known.png new file mode 100644 index 0000000000000000000000000000000000000000..4499232a1ad8fcfb1115f97527b85ac148a6557f GIT binary patch literal 50120 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%0An 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/static/img/docs/email-verify-unknown.png b/docs/static/img/docs/email-verify-unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..c9eb9c3a446fcda1ffa6d36ff7a2532a4bd3928a GIT binary patch literal 48487 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 literal 0 HcmV?d00001 diff --git a/docs/static/img/docs/mailslurper-quickstart.png b/docs/static/img/docs/mailslurper-quickstart.png new file mode 100644 index 0000000000000000000000000000000000000000..75624a6ce7155c3ea20dab5ca580a876f8e26cb7 GIT binary patch literal 827854 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

GHdc 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

Fd;U1^{kdoqE~$9xYQ)ij5^5 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�p=$Y7{xn)>|b#w`l{+A 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

-ocz#IeqJyz=3VoL+*nPI@jvX2@tHO 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�D9Y?#F)Jo-)t_d_>|Vj&5{?m+j?rv| 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 z

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

gGjW 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%0AGG+vi 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